通过python serial将十六进制代码发送到打印机

时间:2014-07-20 12:38:57

标签: python serial-port

我需要将ESCPOS命令发送到我的热敏打印机。 这些命令列在这里: http://pyramidacceptors.com/cms/wp-content/uploads/2013/02/ESC_POS_Protocol_Commands_REV_B.pdf

如何通过python串口发送简单的HEX代码? 串行连接完成。 我想做一个全面的尝试:

content = "\x1B\x6D"
ser.write(content)

但它不起作用,我需要经常使用.pdf,所以在python中使用hex时有什么要小心的吗? 例如,打印和送纸n行命令应该在python中: 1B 64 n n =行

content = "\x1B\x64\x5"
ser.write(content)

1 个答案:

答案 0 :(得分:0)

首先,你不发送“hex”。您发送二进制数据 - 这是字节的流。

每个字节可能表示(以及其他)作为从00FF的十六进制数字或ASCII字符。

据我了解,描述ESC POS协议的文档给出了应该以二进制形式发送的各种命令的“人工表示”。

例如,鉴于“print and feed”,我读到了:

                                    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)

请注意我不知道该设备。也许您必须发送某种前缀才能将其切换为“命令模式”。也许不是。