用c编程计算过程平均值,用contiki实现
我开始使用contiki并学习c编程,以备暑期实习之用。我必须计算冰箱功率持续过程的平均值。我这样做的代码用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
#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;}您应该编辑原始帖子,而不是评论更改。