如何在c#中获取端口名称?
我知道我们可以使用
获取所有端口名称System.IO.Ports.SerialPort.GetPortNames()
method.But此方法返回所有端口名称以及所有虚拟COM端口名称。
例如,我的一台PC没有任何COM端口,但它有四个USB端口。所以现在该函数将端口计数返回为四。但是所有端口都是虚拟COM端口。
那么我如何获得端口名称,是否有任何InBuilt功能。 ?
答案 0 :(得分:2)
虚拟COM端口旨在模拟真正的COM端口,据我所知,没有标准方法可以检测到它的虚拟COM端口。
如果安装了您的应用程序的PC都具有相同的虚拟端口,那么您可以通过查看虚拟COM端口的驱动程序文档来执行非标准操作。
如果您可以保证所有名称都包含虚拟词,您可以这样做:
System.IO.Ports.SerialPort.GetPortNames().Where( x => !x.Contains("Virtual")).Count();
答案 1 :(得分:1)
如果您需要获取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));
答案 2 :(得分:-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