//相关命名空间
using System.IO.Ports;
using System.Management;
//相关全局变量
public static SerialPort Hcom = new SerialPort();
private uint HusbCount = 0;
private string HusbInfo = string.Empty;
//核心代码
if (!Hcom.IsOpen)
{
int portNum, HPortNum = 0,searcherNum=0;
string[] PortNames = SerialPort.GetPortNames();
string[] deviceName = new string[10];
string Hkey = "CP210X";
string HCom = null;
bool isContains = false;
Int32 numOfDevices = 0;
CP210x.GetNumDevices(ref numOfDevices);//CP210x连接数量
Console.WriteLine("GetNumDevices:" + numOfDevices);
using (ManagementObjectSearcher searcher = new ManagementObjectSearcher
("select * from Win32_PnPEntity where Name like '%(COM%'"))
{
var hardInfos = searcher.Get();
foreach (var hardInfo in hardInfos)
{
if (hardInfo.Properties["Name"].Value != null)
{
deviceName[searcherNum] = hardInfo.Properties["Name"].Value.ToString();
Console.WriteLine(deviceName[searcherNum]);
isContains = deviceName[searcherNum].IndexOf(WTkey, StringComparison.OrdinalIgnoreCase) > 0;
if (isContains)
{
WTCom = deviceName[searcherNum].Substring(40,4);
Log.Debug("WTCom is " + WTCom);
}
searcherNum++;
}
}
}
if (numOfDevices > 0)
{
for (portNum = 0; portNum < PortNames.Count(); portNum++)
{
System.Console.WriteLine("PortNames " + portNum + " is:" + PortNames[portNum]);
if (PortNames[portNum] == HCom)
{
HPortNum = portNum;
Log.Debug("HPortNum is " + HPortNum);
}
}
if (HPortNum > 0 && HPortNum <= portNum)
{
Hcom.PortName = PortNames[HPortNum];
Hcom.BaudRate = 460800;
Hcom.Parity = Parity.None;
Hcom.StopBits = StopBits.One;
Hcom.DataBits = 8;
Hcom.DataReceived += new SerialDataReceivedEventHandler(H_Decode_com_DataReceived);
Hcom.ReceivedBytesThreshold = 13;
Hcom.RtsEnable = true;
Hcom.Open();
WTcom.DiscardInBuffer();//丢弃传输缓冲区数据
WTcom.DiscardOutBuffer();//每次丢弃接收缓冲区的数据
}
else
{
Log.Debug("No HPort");
}
}
else
{
Log.Debug("No HUSB");
}
}
C# 识别USB设备,获取设备全称以及对应端口号 CP210X为例
猜你喜欢
转载自blog.csdn.net/Hilaph/article/details/88018834
今日推荐
周排行