我正在开发一个用来与一些硬件进行串行通信的python GUI,我正在使用USBRS232转换器,我不希望用户在设备管理器中寻找硬件的com端口,然后在communication.How的图形用户界面中选择端口号,我的python代码可以自动获得端口号。对于那个特定的USB端口,我可以每次都将我的硬件连接到那个特定的端口,如果我在其他PC.You中运行图形用户界面,会发生什么?
提前感谢!
发布于 2015-08-14 15:53:56
pyserial可以列出端口及其USB VID:PID编号。
from serial.tools import list_ports
list_ports.comports()此函数返回一个元组,第3项是一个可能包含USB VID:PID编号的字符串。你可以从那里解析它。或者更好的是,您可以使用list_ports模块提供的grep函数:
list_ports.grep("6157:9988")这个函数返回一个生成器对象,你可以遍历它。如果不太可能有两个设备连接到相同的VID:PID (我不会假设这一点,但为了测试目的,这是可以的),你可以这样做:
my_port_name = list(list_ports.grep("0483:5740"))[0][0]list_ports的文档。
注意:我只在linux上测试过这个。pyserial文档警告说,在某些系统上可能未列出硬件ids。
发布于 2015-08-14 15:55:55
我假设您正在特别寻找一个COM端口,它在设备管理器中被描述为USB RS232,而不是想要列出所有可用的COM端口?
此外,您还没有提到您正在开发的操作系统,或者您正在使用的Python版本,但这在使用Python 3.4的Windows系统上适用:
import serial.tools.list_ports
def serial_ports():
# produce a list of all serial ports. The list contains a tuple with the port number,
# description and hardware address
#
ports = list(serial.tools.list_ports.comports())
# return the port if 'USB' is in the description
for port_no, description, address in ports:
if 'USB' in description:
return port_nohttps://stackoverflow.com/questions/32004317
复制相似问题