void TimeMenu::OnHide(bool popping)
{
	Menu::OnHide(popping);
	SaveTime(timeEntry);
	SaveDate(dateEntry);
	if (popping)
		delete this;
}
Example #2
0
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;	
}