在Android上的USB主机模式下需要有关UsbDeviceConnection.bulkTransfer的更多信息

use*_*184 1 usb android

我试图让bulkTransfer在USB主机模式下工作,但参考文档并没有真正解释它.

打电话的时候

bufferTmpLen = mDeviceConnection.bulkTransfer(mEPIN,
        bufferTmp, 4096, TIMEOUT_MS);
Run Code Online (Sandbox Code Playgroud)
  1. 为什么实际数据似乎总是在索引2中的2个字节后开始,在索引0和1中表示什么?总是这样吗?
  2. TIMEOUT_MS参数真的有用吗?我试图将其设置为5000,但该方法没有等待5秒钟来读取数据.大约1秒后出现的数据未被读取.那么如何让它接受在一定时间内收到的所有数据呢?
  3. 代码是否在TIMEOUT期间继续执行?那么例如TIMEOUT = 5000,后续语句是在5秒之后执行还是紧跟在bulkTransfer行之后执行?

我真的很困惑,这种方法的重要信息在任何地方都没有描述.

如果有比标准参考更好的来源,请告诉我.

多谢!

use*_*4ce 5

超时是放弃前等待响应的最长时间.如果响应更快,则该方法会更快完成.你可能会回来少于4096字节.最坏的情况是,经过五秒钟,在此期间您的线程被阻止,最后该方法返回-1表示失败.

至于前两个字节,它们并没有什么特别之处.它只取决于设备选择通过此端点进行通信的具体情况.