【发布时间】:2013-12-11 16:14:47
【问题描述】:
我在使用 pyserial 和 windows 时遇到了一些问题(在 linux 上使用相同的代码可以正常工作);我似乎在写错误的字节。
代码甚至可以在 debian VM 内的同一台机器上正常运行,所以我很确定它是一个软件。
我正在使用 Python 2.7.6 32 位、pyserial 2.7,但尝试过其他版本(2.5 和 2.4)都出现相同的错误。
有趣的是,当波特率增加到 115200 时,错误要少得多。
这是我的代码的相关位:
ser = serial.Serial()
ser.timeout = 0.1
ser.port = "COM74"
ser.baudrate = 9600
ser.bytesize = 8
ser.parity = "N"
ser.stopbits = 1
ser.open()
ser.write("AT+CMGR\r")
search("OK", 5, rec, ser)
ser.write("AT+CGSN\r")
search("OK", 5, rec, ser)
ser.write("AT+CSQ\r")
search("OK", 5, rec, ser)
ser.write("AT+CREG?\r")
search("OK", 5, rec, ser)
ser.close()
在测试时给出了以下输出:(写入带有 echo 的自动波特率设备):
***Timeout***, expected: "OK" received: "A\xa8+CMGR\r"
***Timeout***, expected: "OK" received: "AT+C\x87SN\r\r\nERROR\r\n"
***Timeout***, expected: "OK" received: "AT+CS\xd1\r"
***Timeout***, expected: "OK" received: "A\xa8+CREG?\r"
我可以确认“received:”之后的内容(没有引号,除了“ERROR”和设备生成的一些 CR NL 字符)是设备实际接收的内容:
A\xa8+CMGR\r
AT+C\x87SN\r
AT+CS\xd1\r
A\xa8+CREG?\r
如果有人可以提出解决方案,我会是葡萄柚
【问题讨论】:
标签: python windows serial-port pyserial uart