void TimeMenu::OnHide(bool popping) { Menu::OnHide(popping); SaveTime(timeEntry); SaveDate(dateEntry); if (popping) delete this; }
u8 SearchId(FILE_RECORD_STRUCT new_card) { u32 addr; u32 finaladdr; u16 i; FILE_RECORD_STRUCT card; u8 ret = 0; if((new_card.time<LastSaveTime)||(new_card.time<0x51308fe9)||(new_card.time>0x96c8df8d)) // LastTime 修改 { ret = 3; //时间错误 goto loop2; } if(storeaddrlist.RecordCount>=RECORD_MAX_COUNT) { ret = 2; goto loop2; } if((timeoutaddrlist.RecordCount==0)) //表格内无数据 { ret = 0; finaladdr = FILE_SETION_START_DATA_ADDR; goto loop2; } finaladdr = FILE_SETION_START_DATA_ADDR + (timeoutaddrlist.RecordCount-1)*sizeof(FILE_RECORD_STRUCT); addr = finaladdr; for(i=0; i<SEARCH_MAX_NUM; i++) { if((addr<FILE_SETION_START_DATA_ADDR)||(addr>FILE_SETION_END_DATA_ADDR)) { ret = 4 ; /////地址出现异常 goto loop2; } SPI_Flash_Read((u8*)&card, addr, sizeof(FILE_RECORD_STRUCT)); if(((new_card.time - card.time)<=TIMEMAX)) //在比较时间内 { if(new_card.rfid==card.rfid) { ret = 1; goto loop2; //卡号重复 } } else //在一定时间段内无数据 { ret = 0; finaladdr += sizeof(FILE_RECORD_STRUCT); goto loop2; //需要保存 } if(addr==FILE_SETION_START_DATA_ADDR) addr = FILE_SETION_END_DATA_ADDR; else addr = addr - sizeof(FILE_RECORD_STRUCT); } loop2: if(ret!= 3) LastSaveTime = new_card.time; if(ret==0) { if(finaladdr>=FILE_SETION_END_DATA_ADDR) finaladdr = FILE_SETION_START_DATA_ADDR; SPI_Flash_WriteQ((u8*)&new_card, finaladdr, sizeof(FILE_RECORD_STRUCT)); //存储数据 SaveDate(&timeoutaddrlist); } return ret; }