Xprinter打印机调试 - xiaohao0576/odoo-doc GitHub Wiki

电脑使用网线连接打印机

使用Xprinter打印机调试工具,发送各种指令给打印机,使用wireshark抓包,看实际发送的数据

比如,打印机切纸的数据是1d5642000a0a00, 发送监控请求的指令是1b7600,下面是用Go语言表示的二进制

[]byte{0x1b, 0x76, 0x00}  //发送打印机状态请求
[]byte{0x14, 0x00, 0x00, 0x00} //返回正常的状态

[]byte{0x1d, 0x56, 0x42, 0x00, 0x0a, 0x0a, 0x00}  //切纸指令

Linux把16进制保存成二进制文件

xxd -r -p hex.txt cut.bin

其中 hex.txt是连续的16进制字符,0-9 a-f

wireshark可以把这些数据导出为.bin格式的二进制数据

然后再使用Linux的nc工具,直接向打印机的IP和端口发送 .bin格式的二进制数据

nc -w 5 -q 0 192.168.123.100 9100 <  cut.bin
-w 表示5秒钟没有响应就超时退出
-q 0 表示发送完成数据就立即退出nc

监控Xprinter打印机状态

向Xprinter打印机的TCP:4000端口发送二进制数据1b7600,打印机会立即返回状态数据,一切正常的情况,会返回14000000

初始化指令

[]byte{0x1B, 0x40} // ESC @

[0x1B, 0x40] 是 ESC/POS 打印机的初始化指令(Initialize printer):
指令结构:
0x1B: ESC 命令标识
0x40: '@' 字符,初始化命令
这个指令执行时会:
清除打印缓冲区中的数据
重置所有打印模式设置为默认值,包括:
字符大小回到标准大小
取消加粗、下划线等特殊效果
行间距恢复默认
字符间距恢复默认
对齐方式恢复到左对齐
将打印位置移动到行首
选择默认字符集
常见用途:
打印任务开始前初始化打印机状态
清除之前打印任务可能留下的设置
解决打印异常时的状态恢复
确保打印机处于一个已知的标准状态
这是一个非常基础且重要的打印机指令,建议在**每次打印开始前都执行一次初始化**。

切纸指令

[]byte{0x1D, 0x56, 0x31, 0x00}  // GS V指令,半切纸