C# 串口自动关闭

问题描述 投票:0回答:2

我试图从 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;
c# serial-port
2个回答
1
投票

为什么要保持COM端口打开?写的时候打开然后关闭就可以了!
使用这个:

    if (!serialPort1.IsOpen)
        serialPort1.Open();
    if (serialPort1.IsOpen)
    {
        serialPort1.WriteLine(inst.ToString());
        serialPort1.Close();
    }

0
投票

我也有类似的问题。 我发现不同的线程被搞乱了(我的错)。 这导致“serialPort.Open”再次被调用,而端口仍然是打开的 由于我有一些异常处理程序来捕获断开连接,因此 Open() 被一遍又一遍地调用。

© www.soinside.com 2019 - 2024. All rights reserved.