相关疑难解决方法(0)

列出Windows上的串行(COM)端口?

我正在寻找一种强大的方法来列出Windows机器上可用的串行(COM)端口.这篇关于使用WMI帖子,但我想要一些特定于.NET的东西 - 我想在没有.NET的情况下获得Python或C++程序中的端口列表.

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

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

  2. Tryint调用CreateFileCOMN1有N多家的东西.这还不够好,因为某些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
Run Code Online (Sandbox Code Playgroud)

c python windows winapi serial-port

29
推荐指数
4
解决办法
5万
查看次数

如何使用Free Pascal调用物理连接的硬盘列表,或者,如果不这样,Delphi?

这个问题这一次,我问最近,但没有正确的细节......,最后这一次,我在自由帕斯卡论坛问具体....

任何人都可以向我提供指导,示例或某个地方的链接,解释如何使用Free Pascal调用物理连接的硬盘列表,或者,无论如何,Delphi,无论磁盘是否已由操作系统安装或不?我想要实现的屏幕截图中显示了一个示例(此屏幕截图中显示的是另一个软件产品).因此,拉出逻辑卷列表(C:\,E:\ etc)并不是我想要做的.如果磁盘有一个操作系统无法挂载的文件系统,我仍然希望看到列出的物理磁盘.

我强调C\C++\C夏普的例子很丰富,但不是我追求的.我主要需要Free Pascal示例,或者说,失败了,Delphi.

在此输入图像描述

delphi freepascal lazarus

10
推荐指数
1
解决办法
4083
查看次数

标签 统计

c ×1

delphi ×1

freepascal ×1

lazarus ×1

python ×1

serial-port ×1

winapi ×1

windows ×1