コンソールからのコマンドの出力を保存します。
出力には複数の行を含めることができます。
すべての出力で特定の単語を検索するにはどうすればよいですか?
これが私の現在のコードです:
string buff, ok;
ok = "OK";
SerialPort p = ...
// p initialization...
p.Write("AT+CMGL=\"REC UNREAD\" " + "\r");
System.Threading.Thread.Sleep(1000);
buff = p.ReadExisting();
if (buff.Contains(ok))
// do smth
出力の例:
+CMGL: 10,"REC READ","0372022244",,"12/02/22,08:08:58+08" 2073692066616374757261207661206669206163686974617461206C612074696D702120446574616C696920696E206D6167617A696E656C6520566F6461666F6E6520736175206C612062616E6361206476732E わかった
buff のすべての行で ok を検索しますか? または最初の行だけですか?私はこのように試してみましたが、出力に「OK」が見つからないようです
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();
p.Write("AT+CMGF=1"+ "\r" );
buff = p.ReadExisting();
do
{
p.Write("AT+CMGL=\"REC UNREAD\" " + "\r");
buff = p.ReadExisting();
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());
}
}
}