打印

while等待的超时处理

[复制链接]
2321|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
youngz1990|  楼主 | 2016-2-9 22:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
xuyaqi| | 2016-2-10 05:40 | 只看该作者
用等待次数来判断到达一定次数直接退出循环。

使用特权

评论回复
板凳
youngz1990|  楼主 | 2016-2-10 10:44 | 只看该作者
xuyaqi 发表于 2016-2-10 05:40
用等待次数来判断到达一定次数直接退出循环。
int i = 0;
while( 条件 && i<1000 )
{
    i++;
}

是不是像这样,在工程中用的多么

使用特权

评论回复
地板
ghost2| | 2016-2-10 10:54 | 只看该作者
while (get_timer() < expire_time && ...)

使用特权

评论回复
5
lovecat2015| | 2016-2-10 13:44 | 只看该作者
goto语句

使用特权

评论回复
6
xyz549040622| | 2016-2-10 19:34 | 只看该作者
goto真是个坏办法,等待一定时间没结果,就报个错退出吧。

使用特权

评论回复
7
linqing171| | 2016-2-10 19:43 | 只看该作者
int i=0;
while(1)
{
i++;
if(i>20)
break; /*break can be replaced with goto.*/
}

使用特权

评论回复
8
marshallemon| | 2016-2-10 20:12 | 只看该作者
状态机轮转

使用特权

评论回复
9
coody| | 2016-2-10 20:50 | 只看该作者
等待,超时的话,带一个错误信息。

使用特权

评论回复
10
21ID| | 2016-2-10 22:03 | 只看该作者
用定时器来做精确的timer处理!

使用特权

评论回复
11
cov0xt| | 2016-2-11 08:12 | 只看该作者
类似于高级语言的异步或者多线程,用C语言实现类似的架构

使用特权

评论回复
12
重庆酱油仔| | 2016-2-11 11:44 | 只看该作者
if(条件成立),break;

使用特权

评论回复
13
youngz1990|  楼主 | 2016-2-11 11:58 | 只看该作者
嗯,定时器是个办法,在Free Modbus的实现里面超时用到了Timer和状态机,在等待数据的地方用Timer来定时,超时触发中断来判断数据是否正确,然后用状态机不断的轮询这样程序能够执行下去。但是用状态机是不是有一定的难度,因为我觉得轮询一次状态机的时间太长的话有可能要影响到其他的部分,大神们有没什么资料用来参考的啊。

使用特权

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

本版积分规则

3

主题

16

帖子

2

粉丝