串口通信(10)

  • 主题发起人 lengyan69
  • 开始时间
L

lengyan69

Unregistered / Unconfirmed
GUEST, unregistred user!
请问串口通信中,有没有因为某种故障导致单片机不应答,这时它还触发onreceive事件吗?因为我把查询失败的处理办法写在onreceive事件里了,如果这时它不触发onreceive事件,那么我的程序就不能继续轮询下去,就是不能继续自动查询下面的其他站点
 
"这时它还触发onreceive事件吗"~!它是指?onreceive,是com口有数据时候的回调!~”没有因为某种故障导致单片机不应答“!~当你给com口写一个数据时,有可能连com口单片机,会应答一下!不知道你的情况!~
 
我是指单片机不应答时,不发数据时,我的SPCOMM控件ONRECEIVE事件会不会触发,程序发一个查询命令,单片机不反还数据,有这种情况吧
 
event事件可不可以在不是线程的地方使用
 
PC -- MCU 通讯应采用超时机制来判断“无应答”状态。
 
同意SUPERMANTM,一般用超时来处理,一般串口应该在一定时间内回复(当然根据具体情况),如果无回复,则说明有问题。
 
怎么处理,能提供源代码吗
 
很简单啊,串行口的波特率你自己是知道的,因此发送你的报文的时间也是知道的,那么下位机最大的响应延迟时间事实上也是知道的发送数据的时候同时使用 SETTIMER 去激活一个系统定时器并指向超时处理例程,保留这个定时器的Handle,在 onreceive 事件中判断这个定时器是否活动,如果活动则 KILLTIMER,这就是超时机制了
 
当单片机没有向上位机发数据,当然SPCOMM控件ONRECEIVE事件不会收到数据。不知道你具体是什么情况
 
为什么图标有些闪烁,先闪一下查询失败,再出现查询成功字样?
 
delphi中如何判断定时器是否活动
 
搞个数据结构时间队列 一个timer就可以
 
顶部