Я разработал приложение C# для чтения звонков с GSM-модема. Я использовал таймер, чтобы регулярно читать порт и уведомлять меня о входящем звонке.
Теперь я пытаюсь использовать другой таймер, который будет писать 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;
}
}
Почему это происходит и решение, пожалуйста?