2012-04-21 31 views
0

我有一個任務,我需要通過串口調制解調器加載一些數據,如user (pouzivatel)和一些int(stav odberu),並將其存儲在我的本地數據庫中。我知道如何加載數據,通過串口發送數據,但我需要在圖像上的結構中進行。C#使用自己的協議在2臺PC之間通過串行端口發送數據

evisualisation

首先,我撥打與AT命令的設備的電話號碼,順便說一句,這是工作,但我現在不知道該怎麼停下來等待SOH+adresa objektu(SOH +約地址一些字符串)。然後發送有關確認(ACK)的數據並等待新數據出現。

等待順序是我最大的問題。如何停止並等待收到的數據。

+1

那麼,做一個阻塞讀取調用或使用一個包裝組件,在數據rx上觸發一個事件。 C#Toolbox中默認有一個串行組件。它肯定有一個'DataReceived'事件,如果你願意的話,可能會有一些你可以在線程中調用的阻塞方法。 – 2012-04-21 13:31:11

+0

或者只是不要等待並使用DataReceived事件。 – 2012-04-21 14:01:50

+0

C#有一個我使用的串行組件。我可以讀取端口上的數據並將它們顯示在文本框中,這很容易,但我不知道如何對上面的圖片進行編程。我使用接收到的數據處理器 private static void DataReceivedHandler( object sender, SerialDataReceivedEventArgs e) SerialPort sp =(SerialPort)sender; string indata = sp.ReadExisting(); Console.WriteLine(「Data Received:」); Console.Write(indata); } – MichalCh 2012-04-22 20:05:53

回答

0

使用該組件並利用其DataReceived事件檢索作爲評論建議可能會解決你的問題很容易和有效。但是你可能一直在尋找更低級別的東西來自己做。

如果你想/需要做在線,沒有任何花哨的基於事件的系統,該系統會假設你已經在一些基於消息隊列環境一樣的WinForms,你可以做這樣的事情。

while (true) 
{ 
    // check for new data 
    ... 
    // if you got some, respond to it 
    ... 

    if (someConditionThatTellsYouYouAreDoneOrSupposedToTerminate) break; 

    System.Threading.Thread.Sleep(50); 
}