我使用嵌入式硬件(通過TI:Piccolo Control Stick xxx69),它使用FTDI USB至串行轉換器硬件。USB串行虛擬COM端口:讀取不工作,但寫入工作
在PC上,我有一個簡單的VC++應用程序,它試圖通過虛擬COM端口(VCOM:通常爲COM7)與硬件進行通信。
我能夠正確連接到端口。
我能夠從應用程序/ PC發送數據到硬件,並且它被正確接收。 (所以,PC上的Tx工作正常),應用程序首先使用
createfile(... ... ...)
API打開連接,然後使用writefile(.. ... ..)
windows apis直接寫入端口。令人驚訝的是,我無法從串口讀取應用程序。當我打電話給readfile(... ... ...)
api時,它將狀態返回爲TRUE,但讀取的是零字節。我嘗試使用API監視軟件,它顯示內核APINtreadfile(... ... ...)
,返回錯誤爲STATUS_TIMEOUT" [0x00000102]
。這是令人驚訝的,因爲寫作能夠讀取雖然數據在線沒有。
的數據就行了,因爲當我正常使用超級終端軟件,我能夠正確讀取數據形成控制器,它是可見的。 [在控制器方面,沒關係,因爲我們可以看到超級終端上的數據。
我不是Windows程序員,因爲我處理微控制器。因此,在追求這個問題方面有一些幫助會有很大的幫助。
最好的問候,
-Varun
這裏是一個Reference
這是完全正常。程序員需要修改程序中的SetCommTimeouts()調用。 –
Hans,SetCommTimeouts()未用於我的寫入功能。 [雖然我正在使用爲VC6開發的遺留代碼]。你認爲超時只適用於讀取...順便說一句,我增加了設備註冊表項的超時時間,然後調用等待指定的時間,但結果仍然是零字節讀取。請儘可能詳細說明你的提示! –
註冊表項地點:HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Enum \ FTDIBUS \ VID_0403 + PID_A6D0 + TIU81CWRB \ 0000 \設備參數:MinReadTimeout –