Android bulkTransfer在读取数据时返回-1,但是缓冲区中确实存在一些数据

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

Solutions Collecting From Web of "Android bulkTransfer在读取数据时返回-1,但是缓冲区中确实存在一些数据"

当使用USB批量传输时,这里列出了事务处理失败时要检查的事项

a)validation已经通过bulkTransfer函数的端点方向

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

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

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

它看起来像超时正在影响你的情况下的行为。 我的build议是使用每个响应的长度字段中的确切字节数,并使用更长的超时时间(如1000),因此您需要足够的时间来完成批量请求。

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

我面临同样的问题。 我正在使用Android(三星Galaxy S3)作为USB主机设备。 我想到了使用USB BulkTransfer读取端点和写入端点不传输数据。 我试图切换terminal的主机模式的情况下,它识别并成功地写/读数据。

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

PS有一个名为“USB设备信息”的Android应用程序。 它帮助我了解了我的USB设备的接口和端点。