GSMモデムからの通話を読み取るためのC#アプリケーションを開発しました。タイマーを使って定期的にポートを読み取り、着信があったときに通知しました。
今、私はAT + CSQを書き込む別のタイマーを使用しようとしています-信号品質を知るために、ポートで、品質値のポートを読み取ります。両方のタイマーで、正規表現を使用して、必要なデータを照合および分離しました。ここで問題となるのは、信号品質を読み取っている私のtimer2だけが機能しているだけで、着信コールのタイマー読み取りは機能していないということです。
タイマー読み取り信号強度:
private void tmr_sig_quality_Tick(object sender, EventArgs e)
{
if (port.IsOpen)
{
port.WriteLine("AT+CSQ");
string s= port.ReadExisting();
var match= Regex.Match(s,@"\+CSQ: (\d+),(\d+)");
if (match.Success)
{
progressBar1.Value = int.Parse(match.Groups[1].Value);
}
}
}
着信コールを読み取るタイマー:
private void timer1_Tick(object sender, EventArgs e)
{
s = port.ReadExisting();
var match = Regex.Match(s, "RING[^\\+]*\\+CLIP:\\s*\"(?<phone>[^\"]*)\",(\\d+),\"([^\"]*)\",(\\w*),\"(\\w*)\",(\\w*)");
if (match.Success && s.Contains("RING"))
{
incall_status.Text = "Incoming Call...." + match.Groups["phone"].Value;
incall_status.Visible = true;
}
}
なぜこれが起こっているのですか、解決策をお願いしますか?