微型打印机在一些小型项目里会经常用到,对于打印速度要求不高的项目,串口微打是比较好的选择。本项目采用北京迅普电子技术公司的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));
- }
复制代码 |