如何进入Android Usb主机主机发送命令后的Usb设备响应?

前端之家收集整理的这篇文章主要介绍了如何进入Android Usb主机主机发送命令后的Usb设备响应?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
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协议的细节.

希望能帮助到你.

猜你在找的Android相关文章