1953|3

9717

帖子

24

TA的资源

版主

楼主
 

【NXP Rapid IoT评测】hello world工程读取传感器数值一直为0 [复制链接]

参照用户手册中的“4.3.2.5. 构建快速物联网的Hello World项目”可以控制LED和LCD
我在while里添加了一段读取温度传感器的代码,然后打印到屏幕
  1.         get_temperature(buf,&len);
  2.         sprintf(outbuf,"%d %d",buf[0],buf[1]);
  3.         GUI_Clear();
  4.         GUI_DispString(outbuf);
  5.         App_WaitMsec(1000);
复制代码


运行后显示读取到的2个字节一直都是0
看到在初始化LED前已经对传感器和I2C接口做了初始化
    /* Initialize all sensors */
    Init_all_sensors();

查看sensors.h和sensors.c也没发现其它需要配置的地方
这是怎么回事儿呢?



此帖出自RF/无线论坛

最新回复

是不是温度的格式 必须是4位?  详情 回复 发表于 2019-1-1 18:07
点赞 关注(1)
个人签名虾扯蛋,蛋扯虾,虾扯蛋扯虾
 

回复
举报

9717

帖子

24

TA的资源

版主

沙发
 
很神奇,这个问题我已经弄了几个小时,没找到原因发贴的时候我就在想,会不会贴子一发,马上问题就找到了
结果真是这样
仔细查看了一下获取温度的代码,有一条语句判断size的大小,当它大于3时才读取温度数值
读取温度前把传入的长度赋一个值就OK了
size是一个指针变量,感觉好奇怪,断他的长度是出于什么考虑呢?难道是和蓝牙有关吗?
  1. uint8_t get_temperature(uint8_t *buf, uint8_t *size)
  2. {
  3.     ens210_meas_data_t ens210_data;

  4.     if(buf != NULL && size != NULL && *size > 3)
  5.     {
  6.         if(ENS210_Measure(mode_Tonly, &ens210_data) == 0)
  7.         {
  8.             float temp = ens210_data.T_mCelsius / 1000.0;
  9.             FLib_MemCpy(buf, &temp, 4);
  10.             *size = 4;

  11.             return 0;
  12.         }
  13.         else {
  14.             return 1;
  15.         }
  16.     }

  17.     return 1;
  18. }
复制代码



此帖出自RF/无线论坛
个人签名虾扯蛋,蛋扯虾,虾扯蛋扯虾
 
 

回复

530

帖子

4

TA的资源

一粒金砂(高级)

板凳
 
是不是温度的格式 必须是4位?
此帖出自RF/无线论坛

点评

有可能吧 也许是防止数组越界?  详情 回复 发表于 2019-1-1 18:18
 
 
 

回复

9717

帖子

24

TA的资源

版主

4
 
传媒学子 发表于 2019-1-1 18:07
是不是温度的格式 必须是4位?

有可能吧 也许是防止数组越界?
此帖出自RF/无线论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
快速回复 返回顶部 返回列表