【问题标题】:How to get in Android Usb Host what Usb Device responses after Host sends command?如何在 Android Usb Host 中获取 Host 发送命令后 Usb Device 响应的内容?
【发布时间】:2016-11-23 21:07:05
【问题描述】:

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 规范(可以用谷歌搜索)定义了一些“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 以任何方式返回任何内容,对吗?

【问题讨论】:

    标签: android android-usb usb-hostcontroller


    【解决方案1】:

    我快速浏览了 ADNS-5000 规范。有一件事是肯定的,你有可用的 IN 和 OUT 端点。

    Get_Status_Endpt0 82 00 00 00 xx 00 02 00 输出:xx=00,输入: xx=80 通常返回 00 00

    这意味着命令(没有API)可以返回结果。

    我能想象的唯一方法是将命令写入 OUT 端点并从 IN 端点读取(通过轮询)状态(在命令执行之后)。

    这是我在几个项目中一直在使用的东西,它非常好。我不确定 ADNS-5000,因为我没有检查 USB 协议详细信息。

    希望对你有帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-05-15
      • 2019-08-13
      • 2012-11-03
      • 2012-02-03
      • 2011-10-27
      • 2011-10-22
      • 2012-07-23
      相关资源
      最近更新 更多