添加超时ADAT接收器?
我想添加一个简单的超时ADAT接收器,因为有时候,如果你把光缆才通过
p when pinsneq(violation) :> int _;
声明,它只会挂,从未退出线程。 我需要退出线程执行一些操作,所以我想读端口计数器每回合(或使用一个计时器),并使用select语句就像在超时的例子将是我最好的选择。
while(1) {
violation = word;
select {
case t when timerafter(count + 100000) :> void:
printf("timer reached\n");
return;
case p when pinsneq(violation) :> int _ @ count:
break;
}
...
...
...
}
现在,我知道adat_rx模块应该是可靠的,只是增加了select语句和采样端口柜台似乎把时间不一致,导致线程退出时结束循环,检查
if (word != 0 && word+1 != 0)
任何想法如何可靠地退出线程如果等待
P
到不平等的
violation
需要太长时间?
回答:
select
{
case t when timerafter(count + 100000) :> count:
printf("timer reached\n");
return;
case p when pinsneq(violation) :> void:
t:> count;
break;
}
回复:
我也用一个计时器。 采样定时器这样仍然使线程退出时到达最后一个“如果”语句。 任何其他想法? 陷入在这一点上,在我的情况下甚至很少,不是可接受的。 我很惊讶这个问题还没有被发现之前(了)。
发表时间:2014年11月22日12:19:33