首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

串口关闭有关问题

2013-01-23 
串口关闭问题!我们编写的软件要接收232串口传来的数据并实时地显示在屏幕上,退出窗体时需要关闭串口(Seria

串口关闭问题!
我们编写的软件要接收232串口传来的数据并实时地显示在屏幕上,退出窗体时需要关闭串口(SerialPort)。由于微软提供的SerialPort控件有Bug,直接使用SerialPort.Close(); 来关闭串口是不行的。我以前编写的小点儿的c# winform程序是使用以下的过程来关闭串口,如:
private void closeWeighPort()
        {
            try
            {
                int i = Environment.TickCount;
                while (Environment.TickCount - i < 1000 && _isReceiving) Application.DoEvents();
                serialPort.Close();
            }
            catch (Exception ex)
            {
                throw;
            }
        }

其中的_isReceiving是窗体变量,当串口接收数据时就置为true。以前这么用都没有什么问题,这回我在编写一个稍大点儿的c# winform程序时就出现有时能关闭串口有时无法关闭,造成假死的死机现象。难道以上代码不够完善?或者您是否有更为好用的关闭串口的过程代码可借我参考。谢谢了!
[解决办法]
那可能是 while (Environment.TickCount - i < 1000 && _isReceiving) 条件退不出来
[解决办法]
.net的串口类不太好用,我以前做过在c#里面直接调用win32的串口类,用起来比较好用
[解决办法]
没听说serialport有这个问题啊?
是不是Environment.TickCount溢出了?程序假死的时候看看程序停在那个位置上?
[解决办法]
捕捉窗体关闭事件,在关闭前设置_isReceiving设置为false。
程序退出时,serialPort不需要手动去关闭。会自动释放。

热点排行