如何使自定义USB设备在Windows中显示为COM端口?

Cod*_*oet 10 windows embedded usb serial-port driver

我开发了一个USB设备,通过简单但专有的界面和一些自定义Linux驱动程序与linux通信.我的目标是在没有编写Windows驱动程序的情况下将其移植到Windows.我想要做的是找到一个开源或内置类驱动程序的Windows,看起来像Windows中的COM端口.然后我将定制嵌入式软件以匹配虚拟COM端口期望看到的协议和描述符.

我的想法是,我可以将我的设备插入Windows机器,并且会出现相对高速的COM端口,而我不得不为它开发Windows驱动程序.

我一直在看USB CDC(通信设备类)文档,它看起来很有希望,但我不知道哪个子接口最好用,以便它显示为COM端口.

这里有没有人做过这样的工作或者可以提供一些见解?特别:

  1. 是否有"内置"到Windows的虚拟COM驱动程序,或者我需要第三方驱动程序.
  2. 我应该使用哪个CDC子类进行简单的RS232仿真(不需要调制解调器AT命令等)
  3. 有没有更好的选择来做我想做的事情.

谢谢

Dav*_*son 10

Windows内置的USB转串口驱动程序可以满足您的需求.它叫做usbser.sys:

http://support.microsoft.com/kb/837637

您将不得不编写一个INF文件并将其分发给您的用户,但这不会太难,因为它只有几千字节的文本,您可以在线查找示例.

我不知道微软为这个驱动程序提供了很好的文档,所以我的建议是找到一些其他使用它的设备,比如Pololu Wixel,并复制他们所做的.

以下是我们使用的设备描述符和我们必须实现的特殊控制传输:https: //github.com/pololu/wixel-sdk/blob/master/libraries/src/usb_cdc_acm/usb_cdc_acm.c

您可以通过下载软件并查看驱动程序文件夹来查看我们的INF文件wixel_serial.inf:http: //www.pololu.com/docs/0J46/3.a (其中还有其他文件没有必要为了你.)

您还可以查看Arduino Uno,因为它们使用相同的驱动程序.

无论您做什么,请不要在您的产品中使用我们的USB供应商ID!你需要得到自己的.

更新:在Windows 10中,由于Windows附带的新usbser.inf驱动程序,您不再需要INF文件.