⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 setup.c

📁 指纹识别源代码,用于智能门紧,还有配合MF800卡使用
💻 C
📖 第 1 页 / 共 5 页
字号:
			else if(keynumber==NUMBER6)setmodeindexdisp();
			else if(keynumber==NUMBER4)setiodefdisp();
		}
		else
		{
			if(!submenu1flag)
			{
				if(keynumber==ENTER)
				{
					submenu1flag=1;
					subsetcount=0;
					//here blink the cursor
					lcdcuron(tbltsholindexposi[subsetcount],LINE2);
				}
				else if(keynumber==CANCEL)
				{
					//submenuflag=0;
					clearsetup();
					settsholindexdisp();
				}
				else if(keynumber==4)
				{
					setcount--;
					if(setcount>=MAXTSGROUP)setcount=MAXTSGROUP-1;
					settsholindexdisp();
				}
				else if(keynumber==6)
				{
					setcount++;
					if(setcount>=MAXTSGROUP)setcount=0;
					settsholindexdisp();
				}
			}
			else
			{
				if(keynumber==ENTER)
				{
					//do nothing 
				}
				else if(keynumber==CANCEL)
				{
					//submenuflag=0;
					clearsetup();
					settsholindexdisp();
				}
				else
				{

					dispbuff[LINE2][tbltsholindexposi[subsetcount]]=keynumber+0x30;
					display(LINE2);
					
					subsetcount++;
					lcdcuron(tbltsholindexposi[subsetcount],LINE2);
					if(subsetcount>=2)
					{
						//here save the iodef data
						checksavetsholindex(setcount);
						submenuflag=1;
						submenu1flag=0;
						settsholindexdisp();
					}
				}
			}
		}
	}
}
//////////////////////////////////////////////////////////////////
void checksavemodeindex()
{
	unsigned char tempdata;
	
	tempdata=(dispbuff[LINE2][MODEINDEXP]-0X30)*10+dispbuff[LINE2][MODEINDEXP+1]-0X30;
	if(tempdata>=MAXMODEINDEX)return;
	ram_writep0(MODEINDEX,tempdata);
}
//////////////////////////////////////////////////////////////////
void setmodeindexdisp()
{
	if(!submenuflag)
	{
		setupitem=SETMODEINDEX;
		displaymessage(LMSETMODEINDEX,LINE1);
		displaymessage(LMBLANK,LINE2);
		displayshort(readmodeindex(),2,MODEINDEXP+16);
	}
	else
	{
		display(LINE2);
	}
}
//////////////////////////////////////////////////////////////////
void setmodeindex()
{
	if(keynumber==0xff)setmodeindexdisp();
	else
	{
		if(!submenuflag)
		{
			if(keynumber==ENTER)
			{
				submenuflag=1;
				setcount=0;
				//setmodeindexdisp();
				//here blink the cursor
				//displayshort(ram_read(MODEINDEXP,0),2,MODEINDEXP+16);
				lcdcuron(MODEINDEXP,LINE2);
			}
			else if(keynumber==CANCEL)terminatesetup();
			else if(keynumber==NUMBER6)settsdisp();
			else if(keynumber==NUMBER4)settsholindexdisp();
		}
		else
		{
			if(keynumber==ENTER)
			{
				//unsigned char tempindex;
				//submenuflag=0;

				//tempindex=dispbuff[1][5]*10+dispbuff[1][6];
				//if((tempindex)&&(tempindex<=10))ram_write(MODEINDEX,0,tempindex);

				//setmodeindexdisp();
					
			}
			else if(keynumber==CANCEL)
			{
				//submenuflag=0;
				clearsetup();
				setmodeindexdisp();
			}
			else
			{
				dispbuff[LINE2][MODEINDEXP+setcount]=keynumber+0x30;
				display(LINE2);
				setcount++;
				lcdcuron(MODEINDEXP+setcount,LINE2);
				if(setcount>=2)
				{
					checksavemodeindex();	
					submenuflag=0;
					setmodeindexdisp();
					
				}
			}
		}
	}
}
//////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////
void setidregisterdisp()
{
	if(!submenuflag)
	{
		setupitem=SETIDREGISTER;
		displaymessage(LMIDREGISTRATION,LINE1);
		displaymessage(LMBLANK,LINE2);
	}
	else
	{
		if(!submenu1flag)
		{
			displaymessage(LMKEYINID,LINE1);
			displaymessage(LMHHHHHHHH,LINE2);
			lcdcuron(KEYINSTARTP,LINE2);
		}
		else
		{
			//displayshort(userid,4,6);
			//display(LINE2);
		}
	}

}
//////////////////////////////////////////////////////////////
unsigned char code tblsetuser[]={2,3,4,5,8,9,12,15};
//////////////////////////////////////////////////////////////
void registerid()
{
	getidfromlcd();
	if(checkismaster())
	{
		displaymessage(LMBLANK,LINE1);
		displaymessage(LMISMASTERID,LINE2);
		delayTimerh(TMSGWAITTIME);

		clearsetup();
		submenuflag=1;
		setidregisterdisp();
	}
	else if(getuserbyid())
	{
	//prompt the user id is registered!
		displaymessage(LMBLANK,LINE1);
		displaymessage(LMIDREGISTERED,LINE2);
		delayTimerh(TMSGWAITTIME);
						
		clearsetup();
		submenuflag=1;

		setidregisterdisp();
							
	}
	else
	{
		
		displaymessage(LMBLANK,LINE1);
		displayuserid();
		displaymessage(LMUSERSETUP,LINE2);
		lcdcuron(tblsetuser[subsetcount],LINE2);
	}
}
//////////////////////////////////////////////////////////////////////////////
void setidregister()
{
	if(keynumber==0xff)setidregisterdisp();
	else
	{
		if(!submenuflag)
		{
			if(keynumber==ENTER)
			{
				submenuflag=1;
				setcount=0;
				subsetcount=0;
				setidregisterdisp();
				//displaymessage(LMKEYINID,LINE1);
				//displaymessage(LMHHHHHHHH,LINE2);
				//lcdcuron(KEYINSTARTP,LINE2);
			}
			else if(keynumber==CANCEL)terminatesetup();
			else if(keynumber==NUMBER6)setiddeletedisp();
			else if(keynumber==NUMBER4)seteventcountdisp();
		}
		else
		{
			if(!submenu1flag)
			{
				if(keynumber==ENTER)
				{
					if(setcount>=MINUSERIDLEN)
					{
						if(setcount<=MAXUSERIDLEN)
						{
	
							submenu1flag=1;
							subsetcount=0;

							registerid();
						}			
					}
				}
				else if(keynumber==CANCEL)
				{
					//submenuflag=0;
					clearsetup();
					setidregisterdisp();
				}
				else
				{
					dispbuff[1][KEYINSTARTP+setcount]=keynumber+0x30;
					setcount++;
					display(LINE2);
					lcdcuron(KEYINSTARTP+setcount,LINE2);

					if(setcount>=8)
					{
						submenu1flag=1;
						subsetcount=0;
						registerid();
					}

				}
			}
			else
			{
				
				if(keynumber==ENTER)
				{
					//do nothing 
				}
				else if(keynumber==CANCEL)
				{
					//submenuflag=0;
					clearsetup();
					setidregisterdisp();
				}
				else
				{

					dispbuff[1][tblsetuser[subsetcount]]=keynumber+0x30;
					
					subsetcount++;
					display(LINE2);
					lcdcuron(tblsetuser[subsetcount],LINE2);
					if(subsetcount>=8)
					{
						//here save the ts data

						
						tempbuff[0]=userid[0];
						tempbuff[1]=userid[1];
						tempbuff[2]=userid[2];
						tempbuff[3]=userid[3];
						tempbuff[4]=((dispbuff[LINE2][2]-0x30)<<4)+dispbuff[LINE2][3]-0x30;
						tempbuff[5]=((dispbuff[LINE2][4]-0x30)<<4)+dispbuff[LINE2][5]-0x30;
						tempbuff[6]=(dispbuff[LINE2][8]-0x30)*10+dispbuff[LINE2][9]-0x30;
						tempbuff[7]=((dispbuff[LINE2][12]-0x30)<<4)+dispbuff[LINE2][15]-0x30;

						if(tempbuff[6]>=MAXTSSEL)
						{
							clearsetup();
							setidregisterdisp();
							return;
						}

						tempbuff[6]+=0xf0;
						
						idata2idata(tempbuff,keybuff,8);
						
						if(readfpmode()&&(tempbuff[7]&0xf))
						{
							currentsn=0xffff;
							if(!getemptysn(DOWNWARD))
							{
								//prompt user space if full
								displaymessage(LMBLANK,LINE1);
								displaymessage(LMUSERSPACEFULL,LINE2);
								delayTimerh(TMSGWAITTIME);
								clearsetup();
								submenuflag=1;
								setidregisterdisp();
								return;
								
							}
							if(rgetuserbysn(GETUSERNOFINGER))
							{
								rdeleteuserbysn();
							}
							if(!registerfp())
							{
								displaymessage(LMBLANK,LINE1);
								displaymessage(LMIDREGISTERFAIL,LINE2);
								delayTimerh(TMSGWAITTIME);
								clearsetup();
								submenuflag=1;
								setidregisterdisp();
								return;
							}
							idata2idata(keybuff,tempbuff,8);
							writeuserdata(currentsn);
						}
						else
						{
							tempbuff[7]&=0xf0;
							if(!adduser())
							{
								//prompt user space is full
								displaymessage(LMBLANK,LINE1);
								displaymessage(LMUSERSPACEFULL,LINE2);
								delayTimerh(TMSGWAITTIME);
								clearsetup();
								submenuflag=1;
								setidregisterdisp();
								return;
								
							}
						}


						displaymessage(LMBLANK,LINE1);
						displaymessage(LMIDREGISTED,LINE2);
						delayTimerh(TMSGWAITTIME);
						clearsetup();
						submenuflag=1;
						setidregisterdisp();
					}
				}
			}
		}
	}
}
///////////////////////////////////////////////////////////////////////
void checkdeleteid()
{
	getidfromlcd();		
	if(checkismaster())
	{
		displaymessage(LMBLANK,LINE1);
		displaymessage(LMISMASTERID,LINE2);
	}
	else if(deleteuserbyid())
	{
		displaymessage(LMBLANK,LINE1);
		displaymessage(LMIDDELETEED,LINE2);
		if(rdeleteuserbysn())
		{
		}
		else
		{
		}
	}
	else 
	{
		displaymessage(LMBLANK,LINE1);
		displaymessage(LMUNREGISTEDID,LINE2);
	}
}	
///////////////////////////////////////////////////////////////////////
void setiddeletedisp()
{
	if(!submenuflag)
	{
		setupitem=SETIDDELETE;
		displaymessage(LMIDDELETE,LINE1);
		displaymessage(LMBLANK,LINE2);
	}
	else
	{
		displaymessage(LMINPUTID,LINE1);
		displaymessage(LMHHHHHHHH,LINE2);
		lcdcuron(KEYINSTARTP,LINE2);
	
	}
}
///////////////////////////////////////////////////////////////////////

