我有一个 UPS,它通过串口输出数据,比如电池状态。该 UPS 通过 USB 连接到计算机,使用串行端口到 USB 适配器。超级终端可以通过自定义协议与 UPS 进行通信。
是否可以使用 UPS 的 USB 输出为 Windows 编写 HID 电源设备驱动程序?此驱动程序应将自定义协议转换为 HID 电源设备协议。
我有一个 UPS,它通过串口输出数据,比如电池状态。该 UPS 通过 USB 连接到计算机,使用串行端口到 USB 适配器。超级终端可以通过自定义协议与 UPS 进行通信。
是否可以使用 UPS 的 USB 输出为 Windows 编写 HID 电源设备驱动程序?此驱动程序应将自定义协议转换为 HID 电源设备协议。
是的,这可以通过为您的 UPS 编写 WDM 或 KMDF USB HID 迷你驱动程序来完成。在 HID Mini 驱动程序中,您必须在 hid 集合中定义带有 USB 电源设备使用情况的 HID 报告描述符。在该驱动程序中,您需要配置和枚举您现在用于虚拟串行端口通信的 USB 管道。您必须直接从 USB 管道发送和接收数据。
在此 HID 迷你驱动程序中,一旦您使用使用页面(例如具有必要用途的电池系统作为隐藏报告)定义报告描述符并处理来自顶级 HID 类驱动程序的 IOCTL 调用,您可以在 Windows 设备中看到您的 UPS 作为 HID UPS 电池连接经理。您可以在电源选项面板以及系统托盘中将 UPS 视为具有充电状态、交流电源状态、电池剩余容量 % 的电池,就像我们在系统托盘上看到的笔记本电脑电池状态一样。
您还可以发送现有的 UPS 命令,您现在通过超级终端发送的内容将通过 HID API 调用发送,例如根据您的要求定制开发的应用程序中的 HidD_GetFeature、HidD_SetFeature、HidD_GetInputReport、HidD_SetOutputReport 函数。