控制端點是(通常)用於發送命令到USB設備。
批量端點(通常)用於將數據傳輸到USB設備。
散裝數據的結構沒有定義。
但在控制轉移數據結構的定義。
主機發送一個8byte數據包,其中包含有關該命令的信息(如請求ID,命令參數,數據傳輸的數據長度等等)。然後可選地接收/發送一些數據,最後通過轉移到狀態階段,主機/設備同意命令成功。而已!
但是,惡魔在細節中,請參閱usb規範。 :)
所有usb存儲器(pendrives,存儲卡,硬盤驅動器)工作在usb大容量存儲類。
使用海量存儲類,您可以執行內存讀寫操作,但其上的文件系統(例如:EXT3,FAT ...)需要另一個驅動程序。
所以,本質上是讀取/寫入文件。您需要連接到該設備:
- 連接到設備(你這樣做的話)
- 鑑定,並採取控制了海量存儲接口
- 寫一個大容量存儲類驅動程序
- 寫入文件系統驅動程序將使用海量存儲類驅動程序讀取/寫入文件
- 在項目中使用文件系統驅動程序api。
寫一個大容量存儲類驅動程序,您必須閱讀USB大容量存儲CLAS規範 http://www.usb.org/developers/docs/devclass_docs/和probebly你正在尋找的Bulk only
,然後,請你靶向文件系統(S)爲那裏設計和規格。(如果可用)
據我所知,Android已經安裝的文件系統設備連接到USB接口,所以你probebly重新發明輪子。
額外注:
一些文件系統不開放的文檔(儘管反向ENGG信息probely存在)(例如:NTFS)
和一些文件系統是(部分)的專利。 (例如:FAT)
如果我要解決這個問題,我可能會從代碼開始訪問插入小型裸機嵌入式系統的USB存儲設備,因爲這可能比操作系統更便於攜帶文件系統代碼。當然,發佈的應用程序可以實現這一點,但我不知道任何開源代碼。 – 2013-03-22 15:01:18
我知道有應用程序可以做到這一點,但就像你說我找不到任何開源的應用程序。例如,在我的Galaxy S3上,這不是這個項目的目標手機,我不需要做任何事情,只需插入即可使用。你有什麼樣的建議嗎? – echaney 2013-03-22 15:05:47