2016-01-23 226 views
0

我是python中的新學習者。我想創建一個Web應用程序發送短信或使用數據卡呼叫。我一直使用數據卡發送短信,但我的問題是,如果我使用多個數據卡一次連接如何可以檢查哪個USB端口工作正常或不。所以我想獲得usb序列號或usb pid或vid。使用pyserial標識USB給串口給出USB VID和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 VID,USB序列號等

+0

你可以嘗試較新版本的pyserial。在版本3.0.1中'serial.tools.list_ports.comports()'返回的'serial.tools.list_ports.ListPortInfo'具有'pid','vid'和'serial_number'屬性。 – Peter

+0

我使用 Django的== 1.8 降價== 2.4.1 的MySQL的Python 1.2.5 ==枕頭 2.5.3 == Pygments來做== 1.6 argparse == 1.2.1 引導管理員= = 0.3.6 Django的括號== 1.4.0 django的濾波器== 0.7 Django的OAuth的工具包== 0.7.2 feedparser == 5.1.3 gunicorn == 19.1.1 oauthlib == 0.6 .3 pyserial == 3.0.1 python-gcm == 0.2 requests == 2.2.1 six == 1.7.3 wsgiref == 0.1.2 然後給出錯誤: - Traceback(最近調用最後一個): 文件「/var/www/html/django/sms/test/usb_info.py」,第3行,在 print serial.tools.list_ports.ListPortInfo AttributeError:'模塊'對象沒有屬性'ListPortInfo' –

回答

0

要獲得VID或PID:

  1. 進入設備管理器
  2. USB串行總線控制器
  3. 點擊所需設備並點擊右鍵進入 屬性
  4. 點擊下拉菜單中的詳情標籤點擊 設備實例路徑