如何在Linux中将东西写入USB HID?

szqfcxe2  于 2023-05-28  发布在  Linux
关注(0)|答案(1)|浏览(157)

我正在使用AMOLED屏幕。供应商将屏幕的亮度控制暴露给USB HID,并且只给予我一个使用Chrome的navigator.hid的示例网页。我读了JavaScript代码,发现我需要做以下事情:

  • 查找供应商ID为1810且产品ID为10的USB HID设备;
  • 在每次我需要设置亮度时,我必须发送一个报告ID为9的报告和包含格式化亮度值的四个字节的数据。

虽然看起来非常清晰和简单,但我仍然不知道如何用Linux和C来做这些。特别是:

  • 当我插入控制USB端口时,我发现有两个新的设备文件:/dev/hidraw0/dev/usb/hiddev0。它们之间有什么区别,我应该使用哪一个?
  • 如何做USB特定的事情,即获取供应商ID和产品ID,发送带有报告ID的报告?ioctl标志是否有特定的头文件?
fae0ux8s

fae0ux8s1#

经过一些研究我发现应该使用/dev/hidrawX设备,/dev/usb/hiddevX很可能是用于屏幕触摸输入的。该API在linux kernel documentation中描述,不需要库。
事实上,所有的东西都是直接和直接的。首先我应该open hidraw设备。可以使用ioctlHIDIOCGRAWINFO以及struct hidraw_devinfo检索供应商ID和产品ID:

struct hidraw_devinfo info;
ioctl(fd, HIDIOCGRAWINFO, &info);

在确定正确的hidraw设备,我应该写他们5字节数组使用write .第一个字节包含报告ID 9,后四个字节包含使设备满意的消息。

相关问题