📄 ombrodb.c~
字号:
#include <mega128.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include "typedef.h"
#include "app.h"
#include "attention.h"
#include "Flash.h"
#include "g20modem.h"
#include "g20serialdrv.h"
#include "ombro.h"
#include "rtc.h"
#include "serialdrv.h"
#include "timer.h"
#include "UDP.h"
#include "protocol.h"
#include "key.h"
#include "lcdzk.h"
#include "print.h"
#include "ombrodb.h"
STORETYPE storage_array[1];
unsigned int storage_pointer = 0;
unsigned int storage_page_counter = 0;
//volatile unsigned char nnYear = 0;
//volatile unsigned char nnMonth = 0;
//volatile unsigned char nnDay= 0;
//volatile unsigned int nncomp = 0;
//volatile unsigned int ombrodb_min_value;
//volatile unsigned int ombrodb_min_time;
//volatile unsigned int ombrodb_hr_value;
//volatile unsigned int ombrodb_hr_time;
//volatile unsigned int ombrodb_day_value;
unsigned char temp_read[60];
void ombrodb_init()
{
//nnYear = 5;
//nnMonth = 10;
//nnDay = 20;
//nncomp = ombrodb_date_comp(nnYear, nnMonth, nnDay);
//nnYear = 0;
//nnMonth = 0;
//nnDay = 0;
//ombrodb_date_deco((unsigned char*)&nnYear, (unsigned char*)&nnMonth, (unsigned char*)&nnDay, nncomp);
unsigned int nloop = 0;
unsigned char nadd[3];
for ( nloop = 0; nloop < 24; nloop ++)
{
ombro_hours_val[nloop] = nloop;
}
ombro_ten_min_max = 20;
ombro_hour_max = 40;
ombro_ten_min_max_hr = 13;
ombro_ten_min_max_min = 23;
ombro_hour_max_hr = 14;
ombro_hour_max_min = 11;
ombro_day = 50;
ombro_continue = 60;
ombrodb_save();
nadd[0] = 0;
nadd[1] = 0;
nadd[2] = 0;
ReadData(temp_read, (unsigned char*)nadd);
}
void ombrodb_write()
{
}
void ombrodb_search()
{
}
unsigned int ombrodb_date_comp(unsigned char nYear, unsigned char nMonth,
unsigned char nDay)
{
unsigned int nTemp = 0;
nTemp |= nYear&0x7F;
nTemp <<=4;
nTemp |= nMonth&0x0F;
nTemp <<= 5;
nTemp |= nDay& 0x1F;
return nTemp;
}
void ombrodb_date_deco(unsigned char *pYear, unsigned char *pMonth,
unsigned char *pDay, unsigned int nCom)
{
*pDay = nCom & 0x001F;
*pMonth = (nCom >> 5)&0x000F;
*pYear = (nCom >> 4)&0x007F;
}
//void ombrodb_per_min_proc(unsigned char cy, unsigned char cmon, unsigned char cd,
// unsigned char ch, unsigned char cmin, unsigned char cs)
void ombrodb_per_min_proc(unsigned char ch, unsigned char cmin, unsigned char cs)
{
if(cmin != CLK_MIN)
{
ombro_min_event = TRUE;
if(ombro_continue > 0)
{
ombro_save_temp_min();
ombro_save_temp_hour(ch);
}
ombro_nlasting++;
if(ombro_nlasting >= 1440) //1440
{
//停止传送
// ombro_reset();
ombro_ten = 0;
ombro_hour = 0;
ombro_day = 0;
ombro_continue = 0;
ombro_sending = FALSE;
ombro_nlasting = 0;
day_reset = TRUE;
}
}
if(ch == my_ombset.nBeginTime)
{
if((cmin == 0)&&(cs == 0))
{
ombro_day = 0;
//if(ombro_day > 0)
// ombrodb_save();
}
}
}
unsigned char ombrodb_read(unsigned int nYear,
unsigned int nMonth,
unsigned int nDay,
unsigned int *pTen,
unsigned char *pTenHr,
unsigned char *pTenMin,
unsigned int *pH,
unsigned char *pHHr,
unsigned char *pHMin,
unsigned int *pDay,
unsigned int *pCon)
//unsigned int *p[])
{
unsigned char temread[60];
unsigned int ntempdatetime = 0;
unsigned int nLoop = 0;
unsigned int nnloop = 0;
unsigned char nadd[3];
ntempdatetime = ombrodb_date_comp(nYear, nMonth, nDay);
for(nLoop = 0; nLoop < STORE_DAYS; nLoop ++)
{
if(storage_array[nLoop].offset == ntempdatetime)
{
nadd[0] = (unsigned char)(storage_array[nLoop].nAdd & 0xFF00>>8);
nadd[1] = (unsigned char)(storage_array[nLoop].nAdd & 0x00FF);
nadd[2] = 0;
ReadData(temread, (unsigned char*)nadd);
//if(p != NULL)
if(NULL != NULL)
{
for(nnloop = 0; nnloop < 24; nnloop ++)
{
//*p[nnloop] = temread[nnloop*2 - 1] + temread[nnloop * 2] <<8;
}
}
// *(pTen) = temread[48] + temread[49]<<8;
*(pTen) = temread[48] + temread[49]*256;
*(pTenHr) = temread[50];
*(pTenMin) = temread[51];
*(pH) = temread[52] + temread[53]*256;
// *(pH) = temread[52] + temread[53] <<8;
*(pHHr) = temread[54];
*(pHMin) = temread[55];
// *(pDay) = temread[56] + temread[57]<<8;
// *(pCon) = temread[58] + temread[59]<<8;
*(pDay) = temread[56] + temread[57]*256;
*(pCon) = temread[58] + temread[59]*256;
return TRUE;
}
}
return FALSE;
}
void ombrodb_save()
{
unsigned char ombrodb_sv[60];
unsigned char chAdd[3];
unsigned int nLoop = 0;
unsigned int nCount = 0;
for(nLoop = 0; nLoop < 60; nLoop ++)
{
ombrodb_sv[nLoop] = 0;
}
for (nLoop = 0; nLoop < 24; nLoop ++)
{
ombrodb_sv[nCount++] = ombro_hours_val[nLoop] & 0x00FF;
ombrodb_sv[nCount++] = (ombro_hours_val[nLoop]>>8)&0x00FF;
}
ombrodb_sv[nCount++] = (unsigned char)(ombro_ten_min_max & 0x00FF);
ombrodb_sv[nCount++] = (unsigned char)((ombro_ten_min_max >> 8)&0x00FF);
ombrodb_sv[nCount++] = (unsigned char)(ombro_ten_min_max_hr);
ombrodb_sv[nCount++] = (unsigned char)(ombro_ten_min_max_min);
ombrodb_sv[nCount++] = (unsigned char)(ombro_hour_max & 0x00FF);
ombrodb_sv[nCount++] = (unsigned char)((ombro_hour_max>>8)&0x00FF);
ombrodb_sv[nCount++] = (unsigned char)ombro_hour_max_hr;
ombrodb_sv[nCount++] = (unsigned char)ombro_hour_max_min;
ombrodb_sv[nCount++] = (unsigned char)(ombro_day & 0x00FF);
ombrodb_sv[nCount++] = (unsigned char)(ombro_day >> 8)&0x00FF;
ombrodb_sv[nCount++] = (unsigned char)(ombro_continue & 0x00FF);
ombrodb_sv[nCount++] = (unsigned char)(ombro_continue >>8) & 0x00FF;
storage_array[storage_pointer].offset = ombrodb_date_comp(CLK_YEAR, CLK_MONTH, CLK_DAY);
storage_array[storage_pointer].nAdd = storage_page_counter;
chAdd[0] = (unsigned char)((storage_page_counter>>8) &0x00FF);
chAdd[1] = (unsigned char)(storage_page_counter & 0x00FF);
chAdd[2] = (unsigned char)0x00;
if(storage_page_counter % 0x7F == 0)
{
SectorErase((unsigned char*)chAdd);
}
WriteData((unsigned char*)ombrodb_sv, (unsigned char*)chAdd);
storage_pointer++;
storage_page_counter++;
if(storage_pointer >= STORE_DAYS)
{
storage_pointer = 0;
}
if(storage_page_counter >= 512)
{
storage_page_counter = 0;
}
//flash save
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -