【问题标题】:Writing a Windows driver for Pro Micro为 Pro Micro 编写 Windows 驱动程序
【发布时间】:2017-01-15 08:09:16
【问题描述】:

首先,我对 USB 功能的经验非常少,更不用说编写驱动程序了;本质上是想让这个项目成为一种学习体验。

我的设置由 SparkFun Pro Micro 板和一台 Windows 机器组成。我有一个电位器连接到 Pro Micro,我的最终目标是将电位器的值发送到主机并使用该值来更改系统音量等...

Arduino 库附带了一个 Serial 库,我可以使用它通过 USB 发送内容。我目前有一个工作的 Arduino 程序,每 1 秒发送 1 个字节,Windows 机器上的 C 程序“连接”到 COM 端口并读取通过的字节(这部分我工作正常)。

问题在于,当 Pro Micro 连接到计算机时,它会出现在随机选择的 COM 端口上,我认为您无法分辨哪些 COM 端口容纳了哪个设备(不确定这一点)。

我的最终目标是当 Pro Micro 连接到 PC 时,主机程序应该自动识别 Pro Micro 并开始处理来自它的数据。将其设置为 HID 设备并将其作为我自己的自定义设备显示在设备管理器中是我感兴趣的事情,尤其是在学习体验方面,但我觉得这可能会使事情变得过于复杂。

谁能指出我应该做什么/研究什么的正确方向?

【问题讨论】:

  • 您能否轮询所有 COM 端口并找出响应为 Pro Micro 的端口?我对板子不熟悉,但板子通常有一个协议可以识别它们。
  • 我不认为这是作弊。这正是操作系统在启动时定位所有连接设备的方式。
  • 不,不是虚拟消息,而是触发董事会以自己的身份进行响应的消息。您必须阅读开发板程序员手册才能了解要发送的内容。
  • 如果能用COM,就用它; USB 只是“载体”。
  • fwiw,我可以将某些“芯片”分配给不同的 com 端口。例如,当我的 arduinos 出现在 com4 中时,我的 cp2102 板显示在 com10 下。我所做的只是更改控制面板串行部分中的端口...

标签: c windows arduino usb driver


【解决方案1】:

【讨论】:

  • 感谢您的指点。也仅供将来参考,在什么情况下您需要编写驱动程序。编写通过 COM 通信的程序和驱动程序有什么区别?
  • 您需要一个驱动程序来启用硬件设备之间的信息交换,这包括像显卡、硬盘、南北桥等“低级”设备......不用写驱动就是驱动已经存在(usbser.sys)。由于标准化,这是可能的。因此,如果您的硬件不符合标准(即不使用标准 USB 协议,...),或者如果您的硬件是全新的,那么您必须编写自己的驱动程序,以便您必须实现使您的设备标准的驱动程序合规或使其工作......
【解决方案2】:

我建议使用 libusbp,这是一个 C 库,可用于查找 COM 端口的名称,给定 USB 供应商 ID 和产品 ID。 “示例”文件夹中甚至有一个示例可以做到这一点:

https://github.com/pololu/libusbp

【讨论】:

  • 谢谢,我会调查的!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多