为Pro Micro编写Windows驱动程序

为Pro Micro编写Windows驱动程序,c,windows,arduino,usb,driver,C,Windows,Arduino,Usb,Driver,首先,我对USB功能的了解很少,更不用说编写驱动程序了;基本上是试图让这个项目成为一种学习体验 我的设置由SparkFun Pro Micro板和Windows机器组成。我有一个连接到Pro Micro的电位计,我的最终目标是将电位计的值发送到主机,并使用该值更改系统音量等内容 Arduino图书馆附带了一个图书馆,我可以用它通过USB发送东西。我现在有一个工作的Arduino程序,每1秒发送一个字节,在windows机器上有一个C程序,它“连接”到COM端口并读取通过的字节(这部分我工作正常)

首先,我对USB功能的了解很少,更不用说编写驱动程序了;基本上是试图让这个项目成为一种学习体验

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

Arduino图书馆附带了一个图书馆,我可以用它通过USB发送东西。我现在有一个工作的Arduino程序,每1秒发送一个字节,在windows机器上有一个C程序,它“连接”到COM端口并读取通过的字节(这部分我工作正常)

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

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


有人能告诉我应该做什么/研究什么吗?

可能使用windows内部工具,如COM端口数据库()或使用windows注册表重新分配COM端口,请参阅

如果您想了解背景:arduino实现USB CDC ACM类(通信设备类-抽象控制模型)并模拟COM端口。Windows识别此类并加载相应的驱动程序,即
usbser.sys
(),当加载驱动程序时,可以访问新的(虚拟)COM端口


最好的来源是,并且

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


您能否轮询所有COM端口并找出哪些端口响应为Pro Micro?我不熟悉董事会,但董事会通常有一个协议,允许识别他们。我不认为这是作弊。这正是操作系统在启动时定位所有连接设备的方式。不,不是一条伪消息,而是一条触发电路板以其自身身份响应的消息。您必须阅读board程序员手册,以了解发送的内容。如果您可以使用COM,请使用它;USB只是“载体”。fwiw,我可以将某些“芯片”分配给不同的com端口。例如,当我的arduinos显示在com4中时,我的cp2102板显示在com10下。我所做的只是更改了控制面板串行部分的端口…感谢指针。另外,仅供将来参考,在什么情况下您需要编写驱动程序。编写通过COM通信的程序和驱动程序有什么区别?您需要一个驱动程序来实现硬件设备之间的信息交换,这包括图形卡、硬盘、南北桥等“低级”设备,。。。。不必编写驱动程序的原因是驱动程序已经存在(usbser.sys)。这是可能的,因为标准化。因此,如果您的硬件不符合标准(即,不使用标准USB协议,…),或者如果您的硬件是全新的,那么您必须编写自己的驱动程序,以便实现一个使您的设备符合标准的驱动程序或使其工作正常的驱动程序…谢谢,我会研究它!