我想在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