2013-07-09 33 views
0

我使用C#和串口從GSM模塊收集數據。 爲此,我連接到GSM設備併發送AT命令來檢索存在的任何SMS。C#串行輸入 - 格式化

我相信我已經成功連接,我相信我的問題是與返回數據的格式 - 因爲看到下面這個由多個CR的和LF的 - 到目前爲止,我曾嘗試:

   serialPort.WriteLine("AT+CMGL=\"ALL\""); 
       System.Threading.Thread.Sleep(500); 

       while (true) 
       { 
        Telemetry += serialPort.ReadLine(); 
        System.Diagnostics.Debug.WriteLine(Telemetry); 
       } 
       //bool ReadTelemetry = true; 
       //while(ReadTelemetry) 
       //{ 
       // Telemetry = serialPort.ReadExisting(); 
       // if (Telemetry.Contains("OK")) 
       //  ReadTelemetry = false; 
       //} 

雖然不確定我認爲問題是閱讀數據的方法; ReadLine或ReadExisting。 怎樣才能將這種格式讀入數組?

enter image description here

+0

對不起,我很困惑,你的問題是什麼?您是否可以將數據恢復正常,但只需要將其轉換爲更明智的格式,或者您難以獲取已經截圖的數據? –

+0

對不起dav_i,我應該清楚 - 我沒有收到任何數據,只有空行。屏幕截圖中顯示的數據來自RealTerm連接到GSM模塊 –

+0

您是否確認使用串口對象成功連接到設備? –

回答

1

你爲什麼不使用串行端口的datareceived處理?如果這樣做,可以將所有收到的字符添加到線程安全的FIFO(FirstInFirstOut)隊列中。然後在主程序中,從隊列中讀取字符並根據邏輯處理它們。

我在這裏發表了一個例子:Serial port reading + Threads or something better?