gpt4 book ai didi

python - PySerial 不与 Arduino 交谈

转载 作者:太空狗 更新时间:2023-10-29 20:54:49 30 4
gpt4 key购买 nike

我已经编写了一些代码来模拟我正在使用的一些硬件,并将其上传到 Arduino 板上。此代码有效。我知道这一点,因为我从 HyperTerminal 得到了预期的响应。

但是,当我尝试使用 PySerial 进行连接时,连接不会出错,但我发送的命令没有得到任何响应。

为什么会这样?

Python代码

import serial

def main():
sp = serial.Serial()
sp.port = 'COM4'
sp.baudrate = 19200
sp.parity = serial.PARITY_NONE
sp.bytesize = serial.EIGHTBITS
sp.stopbits = serial.STOPBITS_ONE
sp.timeout = 0.5
sp.xonxoff = False
sp.rtscts = False
sp.dsrdtr = False

sp.open()

sp.write("GV\r\n".encode('ascii'))
value = sp.readline()
print value
sp.write("GI\r\n".encode('ascii'))
value = sp.readline()
print value

sp.close()

if __name__ == "__main__":
main()

注意:Arduino 上的代码在命令响应结束时发回 \r\n

super 终端配置:

COM4 configuration in HyperTerminal

编辑

我发现如果我将超时增加到 10 秒并在发送任何内容之前添加一个 sp.readline(),那么我会收到对这两个命令的响应。

PySerial 和 Arduino 或 USB RS-232 端口之间的硬件握手通常需要多长时间?

最佳答案

无法验证这一点,但可能是您在有任何数据之前尝试读取,因此您没有得到回复。

要对此进行测试,您可以尝试轮询直到有数据为止

value = None
while not value:
value = sp.readline()
print value

编辑

当您打开串行连接时,Arduino 将重置,启动期间写入的任何数据都可能会进入天堂。在进行任何读/写操作之前,您可以休眠 2 秒(无法找到所需的确切时间,可能会有所不同)。

或者,您可以写入它,直到收到回复,收到回复后,您才开始做“真正的工作”。

关于python - PySerial 不与 Arduino 交谈,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8149628/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com