這是我第一個使用WinUsb驅動程序和庫的項目。WinUsb:寫OUT管道導致IN管道中的數據損壞
我的主機運行WINDOWS 10,安裝了所有更新。 我的高速設備運行三個數據端點: -OUT命令端點:主機使用它發送命令 -IN回覆端點:主機收到每個命令的回覆 -IN Stream端點:設備發送流數據, 1600字節與 週期10毫秒。
在主機應用程序中,有兩個相關的主題: - 命令線程發送命令來命令管和 回覆管收到回覆 - 流線收集來自流管 非等待功能的數據被用於所有管道。
如果另一個線程被掛起,每個線程都可以完美工作。 但是,如果兩個線程同時工作,則流數據在任意點出現損壞。
更多分析揭示了以下事實: - 損壞顯示爲連續的錯誤字節序列。 錯誤序列的長度大致對應於 命令和答覆的長度。 - 錯誤的序列從與數據包邊界無關的任意點開始。 - 錯誤的字節可能不同;有時候,他們都是零,有時他們看起來像垃圾。 - 時間分析表明,一旦命令發送到命令管道,就會發生損壞 。
效果消失如果我在線程之間實現同步,以便讀/寫操作及時分開。然而,這是不可接受的解決方案,我想要兩個線程異步工作。 有人遇到過這種情況嗎?
沒有什麼理由懷疑這個圖書館,特別是考慮到它經常被敲打的頻率以及它的功能有多少。設備固件出錯的可能性更大。做什麼都行。 –
設備固件是我第一次猜測,特別是因爲它也是我的項目的一部分。因此,我在傳輸之前和之後實施了對流緩衝區完整性的檢查。沒有發現問題。 –
如果不是庫或固件 - 那麼只有硬件保留? –