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

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 4095|回复: 9

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

[复制链接]
发表于 2017-7-23 19:22 | 显示全部楼层 |阅读模式
书上的代码(自己打的没打注释


  1. //wire master reader

  2. #include<Wire.h>

  3. void setup()
  4. {
  5.   Wire.begin();
  6.   Serial.begin(9600);
  7. }

  8. void loop()
  9. {
  10.   Wire.requestFrom(2, 6);
  11.   while(Wire.available())      //等待从机发送完数据
  12.   {
  13.     char c = Wire.read();
  14.     Serial.print(c);
  15.   }
  16.   delay(500);
  17. }

复制代码


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

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

while里非0即为真
发表于 2017-7-24 09:29 | 显示全部楼层
不是,前面的函数表有讲,这个是是返回接收到的字节数,和Serial.available()类似。
此时缓冲区里有多少自己就返回多少字节
发表于 2017-7-24 09:30 | 显示全部楼层
另外书上的代码可见:https://clz.me/arduino-book/examples/
 楼主| 发表于 2017-7-24 09:36 | 显示全部楼层
奈何col 发表于 2017-7-24 09:29
不是,前面的函数表有讲,这个是是返回接收到的字节数,和Serial.available()类似。
此时缓冲区里有多少自 ...

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

点评

while(Wire.available()) 这句话本身就是判断  详情 回复 发表于 2017-7-24 10:38
发表于 2017-7-24 10:38 | 显示全部楼层
果子狸PLG 发表于 2017-7-24 09:36
嗯嗯,但是它在While里是不是要判断一下字符都进入了缓冲区?

while(Wire.available())
这句话本身就是判断
 楼主| 发表于 2017-7-24 10:43 来自手机 | 显示全部楼层
奈何col 发表于 2017-7-24 10:38
while(Wire.available())
这句话本身就是判断

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

点评

while里非0即为真  详情 回复 发表于 2017-7-24 12:02
 楼主| 发表于 2017-7-24 14:01 | 显示全部楼层

啊~明白了,谢谢~
发表于 2017-7-27 17:16 | 显示全部楼层
应该是等设备发送完一针信息,然后返回一个非零的值,代表应答完,发送完信息
 楼主| 发表于 2017-7-27 17:27 | 显示全部楼层
czyang2008 发表于 2017-7-27 17:16
应该是等设备发送完一针信息,然后返回一个非零的值,代表应答完,发送完信息 ...

这样啊~谢谢~
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-11-28 02:28 , Processed in 0.260749 second(s), 21 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表