2011-12-15 532 views
1

要從打開的USB連接中讀取數據,需要使用UsbDeviceConnection bulkTransfer方法。在USB主機模式下從UsbDeviceConnection讀取的最佳方式

我有這樣的情況,發送請求後,例程應讀取所有傳入數據,它可能只是8個字節,甚至300個字節。

問題是bulkTransfer不會因爲某些原因讀取所有字節 - 它只是返回一些字節,而可能會有更多字節。

圍繞bulkTransfer編寫一個循環,直到沒有更多的數據,或增加超時,或者可能還有另一種方法爲止,是更好嗎?

什麼是最好的處理方法?

我試過循環方法,我很驚訝它每次讀取大約10-20個字節,甚至超過1秒。我確信已經有更多的數據可用,不知道爲什麼它一次不會讀更多的數據。

使用哪種緩衝區大小有關係 - 許多示例有4096個,但如何改變這個影響數據的讀取?

非常感謝

回答

1

如果設備在同一時間發送10個字節並如此反覆完成300多個字節,你仍然只能得到這10個字節塊每次與批量傳輸讀取時間。

換句話說,該方法不會等待填滿緩衝區。只要有什麼東西,它就會返回。所以如果你真的想收集整個300多字節的響應,你需要循環。