C#是否提供了扫描可用COM端口的有效方法?我想在我的应用程序中有一个下拉列表,其中用户可以选择一个检测到的COM端口.创建和填充下拉列表不是问题.我只需要知道如何使用C#扫描可用的COM端口.我使用的是Microsoft Visual C#2008 Express Edition.谢谢.
有没有办法枚举所有的蓝牙COM端口并得到他们的名字?而且我不是说COM10,在这种情况下,我的意思是GNSS:51622 'GNSS Server'.
使用32Feet我已经能够找到端口的名称,但仍然没有运气将它们映射到实际的COM端口.
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Connecting to Bluetooth");
var client = new BluetoothClient();
Console.WriteLine("DiscoverDevices");
var devices = client.DiscoverDevices();
Console.WriteLine("Enumerating");
foreach (var device in devices)
{
if (!device.DeviceName.StartsWith("GNSS"))
continue;
Console.WriteLine(device.DeviceName);
try
{
Console.WriteLine("Getting serial ports");
var serviceRecords = device.GetServiceRecords(BluetoothService.SerialPort);
foreach (var serviceRecord in serviceRecords)
{
var name = GetName(serviceRecord);
Console.WriteLine(name);
}
}
catch (Exception ex)
{
Console.WriteLine("Failed to get SerialPort");
Console.WriteLine(ex.ToString());
}
}
Console.ReadKey();
}
private static string GetName(ServiceRecord serviceRecord) …Run Code Online (Sandbox Code Playgroud) 我目前正在开发一个 C# 程序来与 Arduino 微控制器交互。该程序有一个组合框,您可以在其中选择 COM 端口。\xc2\xb5c 通过 USB 和虚拟 COM 端口 (CH340) 连接。
\n\n我使用下面的代码来填写组合框的可用 COM 端口。
\n\nprivate void Form1_Load(object sender, EventArgs e)\n {\n string[] PortNames = SerialPort. GetPortNames();\n comboBoxPort.Items.AddRange(PortNames);\n }\nRun Code Online (Sandbox Code Playgroud)\n\n这样做的缺点是,您必须查看设备管理器以查看哪一个是 \xc2\xb5c 的正确设备。例如,我的 PC 有 4 个活动 COM 端口,一个物理端口,2 个虚拟端口,另一个虚拟端口用于 \xc2\xb5c。我正在寻找的是一种显示设备的完整名称以及关联的 COM 端口的方法(就像您可以在设备管理器中找到它一样)
\n\n\n\n经过一番研究后,我发现使用 WMI 还有另一种可能性。在使用“WMI Code Creator”进行大量测试之后,我不知道我还能尝试什么来完成我\xe2\x80\x99已经完成的工作。我尝试过的所有命名空间和类都只是生成 COM 端口,例如 COM1、COM2\xe2\x80\xa6,或者生成对程序用户没有用处的硬件 ID。\n下面的代码或多或少正是我正在寻找的,但它仅适用于 COM 端口中的 \xe2\x80\x9creal\xe2\x80\x9d 构建。
\n\nusing System;\nusing System.Management;\nusing System.Windows.Forms;\n\nnamespace WMISample\n {\n public class MyWMIQuery\n {\n public static void Main()\n …Run Code Online (Sandbox Code Playgroud)