Mar*_*och 7 android usb-hostcontroller android-usb
按照简单的教程我可以连接到设备(带有ADNS-5000芯片的usb光学鼠标)并制作批量传输.
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
Run Code Online (Sandbox Code Playgroud)
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};
Run Code Online (Sandbox Code Playgroud)
我应该得到的设备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 通常返回 00 00
这意味着命令(没有 API)可以返回结果。
我能想到的唯一方法是将命令写入 OUT 端点并从 IN 端点读取(通过轮询)状态(命令执行后)。
这是我在几个项目中使用过的东西,非常好。我不确定 ADNS-5000,因为我还没有检查 USB 协议详细信息。
希望能帮助到你。
| 归档时间: |
|
| 查看次数: |
369 次 |
| 最近记录: |