我正在尝试列出基于Windows的PC中的串口。
这是我的端口列表:(COM3& COM8)
代码:
if sys.platform.startswith("win32"):
from serial.tools.list_ports_windows import *
elif sys.platform.startswith("linux"):
from serial.tools.list_ports import *
else:
raise ImportError("Sorry: no implementation for your platform {} available".format(sys.platform))
.........Class definition and other methods..................
def GetList(self, verbose=True):
"""
gets the list of all available ports
"""
results = []
hits = 0
iterator = sorted(comports())
# list them
for port, desc, hwid in iterator:
comPort = port
if verbose:
descValue = desc
hwidValue = hwid
results.append({'comPort': comPort, 'descValue': descValue, 'hwidValue': hwidValue})
else:
results.append({'comPort': comPort})
hits += 1
results.append({"available": "{} ports found".format(hits)})
return results
输出:
[{'hwidValue': 'PCI\\VEN_8086&DEV_1E3D&SUBSYS_21F317AA&REV_04', 'descValue': 'Intel(R) Active Management Technology - SOL (COM3)', 'comPort': 'COM3'}, {'available': '1 ports found'}]
问题:
为什么我看不到我的电脑中的所有端口都存在代码问题?
如图所示,我有2个端口COM3和COM8。
list_ports_windows
是否对虚拟COM端口有限制?
答案 0 :(得分:1)
我可以告诉你使用WMI(python wmi模块:https://pypi.python.org/pypi/WMI/)
import wmi
c = wmi.WMI()
wql = "Select * From Win32_SerialPort"
for item in c.query(wql):
print item
结果相同,仅列出硬件串口。所以我认为出于同样的原因你的实现会发生同样的情况,例如。你只能获得硬件端口。
编辑:根据Kobi K,这会列出虚拟端口。
但是,您可以检查注册表中的所有虚拟端口: HKEY_LOCAL_MACHINE \ HARDWARE \ DEVICEMAP \ SERIALCOMM \