【发布时间】:2011-09-30 18:28:41
【问题描述】:
我在 C# 中获得了一些代码,用于读取 AT 命令兼容调制解调器的结果。 如果我开始读取整个应用程序的 COM 端口会冻结,直到收到数据。我想我应该使用线程,但我不知道如何?
if (!serialPort1.IsOpen)
serialPort1.Open();
serialPort1.WriteTimeout = 5000;
serialPort1.NewLine = "\r\n";
serialPort1.WriteLine("AT#MON");
serialPort1.NewLine = "\r\n";
while (true) // Loop indefinitely
{
serialPort1.NewLine = "\r\n"; // Prompt
string linee = serialPort1.ReadLine(); // Get string from port
if (System.Text.RegularExpressions.Regex.IsMatch(linee, ("^xcqa:")))
{
textBox1.AppendText(System.Environment.NewLine);
}
if (System.Text.RegularExpressions.Regex.IsMatch(linee, ("^fkss:")))
{
textBox1.AppendText(System.Environment.NewLine);
}
if (System.Text.RegularExpressions.Regex.IsMatch(linee, ("ended"))) // Check string
{
break;
}
textBox1.AppendText(linee);
}
【问题讨论】:
-
难道没有一个事件可以用来处理从串口读取数据吗?
-
这就是 SerialPort 有 DataReceived 事件的原因。它在工作线程上运行,您必须使用 Control.BeginInvoke()。
-
感谢您的一切...我完全是 C# 的初学者 :-) 我找不到示例代码
标签: c# multithreading serial-port