Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
c#中的定时器和串行端口?_C#_Timer_Hardware - Fatal编程技术网

c#中的定时器和串行端口?

c#中的定时器和串行端口?,c#,timer,hardware,C#,Timer,Hardware,我正在使用RFID设备从中读取数据。在收到来自它的数据后,我正在VisualStudio2008中使用它。我使用串口的数据接收事件和定时器来获取数据 问题是当我获取RFID数据并尝试将其放入data receive事件的文本字段中时 不断获取数据,因为计时器不断检查数据并将其放入文本框。这就是为什么我的后端查询总是运行并不断插入相同的数据。我想停止计时器和串行端口,然后想再次打开串行端口,而不必再次关闭和打开窗体。除了定时器,还有其他方法从串口获取数据吗?获取数据后,定时器会自动停止 这是我的密

我正在使用RFID设备从中读取数据。在收到来自它的数据后,我正在VisualStudio2008中使用它。我使用串口的数据接收事件和定时器来获取数据

问题是当我获取RFID数据并尝试将其放入data receive事件的文本字段中时

不断获取数据,因为计时器不断检查数据并将其放入文本框。这就是为什么我的后端查询总是运行并不断插入相同的数据。我想停止计时器和串行端口,然后想再次打开串行端口,而不必再次关闭和打开窗体。除了定时器,还有其他方法从串口获取数据吗?获取数据后,定时器会自动停止

这是我的密码:

private void serialPort_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e) 
{ 
    //Serialtimer.Start(); 
    if (sp.IsOpen) 
    { 
        data = sp.ReadExisting(); 
        RFIDtB.Text = data; 
    } 
    else 
    { 
        MessageBox.Show("Please Check the device"); 
    } 
}

您不能从UI线程以外的其他线程访问表单控件。请参阅本文:了解解决方案。

多大的一句话问题:)您不能只使用
DataReceived
事件和
Close
方法吗?你为什么需要定时器?显示一些代码请激活void serialPort_DataReceived(对象发送方,System.IO.Ports.SerialDataReceivedEventArgs e){//Serialtimer.Start();if(sp.IsOpen){data=sp.ReadExisting();RFIDtB.Text=data;}否则{MessageBox.Show(“请检查设备”);}跨线程操作无效:从创建控件“RFIDtB”的线程以外的线程访问控件“RFIDtB”。下次编辑问题并在其中添加代码(而不是在注释中)时,它会出现类似这样的错误。我在这里也看不到任何计时器。private void Serialtimer_Tick(objectsender,EventArgs e){RFIDtB.Text=data;}