版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/weixin_41913666/article/details/79726429
语言C# ,是根据设备VID和PID匹配所对应的串口。也可以根据设备的GUID匹配。
下面是具体实现返回类似字符串“COM1”。注释部分可以打印出该设备的所有信息,方便扩展。
/// <summary>
/// VID+PID gets the serial port
/// </summary>
/// <returns></returns>
private string searchDevicesRegistry()
{
string[] available_spectrometers = SerialPort.GetPortNames();
ManagementObjectCollection.ManagementObjectEnumerator enumerator = null;
string commData = "";
ManagementObjectSearcher mObjs = new ManagementObjectSearcher("root\\CIMV2", "SELECT * FROM WIN32_PnPEntity");
try
{
enumerator = mObjs.Get().GetEnumerator();
while (enumerator.MoveNext())
{
ManagementObject current = (ManagementObject)enumerator.Current;
if (Strings.InStr(Conversions.ToString(current["Caption"]), "(COM", CompareMethod.Binary) <= 0)
{
continue;
}
//foreach (var property in current.Properties)
//{
// Console.WriteLine(property.Name + ":" + property.Value);
//}
if (current["DeviceID"].ToString().Equals(@"FTDIBUS\VID_0413+PID_6111+FTZ6XM7RA\0000")))
{
commData = current["Name"].ToString().Substring(17,4);
break;
}
}
}
finally
{
if (enumerator != null)
{
enumerator.Dispose();
}
}
return commData;
}
‘设备管理器‘里察看USB设备属性的PID和VID,也可以百度科普一下,多学一点是好的。
这是动态库
using System.IO.Ports;
using System.Management;
using Microsoft.VisualBasic;
using Microsoft.VisualBasic.CompilerServices;
题外话:项目需要写了一个获取串口的方法。当时困扰了好久,看了一些技术帖总结了这个方法。看到很多有偿的技术分享,所以你懂得...(经过努力后实现)深知开发遇到技术困难无法解决时的痛苦,不是不能解决而是现有知识储备不够。所以我为身边的你贡献一点热。