使用USB外设进行物联网通信



我用AoT开始了我的冒险(我有基本的工具包(。我尝试实现的第一个想法是通过USB与读卡器(USB读卡器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,有人有同样的问题吗?

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

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

  2. 接下来,您将混合使用两种不同的交流形式。您的应用程序应该使用UsbRequest进行异步使用,或者使用bulkTransfer()进行同步使用。如果使用bulkTransfer(),则不需要初始化UsbRequest

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

最新更新