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

📄 module.c

📁 程序是智能指纹锁的
💻 C
📖 第 1 页 / 共 2 页
字号:
							return FALSE;
						case ANSWER_FAIL:
						case ANSWER_SEARCH_FAIL:
							FingerOff();
							return FALSE;}}}
	        FingerOff();}}
//增加一般管理员指纹信息
void AddFinger_Adm(void)
{       static uchar i;
        static uchar AH;//字节号
        static uchar AL;//位号
        uchar t = 0;
		if(!Add_Deal)
		{   FingerOn();
			BellOn();
	        DelayNmS(200);
			BellOff();
	        //1 读取模块Flash
	        if(ReadFingerFlash(FingerRecord,sizeof(FingerRecord),0,0) != OK)
	        {       DisplayErr();
	                FingerOff();
					NowKey = NO_KEY;
	                return;}			 	
	        //2 寻找下一个空位
	        for(i = 10;i<MAX_FINGER;i++)
	        {       AH = i/8;AL = i%8;
	                t = FingerRecord[AH]<<(7-AL);
	                t = t>>7;
	                if(0 == t)break;} //找到空位
	        if(i == MAX_FINGER)
	        {       //记录已满
	                DisplayErr();
	                FingerOff();
					NowKey = NO_KEY;
	                return;}
			//发送ADD指令
	        CommBuf[0] = C_ADD_FINGER;
	        CommBuf[1] = 0;
	        CommBuf[2] = i;
			Clear_Uart_Variable();
	        SendCommand(C_COMMAND,3,CommBuf);//发送增加指纹命令
			//等待正确返回
			Tc = 2;
			while(!ReceiveOK&&Tc);
			Clear_Uart_Variable();
			if((SCC==CommBuf[CommBuf[3]+4])&&Tc)//数据包和校验判断 和 接收超时判断
			{	if((C_ANSWER==CommBuf[2])&&(0x01==CommBuf[4]))
				{//返回正确
					//UARTSendByte(0xFF);
					Add_Deal = 1;
					Add_Deal2 = 1;}
				else{Add_Deal = 0;
					Add_Deal2 = 0;
					DisplayErr();
	                FingerOff();
					NowKey = NO_KEY;
					return;}}
			else
			{	Add_Deal = 0;
				Add_Deal2 = 0;
				DisplayErr();
	            FingerOff();
				NowKey = NO_KEY;
				return;}}
		//接收第一次按手指指令
		if(Add_Deal2&&ReceiveOK)
		{	Clear_Uart_Variable();
			if(SCC==CommBuf[CommBuf[3]+4])					//数据包和校验判断
			{	if((C_ANSWER == CommBuf[2])&&(0x02 == CommBuf[3])&&(C_ADD_FINGER == CommBuf[4]))
                {   //接收正确
					//UARTSendByte(0xFC);					
					switch(CommBuf[5])
					{	case ANSWER_OK:
						    BellOn();
                            BellTimer = 6;//中断中关闭Bell
							Add_Deal2 = 0;
							Add_Deal3 = 1;
							break;
						case ANSWER_OUT_TIME:
							DisplayOutTime();
	                        break;
						case ANSWER_NUMBER_E:
							DisplayFail();//增加失败
							break;}
					if(Add_Deal2)
					{	Add_Deal = 0;
						Add_Deal2 = 0;
                        FingerOff();
						NowKey = NO_KEY;					
						return;}}
                else
                {	Add_Deal = 0;
					Add_Deal2 = 0;
					DisplayErr();
	                FingerOff();
					NowKey = NO_KEY;					
                    return;}}
			else
			{	Add_Deal = 0;
				Add_Deal2 = 0;
				DisplayErr();
	            FingerOff();
				NowKey = NO_KEY;
				return;}}
		//接收第二次按手指
		if(Add_Deal3&&ReceiveOK)
		{	Add_Deal3 = 0;
			Add_Deal = 0;
			Clear_Uart_Variable();
			if(SCC==CommBuf[CommBuf[3]+4]) 					//数据包和校验判断
			{	if((C_ANSWER == CommBuf[2])&&(0x02 == CommBuf[3])&&(C_ADD_FINGER == CommBuf[4]))
                {//接收正确					
					switch(CommBuf[5])
					{	case ANSWER_OK:
							DisplayOK();
					        //4 更改指纹记录
							for(i = 0;i<MAX_FINGER;i++)
							{	AH = i/8;AL = i%8;
								t = FingerRecord[AH]<<(7-AL);
								t = t>>7;
								if(0 == t)break;}//找到空位
					        FingerRecord[AH] |= 1<<AL;
							t = WriteFingerFlash(FingerRecord,sizeof(FingerRecord),0,0);
							UARTSendByte(t);
					        if(OK == t);else DisplayErr();
							break;
						case ANSWER_OUT_TIME:
							DisplayOutTime();
	                        break;
						case ANSWER_FAIL:
						case ANSWER_NUMBER_E:
							DisplayFail();//增加失败
							break;}}
                else DisplayErr();}
			else DisplayErr();
	        FingerOff();
			NowKey = NO_KEY;}}
