我正在开发一个 Windows 窗体应用程序,通过按钮发送数据,并持续接收数据以更新一些仪表值。
我遇到的问题是,在读取串口时,如果数据传输速度太快,我的应用程序会响应非常慢,例如在读取时可能达到 1000Hz 的数据传输速率。
我附上了代码的简化版本。
是什么原因导致这个应用程序挂起?我了解到需要一些单独的线程来解决这个问题?但是如何实现呢?
我遇到的问题是,在读取串口时,如果数据传输速度太快,我的应用程序会响应非常慢,例如在读取时可能达到 1000Hz 的数据传输速率。
我附上了代码的简化版本。
是什么原因导致这个应用程序挂起?我了解到需要一些单独的线程来解决这个问题?但是如何实现呢?
namespace Motor
{
public partial class Form1 : Form
{
SerialPort ComPort = new SerialPort();
string InputData = String.Empty;
delegate void SetTextCallback(string text);
public Form1()
{
InitializeComponent();
ComPort.DataReceived +=
new System.IO.Ports.SerialDataReceivedEventHandler(port_DataReceived_1);
}
private void port_DataReceived_1(object sender, SerialDataReceivedEventArgs e)
{
InputData = ComPort.ReadExisting();
if (InputData != String.Empty)
{
this.BeginInvoke(new SetTextCallback(SetText), new object[] { InputData });
}
}
private void SetText(string text)
{
if (text.Contains("CM"))
{
// process the text content here
}
}
}
}