ac#アプリケーションでGSMモデムからのメッセージを読みたい。次のコードを記述し、別のスレッドにThread.sleep()を実装するためにバックグラウンドワーカーを使用しました。しかし、port.ReadExisting()を使用する時点では、ポートから何も読み取られていません。バックグラウンドワーカーを処理する間違った方法を使用していますか?
private void btn_Read_Click(object sender, EventArgs e)
{
lvwMessages.Items.Clear();
status_other.Visible = true;
status_other.Text = "Loading messages...";
if (read_all.Checked)
{
port.WriteLine("AT+CMGL=\"ALL\"");
}
else if (read_unread.Checked)
{
port.WriteLine("AT+CMGL=\"REC UNREAD\"");
}
port.DiscardOutBuffer();
port.DiscardInBuffer();
backgroundWorker1.RunWorkerAsync();
}
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
Thread.Sleep(5000);
}
private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
string res = port.ReadExisting();// here no data is fetched into res
//rest of the code