gpt4 book ai didi

python - 在 Windows 上列出串行 (COM) 端口?

转载 作者:IT老高 更新时间:2023-10-28 22:10:51 24 4
gpt4 key购买 nike

我正在寻找一种可靠的方法来列出 Windows 机器上的可用串行 (COM) 端口。有this post about using WMI ,但我想要一些不那么特定于 .NET 的东西 - 我想在没有 .NET 的情况下获取 Python 或 C++ 程序中的端口列表。

我目前知道另外两种方法:

  1. 读取 HARDWARE\\DEVICEMAP\\SERIALCOMM 注册表项中的信息。这看起来是个不错的选择,但它是否强大?我无法在网上或 MSDN 中找到此注册表单元确实始终包含可用端口的完整列表的保证。

  2. 尝试在 COMN 上调用 CreateFile,其中 N 是从 1 到某事的数字。这还不够好,因为某些 COM 端口未命名为 COMN。例如,创建的一些虚拟 COM 端口被命名为 CSNA0、CSNB0 等,所以我不会依赖这种方法。

还有其他方法/想法/经验可以分享吗?

编辑:顺便说一下,这是一个从注册表读取端口名称的简单 Python 实现:

import _winreg as winreg
import itertools


def enumerate_serial_ports():
""" Uses the Win32 registry to return a iterator of serial
(COM) ports existing on this computer.


"""
path = 'HARDWARE\\DEVICEMAP\\SERIALCOMM'
try:
key = winreg.OpenKey(winreg.HKEY_LOCAL_MACHINE, path)
except WindowsError:
raise IterationError

for i in itertools.count():
try:
val = winreg.EnumValue(key, i)
yield (str(val[1]), str(val[0]))
except EnvironmentError:
break

最佳答案

在 Python 中使用 pySerial:

import serial.tools.list_ports


ports = list(serial.tools.list_ports.comports())
for p in ports:
print p

关于python - 在 Windows 上列出串行 (COM) 端口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1205383/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com