【问题标题】:How to get Port name in c#?如何在 C# 中获取端口名称?
【发布时间】:2011-05-18 14:23:10
【问题描述】:

如何在 c# 中获取端口名称?

我知道我们可以通过使用获取所有端口名称

System.IO.Ports.SerialPort.GetPortNames()

方法。但是此方法返回所有端口名称以及所有虚拟 COM 端口名称。

例如,我的一台 PC 没有任何 COM 端口,但它有四个 USB 端口。所以现在该函数将端口计数返回为 4。但所有端口都是虚拟 COM 端口。

那么我如何获得端口名称,是否有任何 InBuilt 功能。 ?

【问题讨论】:

  • 所以您特别想要物理串行端口而不是 USB 虚拟串行端口,即您不想在那台 PC 上获得任何结果?
  • @Rup 是的,显然结果为零。但如果 PC 真的有物理端口,它应该显示实际的端口数。

标签: c# port


【解决方案1】:

虚拟 COM 端口旨在模拟真实的 COM 端口,据我所知,没有标准方法可以检测到它是虚拟 COM 端口。

如果要安装您的应用程序的 PC 都具有相同的虚拟端口,那么您可以通过查看虚拟 com 端口的驱动程序文档来做一些非标准的事情。

如果你能保证所有的名字都包含虚拟这个词,你可以这样做:

System.IO.Ports.SerialPort.GetPortNames().Where( x => !x.Contains("Virtual")).Count();

【讨论】:

  • 通讯端口名称只有“COM1,COM2,COM3,COM4,​​COM23,COM24,...”。名称中没有像“虚拟”这样的真实词。绝不。如果你想获得真实的设备名称,你需要通过注册表。但 Pramodh 要求提供 InBuild 功能。不,没有 InBuild 功能。
【解决方案2】:

如果您需要在 C# 中获取所有可用端口,您可以使用此代码。它将端口放在一个组合框中。

// Get the valid COM ports and insert them into the portCombo.
Array ports = System.IO.Ports.SerialPort.GetPortNames();
for(int x=0; x< ports.Length;
   portCombo.Items.Add( ports.GetValue(x)); 

【讨论】:

    【解决方案3】:

    如果您的意思是要读出连接设备的名称,则需要通过注册表进行。如果您需要更多详细信息,请告诉我。

    import _winreg as winreg
    import itertools
    
    def enumerate_serial_ports():
        """ Uses the Win32 registry to return an
            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])
            except EnvironmentError:
                break
    

    【讨论】:

    • 不能真正编译(作为 C#)
    • @Rune FS。那不是问题。
    • “如何在 C# 中获取端口名称”是个问题。我几乎会说一个有效的答案是“在 C# 中”,不是吗?
    猜你喜欢
    • 2015-10-14
    • 2010-12-13
    • 1970-01-01
    • 2014-05-19
    • 2011-06-15
    • 1970-01-01
    • 1970-01-01
    • 2015-03-15
    • 1970-01-01
    相关资源
    最近更新 更多