📄 flash.c.bak
字号:
/* */
/* 将临时扇区数据移到指定扇区 */
/* */
/* */
/* Input: */
/* tmpIndex, Index */
/* */
/* Returns: */
/* Nothing */
/************************************************************************/
void TranECG_Sector_to_Sector(unsigned long tmpIndex,unsigned long Index)
{
unsigned char tmpecg;
unsigned int i;
unsigned long NewIndex1;
unsigned long NewIndex2;
NewIndex1 =tmpIndex;
NewIndex2 =Index;
for(i=0;i<7515;i++)
{
tmpecg = Read_ECG_Point(NewIndex1,i);
Write_ECG_Point(NewIndex2,i,tmpecg,0);
}
}
/************************************************************************/
/* PROCEDURE: Update_Index_Page */
/* */
/* 更新索引文件 */
/* 位置:第0x0000FB扇区 */
/* */
/* Input: */
/* None */
/* */
/* Returns: */
/* Nothing */
/************************************************************************/
void Update_Index_Page(void)
{
Sector_Erase(0xFB);
Write_Index_Buf(0xFB);
}
/************************************************************************/
/* PROCEDURE: read_ini_file */
/* */
/* 读出配置文件 */
/* 位置:第0x0000FA扇区 */
/* */
/* Input: */
/* None */
/* */
/* Returns: */
/* Nothing */
/************************************************************************/
void read_ini_file()
{
//Setup_Info_Buf[32];
Read_Setup_Info_To_Buffer(0xFA);
mov_buf_to_setup();
return ;
}
/************************************************************************/
/* PROCEDURE: write_ini_file */
/* */
/* 写入配置文件 */
/* */
/* 位置:第0x0000FA扇区 */
/* Input: */
/* None */
/* */
/* Returns: */
/* Nothing */
/************************************************************************/
void write_ini_file()
{
mov_setup_to_buf();
Sector_Erase(0xFA);
Write_Setup_Buf( 0xFA);
return ;
}
void errcheck(void)
{
unsigned char cnt=0,i,j,tmp,one_tmp=0,one_flag=1;
memset((void *)Index_Info_Buf,0xff,sizeof(Index_Info_Buf));
memset((void *)useIndex,0xff,sizeof(useIndex));
Read_Index_Info_To_Buffer(0xFB);
for(i=0;i<MAX_Records;i++)
{
for(j=0;j<MAX_Records+1;j++)
{
tmp =i+1;
if(Index_Info_Buf[j]==0){Index_Info_Buf[j]=0xFF;}
if(!one_flag && Index_Info_Buf[j]==one_tmp) //把相同的去掉
{
Index_Info_Buf[j] =0xFF;
}
if(Index_Info_Buf[j]==tmp)
{
one_flag = 0; //表示对应有个数据
one_tmp = tmp;
Index_Info_Buf[j]=tmp-cnt;
}
}
if(one_flag) //如果没有
{
cnt++;
}
one_flag=1;
}
Sector_Erase(0xFB);
Write_Index_Buf(0xFB);
}
/************************************************************************/
/* PROCEDURE: Get_Count_Index_Oldindex_order */
/* */
/* 获取记录条数,当前空白扇区索引,最旧的记录扇区索引 ,排序信息 */
/* */
/* 位置:第0x0000FA扇区 */
/* Input: */
/* None */
/* */
/* Returns: */
/* Nothing */
/************************************************************************/
void Get_Count_Index_Oldindex_order(void)
{
unsigned char cnt=0,i,tmp,errflag=0;
errcheck();
memset((unsigned char *)Index_Info_Buf,0xff,sizeof(Index_Info_Buf));
memset((unsigned char *)useIndex,0xff,sizeof(useIndex));
Read_Index_Info_To_Buffer(0xFB);
for(i=0;i<MAX_Records+1;i++)
{
if(Index_Info_Buf[i]==0){Index_Info_Buf[i]=0xFF;}
if(Index_Info_Buf[i]>Record_count){errflag=1;}
if(Index_Info_Buf[i]<=MAX_Records && Index_Info_Buf[i]>0)
{
cnt++;
}
else
{
Record_index = i;
}
if(1==Index_Info_Buf[i])
{
Record_index_old = i;
}
}
if(cnt>=MAX_Records)
{
Record_count =MAX_Records;
}
else
{
Record_count =cnt;
}
// if(errflag) {errcheck();}
for(i=0;i<MAX_Records+1;i++)
{
if(Index_Info_Buf[i]<=MAX_Records && Index_Info_Buf[i]>0)
{
tmp =Record_count-Index_Info_Buf[i];
useIndex[tmp] = i;
}
}
Sector_Erase(Record_index<<1);
delay_ms(50);
Sector_Erase((Record_index<<1)+1);
return ;
}
/************************************************************************/
/* PROCEDURE: ModifyData */
/* */
/* 修改一条记录 并重新排序 */
/* */
/* */
/* Input: */
/* None */
/* */
/* Returns: */
/* Nothing */
/************************************************************************/
void ModifyData(unsigned char Index)
{ //page /index
unsigned long index;
unsigned long tmpindex;
unsigned char i,tmp;
tmpindex = Index; //需要上锁的记录索引
mov_record_to_buf();
index = Record_index; //当前空闲的记录索引
Record_index = Index;
Sector_Erase(index<<1);
delay_ms(50);
Sector_Erase((index<<1)+1);
delay_ms(50);
TranECG_Sector_to_Sector(tmpindex,index);
Write_Record_Buf(index);
Index_Info_Buf[index]=Index_Info_Buf[Index];
Index_Info_Buf[Index] =0xFF;
Sector_Erase(0xFB);
Write_Index_Buf(0xFB);
memset((unsigned char *)useIndex,0xFF,sizeof(useIndex));
for(i=0;i<MAX_Records+1;i++)
{
if(Index_Info_Buf[i]<=MAX_Records && Index_Info_Buf[i]>0)
{
tmp =Record_count-Index_Info_Buf[i];
useIndex[tmp] = i;
}
}
Sector_Erase(Record_index<<1);
delay_ms(50);
Sector_Erase((Record_index<<1)+1);
}
/************************************************************************/
/* PROCEDURE: GetOneData */
/* */
/* 获取一条记录信息 */
/* */
/* */
/* Input: */
/* Index */
/* */
/* Returns: */
/* Nothing */
/************************************************************************/
void GetOneData(unsigned char Index)
{
Read_Record_Info_To_Buffer(Index);
mov_buf_to_record();
}
/************************************************************************/
/* PROCEDURE: DeleteOneIndex */
/* */
/* 删除一条记录 */
/* */
/* */
/* Input: */
/* Index */
/* */
/* Returns: */
/* Nothing */
/************************************************************************/
void DeleteOneIndex(unsigned char Index)
{
unsigned long index;
index = Index;
Index_Info_Buf[Index] =0xFF;
Sector_Erase(0xFB);
Write_Index_Buf(0xFB);
Get_Count_Index_Oldindex_order();
Record_index = Index;
Sector_Erase(index<<1);
delay_ms(50);
Sector_Erase((index<<1)+1);
delay_ms(50);
Sector_Erase(Record_index<<1);
delay_ms(50);
Sector_Erase((Record_index<<1)+1);
delay_ms(50);
display_record();
}
/************************************************************************/
/* PROCEDURE: DeleteAllIndex */
/* */
/* 删除所有没有上锁的记录 */
/* */
/* */
/* Input: */
/* None */
/* */
/* Returns: */
/* Nothing */
/************************************************************************/
void DeleteAllIndex(void)
{
unsigned char i;
for(i=0;i<Record_count;i++) //检查上锁,并删除
{
GetOneData(useIndex[i]);
if(!gDataMsg.Lock)
{
Index_Info_Buf[useIndex[i]]=0xff;
Record_index = useIndex[i];
}
}
Sector_Erase(0xFB);
Write_Index_Buf(0xFB);
Get_Count_Index_Oldindex_order();
Sector_Erase(Record_index<<1);
delay_ms(50);
Sector_Erase((Record_index<<1)+1);
delay_ms(50);
display_record();
}
/************************************************************************/
/* PROCEDURE: AddOneIndex */
/* */
/* 如果flag_sure是1,则存储,否则,不存储 */
/* */
/* */
/* Input: */
/* flag_sure */
/* */
/* Returns: */
/* Nothing */
/************************************************************************/
void AddOneIndex(unsigned char flag_sure)
{
unsigned char i;
unsigned char r_i_o;
if(!flag_sure)
{
Sector_Erase(Record_index<<1);
delay_ms(50);
Sector_Erase((Record_index<<1)+1);
return;
}
r_i_o =Record_index_old;
Write_Record_Buf(Record_index); //将用户信息存放到相应的扇区中
if(Record_count>=MAX_Records)
{
for(i=0;i<MAX_Records+1;i++)
{
if(Index_Info_Buf[i]<=MAX_Records && Index_Info_Buf[i]>0)
{
Index_Info_Buf[i]--;
if(1==Index_Info_Buf[i]){Record_index_old =i;}
}
}
Index_Info_Buf[Record_index] = MAX_Records;
Index_Info_Buf[r_i_o] =0xFF;
Sector_Erase(r_i_o);
for(i=MAX_Records-1;i>0;i--)
{
useIndex[i]=useIndex[i-1];
}
useIndex[0]= Record_index;
Record_index = r_i_o;
}
else
{
Record_count++;
for(i=MAX_Records-1;i>0;i--)
{
useIndex[i]=useIndex[i-1];
}
useIndex[0]= Record_index;
Index_Info_Buf[Record_index] =Record_count;
for(i=0;i<MAX_Records+1;i++)
{
if(Index_Info_Buf[i]>MAX_Records)
{
Record_index =i;
}
}
}
//display_record();
}
/************************************************************************/
/* PROCEDURE: setupinit */
/* */
/* 初始化配置信息 */
/* 初始化索引信息 */
/* 初始化FLASH */
/* Input: */
/* NONE */
/* */
/* Returns: */
/* Nothing */
/************************************************************************/
void setupinit(void)
{
g_setup.measure_mode =1;
g_setup.lanuage_mode =0;
g_setup.filter_mode =1;
g_setup. beep_mode =1;
g_setup. gain_mode =1; //
g_setup. bandwidth_mode =2;
g_setup. light_mode =1;
g_setup.power_mode =4;
g_setup.translate_mode =1;
g_setup.nouse =0;
g_setup.limit_low =0;
g_setup.limit_high =240;
g_setup.user_id =1;
g_setup.sw_alarm =0;
g_setup.toleration =0; //new add
g_setup.regist_flag =0;
g_setup.sys_ini =1;
g_setup.contrast_mode =2;
g_setup.adjust_baseline =100;
g_setup.initflag =0x5d;
g_setup.password = 20;
g_setup.datNO = 1;
write_ini_file();
//memset(Index_Info_Buf,0xFF,sizeof(Index_Info_Buf));
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -