我希望在leonardo和Android平板电脑(充当主机)之间进行2次双向(进出)HID通信。在leonardo上,我使用Nicohood HID project 我已经成功地使代码在Linux,Windows和MacO上运行,所以它是可能的。
使用纯Android实现,我只能从leonardo接收数据但不发送给它...
根据我在描述符中看到的,使用特定端点从设备(IN方向)发送数据。对于另一种方式(OUT,到设备),我们必须使用控制端点。
尽管如此,它并没有在android上运行。这是我使用的代码:
UsbDeviceConnection mUsbConnection = mUsbManager.openDevice(myDevice);
byte data[] = {7, 11, 13, 17};
int resOut = mUsbConnection.controlTransfer(0x21, 9, 200, 2, data, data.length, 50);
// => resOut value is always -1 (didn't succeed to communicate)
对于参数,我使用了这个问题的答案:Using Android to Communicate with a USB HID Device并查看了Linux上的libusb / nicohood隐藏通信示例...
运气不好,我试图改变" 200"到" 0"或指数从0到1或2,但我不知道它们的意思,它并没有真正帮助......
如何使用带有android的控制端点将数据发送到设备?
PS:我可以从设备读取HID消息,因此不是权限问题。