UNO通过软串口连接迅普串口微型打印机的实现
微型打印机在一些小型项目里会经常用到,对于打印速度要求不高的项目,串口微打是比较好的选择。本项目采用北京迅普电子技术公司的SP-D系列热敏式前换纸面板嵌入式微型打印机,通过UNO软串口实现二者通信连接,非常简单方便。测试代码如下:/*迅普微打,串口连接,采用UNO软串口,需要声明全局软串口对象*/
/*存在由计算机USB接口供电不足的现象,导致打印不全*/
/*微打串口引脚定义:注意迅普微打说明书里的RXD和TXD与通常含义不同。
* 1——+5V
* 2——RXD,打印机向主机发送控制码X-ON/X-OFF
* 3——TXD,打印机从主机接收数据
* 4——CTS
* 5——GND
* 接线方式:1——+5V,3——TXD,5——GND
*/
#include <SoftwareSerial.h>
SoftwareSerial softSerial(10,11);//pin10为RX,pin11为TX
unsigned char show0[]={0xC9,0xBD,0xB6,0xAB,0xBD,0xA8,0xD6,0xFE,0xB4,0xF3,0xD1,0xA7};//“山东建筑大学”内码
unsigned char show1[]={0xB5,0xD8,0xD4,0xB4,0xC8,0xC8,0xB1,0xC3,0xD1,0xD0,0xBE,0xBF,0xCB,0xF9};//“地源热泵研究所”内码
void miniPrintInit(int bandrate);
void miniPrint_Chinese(unsigned char chinese[],int n);
void setup() {
// put your setup code here, to run once:
miniPrintInit(2400);
miniPrint_Chinese(show0,sizeof(show0));
miniPrint_Chinese(show1,sizeof(show1));
}
void loop() {
// put your main code here, to run repeatedly:
//打印英文,直接用串口print函数就可实现
softSerial.println("hello");
delay(20*1000);//延时20秒
}
/*微打初始化程序*/
void miniPrintInit(int bandrate)
{
softSerial.begin(bandrate);
softSerial.listen();
byte print_cmd[]={0x1B,0x40};//打印机初始化命令
softSerial.write(print_cmd,sizeof(print_cmd));
}
/*汉字打印程序
* chinese——汉字内码数组
* n——数组长度
*打完后自动转为英文打印模式(默认模式)
*/
void miniPrint_Chinese(unsigned char chinese[],int n)
{
byte print_cmd0[]={0x1C,0x26};//汉字模式
softSerial.write(print_cmd0,sizeof(print_cmd0));
softSerial.write(chinese,n);//show0为“山东建筑大学”内码数组
softSerial.write(0x0D);//换行
delay(100);
byte print_cmd1[]={0x1C,0x2E};//字符模式
softSerial.write(print_cmd1,sizeof(print_cmd1));
}
页:
[1]