-1

如果串口仍在接收数据,我该如何关闭它?

我正在编写一个程序,串行端口将始终从无线射频接收器接收数据。对于无线射频接收器,它将连续接收数据。

我写 :

this -> serialPort1 -> ReadLine();

接收数据。由于不断地从 RF 模块接收数据,读取事件将始终运行。

所以在这里,当我想关闭端口时:

 this->serialPort1->Close();

它出现了一个问题,即

IOException was unhandled
"The I/O operation has been aborted because of either a thread exit or an application request."

我的要求是我可以在没有这个问题的情况下关闭端口,或者我可以在没有这个问题的情况下退出它,我已经尝试解决了几天但仍然无法处理这个问题。

提前致谢。

4

2 回答 2

1

你不能同时在函数ReadLine和函数Close中而不使用线程。因此,我假设这些调用在不同的线程中。

调用的线程ReadLine应该检查一个事件,该事件表明它应该停止它的操作并表明它是空闲的或完成的。

想要调用的线程Close应该设置停止事件并等待空闲/完成指示。

于 2013-05-25T10:59:59.473 回答
0
  public void port_DataReceived(object sender, SerialDataReceivedEventArgs e)
        {

            if (!port.IsOpen)
                return;

               port.ReadLine();

        }
于 2013-05-29T15:16:41.640 回答