C#:从读取线程写入串行数据

本文关键字:数据 线程 读取 | 更新日期: 2023-09-27 17:57:06

>我正在使用C#(串行通信)。接收我的设置是这样的。我在一个单独的线程上收到,即我有这样的东西

comPort.DataReceived += new SerialDataReceivedEventHandler(comPort_DataReceived);
private void comPort_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
    .....
}

要写入,我按下一个将数据写入设备的按钮。

现在我想在从设备收到一些数据时自动写入数据,而不是我推动当我收到数据时按钮。所以我的问题是我可以放 comPort.WriteLine(textBox1.Text + "'r'n");在体内

private void comPort_DataReceived(object sender, SerialDataReceivedEventArgs e)

功能。以防万一,当我把写在这里时,它会停止工作。否则,如上所述,通过单独的按钮按下来编写工作。

有人可以告诉我正确的方法是什么。是否有线程或其他问题

谢谢!

C#:从读取线程写入串行数据

任何使用 UI 控件的操作(包括读取和写入属性,如 Text )都应在应用程序的主线程中完成。如果您在另一个线程中,则应使用 Invoke 方法来执行此操作:

var text = (string)textBox1.Invoke(new Func<string>(() =>
    {
        return textBox1.Text;
    }));
comPort.WriteLine(text + "'r'n");

阅读此答案以获取更多信息。