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

littleshrimp   2018-12-29 17:03 楼主
参照用户手册中的“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)

很神奇,这个问题我已经弄了几个小时,没找到原因发贴的时候我就在想,会不会贴子一发,马上问题就找到了
结果真是这样
仔细查看了一下获取温度的代码,有一条语句判断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. }



虾扯蛋,蛋扯虾,虾扯蛋扯虾
点赞  2018-12-29 17:18
是不是温度的格式 必须是4位?
点赞  2019-1-1 18:07
引用: 传媒学子 发表于 2019-1-1 18:07
是不是温度的格式 必须是4位?

有可能吧 也许是防止数组越界?
点赞  2019-1-1 18:18
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复