亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? module.c

?? this progam is used with e_lock,and so on.
?? C
字號:
#include "Include.h"
extern unsigned char FingerRecord[26];				//指紋記錄數組,每位代表對應編號指紋有無
extern unsigned char xdata CommBuf[MAX_BUF_NUMBER];	//串口緩沖
extern unsigned char xdata SCC;						//串口接收和校驗
//extern unsigned char BellTimer;
extern unsigned int  Tc;							//超時計時器
extern unsigned char NowKey;						//當前按鍵
extern	bit	ReceiveOK; 								//數據包接收完成標志位
/**********************************/
bit	Add_Deal = 0;				//線程標志位1
bit Add_Deal2 = 0;			//線程標志位2
bit Add_Deal3 = 0; 			//線程標志位3
/**********************************/
//顯示操作成功
void DisplayOK(void)
{
        unsigned char i = 0;

        for(i=0;i<4;i++)
        {
//                BellOn();
                LedBlueOn();
				LedRedOff();
                DelayNmS(200);
//                BellOff();
                LedBlueOff();
				LedRedOn();
                DelayNmS(200);
        }
		LedRedOff();		
}
//顯示操作失敗
void DisplayFail(void)
{
        unsigned char i = 0;

        for(i=0;i<2;i++)
        {
//                BellOn();
                LedRedOff();
                DelayNmS(200);
//                BellOff();
                LedRedOn();
                DelayNmS(200);
        }
		LedRedOff();
}
//顯示通訊錯誤
void DisplayErr(void)
{
        unsigned char i = 0;

        for(i=0;i<2;i++)
        {
//                BellOn();
                LedRedOn();
                DelayNmS(200);
//                BellOff();
                LedRedOff();
                DelayNmS(200);
        }
}
//顯示超時
void DisplayOutTime(void)
{
        unsigned char i = 0;

        for(i=0;i<2;i++)
        {
//                BellOn();
				LedBlueOn();
                LedRedOn();
                DelayNmS(200);
 //               BellOff();
				LedBlueOff();
                LedRedOff();
                DelayNmS(200);
        }
}
//清空指紋庫
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();
}
void SearchFingerModule(void)
{
        unsigned char SearchResult = 0;
        unsigned char SearchReturn = 0;

		if(!Add_Deal)
		{
	        FingerOn();
//			BellOn();DelayNmS(200);BellOff();

	        CommBuf[0] = C_SEARCH_FINGER;
	        CommBuf[1] = 0;
	        CommBuf[2] = 0;
	        CommBuf[3] = 0;
	        CommBuf[4] = MAX_FINGER;//最大指紋數

			Clear_Uart_Variable();
	        SendCommand(C_COMMAND,5,CommBuf);//發送搜索命令	
			
	
			//等待接收返回
			Tc = 2;
			while(!ReceiveOK&&Tc);
			Clear_Uart_Variable();

			if((SCC==CommBuf[CommBuf[3]+4])&&Tc)	//數據包和校驗判斷 和 接收超時判斷
			{
				if((C_ANSWER==CommBuf[2])&&(0x01==CommBuf[4]))
				{
					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_SEARCH_FINGER == CommBuf[4]))
                {
                        //接收正確
						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_FAIL:
							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;
			if(SCC==CommBuf[CommBuf[3]+4])	   					//數據包和校驗判斷
			{
                if((C_ANSWER == CommBuf[2])&&(C_SEARCH_FINGER == CommBuf[4]))
                {
                    //接收正確
					switch(CommBuf[5])
					{
						//指紋處理成功
						case ANSWER_SEARCH_OK:
														
							DisplayOK();					
							break;

						case ANSWER_OUT_TIME:
							DisplayOutTime();
	                        break;

						case ANSWER_FAIL:
						case ANSWER_SEARCH_FAIL:
							DisplayFail();//增加失敗
							break; 
					}

                }
                else
                {	  
					DisplayErr();
                }
			}
			else
			{
				DisplayErr();
			}

	        FingerOff();
			NowKey = NO_KEY;							
		}
}

void AddFingerModule(void)
{
        static unsigned char i;
        static unsigned char AH;//字節號
        static unsigned char AL;//位號
        unsigned char 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
							PLAY_A();
							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)
					        {
							PLAY_A();
					        }
							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;						
		}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩视频专区在线播放| 99精品视频在线观看免费| 亚洲精品视频在线观看网站| 国产精品人人做人人爽人人添 | 国产精品国产成人国产三级| 久久久久久亚洲综合影院红桃| 精品久久人人做人人爱| 亚洲精品在线观看网站| 久久综合久久鬼色中文字| 26uuu精品一区二区| 国产欧美精品一区二区色综合 | 色哟哟欧美精品| 91高清视频在线| 欧美日韩一区二区电影| 欧美一区日本一区韩国一区| 日韩欧美你懂的| 久久嫩草精品久久久精品一| 国产视频一区在线播放| 亚洲精选在线视频| 午夜成人免费电影| 国产麻豆91精品| 97久久久精品综合88久久| 欧美日韩三级在线| 久久久精品综合| 亚洲精品va在线观看| 日韩国产欧美三级| 成人午夜电影久久影院| 色综合中文字幕国产 | 毛片不卡一区二区| 国产福利一区二区三区视频在线| 成人免费观看av| 欧美美女喷水视频| 国产欧美日韩亚州综合| 性感美女久久精品| 成人久久18免费网站麻豆| 欧美午夜精品免费| 久久久99久久| 午夜精品久久久久久久久久久| 精品一区二区三区在线观看| 91麻豆精品秘密| 日韩一卡二卡三卡| 亚洲欧美成人一区二区三区| 美洲天堂一区二卡三卡四卡视频| 99综合电影在线视频| 欧美一区二区三区四区久久| 亚洲欧洲精品一区二区精品久久久 | 一区二区三区四区乱视频| 精久久久久久久久久久| 色婷婷av一区| 国产精品女同一区二区三区| 捆绑调教一区二区三区| 欧美怡红院视频| 综合久久综合久久| 国产乱码精品一区二区三区忘忧草| 欧洲一区在线电影| 国产精品不卡在线| 国产成人aaa| 欧美大片在线观看| 美女视频免费一区| 91精品久久久久久久久99蜜臂| 亚洲天堂2016| 不卡大黄网站免费看| 久久午夜免费电影| 国产在线不卡一卡二卡三卡四卡| 日韩精品一区二区三区四区 | 91在线免费播放| 国产精品视频一区二区三区不卡| 老司机精品视频导航| 日韩精品在线一区| 激情六月婷婷久久| 欧美一区二区久久| 蜜桃视频在线观看一区| 制服丝袜国产精品| 蜜桃av一区二区三区电影| 欧美一区二区三区爱爱| 日本免费新一区视频| 欧美一区二区三区的| 六月丁香婷婷久久| 精品国产免费一区二区三区四区 | 精品国产91久久久久久久妲己| 日韩av网站免费在线| 91精品视频网| 男人的天堂亚洲一区| 日韩一区二区免费视频| 六月丁香婷婷色狠狠久久| 337p日本欧洲亚洲大胆色噜噜| 久久99精品国产91久久来源| 精品1区2区在线观看| 国产揄拍国内精品对白| 欧美国产激情一区二区三区蜜月| 国产ts人妖一区二区| 亚洲女同ⅹxx女同tv| 91成人在线观看喷潮| 日本三级亚洲精品| 久久久久久亚洲综合| 99久久精品情趣| 亚洲成a天堂v人片| 精品久久一区二区| aaa欧美日韩| 日本不卡不码高清免费观看| 久久久久久久网| 99久久精品免费| 水野朝阳av一区二区三区| 久久精品视频免费| 色94色欧美sute亚洲线路二| 日本欧美久久久久免费播放网| 欧美国产日本视频| 日本韩国一区二区三区视频| 免费看欧美美女黄的网站| 国产精品乱人伦| 欧美精三区欧美精三区| 国产精品1024| 五月天婷婷综合| 国产精品美女久久久久久2018| 欧美影片第一页| 成人晚上爱看视频| 日本不卡一二三| 亚洲柠檬福利资源导航| 欧美大片免费久久精品三p| 成人免费观看男女羞羞视频| 男男视频亚洲欧美| 亚洲另类在线一区| 国产日韩欧美一区二区三区乱码 | 日韩精品一区二区在线| 色老汉一区二区三区| 国产一区二区三区在线观看免费| 亚洲一二三区不卡| 亚洲日本在线看| 国产亚洲一区字幕| 欧美一区二区三区婷婷月色| 一本一道波多野结衣一区二区| 狠狠色综合日日| 日韩1区2区日韩1区2区| 亚洲激情成人在线| 国产精品国产三级国产普通话99 | 国产一区美女在线| 午夜激情一区二区| 亚洲一区二区黄色| 亚洲欧美日韩国产中文在线| 日本一区二区免费在线观看视频 | 99久久精品国产观看| 国产一区二区视频在线播放| 另类欧美日韩国产在线| 丝袜脚交一区二区| 日韩专区一卡二卡| 亚洲成在线观看| 亚洲成人激情社区| 亚洲高清不卡在线| 天天影视涩香欲综合网| 亚洲成人黄色小说| 日韩电影在线一区二区| 亚洲福中文字幕伊人影院| 亚洲午夜在线电影| 日韩影院免费视频| 日本午夜精品视频在线观看| 青娱乐精品在线视频| 日本不卡不码高清免费观看| 日本三级亚洲精品| 国产一区二区在线视频| 国产一区二区成人久久免费影院| 九一九一国产精品| 国产乱码一区二区三区| 成人午夜精品一区二区三区| 色综合网站在线| 欧美性猛交xxxxxxxx| 欧美一区二区三区在线| 久久色在线观看| 国产精品国产三级国产普通话三级| 亚洲欧美激情一区二区| 五月婷婷久久综合| 国产麻豆精品一区二区| 成人精品一区二区三区四区| 在线影视一区二区三区| 欧美日产在线观看| 精品毛片乱码1区2区3区| 久久综合999| 亚洲精品自拍动漫在线| 日本欧美一区二区三区乱码| 国产精品一区二区无线| 成人精品视频.| 欧美体内she精高潮| 2020国产精品| 亚洲一区二区三区中文字幕在线| 日本视频免费一区| 99久久综合狠狠综合久久| 欧美亚洲综合一区| 久久久久久免费| 亚洲1区2区3区4区| 国产91丝袜在线播放九色| 欧美视频在线不卡| 国产日韩亚洲欧美综合| 亚洲国产视频在线| 国产精品996| 欧美日韩成人在线一区| 中文字幕第一区第二区| 日本成人在线不卡视频| av中文字幕亚洲| 久久综合色之久久综合| 亚洲成人av免费| 99麻豆久久久国产精品免费|