首先,我对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设备并将其作为我自己的自定义设备显示在设备管理器中是我感兴趣的事情,特别是对于学习体验,但我觉得它可能使事情过于复杂。
任何人都能指出我应该做什么/调查的正确方向吗?
答案 0 :(得分:1)
可能使用 COM端口数据库(https://msdn.microsoft.com/en-us/library/ff546481.aspx)或重新分配COM端口等Windows内部工具 windows registry ,见
https://superuser.com/questions/851192/change-com-port-number-programmatically
如果你想知道背景:arduino实现USB CDC ACM类(通信设备类 - 抽象控制模型https://en.wikipedia.org/wiki/USB_communications_device_class)并模拟COM端口。 Windows识别此类并在加载驱动程序时加载适当的驱动程序usbser.sys
(https://msdn.microsoft.com/de-de/library/windows/hardware/dn707976%28v=vs.85%29.aspx)可以访问新的(虚拟)COM端口
最佳来源是How does windows map the virtual com port to a device,https://superuser.com/questions/851192/change-com-port-number-programmatically和http://www.ftdichip.com/Support/Documents/AppNotes/AN_132_Re-Assigning_COM_Port_Numbers_Using_Registry.pdf
答案 1 :(得分:1)
我建议使用libusbp,一个可以用来查找COM端口名称的C库,给定USB供应商ID和产品ID。 “examples”文件夹中甚至还有一个示例: