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

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

?? reader.c

?? 很強的射頻卡reader源代碼
?? C
?? 第 1 頁 / 共 5 頁
字號:
		datas++;
	}
	CheckControlCode(TxCheckSum);
}

//設定用戶信息
unsigned char SetUserInfo(unsigned char *add)
{ 
	if (write_Flash(USERINFO,add,32)==0) 	return 0 ;
	else return 1 ;
}


//保存數據
unsigned char Save_Data()
{	unsigned char leg;
	unsigned int address;
	address=(u_ram.host.RxBuffer[5]*256+u_ram.host.RxBuffer[6]);//+0XE800;
	if (address>0xfe00)  return 1;
	leg=u_ram.host.RxBuffer[3]-3;
	if(write_Flash(address,&u_ram.host.RxBuffer[7],leg)==0) return 0;
	else return 1; 
}
//讀取數據
void R_Flash()
{	unsigned char leg,CMD_status;
	unsigned int address;		
	address=(u_ram.host.RxBuffer[5]*256+u_ram.host.RxBuffer[6]);//+0XE800;
	leg=u_ram.host.RxBuffer[7];
	if (leg>90) {ReturnStatus(OutRange); return;} 
	CMD_status=read_Flash(address,&u_ram.host.RxBuffer[5],leg);
	if(CMD_status) ReturnStatus(OutRange);
		else TxOut(leg,CMD_status,&u_ram.host.RxBuffer[5]);	
}

// 設定讀卡器地址
unsigned char SetAddress()
{
	unsigned char i[3];

	if(u_ram.host.RxBuffer[5] != 0x00)
//DATA[0]: Enable Serial Number Checking
//0x00 – Don’t check the Serial Number.
//0x01 – Check the Serial Number.
	{
		if(u_ram.host.RxBuffer[7]  !=  read_byte_Flash(SERIALNUM))     	return(OutRange); 
     	else if(u_ram.host.RxBuffer[8] != read_byte_Flash(SERIALNUM+1)) 	return(OutRange); 
		else if(u_ram.host.RxBuffer[9] != read_byte_Flash(SERIALNUM+2)) 	return(OutRange);
     	else if(u_ram.host.RxBuffer[10] != read_byte_Flash(SERIALNUM+3))	return(OutRange);
		else if(u_ram.host.RxBuffer[11] != read_byte_Flash(SERIALNUM+4))	return(OutRange);
		else if(u_ram.host.RxBuffer[12] != read_byte_Flash(SERIALNUM+5))	return(OutRange); 
		else if(u_ram.host.RxBuffer[13] != read_byte_Flash(SERIALNUM+6))	return(OutRange);
     	else if(u_ram.host.RxBuffer[14] != read_byte_Flash(SERIALNUM+7))	return(OutRange);
 	}	
//	write_Flash(MADDRESSMCU,&u_ram.host.RxBuffer[6],1);//DATA[1]: The new Device ( Reader ) Address to be set
	//SlaveADR=read_byte_Flash(MADDRESSMCU);
	i[2]=u_ram.host.RxBuffer[6];
	i[1]=0xaa;
	i[0]=0x55;
	write_Flash(BCCA,i,3);
	
	SlaveADR=u_ram.host.RxBuffer[6];
	//write_byte_Flash(MADDRESSMCU,SlaveADR);
	return(0);     
}

//設定通訊波特率
unsigned char SetBaudrateMCU(unsigned char Baudrate)
{
	unsigned char i[2];
	i[0]=SlaveADR;
	i[1]=Baudrate;
	if(Baudrate <= 0x05)
	{ 
		//write_Flash(MADDRESSMCU,i,2);
		write_Flash(bauderate,&i[1],1);
		return(0);
	} 
	return(OutRange);
}

/*Flash 內部數據效驗
unsigned char CaulaBCC(void)
{ unsigned char i;
	i=   read_byte_Flash(mAddressMCU);
	i^=  read_byte_Flash(mAddressMCU+1);
	i^=  read_byte_Flash(mAddressMCU+2);
	i^=  read_byte_Flash(mAddressMCU+3);
	return (i);
}
*/

