我正在尝试让bulkTransfer在USB主机模式下工作,但是参考文档并不能很好地解释它。
打电话时
bufferTmpLen = mDeviceConnection.bulkTransfer(mEPIN,
bufferTmp, 4096, TIMEOUT_MS);
为什么实际数据似乎总是在索引2的后面2个字节开始,索引0和1代表什么?总是这样吗?
TIMEOUT_MS参数的作用是什么?我试图将其设置为5000,但是该方法没有等待5秒钟来读取数据。大约1秒钟后出现的数据未被读取。那么如何使它接受在一定时间内接收到的所有数据呢?
代码在超时期间是否继续执行?因此,例如TIMEOUT = 5000,后续语句是否在5秒后或紧随bulkTransfer行之后执行?
我真的很困惑,没有在任何地方描述有关这种方法的重要信息。
请让我知道是否有比标准参考更好的资源。
多谢!
最佳答案
超时是放弃之前等待响应的最长时间。如果响应更快出现,则该方法会更快完成。您可能取回少于4096字节。最坏的情况是,经过五秒钟,在此期间线程被阻塞,最后该方法返回-1表示失败。
至于前两个字节,它们没有什么特别的。这仅取决于设备选择通过此端点进行通信的具体细节。
关于android - 需要有关Android上USB主机模式下的UsbDeviceConnection.bulkTransfer的更多信息,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8568456/