在进行串口通讯时,如果电源关闭或电缆被拔,怎样判断??

pengwang911 2009-07-06 10:14:51
在进行串口通讯时,如果电源关闭或电缆被拔,怎样判断??
是在Timer里设置过一定时间就向设备发送指令,看看有没有返回数据吗?

小弟没分了。。。各位达人帮帮忙~以后定将双倍奉还!
...全文
94 6 打赏 收藏 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
贝隆 2009-07-07
  • 打赏
  • 举报
回复
最好有一个时间限定,如果超过这个时间限定,就认为超时,楼主说的这个情况,肯定是超时了的
苏荔芃 2009-07-07
  • 打赏
  • 举报
回复
忘记说明上面设置另一个timer为600ms的原因了:当“在线服务”启动后,如果第一次发送“问”命令,没有收到“回”命令,这样布尔变量就不会变false,但一次收不到“回”可以认定为“意外”,此时另一个timer不关闭,继续运行,过500ms之后另一个“问”命令就会发出,此时如果还收不到“回”命令基本就可以认定断线了,接下来另一个timer中断时间到,判断布尔变量就可以认定掉线了!
苏荔芃 2009-07-07
  • 打赏
  • 举报
回复
还是要看你自己软件设计啊,自己设定一个“在线服务”,主机发个“问”命令,从机回一个“答”命令,之间的间隔就看你自己的需要和传输速度等,一般500ms自动发送一次应该没问题了,用timer实现。当你需要手动发送指令时,这时候你就把自动发送关了,禁用timer就行了,当你手动指令完成了,也得到需要的应答了,这样在使能timer就行了。在“在线服务”启动后,发送一个“问”就将一个布尔类型变量变true,同时启动一个另timer,间隔600ms,当oncomm事件中检测到有“答”命令后,就将布尔变量变false(此时已过去500ms),这样在另一个timer中检测这个布尔变量是否变成false就可以获知是否断线了!
pengwang911 2009-07-07
  • 打赏
  • 举报
回复
噢~这样啊,谢谢啊。~
再追问下,一般隔多久需要通讯一次呢? 这样自动发讯会不会和我手动发指令有冲突呢?两条指令同一时间发出。。
嗷嗷叫的老马 2009-07-07
  • 打赏
  • 举报
回复
只能定期通讯,以确认状态.

你自己都想到这思路了,为什么不去做呢.
huyongsc 2009-07-06
  • 打赏
  • 举报
回复
看有无响应

1,453

社区成员

发帖
与我相关
我的任务
社区描述
VB 控件
社区管理员
  • 控件
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