如何将通过串口发送的数据输出到textBox? C#Visual Studio

时间:2017-02-19 20:28:23

标签: c# visual-studio serial-port

我目前正在开发一个C#应用程序,在那里我读取通过USB端口发送的串行数据,这些数据将显示在文本框中,最后显示在数据库中。我现在的代码刷新了每2秒读取一次的串行数据,但是我无法将数据放到textBox上。我对C#开发还是比较陌生的,所以我不确定将数据输出到文本框的最佳方法是什么,或者首先解决我的问题。我的代码如下。

PREFIX lemon: <http://lemon-model.net/lemon#>
PREFIX lvont: <http://lexvo.org/ontology#>

SELECT ?lemon ?sense ?nsas WHERE {
  ?lemon a lemon:Form ;
         lemon:writtenRep ?sense .
  ?sense lemon:reference ?ref .
  ?ref lvont:nearlySameAs ?nsas .
} LIMIT 1

1 个答案:

答案 0 :(得分:0)

事件DataReceived使用方法DataReceivedHandler在与创建控件textBox1不同的线程上处理。因此,在运行程序时,您应该获得System.InvalidOperationException。这说明了我刚刚描述的内容。

要摆脱这种困境,您可以使用Control.BeginInvoke方法:

  

在创建控件底层句柄的线程上异步执行指定的委托。

基本上它会将这段代码拖到创建控件的线程上。在这种情况下主线程。这就是你如何使用它:

//writes to text box
textBox1.BeginInvoke(new Action(() => { textBox1.Text = data; }));

我希望它有所帮助。