用了一个攀腾的传感器,检测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]
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
发错了。。。。尴尬了。。。
一周热门 更多>