在Python中检测Arduino端口
3 个回答
0
我建议使用一个握手信号,并扫描所有的端口。比如,你可以从你的Python脚本发送一个“whoru”到Arduino,然后在Arduino上写一段代码,当它在串口上检测到“whoru”时,就回复“arduino”。这样,你就可以扫描所有端口,发送握手信号,当收到正确的回复时,就知道Arduino在哪个端口上了。
2
在pySerial这个库里,有一种比较隐蔽的方法可以检查所有串口的VID/PID(至少在Windows系统上是这样)。你只需要在端口属性中找到Arduino的VID/PID,然后把它放到你的Python代码里。
当然,如果你连接了多个Arduino(它们的VID/PID是一样的),这个方法就不管用了。
import serial.tools.list_ports
for port in list(serial.tools.list_ports.comports()):
if port[2].startswith('USB VID:PID=1234:5678'):
#here you have the right port
2
我也建议使用握手,不过反过来做。 在你开始程序之前,先从所有的串口读取输入。当你打开设备时,可以让它发送一个类似“开启”的信号。当你的代码在那个端口检测到“开启”信号时,再进行握手。