串口通信数据采集

2019-08-21 12:19发布

用了一个攀腾的传感器,检测pm2.5;
为什么数据要乘以256啊?
[mw_shl_code=c,true]void getG5(unsigned char ucData)//获取G5的值
{
  static unsigned int ucRxBuffer[250];
  static unsigned int ucRxCnt = 0;
  ucRxBuffer[ucRxCnt++] = ucData;
  if (ucRxBuffer[0] != 0x42 && ucRxBuffer[1] != 0x4D)//数据头判断
  {
    ucRxCnt = 0;
    return;
  }
  if (ucRxCnt > 38)//数据位判断//G5S为32,G5ST为38
  {
       pm_cf_10=(int)ucRxBuffer[4] * 256 + (int)ucRxBuffer[5];      //大气环境下PM2.5浓度计算        
       pm_cf_25=(int)ucRxBuffer[6] * 256 + (int)ucRxBuffer[7];
       pm_cf_100=(int)ucRxBuffer[8] * 256 + (int)ucRxBuffer[9];
       pm_at_10=(int)ucRxBuffer[10] * 256 + (int)ucRxBuffer[11];               
       pm_at_25=(int)ucRxBuffer[12] * 256 + (int)ucRxBuffer[13];
       pm_at_100=(int)ucRxBuffer[14] * 256 + (int)ucRxBuffer[15];
       particulate03=(int)ucRxBuffer[16] * 256 + (int)ucRxBuffer[17];
       particulate05=(int)ucRxBuffer[18] * 256 + (int)ucRxBuffer[19];
       particulate10=(int)ucRxBuffer[20] * 256 + (int)ucRxBuffer[21];
       particulate25=(int)ucRxBuffer[22] * 256 + (int)ucRxBuffer[23];
       particulate50=(int)ucRxBuffer[24] * 256 + (int)ucRxBuffer[25];
       particulate100=(int)ucRxBuffer[26] * 256 + (int)ucRxBuffer[27];
       HCHO=((int)ucRxBuffer[28] * 256 +(int)ucRxBuffer[29])/1000.000;
       Temperature = ((int)ucRxBuffer[30] * 256 +(int)ucRxBuffer[31])/10.000;//包含温度
       Humidity = ((int)ucRxBuffer[32] * 256 +(int)ucRxBuffer[33])/10.000;//包含湿度
      
    if (pm_cf_25 >  999)//如果PM2.5数值>1000,返回重新计算
    {
      ucRxCnt = 0;
      return;
    }
   
    ucRxCnt = 0;
    return;
  }

}
[/mw_shl_code]

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
2条回答
沧海
1楼-- · 2019-08-21 15:56
 精彩回答 2  元偷偷看……
沧海
2楼-- · 2019-08-21 16:54
沧海 发表于 2017-4-18 08:32
相当于

发错了。。。。尴尬了。。。

一周热门 更多>