【问题标题】:Serial tool list_ports_windows cannot detect serial port串口工具 list_ports windows 无法检测到串口
【发布时间】:2013-12-10 09:26:15
【问题描述】:

我正在尝试列出我基于 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'}]

问题:

为什么我看不到我 PC 中的所有端口是我的代码有问题吗?

如图所示,我有 2 个端口 COM3 和 COM8。

list_ports_windows 对虚拟 com 端口有限制吗?

【问题讨论】:

    标签: python python-2.7 serial-port


    【解决方案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\

    【讨论】:

    • 实际上您的代码列出了所有端口!我不知道为什么list_ports_windows 会忽略虚拟端口,如果没有人能够解释我将使用您的代码并接受您的回答。
    • 有趣,我记得这段代码未能及时列出虚拟端口。也许这在 Windows 更新期间发生了变化,我无法对此进行测试,因为我的机器上目前没有虚拟端口。
    • 如果我能找到一些我会更新这个答案的东西,我会尝试进行更多调查。最坏的情况我会搬到 Linux :)...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-11
    • 1970-01-01
    • 2014-01-13
    • 1970-01-01
    相关资源
    最近更新 更多