0
在macOS上,我使用IOKit通过USB连接获取和设置HID报告(好奇的是,这是一个站立式桌面控制器,允许您以编程方式升高和降低桌面)。我可以使用设备的IOHIDManager
列表:在Linux上,通过USB使用HID报告有什么好方法?
_manager = IOHIDManagerCreate(NULL, 0);
NSDictionary *deviceQuery = @{@kIOHIDVendorIDKey: @0x12D3, @kIOHIDProductIDKey: @0x0002};
IOHIDManagerSetDeviceMatching(_manager, (__bridge CFDictionaryRef)deviceQuery);
IOHIDManagerOpen(_manager, kIOHIDManagerOptionNone);
CFSetRef devices = IOHIDManagerCopyDevices(_manager);
// pick a device from the set and you eventually get a...
IOHIDDeviceRef myDevice = foo;
我再建立请求缓冲区和使用提出要求:
int8_t *_buffer = ...;
IOHIDDeviceSetReport(myDevice, kIOHIDReportTypeFeature, *_buffer & 0xff, (const uint8_t *)_buffer, REQ_BUFFER_SIZE);
...并使用读取回应:
IOHIDDeviceGetReport(myDevice, kIOHIDReportTypeFeature, *_buffer & 0xff, (uint8_t *)_buffer, RES_BUFFER_SIZE);
什么是在Linux上做到这一点的类似方式?我以前从来没有在Linux上使用过USB(也不是HID设备),并且只要它可以在Raspberry Pi上运行,我就可以使用任何堆栈。