我从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,有人遇到过同样的问题吗?
答案 0 :(得分:0)
假设:您的USB设备符合USB CCID Device Class。如果不是这样,则需要为特定的读卡器提供数据表。
在可以与USB端点执行任何通信之前,您的应用必须首先声明该接口的所有权。换句话说,在发送任何请求之前,应该在您的代码中调用claimInterface()。
接下来,您将混合两种不同形式的通信。您的应用应同时使用UsbRequest
进行异步使用或bulkTransfer()
进行同步使用。如果您使用的是UsbRequest
,则无需初始化bulkTransfer()
。
您应验证UsbEndpoint
的最大数据包大小。批量CCID端点最多可以支持512字节的数据包,因此16字节的固定长度可能不足以读取完整的数据包响应(假设此事务在批量IN端点上)。使阵列大小与端点的数据包大小匹配。