OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3856|回复: 2

串口通信数据采集

[复制链接]

23

主题

62

帖子

0

精华

初级会员

Rank: 2

积分
148
金钱
148
注册时间
2014-7-28
在线时间
4 小时
发表于 2017-4-18 01:15:00 | 显示全部楼层 |阅读模式
10金钱
用了一个攀腾的传感器,检测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]

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

41

主题

242

帖子

0

精华

高级会员

Rank: 4

积分
523
金钱
523
注册时间
2016-1-11
在线时间
132 小时
发表于 2017-4-18 08:32:29 | 显示全部楼层
yklstudent 发表于 2017-4-18 08:16
看通信协议文档啊,一个高8位,一个低8位,组合成16位,当然要X256了

相当于<<8 。 上面的语句等价于  (ucRxBuffer[4]<<8)|ucRxBuffer[5];
回复

使用道具 举报

41

主题

242

帖子

0

精华

高级会员

Rank: 4

积分
523
金钱
523
注册时间
2016-1-11
在线时间
132 小时
发表于 2017-4-18 08:33:29 | 显示全部楼层

发错了。。。。尴尬了。。。
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-8-22 01:48

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表