0

我正在使用 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。可以做些什么来将此格式读入数组?

在此处输入图像描述

4

1 回答 1

1

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

我在这里发布了一个示例:串行端口读取+线程或更好的东西?

于 2013-07-09T16:46:44.923 回答