方案一: string[] ports = SerialPort.GetPortNames();
会把鼠标键盘等其他不想获取到的串口也一并获取到
方案二:调用API,获取设备管理器下串口序列名称,可以自定义筛选。但是存在BUG,列如某个产品在设备管理器中连接后为STMicroelectronics Virtual COM Port,正常是STMicroelectronics Virtual COM Port(COMX).出现这种情况这种方法就不行了
ManagementObjectSearcher searcher = new ManagementObjectSearcher(“select * from Win32_SerialPort Where Name like ‘%STMicroelectronics Virtual COM Port%’”);
var hardInfos = searcher.Get();
foreach (var hardInfo in hardInfos)
{
if (hardInfo.Properties[“Name”] != null)
{
if (strs.IndexOf(“STMicroelectronics Virtual COM Port”) > -1)
{
break;
}
strs = strs + hardInfo.Properties[“Name”].Value.ToString();
}
}
this.cobPorts.Items.Clear();
if (!string.IsNullOrEmpty(strs))
{
if (strs.IndexOf(“STMicroelectronics Virtual COM Port”) > -1)
{
string s = strs.Replace(“STMicroelectronics Virtual COM Port”, “”).Replace("(",
C#获取当前连接设备串口号
C# 实现获取有效串口通信方法
最新推荐文章于 2025-10-08 10:05:52 发布
本文介绍了三种方法来获取C#环境中当前连接的设备串口号。方案一使用SerialPort.GetPortNames(),但可能包含非串口设备。方案二通过设备管理器API筛选,存在匹配不准确的问题。最终采用方案三,通过尝试通信来确定有效串口。

最低0.47元/天 解锁文章
623

被折叠的 条评论
为什么被折叠?



