用c编程计算过程平均值,用contiki实现

用c编程计算过程平均值,用contiki实现,c,contiki,C,Contiki,我开始使用contiki并学习c编程,以备暑期实习之用。我必须计算冰箱功率持续过程的平均值。我这样做的代码 #include <stdlib.h> #include <stdio.h> #include <homadeus/processes/fridge_process.h> #include <homadeus/devices/78M6610.h> #include <homadeus/utils/utils.h> float g

我开始使用contiki并学习c编程,以备暑期实习之用。我必须计算冰箱功率持续过程的平均值。我这样做的代码

#include <stdlib.h>
#include <stdio.h>
#include <homadeus/processes/fridge_process.h>
#include <homadeus/devices/78M6610.h>
#include <homadeus/utils/utils.h>

float global_variable;
int current_state = 0; //down =0, up =1

float current_power = 0;
int sample[n];


float get_instant_power()
{

    double scaled_value = MAXIM_78M6610_SCALING_RESOLUTION_POWER_WATTS * maxim_78M6610_get_register_int24(MAXIM_78M6610_P);
    if (scaled_value>0) return scaled_value;
    else return 0;
}

float get_sum()
{   float sum = 0;
    float mean;
    while(1){
        for(int i=1; i<n ; i++){
            sample[i]=get_instant_power();
            sum +=sample[i];
        }

    }
}

int get_current_state()
{
    current_power = get_instant_power();
    if(current_power < 0) return  0;
    else return 1; 
}

PROCESS(hmd_fridge_process, HOMADEUS_FRIDGE_PROCESS_DESCRIPTION);

PROCESS_THREAD(hmd_fridge_process, ev, data) {


  static struct etimer timer;

  PROCESS_BEGIN();



  while(1){
      start = clock();
      etimer_set(&timer, CLOCK_CONF_SECOND);
      PROCESS_WAIT_EVENT_UNTIL(etimer_expired(&timer));
      ......

    }


  }

  PROCESS_END();
}
它是如何获得能量值的已经被处理过了。每一秒,它都会显示消耗的电量以获取即时电量。我不知道如何开始和结束样本编号。如果我从1开始,那么应该到什么时候?另外,是否可以将功率存储在阵列中以累积?

代码更正

#include <stdlib.h>
#include <stdio.h>
#include <homadeus/processes/fridge_process.h>
#include <homadeus/devices/78M6610.h>
#include <homadeus/utils/utils.h>

float global_variable;
int current_state = 0; //down =0, up =1
float current_power = 0;
int sample =1;
float mean;


float get_instant_power()
{

    double scaled_value = MAXIM_78M6610_SCALING_RESOLUTION_POWER_WATTS * maxim_78M6610_get_register_int24(MAXIM_78M6610_P);
    return scaled_value;
}

float get_sum()
{   float sum = 0;
    int dummy[10];
        for(int i=1; i<sample ; sample++){
            dummy[i]=get_instant_power();
            sum +=dummy[i];
        }
}

int get_current_state()
{
    current_power = get_instant_power();
    if(current_power < 0) return  0;
    else return 1; 
}

PROCESS(hmd_fridge_process, HOMADEUS_FRIDGE_PROCESS_DESCRIPTION);

PROCESS_THREAD(hmd_fridge_process, ev, data) {
  static struct etimer timer;

  PROCESS_BEGIN();

  while(1){
      start = clock();
      etimer_set(&timer, CLOCK_CONF_SECOND);
      PROCESS_WAIT_EVENT_UNTIL(etimer_expired(&timer));
      ...
    }


  }

  PROCESS_END();
}

get_instant_power似乎从不返回负数,但get_current_状态检查是否为负数?嗨,谢谢你的更正,我修改了它。float get_instant_power{double scaled_value=MAXIM_78M6610_SCALING_RESOLUTION_power_WATTS*MAXIM_78M6610_get_register_int24MAXIM_78M6610_P;return scaled_value;}您应该编辑原始帖子,而不是评论更改。