//  系統默認參數設置
void InitialSetup(void)
{
	u_ram.host.RxBuffer[0]=0X55;
	u_ram.host.RxBuffer[1]=0XAA;
	u_ram.host.RxBuffer[2]=0X00;				
	u_ram.host.RxBuffer[3]=0X5;
	u_ram.host.RxBuffer[4]=0X1;
	u_ram.host.RxBuffer[5]=0X00;
	write_Flash(BCCA,&u_ram.host.RxBuffer[0],6);	
}

void DecodeCMD_Buzzer(unsigned char mode,unsigned char *buffer)
{
	switch(mode)
	{
		case 0:Buzzer=ON; //OFF
    		break;
    
		case 1:Buzzer=OFF; //ON
		break;
    
		case 4:
     		Buz_T1=buffer[0];
     		Buz_T2=buffer[1];
     		Buz_T3=buffer[2];
     		Buz_T4=buffer[3];
     		Buz_Period=buffer[4];
     		Buz_CNT=0xFF;
     		Buz_Step=0;
     		BuzFlag=1;
	}
}

/********************************************************************************************************/
/*unsigned char getrc500EEPROM(unsigned short Address)
{
	unsigned char Buffer;
	PcdReadE2(Address,1,&Buffer);
	return(Buffer);
}
*/
//*******************************************************
//高階操作,完成對卡的14443 操作,序列號比較。密碼校驗

unsigned char MF_HL_Auth(unsigned char mode, unsigned char *snr, unsigned char Blk_Add)
{
	unsigned char ReqMode,temp[5],KeyA_B,CMD_status;
		 
	if(mode & 0x01) ReqMode = 0x52;
	else ReqMode =0x26; 
	
	CMD_status=Mf500PiccCommonRequest(ReqMode,temp);
	if(CMD_status !=0x00)
		CMD_status=Mf500PiccCommonRequest(ReqMode,temp);

	if(CMD_status) // Request Error
	{
		if(CMD_status == MI_NOTAGERR)	return (inf_nCard);
		else if (CMD_status == MI_ACCESSTIMEOUT) return (TMO_ERR);
		else if (CMD_status == MI_PARITYERR) return (PARITY_ERR);
		else if (CMD_status == MI_BITCOUNTERR) return (BITCNT_ERR);
		else return (inf_NACK);
	}                

	CMD_status=Mf500PiccCascAnticoll(PICC_ANTICOLL1,temp);
	if(CMD_status)          	
	{
		if(CMD_status == MI_NOTAGERR)	return (inf_nCard);
		else if(CMD_status == MI_SERNRERR) return (MF_SERNRERR);//
		else if (CMD_status == MI_ACCESSTIMEOUT) return (TMO_ERR);
		else if (CMD_status == MI_PARITYERR) return (PARITY_ERR);
		else if (CMD_status == MI_BITCOUNTERR) return (BITCNT_ERR);
		else return (inf_NACK);
	}       
	
	CMD_status=Mf500PiccCascSelect(PICC_ANTICOLL1,temp);
 	
	if(CMD_status)          	
	{
		if(CMD_status == MI_NOTAGERR)	return (inf_nCard);
		else if(CMD_status == MI_CRCERR) return (CRC_ERR);
		else if (CMD_status == MI_ACCESSTIMEOUT) return (TMO_ERR);
		else if (CMD_status == MI_PARITYERR) return (PARITY_ERR);
		else if (CMD_status == MI_BITCOUNTERR) return (BITCNT_ERR);
		else return (inf_NACK);
	}       

	if(mode & 0x04) KeyA_B = 0x61;	//Check use KEYA or B
	else KeyA_B =0x60; 

	CMD_status=MRC500LoadKey2(KeyA_B,Blk_Add >> 2);	//Blk Address
 	if(CMD_status)          	
	{
		if(CMD_status == MI_NOTAGERR)	return (inf_nCard);
		else if (CMD_status == MI_ACCESSTIMEOUT) return (TMO_ERR);
		else return (inf_NACK);
	} 
  
	CMD_status=MRC500PiccAuthentication(KeyA_B,temp,Blk_Add);             
 	if(CMD_status)          	
	{
		if(CMD_status == MI_NOTAGERR)	return (inf_nCard);
		else if(CMD_status == MI_AUTHERR) return (MF_AUTHERR);
		else if (CMD_status == MI_ACCESSTIMEOUT) return (TMO_ERR);
		else if (CMD_status == MI_BITCOUNTERR) return (BITCNT_ERR);
		else return (inf_NACK);
	}

	if(mode & 0x02)
	{	
		CMD_status=snr[0]^temp[3]|snr[1]^temp[2]|snr[2]^temp[1]|snr[3]^temp[0];	/*比較序列號*/
      	if(CMD_status)  return(inf_nCard);
     	else; 	
	}
	{
		snr[0]=temp[0];snr[1]=temp[1];snr[2]=temp[2];snr[3]=temp[3];
		return CMD_status;
	}  
	   		 
}



