在进行串口通讯时,如果电源关闭或电缆被拔,怎样判断??
是在Timer里设置过一定时间就向设备发送指令,看看有没有返回数据吗?小弟没分了各位达人帮帮忙~以后定将双倍奉还!

解决方案 »

  1.   

    还是要看你自己软件设计啊,自己设定一个“在线服务”,主机发个“问”命令,从机回一个“答”命令,之间的间隔就看你自己的需要和传输速度等,一般500ms自动发送一次应该没问题了,用timer实现。当你需要手动发送指令时,这时候你就把自动发送关了,禁用timer就行了,当你手动指令完成了,也得到需要的应答了,这样在使能timer就行了。在“在线服务”启动后,发送一个“问”就将一个布尔类型变量变true,同时启动一个另timer,间隔600ms,当oncomm事件中检测到有“答”命令后,就将布尔变量变false(此时已过去500ms),这样在另一个timer中检测这个布尔变量是否变成false就可以获知是否断线了!
      

  2.   

    忘记说明上面设置另一个timer为600ms的原因了:当“在线服务”启动后,如果第一次发送“问”命令,没有收到“回”命令,这样布尔变量就不会变false,但一次收不到“回”可以认定为“意外”,此时另一个timer不关闭,继续运行,过500ms之后另一个“问”命令就会发出,此时如果还收不到“回”命令基本就可以认定断线了,接下来另一个timer中断时间到,判断布尔变量就可以认定掉线了!