通过Python串口向打印机发送十六进制代码

0 投票
1 回答
3345 浏览
提问于 2025-04-18 14:01

我需要给我的热敏打印机发送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

首先,你发送的不是“十六进制”。你发送的是二进制数据,也就是一串字节

每个字节可以用多种方式表示,比如用从00FF的十六进制数字,或者用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)

请注意,我对这个设备并不熟悉。也许你需要发送某种前缀来切换到“命令模式”。也可能不需要。

撰写回答