0

我开始使用 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();
}

它如何获得权力的价值已经被处理了。每隔一秒,它就会显示消耗的电量(get_instant_power())。我不知道如何开始和结束样本编号。如果我从 1 开始,那么它应该如何直到?另外,是否可以将功率存储在数组中以进行累积?

4

1 回答 1

0

代码更正

#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();
}
于 2014-08-11T14:47:00.880 回答