我在使用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
如果有人可以提出修复方案,那我就是葡萄柚
答案 0 :(得分:0)
我正在使用带有Windows和Serial的AT命令,我没有这些问题,我的猜测是它与编码有关。
请试试这个AT Commander
尝试连接您的设备并查看是否获得正确的响应,如果它与您设备上的问题相同,则会发现问题。