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

Way*_*liu 7 usb android host

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

Sri*_* K. 6

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

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

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

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

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

看起来超时会影响您的Case中的行为.我的建议是在每个响应的长度字段中使用确切的字节数,并使用更长的超时(如1000),以便为批量请求提供足够的时间来完成.