串口关闭问题!
我们编写的软件要接收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程序时就出现有时能关闭串口有时无法关闭,造成假死的死机现象。难道以上代码不够完善?或者您是否有更为好用的关闭串口的过程代码可借我参考。谢谢了!
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程序时就出现有时能关闭串口有时无法关闭,造成假死的死机现象。难道以上代码不够完善?或者您是否有更为好用的关闭串口的过程代码可借我参考。谢谢了!
...全文
相关推荐
51单片机串口通信的发送与接收 字符串
但是,这种处理方法存在一些问题。有人在发送数据之前,先关闭了串口中断!等待发送完毕后,再打开串口中断。这样,在发送数据的等待期间内,如果收到了数据,将不能进入中断函数,也就不会保存的这个新收到的数据。
CSerialPort类关闭串口后无法再次打开的一个错误问题
参考文章为我之前发的SerialPort类的编写: https://blog.csdn.net/vae20017/article/details/104045914 本人在写串口调试程序的时候,用CSerialPort类打开串口后如果关闭,再次打开就无法打开该串口。利用GetlastError()发现错误代码是:5,也就是串口被占用。将程序全部退出再进入就可以打开占用串口,因此证明程序关闭串口失败...
一个小串口软件
ser.write(b'Hello, Serial!')
matlab串口收发及回调函数编程
**初始化和关闭串口** 初始化串口后,可以使用`SetInputBufferSize`和`SetOutputBufferSize`来设置缓冲区大小,然后用`SetTimeouts`设置超时参数。
Linux 下串口编程入门教程.rar
现在,让我们一起探索Linux串口编程的世界,开启你的技术之旅吧!


