关注the simple tutorial我可以连接到设备(内置ADNS-5000芯片的usb光学鼠标)并制作bulkTransfer。
UsbInterface intf = device.getInterface(0);
UsbEndpoint endpoint = intf.getEndpoint(0);
UsbDeviceConnection connection = manager.openDevice(device);
connection.claimInterface(intf, forceClaim);
connection.bulkTransfer(endpoint, bytes, bytes.length, TIMEOUT); //do in another thread
ADNS-5000规范(可以用Google搜索)定义了一组" USB命令"其中有例如:
助记符:Get_Status_Device
命令:80 00 00 00 00 00 02 00
注意:通常返回00 00,自供电00 00,远程唤醒02 00
所以我理解为:当我写数据时:
private byte[] bytes = {(byte) 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00};
到设备我应该得到0x00, 0x00
或0x00, 0x00
(这可能是规范中的错误,因为此字节序列被定义为两种不同状态的结果)或0x20, 0x00
作为回报,但是我没有看到api以任何方式返回任何内容,我是对的吗?
答案 0 :(得分:0)
我快速了解了ADNS-5000规范。有一件事是肯定的,你有IN和OUT端点可用。
Get_Status_Endpt0 82 00 00 00 xx 00 02 00 OUT:xx = 00,IN: xx = 80通常返回00 00
这意味着命令(没有API)可以返回结果。
我能想象的唯一方法是将命令写入OUT端点并从IN端点读取(通过轮询)状态(命令执行后)。
这是我在一些项目中使用的东西,它非常好。我不确定ADNS-5000,因为我没有检查USB协议的细节。
希望它有所帮助。