串行工具list_ports_windows无法检测串行端口

时间:2013-12-10 09:26:15

标签: python python-2.7 serial-port

我正在尝试列出基于Windows的PC中的串口。

这是我的端口列表:(COM3& COM8)

enter image description here

代码:

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端口有限制?

1 个答案:

答案 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 \