C#怎么样判断设备能否已经连接(断开)串口

.Net技术 码拜 8年前 (2016-03-10) 6978次浏览
本人用的SerialPort类。现在有个棘手的问题,先描述下。就是要检查待测的设备能否已经连接上串口或能否已经断开串口连接了。
然后断开串口连接的操作并非是在设备测试完成后才断开的,可以在测试过程中的任意时间点断开,例如正在某个测试项或串口正在接受数据的时候都可以断开连接。
本人看了一些帖子,上面说的方法是向串口发送一个指令,假如串口回应了,就是连接上了;反之,则是断开了。
但是串口信息还没接收完的话,给串口发指令,串口并不能做出响应。
本人现在用了SerialPort的PinChanged事件,能检查到中断(断开,连接)操作,但是并不能这个中断到底是断开还是连接。
serialport.PinChanged += new SerialPinChangedEventHandler(SerialPort_PinChanged);
private void SerialPort_PinChanged(object sender, SerialPinChangedEventArgs e)
{
if (e.EventType == SerialPinChange.Break)
{
//这里不知道该咋弄了
}
}
但是检查到的EventType类型全部都是SerialPinChange.Break。而且这个PinChanged事件被触发的次数也不固定。
设备串口被连接上时有时候触发一次,有时候触发俩次。
设备串口被断开时有时候触发三次,有时候触发2次。
有什么好的方法,能检查到设备能否已经连接(断开)了串口。
解决方案

40

可以把Break的DateTime值放在List<DateTime>中,假如是连续的Break,其间隔时间肯定很短。但是上电,断电之间的两处Break的间隔值肯定远远大于你说的断电(有几次Break)时的连续几次Break之间的间隔值。
所以,例如你接电(断开)之间的允许的最小值是1S。那么就判断List<DateTime>能否存在2个DateTime的差值大于1S的。假如有,就是设备被断开了。没有,就是连上的。

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明C#怎么样判断设备能否已经连接(断开)串口
喜欢 (1)
[1034331897@qq.com]
分享 (0)