使用 Python 列出串口的實現(xiàn)方法
在本文中,我們將討論使用串口或 com 端口的通信。 我們將深入探索 Python 包,以幫助我們獲得系統(tǒng)的可用通信端口。
稍后,我們將回顧一些使用 Python 搜索和獲取有關可用串行端口的詳細信息的技術。
COM口簡介
COM 端口是一種 I/O 接口,可以將串行設備連接到計算機。 它是通信端口的縮寫形式。
COM 端口有時也稱為串行端口。 COM口在新的電腦和設備上已經(jīng)不常用了,但是很多舊的串口設備還在使用。
因此,我們有時可能需要進行串口通信,將這些端口列出來進行幾個串口操作。
在 Python 中獲取可用串口列表
有時在編程時,我們需要獲取有關系統(tǒng)中可用通信端口的信息。 我們將討論如何使用 Python 來做到這一點。
Python 提供了 pySerial 模塊,它提供了對串行端口和相關信息的訪問。 我們首先需要將包pySerial安裝到我們的項目中,然后我們就可以輕松地使用它的功能了。
要安裝包,我們必須在 Python 命令終端中鍵入 pip install pyserial 并按 Enter。 該包將可供使用。
現(xiàn)在,讓我們看一下列出串行端口的以下代碼:
import serial.tools.list_ports
ports = []
for port in serial.tools.list_ports.comports():
ports.append(port.name)
print(ports)輸出:
['COM1']
讓我們討論一下我們在代碼中做了什么。 我們必須編寫 import serial 才能使用已安裝的包。
pySerial 包有一個 comports() 方法,它返回可用 COM 端口的列表。 此列表中的每個對象都是 ListPortInfo 類型。
我們將在本文后面討論這個 ListPortInfo 對象包含什么。
comports() 函數(shù)位于模塊 list_ports 中,該模塊位于工具中。 所以我們通過編寫 import serial.tools.list_ports 來導入整個模塊。
然后我們只需在 comports() 函數(shù)返回的列表上運行一個 for 循環(huán),并將端口附加到我們的列表中。
上面的代碼可以通過使用 Python 列表理解來編寫得更簡單。 兩種代碼的輸出將相同。 就是這樣。
import serial.tools.list_ports print([port.device for port in serial.tools.list_ports.comports()])
獲取串行端口列表及其詳細信息
正如我們所討論的, comports() 函數(shù)返回端口列表,列表中的每個對象都是 ListPortInfo 類型。 此對象包含有關串行端口的信息,并提供索引訪問以檢索設備(全名/路徑)、描述和串行端口的 hwid。
索引 0 將為我們提供設備的值,描述位于索引 1,索引 2 將共享端口的 hwid。
以下是 ListPortInfo 對象可以為我們提供的有關 COM 端口的詳細信息:
| 對象 | 描述 |
|---|---|
| device | 完整的設備名稱/路徑。 當索引訪問時,這將作為第一個元素返回。 |
| name | 短設備名稱。 |
| description | 人類可讀的描述。 當索引訪問時,這將作為第二個元素返回。 |
| hwid | 硬件 ID。 當索引訪問時,這將作為第三個元素返回。 |
| vid | USB 供應商 ID。 |
| pid | USB 產(chǎn)品 ID。 |
| serial_number | 字符串形式的 USB 序列號。 |
| location | USB 設備位置字符串。 |
| manufacturer | USB 制造商字符串,由設備報告。 |
| product | USB 產(chǎn)品字符串,由設備報告。 |
| interface | 特定于接口的描述。 |
現(xiàn)在,讓我們編寫一個代碼來獲取所有可用 com 端口的列表以及它們的名稱、描述、制造商和 hwid。
import serial.tools.list_ports
port_data = []
for port in serial.tools.list_ports.comports():
info = dict({"Name": port.name, "Description": port.description, "Manufacturer": port.manufacturer,
"Hwid": port.hwid})
port_data.append(info)
print (port_data)輸出:
[{'Name': 'COM1', 'Description': 'Communications Port (COM1)', 'Manufacturer': '(Standard port types)',
'Hwid': 'ROOT\\PORTS\\0000'}]
按名稱搜索串行端口
當我們的計算機中有多個端口時,此功能很有用。 如果我們需要任何特定的端口,我們可以根據(jù)我們的選擇通過名稱或描述來搜索它。
讓我們在 Python 中創(chuàng)建一個函數(shù),它將返回我們給定名稱的端口。
import serial.tools.list_ports
def get_port_by_name(port_name):
for port in serial.tools.list_ports.comports():
if port.name == port_name:
return port
print(get_port_by_name("COM1").description)輸出:
Communications Port (COM1)
代碼很容易掌握。 在我們的函數(shù)中,for 循環(huán)在 comports() 函數(shù)返回的端口列表上運行。
我們在循環(huán)中驗證每個端口的名稱,看它是否與用戶輸入匹配。 如果是,我們返回那個端口。
你可以為描述構造一個類似的函數(shù),它會通過檢查描述來返回端口。
到此這篇關于使用 Python 列出串口的文章就介紹到這了,更多相關Python 列出串口內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
- Python中串口通信庫pyserial基礎知識
- Python讀取串口數(shù)據(jù)的實現(xiàn)方法
- python讀取串口數(shù)據(jù)有幾種方法
- python serial串口通信示例詳解
- 玩轉(zhuǎn)串口通信:利用pyserial庫,Python打開無限可能
- Python通過串口實現(xiàn)收發(fā)文件
- Python串口通信的接收與發(fā)送的實現(xiàn)
- python實現(xiàn)串口通信的示例代碼
- Python?Serial串口的簡單數(shù)據(jù)收發(fā)方式
- 使用Python玩轉(zhuǎn)串口(基于pySerial問題)
- python串口讀取數(shù)據(jù)的實例
- Python中串口操作的實現(xiàn)示例
相關文章
python爬取”頂點小說網(wǎng)“《純陽劍尊》的示例代碼
這篇文章主要介紹了python爬取”頂點小說網(wǎng)“《純陽劍尊》的示例代碼,幫助大家更好的利用python 爬蟲爬取數(shù)據(jù),感興趣的朋友可以了解下2020-10-10
MAC平臺基于Python Appium環(huán)境搭建過程圖解
這篇文章主要介紹了MAC平臺基于Python Appium環(huán)境搭建過程圖解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-08-08
Django Serializer HiddenField隱藏字段實例
這篇文章主要介紹了Django Serializer HiddenField隱藏字段實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-03-03

