论坛风格切换切换到宽版
  • 3764阅读
  • 5回复

关于RS232通信的问题 [复制链接]

上一主题 下一主题
离线bg4npj
 
发帖
411
只看楼主 倒序阅读 0楼 发表于: 2011-09-19
最近搞个小玩意,用rs232接收数据时没反应,发送没问题。
比如我要接受三个字节,0x01 0x02 0x03.下面是程序片段。
while(1)
{
while(ri==0);
ri=0;
d0=sbuf;
while(ri==0);
ri=0;
d1=sbuf;
while(ri==0);
ri=0;
d2=sbuf;
}
这样的话程序会在while(ri==0)处陷入死循环,高人能否指点一下?
离线BG4FQD
发帖
3406
只看该作者 1楼 发表于: 2011-09-19
没数据来他就是个死循环,一直等。
离线BG5WKT
发帖
286
只看该作者 2楼 发表于: 2011-09-19
用示波器或万用表,或在232-ttl的输出端接个led,看看有没有数据接收到。
离线kingdog
发帖
579
只看该作者 3楼 发表于: 2011-09-19
难道是while语句末尾的 分号?
离线BG4FQD
发帖
3406
只看该作者 4楼 发表于: 2011-09-19
'
难道是while语句末尾的 分号?
'

while(ri==0);
等效于

while(ri==0)
{
}
离线bg4npj
发帖
411
只看该作者 5楼 发表于: 2011-09-20
'
while(ri==0);
等效于
while(ri==0)
{
}
'

while(ri==0);是当while(ri==0)被满足时,程序停留在while(ri==0)处反复执行,当while(ri==0)不满足时,再执行后面的语句。

while(ri==0)
{
}
是当while(ri==0)满足时,执行大括号内的语句,不满足时则不执行。

两个语句应该不是一个意思吧。