如何自动获取端口号。 python串口通信中的硬件?

时间:2015-08-14 07:13:19

标签: python serial-port pyserial

我正在使用python GUI进行与某些硬件的串行通信。我正在使用USB-RS232转换器。我不希望用户在设备管理器中查找硬件的COM端口,然后在GUI中选择端口号用于通信。我的python代码如何自动获取端口号。对于那个特定的USB端口?我可以每次都将我的硬件连接到那个特定的,如果我在其他PC上运行GUI会发生什么。你可以为此建议任何其他解决方案。

提前致谢!!!

1 个答案:

答案 0 :(得分:2)

pyserial可以列出具有USB VID的端口:PID编号。

from serial.tools import list_ports
list_ports.comports()

此函数返回一个元组,第三项是一个可能包含USB VID:PID编号的字符串。你可以从那里解析它。或者更好的是,您可以使用grep模块提供的list_ports功能:

list_ports.grep("6157:9988")

这个返回一个你可以迭代的生成器对象。如果不可能有2个设备连接相同的VID:PID(我不会假设,但出于测试目的可以),你可以这样做:

my_port_name = list(list_ports.grep("0483:5740"))[0][0]

list_ports的文档。

注意:我只在linux上测试了这个。 pyserial文档警告说,在某些系统上可能没有列出硬件ID。