📄 rfid_animalidmenu.c
字号:
{
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 + -