野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 10792|回复: 1

c++类改c

[复制链接]
发表于 2017-5-19 11:58:14 | 显示全部楼层 |阅读模式
  1. class PulseOximeter
  2. {
  3. public:
  4.                  PulseOximeter();
  5.                  float getTemperature();
  6.                   DCRemover irDCRemover;
  7.                   DCRemover redDCRemover;
  8. private:  
  9.                 FilterBuLp1    lpf;
  10. }
  11. float PulseOximeter::getTemperature()
  12. {
  13.     return temperature;
  14. }


  15. class  FilterBuLp1
  16. {
  17.     public:
  18.         FilterBuLp1()
  19.         {
  20.             v[0]=0.0;
  21.         }
  22.     private:
  23.         float v[2];
  24.     public:
  25.         float step(float x) //class II
  26.         {
  27.             v[0] = v[1];
  28.             v[1] = (2.452372752527856026e-1 * x)
  29.                  + (0.50952544949442879485 * v[0]);
  30.             return
  31.                  (v[0] + v[1]);
  32.         }
  33. };

  34. class DCRemover
  35. {
  36. public:
  37.     DCRemover() : alpha(0), dcw(0)
  38.     {
  39.     }
  40.     DCRemover(float alpha_) : alpha(alpha_), dcw(0)
  41.     {
  42.     }

  43.     float step(float x)
  44.     {
  45.         float olddcw = dcw;
  46.         dcw = (float)x + alpha * dcw;

  47.         return dcw - olddcw;
  48.     }

  49.     float getDCW()
  50.     {
  51.         return dcw;
  52.     }

  53. private:
  54.     float alpha;
  55.     float dcw;
  56. };

  57. #endif


  58. float  irACValue = irDCRemover.step(hrm.rawIRValue);
  59. float   redACValue = redDCRemover.step(hrm.rawRedValue);
  60. float   filteredPulseValue = lpf.step(-irACValue);
  61.     if (irDCRemover.getDCW() - redDCRemover.getDCW() > 70000 && redLedPower < max30100_LED_CURR_50MA)
  62.          {
  63.             ++redLedPower;
  64.             changed = true;
  65.         }
  66.          else if (redDCRemover.getDCW() - irDCRemover.getDCW() > 70000 && redLedPower > 0)
  67.               {
  68.                     --redLedPower;
  69.           }
复制代码
这段代码怎么改成C语言呢?我花了一段时间,改的不对啊。主要就是改成c的结构体后,(用定义的类结构名再定义两个另外的类名, float  irACValue = irDCRemover.step(hrm.rawIRValue);
float   redACValue = redDCRemover.step(hrm.rawRedValue);   怎么引用它里面成员)这个问题

ggg.rar

665 Bytes, 下载次数: 29

主题推荐

回复

使用道具 举报

发表于 2017-5-19 15:38:52 | 显示全部楼层
把私有函数改成全局函数来定义,直接调用
回复 支持 反对

使用道具 举报

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

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2025-1-16 00:09 , Processed in 0.026345 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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