void AddFingerModule(void)
{       static uchar i;
        static uchar AH;//字节号
        static uchar AL;//位号
        uchar t = 0;
		if(!Add_Deal)
			{FingerOn();
			BellOn();
	        DelayNmS(200);
			BellOff();
	        //1 读取模块Flash
	        if(ReadFingerFlash(FingerRecord,sizeof(FingerRecord),0,0) != OK)
	        {       DisplayErr();
	                FingerOff();
					NowKey = NO_KEY;
	                return;}			 	
	        //2 寻找下一个空位
	        for(i = 0;i<MAX_FINGER;i++)
	        {       AH = i/8;
	                AL = i%8;
	                t = FingerRecord[AH]<<(7-AL);
	                t = t>>7;
	                if(0 == t)break;}//找到空位				
	        if(i == MAX_FINGER)
	        {       //记录已满
	                DisplayErr();
	                FingerOff();
					NowKey = NO_KEY;
	                return;}
			//发送ADD指令
	        CommBuf[0] = C_ADD_FINGER;
	        CommBuf[1] = 0;
	        CommBuf[2] = i;
			Clear_Uart_Variable();
	        SendCommand(C_COMMAND,3,CommBuf);//发送增加指纹命令
			//等待正确返回
			Tc = 2;
			while(!ReceiveOK&&Tc);
			Clear_Uart_Variable();

			if((SCC==CommBuf[CommBuf[3]+4])&&Tc) 	//数据包和校验判断 和 接收超时判断
			{	if((C_ANSWER==CommBuf[2])&&(0x01==CommBuf[4]))
				{	//返回正确
					//UARTSendByte(0xFF);
					Add_Deal = 1;
					Add_Deal2 = 1;}
				else{	
					Add_Deal = 0;
					Add_Deal2 = 0;
					DisplayErr();
	                FingerOff();
					NowKey = NO_KEY;
					return;}}
			else{
				Add_Deal = 0;
				Add_Deal2 = 0;
				DisplayErr();
	            FingerOff();
				NowKey = NO_KEY;
				return;}}
		//接收第一次按手指指令
		if(Add_Deal2&&ReceiveOK)
		{	Clear_Uart_Variable();
			if(SCC==CommBuf[CommBuf[3]+4])					//数据包和校验判断
			{   if((C_ANSWER == CommBuf[2])&&(0x02 == CommBuf[3])&&(C_ADD_FINGER == CommBuf[4]))
                {   //接收正确
					//UARTSendByte(0xFC);					
					switch(CommBuf[5])
					{	case ANSWER_OK:
						    BellOn();
                            BellTimer = 6;//中断中关闭Bell
							Add_Deal2 = 0;
							Add_Deal3 = 1;
							break;	
						case ANSWER_OUT_TIME:
							DisplayOutTime();
	                        break;	
						case ANSWER_NUMBER_E:
							DisplayFail();//增加失败
							break;}
					if(Add_Deal2)
					{	Add_Deal = 0;
						Add_Deal2 = 0;
                        FingerOff();
						NowKey = NO_KEY;					
						return;}}
                else{
					Add_Deal = 0;
					Add_Deal2 = 0;
					DisplayErr();
	                FingerOff();
					NowKey = NO_KEY;					
                    return;}}
			else{
				Add_Deal = 0;
				Add_Deal2 = 0;
				DisplayErr();
	            FingerOff();
				NowKey = NO_KEY;
				return;}}
		//接收第二次按手指
		if(Add_Deal3&&ReceiveOK)
		{	Add_Deal3 = 0;
			Add_Deal = 0;
			Clear_Uart_Variable();
			if(SCC==CommBuf[CommBuf[3]+4]) 					//数据包和校验判断
			{   if((C_ANSWER == CommBuf[2])&&(0x02 == CommBuf[3])&&(C_ADD_FINGER == CommBuf[4]))
                {  //接收正确					
					switch(CommBuf[5])
					{	case ANSWER_OK:
							DisplayOK();
					        //4 更改指纹记录
							for(i = 0;i<MAX_FINGER;i++)
							{	AH = i/8;
								AL = i%8;
								t = FingerRecord[AH]<<(7-AL);
								t = t>>7;
								if(0 == t) break;}//找到空位
					        FingerRecord[AH] |= 1<<AL;
							t = WriteFingerFlash(FingerRecord,sizeof(FingerRecord),0,0);
							UARTSendByte(t);
					        if(OK == t);else DisplayErr();
							break;						  
							case ANSWER_OUT_TIME:
							DisplayOutTime();
	                        break;
						case ANSWER_FAIL:
						case ANSWER_NUMBER_E:
							DisplayFail();//增加失败
							break;}}
                else DisplayErr();}
			else DisplayErr();
	        FingerOff();
			NowKey = NO_KEY;}}
void EmptyFingerModule(void)
{       //1 指纹标识全部清零
        memset(FingerRecord,0,sizeof(FingerRecord));
        FingerOn();
		BellOn();
        DelayNmS(200);
		BellOff();
        //2 写入模块Flash中
        if(OK == WriteFingerFlash(FingerRecord,sizeof(FingerRecord),0,0));
        else{   DisplayErr();
                FingerOff();
                return;}
		//3 清空指纹库
        if(OK == EmptyFinger())DisplayOK();
        else DisplayErr();
        FingerOff();}

⌨️ 快捷键说明

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