7

按照简单的教程,我可以连接到设备(内部带有 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, 0x00或者0x00, 0x00 (这可能是规范中的错误,因为这个字节序列被定义为两种不同状态的结果)或者0x20, 0x00作为回报,但我没有看到 api 以任何方式返回任何东西,对吗?

4

1 回答 1

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 协议的详细信息。

希望能帮助到你。

于 2016-08-22T16:01:55.817 回答