我试图从 COM 串行端口读取数据,但该端口会随机自动关闭,我不知道该怎么做,我的代码中没有任何地方调用 close 方法。我尝试了处置上的设置事件、设置尝试捕获并调试所有捕获,但没有运气。
尝试创建一个无限线程,当 SerialPort.isOpen 返回 false 时,线程重新打开串行端口,它可以工作,但线程以 100% 消耗 cpu..
不知道还能做什么...
打开序列号
_serialPort.DataReceived += new SerialDataReceivedEventHandler(RecebendoDados);
_serialPort.Disposed += new EventHandler(PortaFechou);
_serialPort.ErrorReceived += new SerialErrorReceivedEventHandler(PortaErro);
_serialPort.PinChanged += new SerialPinChangedEventHandler(PinMudou);
_serialPort.Open();
PortIsOpen = _serialPort.IsOpen;
为什么要保持COM端口打开?写的时候打开然后关闭就可以了!
使用这个:
if (!serialPort1.IsOpen)
serialPort1.Open();
if (serialPort1.IsOpen)
{
serialPort1.WriteLine(inst.ToString());
serialPort1.Close();
}
我也有类似的问题。 我发现不同的线程被搞乱了(我的错)。 这导致“serialPort.Open”再次被调用,而端口仍然是打开的 由于我有一些异常处理程序来捕获断开连接,因此 Open() 被一遍又一遍地调用。