串口工具 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 无法检测到串口的主要内容,如果未能解决你的问题,请参考以下文章