void return_nodata_ack(status)
{
	unsigned char i;

	cmd_buffer[0]=SEQ;
	cmd_buffer[1]=SlaveADR;
	cmd_buffer[2]=1;
	cmd_buffer[3]=status;
	make_xor(cmd_buffer,4);

	TxFlag=1;
	STX_Pointer=0; 
	ETX_Pointer=5;
   
	for(i=0;i<5;i++)
	{
		u_ram.host.TxBuffer[i]=cmd_buffer[i];

	}
	RS485=1;
	SBUF=2;	
}

void return_guid(void)
{
	unsigned char i;

	cmd_buffer[0]=SEQ;
	cmd_buffer[1]=SlaveADR;
	cmd_buffer[2]=8;
	cmd_buffer[3]=0;
	memcpy(&cmd_buffer[4],&card_desuid[1],7);
	make_xor(cmd_buffer,11);
	TxFlag=1;
	STX_Pointer=0; 
	ETX_Pointer=12;
   
	for(i=0;i<12;i++)
	{
		u_ram.host.TxBuffer[i]=cmd_buffer[i];

	}
	RS485=1;
	SBUF=2;	
}


/*****************************************************************************************/
void funtions()
{
	unsigned char CMD_status;
	unsigned short HostBuffer;
	unsigned char application_no[3];
	unsigned char file_no;
	unsigned char offset[3];
	unsigned char data_len;
	int deskey_address;
	unsigned char status;
//	unsigned char i;
	EA=0;
	weigandFlag=0;

	switch(u_ram.host.RxBuffer[2]) //decode command code
	{  
// desfire 
	    case CMD_DES_get_uid:
			
			status =get_desfire_uid();			

			if (status)
				return_nodata_ack(1);
			else
			    return_guid();


		break;

		case CMD_DES_read:

			application_no[0]=u_ram.host.RxBuffer[5];
			application_no[1]=u_ram.host.RxBuffer[6];
			application_no[2]=u_ram.host.RxBuffer[7];
			file_no=u_ram.host.RxBuffer[8];
			offset[0]=u_ram.host.RxBuffer[9];
			offset[1]=u_ram.host.RxBuffer[10];
			offset[2]=u_ram.host.RxBuffer[11];
			data_len=u_ram.host.RxBuffer[12];
//			deskey_address=key_buffer+u_ram.host.RxBuffer[13]*32;
//			read_Flash(deskey_address,select_key,17);
//            LED_R=1;
			status=read(application_no,file_no,offset,data_len);   //application_no
//			LED_R=0;

			if (status)
				return_nodata_ack(status);
			//read(0,3,1,0,0,10);

		break;

		case CMD_DES_savekey:						//保存DESFIRE 密碼
			deskey_address=key_buffer+u_ram.host.RxBuffer[5]*32;
			memcpy(cmd_buffer,&u_ram.host.RxBuffer[6],17);
			memcpy(select_key,cmd_buffer,17);
			status=write_Flash(deskey_address,cmd_buffer,17);
			if (status)
			   return_nodata_ack(1);
			else
			   return_nodata_ack(0);
		break;

		case CMD_DES_getkey:
			deskey_address=key_buffer+u_ram.host.RxBuffer[5]*32;
			read_Flash(deskey_address,select_key,17);
			memcpy(&cmd_buffer[4],select_key,17);
			cmd_buffer[0]=SEQ;
			cmd_buffer[1]=SlaveADR;
			cmd_buffer[2]=18;
			cmd_buffer[3]=0;
			make_xor(cmd_buffer,21);
			memcpy(u_ram.host.TxBuffer,cmd_buffer,22);

			TxFlag=1;
			STX_Pointer=0; 
			ETX_Pointer=22;
			RS485=1;
			SBUF=2;
			
		break;



		case CMD_DES_setpara:
			des_app_no[0]=u_ram.host.RxBuffer[5];
			des_app_no[1]=u_ram.host.RxBuffer[6];
			des_app_no[2]=u_ram.host.RxBuffer[7];
			des_file_no=u_ram.host.RxBuffer[8];			
			des_offset[0]=u_ram.host.RxBuffer[9];
			des_offset[1]=u_ram.host.RxBuffer[10];
			des_offset[2]=u_ram.host.RxBuffer[11];
			des_read_len=u_ram.host.RxBuffer[12];
			//des_key_index=u_ram.host.RxBuffer[15];

			write_Flash(des_read_parameter,&u_ram.host.RxBuffer[5],9);

			deskey_address=key_buffer+u_ram.host.RxBuffer[13]*32;
			read_Flash(deskey_address,select_key,17);
//			des_key_no=select_key[16];
		    return_nodata_ack(0);
		break;				

    	case CMD_ActivePort: //command code for active IO point forever
			if(!SetPortActive(u_ram.host.RxBuffer[5]))
			ReturnStatus(inf_ACK);
			else ReturnStatus(OutRange); 
		break;

		case CMD_GetPortStat: //command code for get I/O status.
		 	u_ram.host.RxBuffer[6]=GetPortStatus(u_ram.host.RxBuffer[5]);
			TxOut(1,0,&u_ram.host.RxBuffer[6]);
		break;

		case CMD_ToggleLED:   //command code for toggle LED ON/OFF
		 	CMD_status=DecodeToggleLED(&u_ram.host.RxBuffer[5]);
			if (CMD_status==inf_ACK)  ReturnStatus(inf_ACK);
			else ReturnStatus(OutRange);
     	break;

		case CMD_ActiveLED:   //command code for ON LED forever
			CMD_status=SetLED_Active(u_ram.host.RxBuffer[5]);
			if (CMD_status==inf_ACK)  ReturnStatus(inf_ACK);
			else ReturnStatus(OutRange);		
		break;

		case CMD_Buzzer:   //Buzzer 
        		if(u_ram.host.RxBuffer[5] < 5)
			{
				DecodeCMD_Buzzer(u_ram.host.RxBuffer[5],&u_ram.host.RxBuffer[6]);
				ReturnStatus(inf_ACK);
			}
		else ReturnStatus(OutRange);
		break;
        
		case CMD_C_Ext:
			CMD_status=C_Ext(u_ram.host.RxBuffer[5]);
			if (CMD_status==inf_ACK)  ReturnStatus(inf_ACK);
			else ReturnStatus(OutRange);					
		break;

		case CMD_LoadProgram:     //程序下載
			EA=1;
			ReturnStatus(inf_ACK);  
			while(TxFlag);
			u_ram.host.TxBuffer[0]=0x55;
			u_ram.host.TxBuffer[1]=0xAA;
			u_ram.host.TxBuffer[2]=10;
			while(1);
		break;

		case CMD_SetAddress:           //Set reader address
			CMD_status=SetAddress();
			TxOut(1,CMD_status,&SlaveADR);
		break;

		case CMD_SetBaudrate:          //Set reader baudrate//
			EA=1;
			CMD_status=SetBaudrateMCU(u_ram.host.RxBuffer[5]);
//			u_ram.host.RxBuffer[5]=read_byte_Flash(bauderate);
			TxOut(1,CMD_status,&u_ram.host.RxBuffer[5]);
//			return_nodata_ack(CMD_status);
			while(TxFlag);  //wait the txout command complete;
			if(CMD_status == 0x00)
			{
				delay(3);
				InitialUART(read_byte_Flash(bauderate));  //for 22.1184MHz 
			}
		break;
		
		case CMD_SetSerialNum:         //Set reader serial number
		 	if(write_Flash(SERIALNUM,&u_ram.host.RxBuffer[5],8) ==0x00) ReturnStatus(inf_ACK);  
			else ReturnStatus(Fail);  
		break;
		
		case CMD_GetSerialNum:         //Get reader serial number
			CMD_status=read_Flash(SERIALNUM,&u_ram.host.RxBuffer[6],8);
			u_ram.host.RxBuffer[14]=0;
			u_ram.host.RxBuffer[15]=SlaveADR;
			if (CMD_status) ReturnStatus(Fail);	
			else TxOut(10,CMD_status,&u_ram.host.RxBuffer[6]);	
		break;

		case CMD_Weigand:            //Weigand 控制
			weigandFlag=u_ram.host.RxBuffer[5];
			CMD_status=write_Flash(WEIGAND26,&u_ram.host.RxBuffer[5],1) ;   
			if(CMD_status==0)
				ReturnStatus(inf_ACK);
			else ReturnStatus(Fail); 
		break;
				
		case CMD_WeigandActive:            //Weigand 控制
			weigandFlag=u_ram.host.RxBuffer[5];
			ReturnStatus(inf_ACK);
		break;


		case CMD_Set_User_Info:    //設定用戶信息

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美色网一区二区| 大桥未久av一区二区三区中文| 99麻豆久久久国产精品免费 | 欧美日韩一二三| 夜夜精品浪潮av一区二区三区| 欧洲生活片亚洲生活在线观看| 一区二区久久久久| 91.麻豆视频| 久久99久久精品欧美| 国产丝袜美腿一区二区三区| 波多野结衣一区二区三区 | 欧美日韩国产天堂| 免费成人你懂的| 久久久国际精品| 91在线无精精品入口| 亚洲一区二区在线观看视频| 91精品在线免费| 国产精品夜夜嗨| 亚洲黄色在线视频| 日韩欧美高清dvd碟片| 国产精品一区二区久久不卡| 日韩久久一区二区| 欧美电影一区二区三区| 精东粉嫩av免费一区二区三区| 中文字幕国产一区二区| 欧美日韩亚洲综合在线| 激情偷乱视频一区二区三区| 亚洲欧美在线另类| 日韩欧美国产wwwww| 99这里只有精品| 青青青爽久久午夜综合久久午夜| 国产女主播视频一区二区| 欧美亚洲高清一区二区三区不卡| 久久99深爱久久99精品| 一区二区视频在线看| 日韩欧美一级二级| 91福利在线播放| 国产精品一区二区在线观看网站 | 亚洲日本免费电影| 日韩一区二区三区观看| 成人黄色一级视频| 奇米色一区二区| 亚洲免费视频中文字幕| 久久亚洲综合色| 欧美精品在线观看播放| 91在线视频18| 国产乱子伦视频一区二区三区| 一区二区三区四区在线播放| 久久久久久夜精品精品免费| 欧美另类高清zo欧美| 99精品1区2区| 国产99久久久国产精品| 蜜乳av一区二区三区| 亚洲综合一区在线| 国产精品国产三级国产普通话蜜臀 | 自拍偷拍亚洲综合| 精品盗摄一区二区三区| 欧美色图一区二区三区| 成人小视频在线观看| 国产专区综合网| 日韩avvvv在线播放| 亚洲成人手机在线| 亚洲九九爱视频| 亚洲人xxxx| 国产精品电影一区二区| 国产日产欧产精品推荐色| 欧美成人精品二区三区99精品| 欧美日韩国产高清一区二区三区| 91一区二区在线| 99国产精品久久久| 99re热视频这里只精品| a在线欧美一区| 波波电影院一区二区三区| 国产丶欧美丶日本不卡视频| 国产在线国偷精品产拍免费yy| 秋霞午夜av一区二区三区| 午夜精品久久久久久久久久久| 亚洲一区二区三区视频在线| 日韩理论片网站| 亚洲乱码中文字幕综合| 伊人婷婷欧美激情| 亚洲自拍偷拍欧美| 亚洲电影在线免费观看| 亚洲chinese男男1069| 亚洲国产精品影院| 视频一区国产视频| 日韩精品一级中文字幕精品视频免费观看 | 国产精一区二区三区| 九九精品视频在线看| 国模娜娜一区二区三区| 国产91精品在线观看| 99精品视频一区二区三区| 99国产欧美另类久久久精品 | 自拍偷拍欧美激情| 亚洲综合丝袜美腿| 日韩中文字幕不卡| 久久99精品视频| 国产成人鲁色资源国产91色综 | 亚洲韩国精品一区| 日本在线不卡视频一二三区| 老汉av免费一区二区三区 | 国产91综合网| 色综合久久久久网| 6080午夜不卡| 国产片一区二区| 亚洲丝袜美腿综合| 视频一区欧美精品| 国产精品一线二线三线| 一本色道久久综合亚洲aⅴ蜜桃 | 一本一道波多野结衣一区二区| 欧美午夜宅男影院| 精品国产凹凸成av人导航| 国产精品乱码一区二区三区软件| 亚洲精品欧美专区| 美女一区二区视频| eeuss鲁片一区二区三区| 欧美午夜精品理论片a级按摩| 日韩午夜在线影院| 中文字幕av资源一区| 亚洲福利视频一区| 国产自产视频一区二区三区| 99精品久久只有精品| 91精品国产一区二区| 国产欧美日韩另类一区| 亚洲成人黄色小说| 国产福利91精品一区| 欧美日韩黄色一区二区| 国产性天天综合网| 天天影视色香欲综合网老头| 国产成人av一区二区三区在线 | 国产精品三级电影| 午夜精品久久久久| 成人91在线观看| 欧美一级黄色片| 中文字幕亚洲在| 韩国精品久久久| 欧美三区在线视频| 国产精品国产三级国产a| 捆绑调教美女网站视频一区| 日本黄色一区二区| 国产精品少妇自拍| 韩国精品主播一区二区在线观看| 在线观看日韩精品| 国产精品福利一区| 国产精品自拍三区| 日韩三级中文字幕| 亚洲第一搞黄网站| 97se亚洲国产综合在线| 国产日产欧美一区二区视频| 免费成人av在线播放| 欧美偷拍一区二区| 亚洲少妇最新在线视频| 国产不卡视频一区二区三区| 91麻豆精品国产综合久久久久久| 亚洲最色的网站| 91蝌蚪porny九色| 国产精品久久三区| 成人影视亚洲图片在线| 欧美精品一区二区精品网| 日韩电影在线观看网站| 欧美日韩一级片在线观看| 亚洲综合免费观看高清在线观看| 国产成人精品亚洲777人妖 | 91福利在线播放| 日韩毛片视频在线看| 99re成人精品视频| 国产精品二三区| 99re这里只有精品视频首页| 中文字幕av一区 二区| 风间由美一区二区三区在线观看 | 亚洲综合自拍偷拍| 91精品91久久久中77777| 亚洲丝袜另类动漫二区| 91麻豆精东视频| 一区二区三区四区五区视频在线观看| 色综合久久88色综合天天6 | 国产乱淫av一区二区三区| 精品成人免费观看| 国产精品亚洲一区二区三区妖精| 久久久久久久电影| 粉嫩在线一区二区三区视频| 国产精品天天看| 色婷婷久久99综合精品jk白丝 | 性久久久久久久久| 日韩一级片在线播放| 精品一区二区三区影院在线午夜| 欧美不卡一二三| 国产精品一区二区三区99| 中文字幕乱码久久午夜不卡 | 91玉足脚交白嫩脚丫在线播放| 亚洲欧洲av色图| 欧美日韩成人高清| 精品中文字幕一区二区| 中文字幕欧美国产| 日本道精品一区二区三区| 午夜精品爽啪视频| 久久众筹精品私拍模特| 成人sese在线| 午夜激情一区二区三区| 久久日一线二线三线suv|