2016-11-14 105 views
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上運行,我就可以使用任何堆棧。

回答

相關問題