You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

63 lines
1.7 KiB

#include "app_screen_save.h"
#include "../msp/msp_eeprom.h"
#include "../msp/uart/msp_uart1.h"
#include "../app/app_config.h"
SCREEN_SAVE screen_save_arr[SCREEN_SAVE_LEN] = {0};
//初始化存放重量数据的结构体数组screen_save_arr
void screen_save_init()
{
int i = 0;
for(i = 0;i < SCREEN_SAVE_LEN; i++)
{
screen_save_arr[i].head[0] = HEAD0;
screen_save_arr[i].head[1] = HEAD1;
screen_save_arr[i].available = 1;
screen_save_arr[i].kgx100_out = 0;
screen_save_arr[i].tail[0] = TAIL0;
screen_save_arr[i].tail[1] = TAIL1;
}
}
//存放重量数据到eeprom中:1.从eeprom中取出数组 2.遍历寻找空位 3.把数组放回(写入)eeprom中
void screen_save_push(U16 weight)
{
int i = 0;
int free = 0;
// 从eeprom中取出数组
L0_Iap_Read_array(EEPROM_WEIGHT_ADDR, screen_save_arr,sizeof(screen_save_arr));
if(screen_save_arr[0].head[0] != HEAD0 || screen_save_arr[0].head[1] != HEAD1
|| screen_save_arr[0].tail[0] != TAIL0 || screen_save_arr[0].tail[1] != TAIL1)
{
screen_save_init();
}
// 遍历寻找空位
for(i = 0;i < SCREEN_SAVE_LEN; i++)
{
if(screen_save_arr[i].available != 0)
{
free = i;
break;
}
}
// 当都有数据时
if(i == SCREEN_SAVE_LEN)
{
for(i = 0; i < SCREEN_SAVE_LEN - 1; i++)
{
screen_save_arr[i] = screen_save_arr[i+1];
}
free = SCREEN_SAVE_LEN-1;
}
// 放到free位置
screen_save_arr[free].available = 0;
screen_save_arr[free].kgx100_out = weight;
// 把数组放回(写入)eeprom中
L0_Iap_Program_array(EEPROM_WEIGHT_ADDR, screen_save_arr,sizeof(screen_save_arr));
// L0_uart1_str("L0_Iap_Program_array OK!!!!! ");
// L0_uart1_0d0a();
// L0_uart1_us(weight);
// L0_uart1_0d0a();
}