首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何自动获取端口号。在python串行通信中的硬件?

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

Stack Overflow用户
提问于 2015-08-14 15:13:19
回答 2查看 13.9K关注 0票数 1

我正在开发一个用来与一些硬件进行串行通信的python GUI,我正在使用USBRS232转换器,我不希望用户在设备管理器中寻找硬件的com端口,然后在communication.How的图形用户界面中选择端口号,我的python代码可以自动获得端口号。对于那个特定的USB端口,我可以每次都将我的硬件连接到那个特定的端口,如果我在其他PC.You中运行图形用户界面,会发生什么?

提前感谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-08-14 15:53:56

pyserial可以列出端口及其USB VID:PID编号。

代码语言:javascript
复制
from serial.tools import list_ports
list_ports.comports()

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

代码语言:javascript
复制
list_ports.grep("6157:9988")

这个函数返回一个生成器对象,你可以遍历它。如果不太可能有两个设备连接到相同的VID:PID (我不会假设这一点,但为了测试目的,这是可以的),你可以这样做:

代码语言:javascript
复制
my_port_name = list(list_ports.grep("0483:5740"))[0][0]

list_ports的文档。

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

票数 2
EN

Stack Overflow用户

发布于 2015-08-14 15:55:55

我假设您正在特别寻找一个COM端口,它在设备管理器中被描述为USB RS232,而不是想要列出所有可用的COM端口?

此外,您还没有提到您正在开发的操作系统,或者您正在使用的Python版本,但这在使用Python 3.4的Windows系统上适用:

代码语言:javascript
复制
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_no
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32004317

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档