我开始使用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())。我不知道如何开始和结束样本numbre。如果我从1开始那么它应该如何才能实现?此外,是否可以将电源存储在阵列中以进行累积?
答案 0 :(得分: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();
}