第一种方法
①需要使用到的命名空间:
using System.IO.Ports;
using Microsoft.Win32; //RegistryKey 类
//官网的介绍: https://docs.microsoft.com/zh-cn/dotnet/api/microsoft.win32.registrykey?redirectedfrom=MSDN&view=netframework-4.8
② 下面是获取串口名称的方法
void CheckSerialPort()
{
RegistryKey tempRegist = RegistryKey .LocalMachine.OpenSubKey("HARDWARE").OpenSubKey("DEVICEMAP").OpenSubKey("SERIALCOMM");
if (tempRegist != null && tempRegist .ValueCount > 0)
{
string[] tempRegistComs = tempRegist .GetValueNames();
cbPortItem.Items.Clear(); //清除Combox中的项
foreach (string tempStrName in tempRegistComs )
{
string tempCom = Convert.ToString(tempRegist .GetValue(tempStrName ));
cbPortOne.Items.Add(tempCom); //添加Com名称
}
if (cbPortOne.Items.Count > 0)
{
cbPortOne.SelectedIndex = 0; //默认的索引
}
}
}
第二种方法
① 需要使用到的命名空间:
using System.IO.Ports;
② 添加Com名称到ComboBox
void SerialPortDetect() //串口检测
{
cbPortItem.Items.Clear(); //清除Combox中的项
try
{
cbPortItem.Items.AddRange(SerialPort.GetPortNames()); //添加项
if (cbPortItem.Items.Count > 0)
{
cbPortOne.SelectedIndex = 0; //默认的索引
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
以上两种方法,都是检测本机有多少个COM口,然后将它加入到名字为cbPortOne的Combobox控件里面。