2016-01-20 123 views
2

我有一個腳本(Windows 7,Python 2.7)來列出串行端口,但我正在尋找一個具有特定名稱的設備。 我的腳本:在pySerial中查找特定的串行COM端口(Windows)

import serial.tools.list_ports 
ports = list(serial.tools.list_ports.comports()) 
for p in ports: 
    print(p) 

這將返回:

COM3 - Intel(R) Active Management Technology - SOL (COM3) 
COM6 - MyCDCDevice (COM6) 
COM1 - Communications Port (COM1) 
>>> 

太好了!但是,我希望這個腳本能夠自動從MyCDCDevice中選取並連接到它。 我試過了:

import serial.tools.list_ports 

ports = list(serial.tools.list_ports.comports()) 
for p in ports: 
    if 'MyCDCDevice' in p: 
     print(p) 
     // do connection stuff to COM6 

但是這樣行不通。我懷疑是因爲p不完全是一個字符串,而是某種對象?

無論如何,這是什麼正確的方法呢?

謝謝!

+0

add'else:print「NOT:」,repr(p)'你在哪裏有你的評論(這不是python評論...但是我懷疑你知道) –

+0

這將是'str(p) ,但是你也可以使用['p.description'](https://github.com/pyserial/pyserial/blob/v3.0.1/serial/tools/list_ports_common.py#L29)。 – eryksun

+0

我覺得這會很簡單!謝謝你們,你們搖滾! str(p)做了訣竅。 – coolestDisplayName

回答

0

您可以使用serial.tools.list_ports.grep,它會爲您搜索所有描述字段。例如:

from serial.tools import list_ports 

try: 
    cdc = next(list_ports.grep("MyCDCDevice")) 
    # Do connection stuff on cdc 
except StopIteration: 
    print "No device found" 

如果不工作,你可以嘗試添加一個*給你傳遞給grep的情況下有描述符多餘的字符字符串的結尾。

相關問題