串口通信中的超时和延时是什么概念?(100分)

  • 主题发起人 angelsoft
  • 开始时间
A

angelsoft

Unregistered / Unconfirmed
GUEST, unregistred user!
我用SPCOM实现PC->单片机通信,请问在单片机里的超时和延时是什么概念?
编程时要注意什么问题如何实现?
恳请PC和单片机通信的高手赐教!
 
W

wys205

Unregistered / Unconfirmed
GUEST, unregistred user!
超时,一般为TIMEOUT,表示该操作超时,将放弃
延时,一般为DELAY,表示该操作未完成,将等待一段时间后再执行
 
A

angelsoft

Unregistered / Unconfirmed
GUEST, unregistred user!
那么超时的时间是多少,怎么设,也就是超过多少时间认为超时?延时的时间又是多少?
 
I

iie

Unregistered / Unconfirmed
GUEST, unregistred user!
假如您定义了一个通信协议,比如问:您吃了吗?答:吃了。
考虑通信通道的故障,应答一方可能只听到:您吃,后面的话没听到,
而接下去问方又可能还问其他问题,为避免前后混淆,应答一方设定一个超时时间,
即规定时间内收不到完整问题的时候,就放弃所有接收,重新监听。
另一方面,问方也要采取相应办法协调,如一个问题不能按时得到回复时,
就等一个延时时间继续提问……
 
A

angelsoft

Unregistered / Unconfirmed
GUEST, unregistred user!
to iie:
你这个比喻很恰当,不过具体到程序里应该怎么做呢,我指用SPCOM如何做?
 
I

iie

Unregistered / Unconfirmed
GUEST, unregistred user!
spcom我没用过,其实应该很好做呵,简单的
const delay1=1000;
delay2=4000;
t0 := gettickcount;
send(request);
while not rece(answer) and (gettickcount < t0 + delay2) do;
if not received then
begin
t0 := gettickcount;
while gettickcount < t0 + delay2 do
resend;
end;

 
A

angelsoft

Unregistered / Unconfirmed
GUEST, unregistred user!
如果不是用作串口,该如何连线呢?
 

我爱飞

Unregistered / Unconfirmed
GUEST, unregistred user!
I

iie

Unregistered / Unconfirmed
GUEST, unregistred user!
什么叫不是用作串口
 
A

angelsoft

Unregistered / Unconfirmed
GUEST, unregistred user!
To iie:
非常感谢你的回答,我现在想知道的是在SPCOM中应如何做到你所说的
 
I

iie

Unregistered / Unconfirmed
GUEST, unregistred user!
spcomm我从来没用过,所以不能解答你的问题,推荐你用async
这个控件可以自己控制超时,延时的编程很简单,自己解决就行
 
W

wabb

Unregistered / Unconfirmed
GUEST, unregistred user!
超时就是延时过了头或者是干脆没有应答
延时就是一方已经执行过了互通数据的指令(可能是PC或单片机)而一方却还在
执行互通数据的指令


一般解决的方法是:(指的是我的笨办法)
让单片机连续执行互通数据的指令(中间可以隔一些时间),PC同步接收,
查看收到的数据是否每次都收齐了,
if 齐了 then ...
else
....
end;

个人意见 仅供参考
 

刘李子

Unregistered / Unconfirmed
GUEST, unregistred user!
这小子毕业了忘了给分哩
 
A

angelsoft

Unregistered / Unconfirmed
GUEST, unregistred user!
多人接受答案了。
 
顶部