c# – 如何区分usb-serial转换器?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c# – 如何区分usb-serial转换器?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1620字,纯文字阅读大概需要3分钟。
内容图文
![c# – 如何区分usb-serial转换器?](/upload/InfoBanner/zyjiaocheng/769/84bb60bb56d14f71b2503fc8bc716c85.jpg)
我有4个usb-serial转换器(Prolific)连接到usb集线器.当我查看设备管理器时,我会看到动态分配的Com编号.但是,在将集线器重新插入另一个USB端口或在系统重新启动之后,这些com号有时会发生变化.有没有办法为每个转换器更新这些数字而无需手动搜索这些数字?基本上我想在我的C#项目中有一个方法,它会为每个转换器寻找一些唯一的ID,然后获得新的com号码.有没有办法做到这一点(尝试了一些wmi查询,但没有成功)?
今天我想到了一个解决方法.所以我有另一个问题.如何获取有关USB集线器的信息?基本上我可以以某种方式找到我的USB集线器,然后检索有关连接到集线器端口设备的信息.然后通过wmi查询获取这些设备的com号将非常容易.我用USBView看到有可能获得这样的信息.我可以看到一棵树从根集线器开始 – >通用USB集线器 – >多产的USB到串行通信端口,但现在如何在代码中执行此操作.有任何想法吗?
解决方法:
它的简单,通过使用win32本机调用,你可以得到,
我只是提供一部分代码来帮助你,
var guidComPorts = Guid.Empty;
UInt32 dwSize;
IntPtr hDeviceInfo;
var buffer = new byte[512];
var providerName = new[] { };
var spddDeviceInfo = new SpDevinfoData();
var bStatus = SetupDiClassGuidsFromName("Ports", ref guidComPorts, 1, out dwSize);
if (bStatus)
{
hDeviceInfo = SetupDiGetClassDevs(
ref guidComPorts,
(IntPtr)null,
(IntPtr)null,
DigcfPresent | DigcfProfile);
if (hDeviceInfo.ToInt32() != 0)
{
while (true)
{
spddDeviceInfo.CbSize = Marshal.SizeOf(spddDeviceInfo);// IS IT THIS LINE WORK FOR 64 BIT
bStatus = SetupDiEnumDeviceInfo(hDeviceInfo, nDevice++, ref spddDeviceInfo);
break;
}
}
return;
}
}
使用此代码……
查找友好名称,拆分字符串获取您要查找的确切端口.
我已经完成了它,它的工作正常,由于一些保密原因无法在这里提供完整的代码.
更多查找此链接
http://www.codeproject.com/KB/cs/HardwareHelper.aspx
内容总结
以上是互联网集市为您收集整理的c# – 如何区分usb-serial转换器?全部内容,希望文章能够帮你解决c# – 如何区分usb-serial转换器?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。