C#串行输入 - 格式化

时间:2013-07-09 08:34:33

标签: c# serial-port formatting

我正在使用C#和串口从GSM模块收集数据。 为此,我连接到GSM设备并发送AT命令以检索存在的任何SMS。

我相信我已成功连接,我相信我的问题是返回数据的格式 - 如下所示,这包括多个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

1 个答案:

答案 0 :(得分:1)

为什么不为串口使用datareceived处理程序?如果这样做,您可以将所有收到的字符添加到线程安全的FIFO(FirstInFirstOut)队列中。然后在主程序中,从队列中读取字符并根据您的逻辑处理它们。

我在此处发布了一个示例:Serial port reading + Threads or something better?