用pyseri识别USB到串行端口

2024-05-16 19:57:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我是学Python的新手。我想创建一个使用数据卡发送短信或呼叫的web应用程序。我一直用数据卡发短信,但我的问题是,如果我一次使用多个数据卡连接,如何检查哪个usb端口工作正常与否。所以我想得到usb序列号或usb pid或视频。

import serial.tools.list_ports;
reslt =  serial.tools.list_ports.comports()
print serial.tools.list_ports.ListPortInfo.name

结果:

[('/dev/ttyS31', 'ttyS31', 'n/a'), ('/dev/ttyS30', 'ttyS30', 'n/a'),
 ('/dev/ttyS29', 'ttyS29', 'n/a'), ('/dev/ttyS28', 'ttyS28', 'n/a'),
 ('/dev/ttyS27', 'ttyS27', 'n/a'), ('/dev/ttyS26', 'ttyS26', 'n/a'),
 ('/dev/ttyS25', 'ttyS25', 'n/a'), ('/dev/ttyS24', 'ttyS24', 'n/a'),
 ('/dev/ttyS23', 'ttyS23', 'n/a'), ('/dev/ttyS22', 'ttyS22', 'n/a'),
 ('/dev/ttyS21', 'ttyS21', 'n/a'), ('/dev/ttyS20', 'ttyS20', 'n/a'),
 ('/dev/ttyS19', 'ttyS19', 'n/a'), ('/dev/ttyS18', 'ttyS18', 'n/a'),
 ('/dev/ttyS17', 'ttyS17', 'n/a'), ('/dev/ttyS16', 'ttyS16', 'n/a'),
 ('/dev/ttyS15', 'ttyS15', 'n/a'), ('/dev/ttyS14', 'ttyS14', 'n/a'),
 ('/dev/ttyS13', 'ttyS13', 'n/a'), ('/dev/ttyS12', 'ttyS12', 'n/a'),
 ('/dev/ttyS11', 'ttyS11', 'n/a'), ('/dev/ttyS10', 'ttyS10', 'n/a'),
 ('/dev/ttyS9', 'ttyS9', 'n/a'), ('/dev/ttyS8', 'ttyS8', 'n/a'),
 ('/dev/ttyS7', 'ttyS7', 'n/a'), ('/dev/ttyS6', 'ttyS6', 'n/a'),
 ('/dev/ttyS5', 'ttyS5', 'n/a'), ('/dev/ttyS4', 'ttyS4', 'n/a'),
 ('/dev/ttyS3', 'ttyS3', 'n/a'), ('/dev/ttyS2', 'ttyS2', 'n/a'),
 ('/dev/ttyS1', 'ttyS1', 'n/a'), ('/dev/ttyS0', 'ttyS0', 'n/a'),
 ('/dev/ttyUSB3', 'Huawei Technologies Co., Ltd. Modem/Networkcard ',
  'USB VID:PID=12d1:1506'),
 ('/dev/ttyUSB2', 'Huawei Technologies Co., Ltd. Modem/Networkcard ',
  'USB VID:PID=12d1:1506'),
 ('/dev/ttyUSB0', 'Huawei Technologies Co., Ltd. Modem/Networkcard ',
  'USB VID:PID=12d1:1506')]

为了

import serial.tools.list_ports;
print [port for port in serial.tools.list_ports.comports() if port[2] != 'n/a']

结果:

[('/dev/ttyUSB3', 'Huawei Technologies Co., Ltd. Modem/Networkcard ',
  'USB VID:PID=12d1:1506'),
 ('/dev/ttyUSB2', 'Huawei Technologies Co., Ltd. Modem/Networkcard ',
  'USB VID:PID=12d1:1506'),
 ('/dev/ttyUSB0', 'Huawei Technologies Co., Ltd. Modem/Networkcard ',
  'USB VID:PID=12d1:1506')]

我在学习http://pyserial.readthedocs.org/en/latest/tools.html

请帮助我如何能得到usb视频,usb序列号等


Tags: devserialportstoolspidlistusbco
2条回答

正如@Peter在评论中所说,在PySerial的较新版本(当前版本是3.4)中,您可以很容易地获得端口信息,如描述、PID、VID、HWID、名称、序列号等

例如:

for port in serial.tools.list_ports.comports():
    print(port.hwid)

要获取VID或PID:

  1. 转到设备管理器
  2. USB串行总线控制器
  3. 单击所需设备并右键单击以转到 属性
  4. 单击下拉菜单中的“详细信息”选项卡 设备实例路径

相关问题 更多 >