【问题标题】:Accessing USB Serial Port -> Property -> Details [c#]访问 USB 串口 -> 属性 -> 详细信息 [c#]
【发布时间】:2017-11-08 15:09:50
【问题描述】:

在检测到 DBT_DEVICEARRIVAL 事件后,我正试图找到一种方法来读回 USB 端口的一些信息。 [c#]

在 Windows 中,通过设备管理器我可以读回很多信息:

设备管理器 -> USB 串口 -> 属性 -> 详细信息 -> 属性 -> xxxx(例如制造商)

谁能告诉我如何在 c# 中以编程方式访问该信息?

感谢您的宝贵时间!

【问题讨论】:

  • 我在 Google 上搜索了“c# 读取 USB 制造商”并获得了很多示例。有什么理由不适合你?
  • 尽管是 VB.Net,这可能会有所帮助:stackoverflow.com/questions/41782308/…

标签: c# usb


【解决方案1】:

快速 sn-p 让您开始

ManagementObjectSearcher searcher = new ManagementObjectSearcher("root\\WMI", "SELECT * FROM MSSerial_PortName");
  foreach (ManagementObject queryObj in searcher.Get()) {
      ....
  }

查看文档以获取实例值,例如 queryObj["InstanceName"].ToString() 通常包含制造商或/和型号名称。

【讨论】:

  • 谢谢 Rob,这让我开始了。我最终使用 win32_PnPEntity 来获取我想要的端口。但是我确实面临另一个问题(有解决方法)。我正在尝试检测 USB 插入/输出事件,以查看是否正在连接某个硬件。如果我在事件发生后立即查询 win32_PnPEntity,我似乎得到了 InvalidCastException。我发现我需要至少等待 5000 毫秒,这可以解决问题。您知道任何更清洁的解决方法吗?
  • 不适用于该事件,因此我没有尝试过任何解决方法(我使用的串行设备几乎总是插入)。可能每 500 或 1000 毫秒进行一次循环测试(当然在循环中设置最大尝试次数)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多