PySerial - 无法发送STX

2 投票
2 回答
4642 浏览
提问于 2025-04-16 08:34

好的,我对pySerial完全是个新手。我正在尝试和一台实验室设备进行通信,但在发送STX(文本开始)命令时遇到了麻烦。到目前为止,我的基本代码看起来是这样的:

ser = serial.Serial(0, 19200, timeout=1,parity=serial.PARITY_ODD, rtscts=0)
ser.write(0x02) #ASCII STX is 0x2 in hex

但是当我在示波器上查看232数据时,我试图发送的STX命令,看起来和在Hperterminal中发送的STX命令完全不一样。

有没有什么想法?我相信这应该非常简单,我只是忽略了一些微不足道的东西。

谢谢!

2 个回答

0

你确定HyperTerminal和PySerial使用的是相同的设置吗?你需要确保以下几点是一样的:

  • 波特率(你用的是19200)
  • 校验位(你用的是奇校验)
  • 数据位数(pySerial默认是8位)
  • 停止位(pySerial默认是1位)
6

在串行类中,写入函数可以接受字节或字符串类型的数据。你现在传入的是一个整数,所以结果就不确定了,可能会把它转换成字符串,这样你实际上发送的是字符 '2'。

正确的做法是:

ser = serial.Serial(0, 19200, timeout=1,parity=serial.PARITY_ODD, rtscts=0)
ser.write(chr(0x02)) #ASCII STX is 0x2 in hex

撰写回答