UNO通过软串口连接迅普串口微型打印机的实现-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1409|回复: 0

UNO通过软串口连接迅普串口微型打印机的实现

[复制链接]
发表于 2022-3-13 10:54 | 显示全部楼层 |阅读模式
微型打印机在一些小型项目里会经常用到,对于打印速度要求不高的项目,串口微打是比较好的选择。本项目采用北京迅普电子技术公司的SP-D系列热敏式前换纸面板嵌入式微型打印机,通过UNO软串口实现二者通信连接,非常简单方便。测试代码如下:
1647139231706.JPG 1647139231713q.JPG

  1. /*迅普微打,串口连接,采用UNO软串口,需要声明全局软串口对象*/
  2. /*存在由计算机USB接口供电不足的现象,导致打印不全*/
  3. /*微打串口引脚定义:注意迅普微打说明书里的RXD和TXD与通常含义不同。
  4. * 1——+5V
  5. * 2——RXD,打印机向主机发送控制码X-ON/X-OFF
  6. * 3——TXD,打印机从主机接收数据
  7. * 4——CTS
  8. * 5——GND
  9. * 接线方式:1——+5V,3——TXD,5——GND
  10. */
  11. #include <SoftwareSerial.h>
  12. SoftwareSerial softSerial(10,11);//pin10为RX,pin11为TX
  13. unsigned char show0[]={0xC9,0xBD,0xB6,0xAB,0xBD,0xA8,0xD6,0xFE,0xB4,0xF3,0xD1,0xA7};//“山东建筑大学”内码
  14. unsigned char show1[]={0xB5,0xD8,0xD4,0xB4,0xC8,0xC8,0xB1,0xC3,0xD1,0xD0,0xBE,0xBF,0xCB,0xF9};//“地源热泵研究所”内码

  15. void miniPrintInit(int bandrate);
  16. void miniPrint_Chinese(unsigned char chinese[],int n);

  17. void setup() {
  18.   // put your setup code here, to run once:
  19.   miniPrintInit(2400);
  20.   miniPrint_Chinese(show0,sizeof(show0));
  21.   miniPrint_Chinese(show1,sizeof(show1));   
  22. }

  23. void loop() {
  24.   // put your main code here, to run repeatedly:
  25.   //打印英文,直接用串口print函数就可实现
  26.   softSerial.println("hello");
  27.   
  28.   delay(20*1000);//延时20秒
  29. }
  30. /*微打初始化程序*/
  31. void miniPrintInit(int bandrate)
  32. {
  33.   softSerial.begin(bandrate);
  34.   softSerial.listen();
  35.   byte print_cmd[]={0x1B,0x40};//打印机初始化命令
  36.   softSerial.write(print_cmd,sizeof(print_cmd));
  37. }
  38. /*汉字打印程序
  39.   * chinese——汉字内码数组
  40.   * n——数组长度
  41. *打完后自动转为英文打印模式(默认模式)
  42. */
  43. void miniPrint_Chinese(unsigned char chinese[],int n)
  44. {
  45.   byte print_cmd0[]={0x1C,0x26};//汉字模式
  46.   softSerial.write(print_cmd0,sizeof(print_cmd0));
  47.   softSerial.write(chinese,n);//show0为“山东建筑大学”内码数组
  48.   softSerial.write(0x0D);//换行
  49.   delay(100);
  50.   byte print_cmd1[]={0x1C,0x2E};//字符模式
  51.   softSerial.write(print_cmd1,sizeof(print_cmd1));
  52.   }
复制代码
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-11-28 06:34 , Processed in 0.112749 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表