在
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命令”,例如:
Mnemonic: Get_Status_Device
Command: 80 00 00 00 00 00 02 00
Notes: normally returns 00 00,Self powered 00 00,Remote wakeup 02 00
所以我理解为:当我写数据时:
private byte[] bytes = {(byte) 0x80,0x00,0x02,0x00};
到设备我应该得到0x00,0x00或0x00,0x00(这可能是规范中的错误,因为这个字节序列定义为两个不同状态的结果)或0x20,0x00作为回报,但我没有看到任何方式api返回任何东西,对吗?
解决方法
我快速浏览了ADNS-5000规范.有一件事是肯定的,你有IN和OUT端点可用.
Get_Status_Endpt0 82 00 00 00 xx 00 02 00 OUT: xx=00,IN:
xx=80 normally returns 00 00
这意味着命令(没有API)可以返回结果.
我能想象的唯一方法是将命令写入OUT端点并从IN端点读取(通过轮询)状态(在命令执行之后).
这是我在一些项目中使用的东西,它非常好.我不确定ADNS-5000,因为我没有检查USB协议的细节.
希望能帮助到你.