PySerial写入错误(波特率敏感)

时间:2013-12-11 16:14:47

标签: python windows serial-port pyserial uart

我在使用pyserial和windows时遇到了一些问题(在linux上它使用相同的代码可以正常工作);我好像在写错误的字节。

代码甚至可以在debian VM内的同一台机器上正常工作,所以我很确定它是一个软件。

我使用的是Python 2.7.6 32bit,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()

测试时给出了以下输出:(写入带有回声的自动波装设备):

***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"

我可以确认“收到:”之后的内容(没有引用,除了“ERROR”和设备生成的一些CR NL字符)是设备实际收到的内容:

A\xa8+CMGR\r
AT+C\x87SN\r
AT+CS\xd1\r
A\xa8+CREG?\r

如果有人可以提出修复方案,那我就是葡萄柚

1 个答案:

答案 0 :(得分:0)

我正在使用带有Windows和Serial的AT命令,我没有这些问题,我的猜测是它与编码有关。

请试试这个AT Commander

尝试连接您的设备并查看是否获得正确的响应,如果它与您设备上的问题相同,则会发现问题。