GSM モデムで実行されたいくつかの AT コマンドの値を確認しようとしています。コマンドの出力にいくつかの値が含まれているかどうかを確認しようとしているときに、真か偽かで行き詰まっています。
次のコードを使用します。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO.Ports;
using System.IO;
using System.Timers;
namespace SerialTest
{
public class Program
{
public static void Main(string[] args)
{
string buff="0";
string ok = "OK";
SerialPort p = new SerialPort("COM28");
p.DataReceived += new SerialDataReceivedEventHandler(p_DataReceived);
p.Open();
string line = "1";
p.Write("AT" + "\r");
buff = p.ReadExisting();
Console.WriteLine("buff: \"{0}\"\nok: \"{1}\"", buff, ok);
p.Write("AT+CMGF=1"+ "\r" );
buff = p.ReadExisting();
Console.WriteLine("buff: \"{0}\"\nok: \"{1}\"", buff, ok);
do
{
p.Write("AT+CMGL=\"REC UNREAD\" " + "\r");
buff = p.ReadExisting();
Console.WriteLine("buff: \"{0}\"\nok: \"{1}\"", buff, ok);
/*if (buff.Contains(ok))
Console.WriteLine("Everything is OK");
else
Console.WriteLine("NOK");*/
line = Console.ReadLine();
} while (line != "quit");
p.Close();
}
public static void p_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
Console.WriteLine((sender as SerialPort).ReadExisting());
}
}
}
私はこの出力を得ます:
バフが空で後で表示されることがあるのはなぜですか?