打印
[C语言]

c语言里如何判断485通讯中断,求助高手!!!!

[复制链接]
2457|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
miaomiaozhuzhu|  楼主 | 2015-6-18 14:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
ningling_21| | 2015-6-18 14:47 | 只看该作者
使用定时器,在串口中断中清除计数值,如果没有产生串口中断,定时器的计数值就会不断累加,当大于某个值例如5秒,你就知道通信断了

使用特权

评论回复
板凳
chinacn1989| | 2015-6-22 08:43 | 只看该作者
485就是串口吧,没有超时中断么?

使用特权

评论回复
地板
coody| | 2015-6-22 15:12 | 只看该作者
超时

使用特权

评论回复
5
xyz549040622| | 2015-6-22 17:27 | 只看该作者
51没有超时中断的,建议检测在一定时间内没收到指令,就默认中断了

使用特权

评论回复
6
miaomiaozhuzhu|  楼主 | 2015-6-23 20:22 | 只看该作者
xyz549040622 发表于 2015-6-22 17:27
51没有超时中断的,建议检测在一定时间内没收到指令,就默认中断了

收到485数据时置位flag=1;但是什么时候算收不到指令呢?while(1)里面一直执行flag=1的子程序,所以不能把flag=0;

使用特权

评论回复
7
miaomiaozhuzhu|  楼主 | 2015-6-23 20:25 | 只看该作者
ningling_21 发表于 2015-6-18 14:47
使用定时器,在串口中断中清除计数值,如果没有产生串口中断,定时器的计数值就会不断累加,当大于某个值例 ...

由于程序一直运行,早晚计数值会溢出的,会自动从0开始

使用特权

评论回复
8
ningling_21| | 2015-6-24 10:01 | 只看该作者
miaomiaozhuzhu 发表于 2015-6-23 20:25
由于程序一直运行,早晚计数值会溢出的,会自动从0开始

计数值是需要你自己定义的变量,不是内部定时器的寄存器的值

使用特权

评论回复
9
miaomiaozhuzhu|  楼主 | 2015-6-24 11:38 | 只看该作者
我自己定义的变量在定时器中断程序里每隔一秒加1,所以也会溢出的

使用特权

评论回复
10
gx_huang| | 2015-6-24 13:01 | 只看该作者
这个世界,当老师最累!
判断串口通讯是否长时间没有通信,和定时器一秒加1溢出有什么关系呀,如果5S后认为通信异常,你难道等256秒后判断。

使用特权

评论回复
11
miaomiaozhuzhu|  楼主 | 2015-6-24 13:34 | 只看该作者
gx_huang 发表于 2015-6-24 13:01
这个世界,当老师最累!
判断串口通讯是否长时间没有通信,和定时器一秒加1溢出有什么关系呀,如果5S后认为 ...

有一个同学回答我说使用定时器,在串口中断中清除计数值,如果没有产生串口中断,定时器的计数值就会不断累加,当大于某个值时即为中断,我是给他解释这样不行

使用特权

评论回复
12
gx_huang| | 2015-6-24 14:33 | 只看该作者
miaomiaozhuzhu 发表于 2015-6-24 13:34
有一个同学回答我说使用定时器,在串口中断中清除计数值,如果没有产生串口中断,定时器的计数值就会不断 ...

真不懂你要怎样的处理效果。
如果5S内没有串口中断,这个定时器的计数没有被清零,则5S后,定时器的计数大于5了,你就认为串口通信异常,可能另外一方死机,或者线路问题,这是可以的呀。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

18

帖子

0

粉丝