我正在使用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。 如何将此格式读入数组?
答案 0 :(得分:1)
为什么不为串口使用datareceived处理程序?如果这样做,您可以将所有收到的字符添加到线程安全的FIFO(FirstInFirstOut)队列中。然后在主程序中,从队列中读取字符并根据您的逻辑处理它们。
我在此处发布了一个示例:Serial port reading + Threads or something better?