如何在C#中扫描COM端口?
C#是否提供了扫描可用COM端口的有效方法?我想在我的应用程序中有一个下拉列表,用户可以选择其中一个检测到的COM端口。创建并填充下拉列表不是问题。我只需要知道如何使用C#扫描可用的COM端口。我正在使用Microsoft Visual C#2008速成版。谢谢。如何在C#中扫描COM端口?
System.IO.Ports是你想要的命名空间。
SerialPort.GetPortNames将列出所有串行COM端口。
不幸的是,并行端口并不直接支持C#,因为它们在传统情况下很少使用。这就是说,你可以通过查询以下注册表项列出来:
HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\PARALLEL PORTS
见命名空间的细节。
通过System.Management命名空间使用WMI。快速谷歌发现此代码:
using System;
using System.Management;
public class Foo
{
public static void Main()
{
var instances = new ManagementClass("Win32_SerialPort").GetInstances();
foreach (ManagementObject port in instances)
{
Console.WriteLine("{0}: {1}", port["deviceid"], port["name"]);
}
}
SerialPort.GetPortNames更好的解决方案! – 2010-03-30 21:03:52
SerialPort.GetPortNames使用不保持最新的注册表数据。如果用户正在插拔很多东西,我发现管理类方法更可靠。 – SteveCav 2011-09-05 00:52:29
只需要枚举端口并进入WMI即可。但是,它似乎没有包含USB到串口适配器,或者至少它们不在列表中。使用'SerialPort.GetPortNames',他们是,并且列表立即更新。 – OregonGhost 2011-09-23 09:40:08
感谢您的额外的细节,但我真的只是列出串行COM端口(不是传统的并行)感兴趣。 – 2010-03-30 21:48:54
@Jim Fell:我第一次发布的时候就想到了,但第二个想法决定明确平行,以防万一。 – Randolpho 2010-03-30 21:53:26
@Randolpho我很欣赏它,因为这只是针对LPT的Google搜索结果。 :) – 2014-01-14 14:19:37