串口工具 list_ports windows 无法检测到串口

Posted

技术标签:

【中文标题】串口工具 list_ports windows 无法检测到串口【英文标题】:Serial tool list_ports_windows cannot detect serial port 【发布时间】: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 端口有限制吗?

【问题讨论】:

【参考方案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 :)...

以上是关于串口工具 list_ports windows 无法检测到串口的主要内容,如果未能解决你的问题,请参考以下文章

python的pyserial模块

python的pyserial读取串口占用状态?

pySerial 串口工具简介

推荐一款串口调试助手(win10,无广告,功能齐全,操作简单

Linux下串口通信工具minicom的用法

串口调试工具哪个好