void setiddelete()
{
	if(keynumber==0xff)setiddeletedisp();
	else
	{
		if(!submenuflag)
		{
			if(keynumber==ENTER)
			{
				clearsetup();
				submenuflag=1;
				setiddeletedisp();

			}
			else if(keynumber==CANCEL)terminatesetup();
			else if(keynumber==NUMBER6)setidlistdisp();
			else if(keynumber==NUMBER4)setidregisterdisp();
		}
		else
		{
			if(keynumber==ENTER)
			{
				if(setcount>=MINIDLEN)
				{
					
					checkdeleteid();
					delayTimerh(TMSGWAITTIME);
					
					clearsetup();
					submenuflag=1;
					setiddeletedisp();
				}
			}
			else if(keynumber==CANCEL)
			{
				//submenuflag=0;
				clearsetup();
				setiddeletedisp();
			}
			else 
			{
				dispbuff[LINE2][KEYINSTARTP+setcount]=keynumber+0x30;
				setcount++;
				display(LINE2);
				lcdcuron(KEYINSTARTP+setcount,LINE2);
				if(setcount>=MAXIDLEN)
				{
					//HERE delete the user 
					checkdeleteid();
					delayTimerh(TMSGWAITTIME);
					
					clearsetup();
					submenuflag=1;
					
					setiddeletedisp();
				}
				//setiddeletedisp();
			}
		}
	}
}
/////////////////////////////////////////////////////////////////////////////////
void displayuserid()
{

	dispbuff[LINE1][5]=(userid[0]>>4)+0x30;
	dispbuff[LINE1][6]=(userid[0]&0xf)+0x30;

	dispbuff[LINE1][7]=(userid[1]>>4)+0x30;
	dispbuff[LINE1][8]=(userid[1]&0xf)+0x30;

	dispbuff[LINE1][9]=(userid[2]>>4)+0x30;
	dispbuff[LINE1][10]=(userid[2]&0xf)+0x30;

	dispbuff[LINE1][11]=(userid[3]>>4)+0x30;
	dispbuff[LINE1][12]=(userid[3]&0xf)+0x30;
	
	display(LINE1);

}
/////////////////////////////////////////////////////////////////////////////////
void displayuser()
{
	struct userdata * data puser;

	puser=(struct userdata*)(tempbuff+8);

	displaybcd(puser->userid[0],5);
	displaybcd(puser->userid[1],7);
	displaybcd(puser->userid[2],9);
	displaybcd(puser->userid[3],11);
	
	displaybcd(puser->password[0],16);
	displaybcd(puser->password[1],18);


	displaybcd((puser->newts)&0xf,22);

	displaybcd(((puser->readerfp)>>4),26);

	displaybcd(((puser->readerfp)&0x1),29);
	dispbuff[LINE2][13]=0X20;
	display(LINE2);
}
/////////////////////////////////////////////////////////////////////////////////
void setidlistdisp()
{
	if(!submenuflag)
	{
		setupitem=SETIDLIST;
		displaymessage(LMIDLIST,LINE1);
		displaymessage(LMBLANK,LINE2);
	}
	else
	{
		if(currentsn>=MAXUSERNUM)
		{
			if(!getusedsn(DOWNWARD))
			{
				//return ;
				displaymessage(LMIDEMPTY,LINE2);
				displaymessage(LMBLANK,LINE1);
				delayTimerh(TMSGWAITTIME);
				clearsetup();
				displaymessage(LMIDLIST,LINE1);
				displaymessage(LMBLANK,LINE2);
				return;
				
			}
		}
		displaymessage(LMBLANK,LINE1);
		displaymessage(LMBLANK,LINE2);
		displayuser();
		//else return;
	}
}
/////////////////////////////////////////////////////////////////////////////////
void setidlist()
{
	if(keynumber==0xff)setidlistdisp();
	else
	{
		if(!submenuflag)
		{
			if(keynumber==ENTER)
			{
				//currentsn=0xffff;
				submenuflag=1;
				//setidlist(0xff);
				currentsn=0xffff;
				setidlistdisp();
			}
			else if(keynumber==CANCEL)terminatesetup();
			else if(keynumber==NUMBER6)setidcountdisp();
			else if(keynumber==NUMBER4)setiddeletedisp();
		}
		else
		{
			if((keynumber==ENTER)||(keynumber==CANCEL))
			{
				//submenuflag=0;
				clearsetup();
				setidlistdisp();
			}
			else if(keynumber==NUMBER6)
			{
				if(getusedsn(DOWNWARD))setidlistdisp();
				else

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -