我想在c#應用程序中讀取來自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
你確定有東西要讀嗎? – 2012-07-20 11:09:39
是有數據要讀取。我的超級終端顯示它 – Cdeez 2012-07-20 11:11:59
是否正在觸發RunWorkerCompleted事件並正在執行讀取的現有代碼?你在這裏設置了一個斷點嗎? – dtsg 2012-07-20 11:12:01