通过Python串口向打印机发送十六进制代码
我需要给我的热敏打印机发送ESCPOS指令。指令的详细信息可以在这里找到:
http://pyramidacceptors.com/cms/wp-content/uploads/2013/02/ESC_POS_Protocol_Commands_REV_B.pdf
我想通过Python的串口发送简单的十六进制代码。串口连接已经做好了。我想进行全切纸操作,尝试了以下代码:
content = "\x1B\x6D"
ser.write(content)
但是没有成功。我需要经常查看这个.pdf文件,所以在Python中使用十六进制时,有什么需要注意的地方吗?比如,打印和喂纸n行的指令在Python中应该是:
1B 64 n n = 行数content = "\x1B\x64\x5"
ser.write(content)
1 个回答
0
首先,你发送的不是“十六进制”。你发送的是二进制数据,也就是一串字节。
每个字节可以用多种方式表示,比如用从00
到FF
的十六进制数字,或者用ASCII字符。
根据我的理解,描述ESC POS协议的文档给出了各种命令的“人类可读表示”,这些命令实际上是以二进制形式发送的。
举个例子,关于“打印并进纸”,我看到:
HEX ASCII Print and feed paper n lines 1B 64 n Esc d n
这意味着,要“打印并进纸5行”,你需要发送3个字节:
\x1B\x64\x05
在Python版本大于等于2.6时,可以这样写(注意前面的b
前缀):
b"\x1B\x64\x05"
或者根据你的代码片段,这样会得到:
content = b"\x1B\x64\x05"
ser.write(content)
请注意,我对这个设备并不熟悉。也许你需要发送某种前缀来切换到“命令模式”。也可能不需要。