2

好的,所以我完全是 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 命令完全不同。

有任何想法吗?我确信这是非常简单的,我只是忽略了一些微不足道的事情。

谢谢!

4

2 回答 2

5

serial 类中的 write 函数接受字节或字符串。您正在传递一个整数,因此结果是未知的,也许正在将其转换为 str,因此您正在发送 char '2'。

正确的做法是:

ser = serial.Serial(0, 19200, timeout=1,parity=serial.PARITY_ODD, rtscts=0)
ser.write(chr(0x02)) #ASCII STX is 0x2 in hex
于 2010-12-15T11:56:53.717 回答
0

您确定 HyperTerminal 和 PySerial 使用相同的配置吗?您应该确保以下内容相同:

  • 波特率(您使用的是 19200)
  • 奇偶校验(您正在使用 PARITY_ODD)
  • 数据位数(pySerial 默认为 8)
  • 停止位(pySerial 默认为 1)
于 2010-12-15T11:18:12.730 回答