关于C语言的一个小问题(书中第五章IIC主机读取数据部分)-Arduino中文社区 - Powered by Discuz! Archiver

果子狸PLG 发表于 2017-7-23 19:22

关于C语言的一个小问题(书中第五章IIC主机读取数据部分)

书上的代码(自己打的没打注释:shutup:)


//wire master reader

#include<Wire.h>

void setup()
{
Wire.begin();
Serial.begin(9600);
}

void loop()
{
Wire.requestFrom(2, 6);
while(Wire.available())      //等待从机发送完数据
{
    char c = Wire.read();
    Serial.print(c);
}
delay(500);
}



就是打了注释的那句while(Wire.available())这里 Wire.available() 是不是应该 == 6……不太理解?_?

奈何col 发表于 2017-7-24 12:02

果子狸PLG 发表于 2017-7-24 10:43
嗯,但是括号里的函数不是只是返回一个字节数吗?是不是要有判断条件?_? ...

while里非0即为真

奈何col 发表于 2017-7-24 09:29

不是,前面的函数表有讲,这个是是返回接收到的字节数,和Serial.available()类似。
此时缓冲区里有多少自己就返回多少字节

奈何col 发表于 2017-7-24 09:30

另外书上的代码可见:https://clz.me/arduino-book/examples/

果子狸PLG 发表于 2017-7-24 09:36

奈何col 发表于 2017-7-24 09:29
不是,前面的函数表有讲,这个是是返回接收到的字节数,和Serial.available()类似。
此时缓冲区里有多少自 ...

嗯嗯,但是它在While里是不是要判断一下字符都进入了缓冲区?

奈何col 发表于 2017-7-24 10:38

果子狸PLG 发表于 2017-7-24 09:36
嗯嗯,但是它在While里是不是要判断一下字符都进入了缓冲区?

while(Wire.available())
这句话本身就是判断

果子狸PLG 发表于 2017-7-24 10:43

奈何col 发表于 2017-7-24 10:38
while(Wire.available())
这句话本身就是判断

嗯,但是括号里的函数不是只是返回一个字节数吗?是不是要有判断条件?_?

果子狸PLG 发表于 2017-7-24 14:01

奈何col 发表于 2017-7-24 12:02
while里非0即为真

啊~明白了,谢谢~

czyang2008 发表于 2017-7-27 17:16

应该是等设备发送完一针信息,然后返回一个非零的值,代表应答完,发送完信息

果子狸PLG 发表于 2017-7-27 17:27

czyang2008 发表于 2017-7-27 17:16
应该是等设备发送完一针信息,然后返回一个非零的值,代表应答完,发送完信息 ...

这样啊~谢谢~
页: [1]
查看完整版本: 关于C语言的一个小问题(书中第五章IIC主机读取数据部分)