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

📄 rfid_animalidmenu.c

📁 找的一个用U2270B开发的射频卡项目文件
💻 C
📖 第 1 页 / 共 3 页
字号:
    {                                             
		uio_Get();
		if(cButton == IO_ENTER  || firstTime == 1)
		{
			for(i=0; i<13; i++){c64bIDCode[i] = 0;}
			ioActive = 0;
	        if(Target_Reader == 70)
	        {
 				lcd_clear_area(SCRN_LEFT+1,SCRN_TOP+1,SCRN_RIGHT-1,SCRN_BOTTOM-1);
 				lcd_put_fString(lcd_fcenter(PSTR("Read Animal ID")), 2, PSTR("Read Animal ID"));             // Heading
		 		lcd_horz_line(SCRN_LEFT, SCRN_RIGHT, 11); 				// First Row Separator
				
				//rError = U2270_ReadAnimalID(&cDatPtr);
        		rError = U2270_ReadData(Target_Tag,&cDatPtr,BIPHASE,ANIMALSYNC,128);
	        	choldDatPtr = cDatPtr;
        		
        		cDatPtr++;
	        	if(rError == 0)
	        	{      
	        		c64bIDCodePtr = &c64bIDCodetmp[0];
	        		i = 3;
	        		for(j = 0; j<13; j++)
	        		{
		        		tmpData = (*cDatPtr++) << i; 
		        		tmpData = tmpData | (*cDatPtr >> (8-i));
		        		
		        		*c64bIDCodePtr++ =  tmpData; 
		        		if(i++ == 8)
		        		{
		        			cDatPtr++;
		        			i=1;
		        		}
	        		}
	        		for(j=0; j<13; j++)
	        		{
		        		tmpData = c64bIDCodetmp[12-j];
		        		tmpData1 = 0;
		        		for(i=0; i<8; i++)
		        		{
		        			if(tmpData & 0x01)
		        			{
		        				tmpData1 = tmpData1<<1;
		        				tmpData1 = tmpData1|0x01;
		        			}
		        			else{tmpData1 = tmpData1<<1;}
		        			tmpData = tmpData >> 1;
		        		}
		        		c64bIDCode[j] = tmpData1; 
		        	}
	        		
	        		if((c64bIDCode[5]&0x80) == 0x80){end = lcd_put_fString(2, 13, PSTR("Animal:Yes"));}
	        		else{end = lcd_put_fString(2, 13, PSTR("Animal:No"));} 
	        		
	        		if((c64bIDCode[6]&0x01) == 0x01){end = lcd_put_fString(end, 13, PSTR("  Data:Yes"));}
	        		else{end = lcd_put_fString(end, 13, PSTR("  Data:No"));} 
       				
					for(i=0; i<12; i++){sBlockDat[i] = 0;}
   					sBlockDatPtr = &sBlockDat[0];
			        tmpData = c64bIDCode[7]>>6;
			        test = (unsigned int)(tmpData)<<8;
			        conv_Char2HexStr2(sBlockDatPtr, tmpData);
			        sBlockDatPtr += 2;
			        tmpData = c64bIDCode[7]<<2;
			        tmpData = tmpData | (c64bIDCode[8]>>6);
			        test = test + (unsigned int)(tmpData);
			        conv_Char2HexStr2(sBlockDatPtr, tmpData);
			        sBlockDatPtr += 2;
	 				end = lcd_put_fString(2, 23, PSTR("Country:"));                       
	 				end = lcd_put_String(end, 23, &sBlockDat[0]);  
		  			
					for(i=0; i<12; i++){sBlockDat[i] = 0;}
   					sBlockDatPtr = &sBlockDat[0];
		  			ltoa(test, sBlockDatPtr,10);
	 				end = lcd_put_fString(end, 23, PSTR(" ("));                       
 					end = lcd_put_String(end, 23, sBlockDatPtr); 
	 				end = lcd_put_fString(end, 23, PSTR("d)"));                       
 			  
					for(i=0; i<12; i++){sBlockDat[i] = 0;}
   					sBlockDatPtr = &sBlockDat[0];
   					tmpData = c64bIDCode[8]&0x3F;
	        		for(j=0; j<5; j++)
	        		{
			        	conv_Char2HexStr2(sBlockDatPtr, tmpData);
			        	sBlockDatPtr += 2;
			        	tmpData = c64bIDCode[(unsigned char)(9+j)]; 
		        	}
	 				end = lcd_put_fString(2, 33, PSTR("National:"));                       
	 				end = lcd_put_String(end, 33, &sBlockDat[0]);  
		        		
					for(i=0; i<12; i++){sBlockDat[i] = 0;}
   					sBlockDatPtr = &sBlockDat[0];
	        		for(j=0; j<2; j++)
	        		{
			        	conv_Char2HexStr2(sBlockDatPtr, c64bIDCode[(unsigned char)(3+j)]);
			        	sBlockDatPtr += 2;
		        	}
			        test = ((unsigned int)(c64bIDCode[3])<<8) + (unsigned int)(c64bIDCode[4]);
	 				end = lcd_put_fString(2, 43, PSTR("CRC:"));                       
	 				end = lcd_put_String(end, 43, &sBlockDat[0]);
	 				
					CRCval = 0x0000;
	 				for(i=0; i<10; i++)
	 				{
//	 					CRCval = CRC_CCITT16(CRCval, c64bIDCodetmp[i], 0x1021);
	 					CRCval = CRC_CCITT16_Reverse(CRCval, c64bIDCode[12-i], 0x8408);
	 				}
	 				  
					for(i=0; i<12; i++){sBlockDat[i] = 0;}
   					sBlockDatPtr = &sBlockDat[0];
		  			ltoa(test, sBlockDatPtr,10);
	 				end = lcd_put_fString(end, 43, PSTR(" ("));                       
 					end = lcd_put_String(end, 43, sBlockDatPtr); 
	 				end = lcd_put_fString(end, 43, PSTR("d)"));                       
	 				if(CRCval == 0){end = lcd_put5x7_Char(end, 43, 30);}

					if((c64bIDCode[6]&0x01) == 0x01)
					{
						for(i=0; i<12; i++){sBlockDat[i] = 0;}
	   					sBlockDatPtr = &sBlockDat[0];
		        		for(j=0; j<3; j++)
		        		{
				        	conv_Char2HexStr2(sBlockDatPtr, c64bIDCode[j]);
				        	sBlockDatPtr += 2;
			        	}
		 				end = lcd_put_fString(2, 53, PSTR("Trailer:"));                       
		 				end = lcd_put_String(end, 53, &sBlockDat[0]);
					}  
	 			}
				lcd_update(SCRN_TOP,SCRN_BOTTOM);
	        }
            firstTime = 0;
	        ioActive = 1;
		}
        if(cButton>0 && cButton<6){uio_Release();}
	}
    uio_Release();
}

