8

我在galaxy tab p7300中编写了一个应用程序,以通过otg电缆与密钥(scsi设备)进行通信。我可以第一次使用 bulkTransfer() 读取数据,但下次不能。然后我使用 Ellisys Visual USB 嗅探数据,我发现密钥确实返回了 13 个字节的数据。但是在 android 客户端(GT-P7300)中,我收到了 bulkTransfer 返回的 -1。我的想法已经用完了。感谢任何可以给我线索的人。

4

2 回答 2

7

使用 USB 批量传输时,以下是交易失败时要检查的事项列表

a) 验证您通过 bulkTransfer 函数的端点的方向

b) 确保缓冲区有足够的长度来存储传入的数据

c)长度字段可能是最重要的。如果您知道响应的确切大小,请使用它。

d)超时参数。如果您向设备发送查询并且在侦听响应时未提供足够的超时,则 bulkTransfer 可以返回 -1。

看起来超时正在影响您案例中的行为。我的建议是在每个响应的长度字段中使用确切的字节数,并使用更长的超时时间(如 1000),这样您就有足够的时间来完成批量请求。

于 2013-01-04T10:25:15.670 回答
2

发布解决方案为时已晚,但如果将来有人需要帮助,可以从这里得到答案。

我遇到了同样的问题。我使用 Android (Samsung Galaxy s3) 作为 USB 主机设备。我弄清楚了读取端点和写入端点不使用 USB BulkTransfer 传输数据。我尝试为主机模​​式切换端点,它识别并成功写入/读取数据。

 mReadEndpoint = mDataInterface.getEndpoint(0);// tweaking endpoints // 1 was for read and 0 was for write
 mWriteEndpoint = mDataInterface.getEndpoint(1);

PS有一个可用于android的应用程序,名为“USB设备信息”。它对我理解我的 USB 设备的接口和端点有很大帮助。

于 2015-12-16T12:37:31.600 回答