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

时间:2016-07-20 14:45:34

标签: android android-usb usb-hostcontroller

关注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, 0x000x00, 0x00 (这可能是规范中的错误,因为此字节序列被定义为两种不同状态的结果)0x20, 0x00作为回报,但是我没有看到api以任何方式返回任何内容,我是对的吗?

1 个答案:

答案 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协议的细节。

希望它有所帮助。