// *******************************************************************************
// Menu that Demonstrates Reading Animal ID
// ******************************************************************************/
void animalID_ReadLite(unsigned char Target_Tag, unsigned char Target_Reader)  
{
    unsigned char i, j, rError = 1;
    unsigned char *cDatPtr;
    unsigned char c64bIDCode[13]={0};
    unsigned char c64bIDCodetmp[13]={0};
    unsigned char *c64bIDCodePtr;
    unsigned char *choldDatPtr;
    unsigned char sBlockDat[12]={0};
    unsigned char sNational[13]={0};
    unsigned char *sBlockDatPtr;
    unsigned char tmpData, tmpData1, tmpNational[5] = {0}, newTag = 0, tmpSoundState;
    unsigned long int iCountry = 0;
    unsigned int CRCval=0;

    upDate = 0;
	tmpSoundState = eeprom_read_byte(&soundState);
//    soundState = 0;
	eeprom_write_byte(&soundState,0);
	
	lcd_clear_area(SCRN_LEFT+1,SCRN_TOP+1,SCRN_RIGHT-1,SCRN_BOTTOM-1);
	lcd_put_Atmel_Logo(35, 2);					// Draw Atmel Logo        
	lcd_put_fString(93,17,PSTR("RFID"));                                  // Add text
	lcd_put_fString(9,27,PSTR("Everywhere You Are"));                     // Add corporate phrase
 	lcd_horz_line(SCRN_LEFT, SCRN_RIGHT, 36); 			// First Row Separator
 	lcd_put_fString(lcd_fcenter(PSTR("Animal ID")), 41, PSTR("Animal ID")); 		// Animal ID heading
	lcd_update(SCRN_TOP,SCRN_BOTTOM);
 			
	uio_Release();			// Delay until next I/O interval passes (debounce)
	while(cButton != IO_F1 && cButton != IO_F2 && cButton != IO_F3 && cButton != IO_F4)
    {                                             
 		for(i=0; i<13; i++){c64bIDCode[i] = 0;}
 		for(i=0; i<5; i++){tmpNational[i] = 0;}
 		iCountry = 0;
		ioActive = 0;
        if(Target_Reader == 70)
        {
			
        	Timer_delay_us(20);
            rError = U2270_ReadData(Target_Tag,&cDatPtr,BIPHASE,ANIMALSYNC,128);
			choldDatPtr = cDatPtr;
    		
    		cDatPtr++;
        	if(rError == 0)
        	{      
        		c64bIDCodePtr = &c64bIDCodetmp[0];
        		i = 3;
        		for(j = 0; j<13; j++)
        		{
	        		tmpData = (*cDatPtr++) << i; 
	        		tmpData = tmpData | (*cDatPtr >> (8-i));
	        		
	        		*c64bIDCodePtr++ =  tmpData; 
	        		if(i++ == 8)
	        		{
	        			cDatPtr++;
	        			i=1;
	        		}
        		}
        		for(j=0; j<13; j++)
        		{
	        		tmpData = c64bIDCodetmp[12-j];
	        		tmpData1 = 0;
	        		for(i=0; i<8; i++)
	        		{
	        			if(tmpData & 0x01)
	        			{
	        				tmpData1 = tmpData1<<1;
	        				tmpData1 = tmpData1|0x01;
	        			}
	        			else{tmpData1 = tmpData1<<1;}
	        			tmpData = tmpData >> 1;
	        		}
	        		c64bIDCode[j] = tmpData1; 
	        	}
       			
				for(i=0; i<12; i++){sBlockDat[i] = 0;}
   				sBlockDatPtr = &sBlockDat[0];
		        tmpData = c64bIDCode[7]>>6;
		        iCountry = (unsigned int)(tmpData)<<8;
		        conv_Char2HexStr2(sBlockDatPtr, tmpData);
		        sBlockDatPtr += 2;
		        tmpData = c64bIDCode[7]<<2;
		        tmpData = tmpData | (c64bIDCode[8]>>6);
		        iCountry = iCountry + (unsigned int)(tmpData);
		        conv_Char2HexStr2(sBlockDatPtr, tmpData);
 		  
				for(i=0; i<12; i++){sBlockDat[i] = 0;}
   				sBlockDatPtr = &sBlockDat[0];
   				tmpData = c64bIDCode[8]&0x3F;
   				tmpNational[0] = tmpData;
        		for(j=0; j<4; j++)
        		{
		        	conv_Char2HexStr2(sBlockDatPtr, tmpData);
		        	sBlockDatPtr += 2;
		        	tmpData = c64bIDCode[(unsigned char)(9+j)]; 
   					tmpNational[(unsigned int)(j)+1] = tmpData;
		        	//iNational = iNational + ((unsigned long int)(tmpData) << (24-(j*8)));
	        	}
 				//end = lcd_put_fString(2, 33, "National:");                       
 				//end = lcd_put_String(end, 33, &sBlockDat[0]);  
	        		
				for(i=0; i<12; i++){sBlockDat[i] = 0;}
   				sBlockDatPtr = &sBlockDat[0];
        		for(j=0; j<2; j++)
        		{
		        	conv_Char2HexStr2(sBlockDatPtr, c64bIDCode[(unsigned char)(3+j)]);
		        	sBlockDatPtr += 2;
	        	}
 				
				CRCval = 0x0000;
 				for(i=0; i<10; i++)
 				{
// 					CRCval = CRC_CCITT16(CRCval, c64bIDCodetmp[i], 0x1021);
 					CRCval = CRC_CCITT16_Reverse(CRCval, c64bIDCode[12-i], 0x8408);
 				}
 				  
				for(i=0; i<12; i++){sBlockDat[i] = 0;}
   				sBlockDatPtr = &sBlockDat[0];
        		for(j=0; j<3; j++)
        		{
		        	conv_Char2HexStr2(sBlockDatPtr, c64bIDCode[j]);
		        	sBlockDatPtr += 2;
	        	}
 			}
        }
        ioActive = 1;
		if((c64bIDCode[5]&0x80) == 0x80)
		{
			lcd_clear_area(SCRN_LEFT+1,50,SCRN_RIGHT-1,SCRN_BOTTOM-1);
// 			soundState = 1;
			eeprom_write_byte(&soundState,1);
 			if(newTag == 0){snd_Play(BEEPFREQ1,BEEPFREQ0,BEEPTIME);}	// return Audio feedback
// 			soundState = 0;
			eeprom_write_byte(&soundState,0);
 			 
 			for(i=0; i<12; i++){sBlockDat[i] = 0;}
       		sBlockDatPtr = &sBlockDat[0];
  			ltoa(iCountry, sBlockDatPtr,10);
 			lcd_put_String(10, 52, sBlockDatPtr);  				// Country Code

 			for(i=0; i<12; i++){sBlockDat[i] = 0;}
  			conv_HexArray2Ascii(&sNational[0], &tmpNational[4]); 
 			lcd_put_String(37, 52, &sNational[0]);  				// National Code
 			
 			if(CRCval == 0){lcd_put5x7_Char(118, 52, 30);}
			lcd_update(SCRN_TOP,SCRN_BOTTOM);
			newTag = 1;
 		}            
		else
		{
			lcd_clear_area(SCRN_LEFT+1,50,SCRN_RIGHT-1,SCRN_BOTTOM-1);
			lcd_put_fString(27, 52, PSTR("No Tag Found")); 
			lcd_update(SCRN_TOP,SCRN_BOTTOM);
			newTag = 0;
		}
		uio_Get();
	}
    uio_Release();
	eeprom_write_byte(&soundState,tmpSoundState);
}


  

⌨️ 快捷键说明

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