我正在開發一個項目,在該項目中,我想通過USB端口爲外部設備製作虛擬USB閃存,例如需要用於記錄電視頻道的內存的衛星接收器。我想將PC USB端口連接到衛星USB端口,並將文件直接記錄到文件中。我正在使用C#/ .NET。如何通過USB爲外部設備虛擬創建存儲器閃存?
回答
USB協議是兩個通常之間不同的設備:該主機和客戶。主持人說什麼數據傳輸,什麼時候,客戶必須聽。然後爲客戶提供不同的設備類別。有USB可移動媒體,打印機,網絡攝像頭和其他人。 USB otg略有不同,因爲設備可以是客戶端或主機,具體取決於另一個設備。例如,當連接到PC或主機時,您的手機麪包車就是客戶端,它連接到USB存儲棒。
現在有你的衛星接收器。它想成爲主人。 (你知道,當它使用大型的A型插座),它期望一個可移動的媒體設備,如USB棒。當你連接打印機時,它不知道該如何使用它。與網絡適配器或串行端口一樣。
N.B .:您不可能通過串口實現「閃存協議」。因爲串行端口已經是客戶端設備類。另外,USB和串口之間不存在導線兼容性。
由於您的PC具有相同的角色,並且不會在USB連接中充當客戶端,所以沒有簡單的解決方案。 (我敢打賭你已經知道了,是吧?)
即使你有一個像閃存驅動器一樣的PCIexpress卡,也會有更多的障礙。例如,文件系統不能被兩臺計算機同時訪問。
回到建設性回答: Inspired from this link你可以抓住一些高端微控制器並連接一個(微型)SD卡。然後,讓它充當其USB端口上的閃存驅動器。使用其以太網連接(或WiFi),並通過samba訪問(微型)SD卡。
這是微處理器的一些非常高端的東西,所以最好不要使用非常便宜的東西。我認爲RasberryPI A型(不是B型,不能用作USB客戶端)或者Arduino/Netduino(最強大的)。 我無法找到隨時可用的設備。
重要的是,與您的PC連接使用某種網絡而不是USB。由於網絡協議具有併發性(多臺PC訪問相同的數據),而本地文件系統則沒有。
感謝DasKrümelmonster的大型樂隊,我想我會開始非常蹩腳的工作,希望能有一個不錯的成績。 – 2013-04-12 18:07:27
- 1. 通過虛擬終端在USB閃存盤中創建備份
- 2. 創建一個虛擬USB設備
- 3. 虛擬USB設備
- 4. 如何確定連接的USB設備是否爲USB閃存?
- 5. 閃存作爲使用STM32的大容量存儲設備USB設備庫
- 6. 如何構建虛擬USB模擬器?
- 7. 創建假存儲設備
- 8. 如何晃動Genymotion創建的虛擬設備(Android模擬器)
- 9. 用PC模擬USB閃存驅動器
- 10. 創建虛擬顯示器/虛擬顯示設備
- 11. 如何檢索android中外部USB設備中存儲的數據?
- 12. 模擬設備通過USB連接
- 13. 如何創建虛擬(內存)SD卡?
- 14. 如何檢測USB閃存驅動器的盤符USB閃存驅動器的
- 15. 一些Android設備將內部存儲視爲SD卡和外部存儲EXTSD
- 16. 如何爲Qt Creator創建虛擬Android設備?
- 17. 如何在C++中創建虛擬存儲空間?
- 18. 如何通過插入USB設備找到USB主控制器
- 19. Android Studio創建虛擬設備
- 20. 創建新的Android虛擬設備
- 21. 無法創建Android虛擬設備
- 22. 如何創建Java設備模擬器
- 23. 創建模擬存儲過程
- 24. Android開OTG USB /外置SD卡存儲設備及其路徑
- 25. 使用設備的內部存儲器
- 26. 文件在外部存儲器中創建,但爲空
- 27. 如何從設備的內部和外部存儲器中獲取songart(AlbumArt)?
- 28. 如何模擬文件作爲USB設備連接到Linux中的虛擬機?
- 29. 通過USB端口在外部設備上的ASCII碼
- 30. Android:將android設備的內部存儲器中的文本文件存儲在外部存儲卡中?
不可能。 PC中的USB控制器被硬連線充當主機,並且(可能)在您的設備中。 也許使用特殊的電纜,但它不是簡單地通過軟件完成。 – 2013-03-25 18:32:58
謝謝,你認爲使用USB串口轉換器電纜可以嗎?我想我必須通過串口實現Flash Memory協議,但是在哪裏可以找到它的協議?我的意思是在哪裏找到有關閃存協議的文檔?或者像庫一樣使用串口作爲內存? (請原諒延遲迴復)。 – 2013-04-07 15:08:23