Android of Things与USB外设的通讯

时间:2018-07-26 09:44:51

标签: android usb android-things

我从AoT开始冒险(我有基本的工具包)。 我尝试实现的第一个想法是通过USB与读卡器(USB Card Reader HID Prox v3)进行通信。

但是我不正确。

这是“示例”代码:

 usbRequest = new UsbRequest();
 usbConnection = mUsbManager.openDevice(device);
usbRequest.initialize(usbConnection, device.getInterface(0).getEndpoint(0));//communication from card scanner
//In handler:
  byte[] byteArray = new byte[16];
            int transfer = usbConnection.bulkTransfer(device.getInterface(0).getEndpoint(0), byteArray, 16, 300);

转移结果= -1,有人遇到过同样的问题吗?

1 个答案:

答案 0 :(得分:0)

假设:您的USB设备符合USB CCID Device Class。如果不是这样,则需要为特定的读卡器提供数据表。

  1. 在可以与USB端点执行任何通信之前,您的应用必须首先声明该接口的所有权。换句话说,在发送任何请求之前,应该在您的代码中调用claimInterface()

  2. 接下来,您将混合两种不同形式的通信。您的应用应同时使用UsbRequest进行异步使用或bulkTransfer()进行同步使用。如果您使用的是UsbRequest,则无需初始化bulkTransfer()

  3. 您应验证UsbEndpoint的最大数据包大小。批量CCID端点最多可以支持512字节的数据包,因此16字节的固定长度可能不足以读取完整的数据包响应(假设此事务在批量IN端点上)。使阵列大小与端点的数据包大小匹配。