受信したメッセージを、シリアルポートを介してGSMモデムから読み取られるテキストファイルに追加します。後で、正規表現を使用してこれらのメッセージを解析し、リストビューに表示します。1行のメッセージを受信して表示することは問題ありませんが、複数行のメッセージを受信すると、それらを読み取ることができません。解析に使用する正規表現を変更する必要があると思います。提案をお願いします。
public ShortMessageCollection ParseMessages(string input)
{
ShortMessageCollection messages = new ShortMessageCollection();
Regex r = new Regex(@"\+CMGL: (\d+),""(.+)"",""(.+)"",(.*),""(.+)""\r\n(.+)\r\n");
Match m = r.Match(input);
while (m.Success)
{
ShortMessage msg = new ShortMessage();
msg.Index = m.Groups[1].Value;
msg.Status = m.Groups[2].Value;
msg.Sender = m.Groups[3].Value;
msg.Alphabet = m.Groups[4].Value;
msg.Sent = m.Groups[5].Value;
msg.Message = m.Groups[6].Value;
messages.Add(msg);
m = m.NextMatch();
}
return messages;
}
input
ファイルから読み取られたデータを含む文字列変数です。の1行のメッセージinput
は次のようになります。
+CMGL: 1,\"REC UNREAD\",\"IA-612345\",\"\",\"2012/08/14 12:56:46+22\"\r\nRecharge with RC45 & get 100 local minutes valid for 15days.For details call 53640 (Toll Free)\r\n\r\n
複数行のメッセージは次のようになります。
+CMGL: 1,\"REC READ\",\"+919909965834\",\"\",\"2012/08/17 09:55:29+22\"\r\nHai helo\nthis is a\ntest mesg\r\n\r\nOK\r\n
複数行メッセージのメッセージ部分を正しく完全に読み取るにはどうすればよいですか?