📄 rfid_rfidmenu.c
字号:
// $Id: rfid_RFIDMenu.c,v 1.8 2006/12/11 17:46:49 tprescott Exp $
/*************************************************************
Project : rfid_RFIDMenu.c
Date : 9/08/2006
Author : Toby Prescott
Company : Atmel
Comments: AVR Studio GCC
Revisions:
v1.0 - Started
v2.1 - 1/20/06 Changed to work with new LCD drive
v2.2 - 3/8/06 Changed to Flash Srings to save SRAM
v2.3 - 3/14/06 Fixing 5558 read/write routines
3/15/06 Adding 5530 Support
v2.4 - 4/6/06 Add new working 5558 R/W routines
5/19/06 Fixed mfg. ID error and display as dec
v2.5 - 6/20/06 Add Animal ID section with Read and Write
v2.6 - 9/19/06 Clean for WinAVR
*************************************************************/
#include "rfid_RFIDMenu.h"
// Declare your global variables here
static const char sRFIDMAIN1[] PROGMEM = "Select Reader/Tag";
static const char sRFIDMAIN2[] PROGMEM = "Reader Options";
static const char sRFIDMAIN3[] PROGMEM = "Tag Timing Options";
static const char sRFIDMAIN4[] PROGMEM = "Write Configurations";
static const char sRFIDMAIN5[] PROGMEM = "Read/Write Menu";
static const char sRFIDMAIN6[] PROGMEM = "Animal ID";
static PGM_P sRFIDMAINPtr[6] = {sRFIDMAIN1,sRFIDMAIN2,sRFIDMAIN3,sRFIDMAIN4,sRFIDMAIN5,sRFIDMAIN6};
static const char sRFIDSELECT1[] PROGMEM = "Readers";
static const char sRFIDSELECT2[] PROGMEM = "Tags";
static const char sRFIDREADER1[] PROGMEM = "U2270B";
static const char sRFIDTAG1[] PROGMEM = "x5530";
static const char sRFIDTAG2[] PROGMEM = "x5551";
static const char sRFIDTAG3[] PROGMEM = "x5552";
static const char sRFIDTAG4[] PROGMEM = "x5557";
static const char sRFIDTAG5[] PROGMEM = "x5567";
static const char sRFIDTAG6[] PROGMEM = "x5577";
static const char sRFIDTAG7[] PROGMEM = "x5570";
static const char sRFIDTAG8[] PROGMEM = "x5558";
PGM_P sRFIDTAGPtr[8] = {sRFIDTAG1,sRFIDTAG2,sRFIDTAG3,sRFIDTAG4,sRFIDTAG5,sRFIDTAG6,sRFIDTAG7,sRFIDTAG8};
static const char sRFIDCFG1[] PROGMEM = "This will attempt to";
static const char sRFIDCFG2[] PROGMEM = "program Block 0 of";
static const char sRFIDCFG3[] PROGMEM = "the selected tag.";
static const char sRFIDCFG4[] PROGMEM = "No verification is";
static const char sRFIDCFG5[] PROGMEM = "done in this step";
static const char sRFIDCFG6[] PROGMEM = "Are you sure you";
static const char sRFIDCFG7[] PROGMEM = "want to write these";
static const char sRFIDCFG8[] PROGMEM = "settings to the tag?";
static PGM_P sRFIDCFGPtr[8] = {sRFIDCFG1,sRFIDCFG2,sRFIDCFG3,sRFIDCFG4,sRFIDCFG5,sRFIDCFG6,sRFIDCFG7,sRFIDCFG8};
static unsigned char currentPos, nextPos=0, cLineItem, cPage=0;
unsigned char Target_Reader_E EEMEM = 70;
unsigned char Target_Tag_E EEMEM = 67;
unsigned char Target_Reader = 70;
unsigned char Target_Tag = 67;
//unsigned char c64bAnimalIDCode[13]={0};
// *******************************************************************************
// Menu listing the RFID Options available in this kit
// ******************************************************************************/
void rfidMenu_Display(void)
{
nextPos = 0;
cPage = 0;
upDate = 0;
Target_Reader = eeprom_read_byte(&Target_Reader_E);
Target_Tag = eeprom_read_byte(&Target_Tag_E);
U2270_InitReader();
U2270_InitTimings(Target_Tag);
uio_Release();
while(cButton != IO_F1 && cButton != IO_F2 && cButton != IO_F3 && cButton != IO_F4)
{
// Menu Display
if(currentPos != nextPos || upDate == 0)
{
currentPos = nextPos;
lcd_clear_area(SCRN_LEFT+1,SCRN_TOP+1,SCRN_RIGHT-1,SCRN_BOTTOM-1);
lcd_put_fString(4, 2, PSTR("RFID Tag="));
if(Target_Tag == 30){lcd_put_fString(84, 2, sRFIDTAGPtr[0]);}
else if(Target_Tag == 51){lcd_put_fString(84, 2, sRFIDTAGPtr[1]);}
else if(Target_Tag == 52){lcd_put_fString(84, 2, sRFIDTAGPtr[2]);}
else if(Target_Tag == 57){lcd_put_fString(84, 2, sRFIDTAGPtr[3]);}
else if(Target_Tag == 67){lcd_put_fString(84, 2, sRFIDTAGPtr[4]);}
else if(Target_Tag == 77){lcd_put_fString(84, 2, sRFIDTAGPtr[5]);}
else if(Target_Tag == 70){lcd_put_fString(84, 2, sRFIDTAGPtr[6]);}
else if(Target_Tag == 58){lcd_put_fString(84, 2, sRFIDTAGPtr[7]);}
lcd_invert_area(3,1,27,10);
lcd_box(SCRN_LEFT,SCRN_TOP,SCRN_RIGHT,10);
for(cLineItem = 0; cLineItem < 6; cLineItem++)
{
if((13+(cLineItem*9)-(cPage*9)) >= 13 && (13+(cLineItem*9)-(cPage*9)) <= SCRN_BOTTOM-8)
{
lcd_put_fString(4, (13+(cLineItem*9)-(cPage*9)), sRFIDMAINPtr[cLineItem]);
}
}
lcd_invert_area(3, (12+((currentPos)*9)-(cPage*9)), end_fString_Pos(4, sRFIDMAINPtr[currentPos]), (20+((currentPos)*9)-(cPage*9)));
// Insert more display code here
lcd_update(SCRN_TOP,SCRN_BOTTOM);
upDate = 1;
}
// end display
uio_Get();
switch(currentPos){
case 0:
if(cButton == IO_RIGHT || cButton == IO_ENTER)
{
rfidMenu_Select();
nextPos = 0;
upDate = 0;
}
else if(cButton == IO_UP){;}
else if(cButton == IO_DOWN){nextPos = 1;}
break;
case 1:
if(cButton == IO_RIGHT || cButton == IO_ENTER)
{
if(Target_Reader == 70){rfidMenu_U2270Config();}
upDate = 0;
nextPos = 1;
}
else if(cButton == IO_UP)
{
cPage = 0;
nextPos = 0;
}
else if(cButton == IO_DOWN){nextPos = 2;}
break;
case 2:
if(cButton == IO_RIGHT || cButton == IO_ENTER)
{
if(Target_Tag != 52){rfidTimingMenu_Configure(Target_Tag,Target_Reader);}
nextPos = 2;
upDate = 0;
}
else if(cButton == IO_UP){nextPos = 1;}
else if(cButton == IO_DOWN){nextPos = 3;}
break;
case 3:
if(cButton == IO_RIGHT || cButton == IO_ENTER)
{
if(Target_Tag != 30 && Target_Tag != 52){rfidMenu_WriteConfiguration();}
nextPos = 3;
upDate = 0;
}
else if(cButton == IO_UP){nextPos = 2;}
else if(cButton == IO_DOWN){nextPos = 4;}
break;
case 4:
if(cButton == IO_RIGHT || cButton == IO_ENTER)
{
if(Target_Tag != 58 && Target_Tag != 52){rfidMenu_ReadWriteMenu();}
else if(Target_Tag == 58)
{
rfid_ReadMenu_5558Anticollision(Target_Tag,Target_Reader);
//if(TagCount != 0){rfidMenu_ReadWriteMenu();}
}
nextPos = 4;
upDate = 0;
}
else if(cButton == IO_UP){nextPos = 3;}
else if(cButton == IO_DOWN)
{
cPage = 1;
nextPos = 5;
}
break;
case 5:
if(cButton == IO_RIGHT || cButton == IO_ENTER)
{
animalID_Display(Target_Tag, Target_Reader);
nextPos = 5;
upDate = 0;
}
else if(cButton == IO_UP){nextPos = 4;}
else if(cButton == IO_DOWN){;}
break;
default:
break;
}
if(cButton>0 && cButton<6){uio_Release();}
}
uio_Release();
}
// *******************************************************************************
// Menu to select the Reader and Transponder combination to be used
// ******************************************************************************/
void rfidMenu_Select(void)
{
unsigned char cRPage = 0, cTPage = 0;
unsigned char itemCheck=0;
nextPos = 0;
cPage = 0;
upDate = 0;
//**** Check which tag is currently selected and place checkmark flag ****//
if(Target_Tag == 30){itemCheck = x5530;}
else if(Target_Tag == 51){itemCheck = x5551;}
else if(Target_Tag == 52){itemCheck = x5552;}
else if(Target_Tag == 57){itemCheck = x5557;}
else if(Target_Tag == 67){itemCheck = x5567;}
else if(Target_Tag == 77){itemCheck = x5577;}
else if(Target_Tag == 70){itemCheck = x5570;}
else if(Target_Tag == 58){itemCheck = x5558;}
uio_Release();
while(cButton != IO_F1 && cButton != IO_F2 && cButton != IO_F3 && cButton != IO_F4)
{
// Menu Display
if(currentPos != nextPos || upDate == 0)
{
currentPos = nextPos;
lcd_clear_area(SCRN_LEFT+1,SCRN_TOP+1,SCRN_RIGHT-1,SCRN_BOTTOM-1);
lcd_put_fString(lcd_fcenter(sRFIDMAINPtr[0]), 2, sRFIDMAINPtr[0]);
lcd_box(SCRN_LEFT,10,SCRN_RIGHT,21);
lcd_vert_line(10,SCRN_BOTTOM,63);
lcd_put_fString(lcd_fcenter(&sRFIDSELECT1[0])-31, 13, &sRFIDSELECT1[0]);
lcd_put_fString(lcd_fcenter(&sRFIDSELECT2[0])+31, 13, &sRFIDSELECT2[0]);
for(cLineItem = 0; cLineItem < 1; cLineItem++)
{
if((24+(cLineItem*9)-(cRPage*9)) >= 22 && (24+(cLineItem*9)-(cRPage*9)) <= SCRN_BOTTOM-7)
{
lcd_put_fString(lcd_fcenter(&sRFIDREADER1[cLineItem])-31, (24+(cLineItem*9)-(cRPage*9)), &sRFIDREADER1[cLineItem]);
}
}
for(cLineItem = 0; cLineItem < 8; cLineItem++)
{
if((24+(cLineItem*9)-(cTPage*9)) >= 22 && (24+(cLineItem*9)-(cTPage*9)) <= SCRN_BOTTOM-7)
{
lcd_put_fString(lcd_fcenter(sRFIDTAGPtr[cLineItem])+35, (24+(cLineItem*9)-(cTPage*9)), sRFIDTAGPtr[cLineItem]);
if(cLineItem == itemCheck){lcd_put5x7_Char(67, (23+(cLineItem*9)-(cTPage*9)), 30);}
}
}
lcd_invert_area(lcd_fcenter(sRFIDTAGPtr[currentPos])+34, (23+((currentPos)*9)-(cTPage*9)), end_fString_Pos(lcd_fcenter(sRFIDTAGPtr[currentPos])+35, sRFIDTAGPtr[currentPos]), (31+((currentPos)*9)-(cTPage*9)));
// Insert more display code here
if(Target_Reader == 70){lcd_put5x7_Char(4, 23, 30);}
lcd_update(SCRN_TOP,SCRN_BOTTOM);
upDate = 1;
}
// end display
uio_Get();
switch(currentPos){
case U2270:
if(cButton == IO_ENTER){Target_Reader = 70;}
else if(cButton == IO_UP){;}
else if(cButton == IO_DOWN){;}
else if(cButton == IO_LEFT){;}
else if(cButton == IO_RIGHT){;}
break;
case x5530:
if(cButton == IO_ENTER)
{
Target_Tag = 30;
itemCheck = x5530;
upDate = 0;
}
else if(cButton == IO_UP){;}
else if(cButton == IO_DOWN){nextPos = x5551;}
else if(cButton == IO_LEFT){;}
else if(cButton == IO_RIGHT){;}
break;
case x5551:
if(cButton == IO_ENTER)
{
Target_Tag = 51;
itemCheck = x5551;
upDate = 0;
}
else if(cButton == IO_UP)
{
nextPos = x5530;
cTPage = 0;
}
else if(cButton == IO_DOWN){nextPos = x5552;}
else if(cButton == IO_LEFT){;}
else if(cButton == IO_RIGHT){;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -