【问题标题】:PySerial write errors (baudrate sensitive)PySerial 写入错误(波特率敏感)
【发布时间】: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


    【解决方案1】:

    我在 windows 和 Serial 中使用 AT 命令,我没有这些问题,我猜它与编码有关。

    你能试试这个AT Commander

    尝试连接您的设备并查看您是否得到正确的响应,如果相同则问题出在您的设备上。

    【讨论】:

    • 问题绝对不是设备,脚本在 Linux 上对同一设备运行良好,并且通过 minicom/screen 设备可以正常通信。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-24
    • 2023-04-08
    • 2011-04-10
    • 2014-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多