上位机没有官方 USB 库,软件开发需要跟着您的 USB 通信方式和上位机操作系统决定,而且必须上位机和下位机联合开发联合调试。您用的是 USB 通信用的是什么方式?上位机用的是什么操作系统?要不要考虑上位机软件跨平台支持?
下位机如果用 USB HID 通信协议的话,在 Windows、桌面 Linux、安卓和 macOS 都可以实现免驱,而且有一个放之四海而皆准的上位机库 libhidapi;但是 USB HID 通信速率上限 64kB/s。USB HID 协议下位机在上位机系统中枚举为一个 USB 人机接口设备或 USB 输入设备,libhidapi 自带设备枚举和查找功能。
如果你不介意花一点功夫来研究上位机 USB API 如何查询设备的话,可以考虑用 USB CDC ACM 通信协议。这个协议一样可以在 Windows、桌面 Linux、安卓和 macOS 都实现免驱,但 Windows 要求 Windows 10 才可以免驱。USB CDC ACM 协议下下位机在上位机系统中枚举为一个 USB 串口,上位机软件通过 USB API 来查找这个串口,找到后可以用系统特定的标准串口 API 来访问。
如果你不介意花一点功夫写 WinUSB 描述符的话,可以考虑 Vendor Secific Device + WinUSB 描述符。这个协议一样可以在 Windows、桌面 Linux、安卓和 macOS 都实现免驱,但 Windows 要求 Windows 7 才可以免驱。这个方式也有一个放之四海而皆准的上位机库 libusb-1.0。Vendor Secific Device + WinUSB 协议下位机在上位机系统中枚举为一个自定义 USB 设备,libusb 自带设备枚举和查找功能。
如果你不考虑兼容 Windows,或者不介意写 Windows 内核驱动且可以搞定 WHQL 签名流程的话,可以考虑用单纯 Vendor Specific Device。这个协议可以在除了 Windows 以外的平台免驱,而且在非 Windows 的平台下一样可以用 libusb 开发。但是在 Windows 下你必须用 Windows DDK 来编写内核驱动。
评分
查看全部评分