我與使用SerialPort的設備通信。該設備具有RS-485,另一端(PC)是RS-232(虛擬端口)。該設備正常工作,發送和接收數據。DataReceived事件有時不會觸發
問題是,DataReceived事件有時不會被觸發。我使用System.Timer每10秒發送一次數據到設備。大多數時候它工作正常,但每隔1到10分鐘我都沒有得到響應,然後,在再次2-4次DataReceived事件最終被解僱後,我得到一組數據(我之前「詢問」的所有內容)因爲在緩衝區中)。我的問題是:這怎麼可能?
我不能在這裏放置代碼示例,我很抱歉,但我的應用程序中沒有多線程(只有主線程和Timer_Elapsed和DataReceived事件的線程,我認爲它們在單獨的線程中引發),我的DataReceived事件處理速度快,不應並行提升(10秒足夠長,設備響應時間低於1秒)。如果我使用Thread.Sleep,我確信它不會與任何東西進行交易。
它可能比軟件問題更硬件,因爲當我使用其他應用程序(其中一個設備製造商提供的用於測試連接的測試)測試COM端口時,COM端口以類似的方式運行看起來好像它是用C#編寫的)。但我對硬件並不擅長。也許PC有問題,或者COM端口(它不是內置的,但是外部的)?或者它可能是與操作系統相關的東西(我的應用程序是在Windows Server 2003下運行的Windows服務)。
爲什麼不給他一個upvote呢? – jgauffin
沒問題,@Arie。很高興你想出來了。 –