PySerial - 无法发送STX
好的,我对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