【NXP Rapid IoT评测】hello world工程读取传感器数值一直为0

2019-03-26 13:08发布

参照用户手册中的“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也没发现其它需要配置的地方
这是怎么回事儿呢?



此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
3条回答
littleshrimp
1楼-- · 2019-03-26 16:12
/ 很神奇,这个问题我已经弄了几个小时,没找到原因发贴的时候我就在想,会不会贴子一发,马上问题就找到了
结果真是这样
仔细查看了一下获取温度的代码,有一条语句判断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. }
复制代码


传媒学子
2楼-- · 2019-03-26 19:47
 精彩回答 2  元偷偷看……
littleshrimp
3楼-- · 2019-03-26 21:39
传媒学子 发表于 2019-1-1 18:07
是不是温度的格式 必须是4位?

有可能吧 也许是防止数组越界?

一周热门 更多>