📄 rfid_demo.c
字号:
/********** LPC2368 PROGRAM FOR SAMPLE *************/
/********** RFID DEMO PURPOSE *************/
/********** VERSION 1.00V *************/
/********** DEVELOPED BY RAVINDRANATH *************/
/********** DATED : 08/02/08 *************/
//******************************************************************************/
#include "LPC23xx.h" /* LPC23xx/24xx definitions */
#include "type.h"
//#include "irq.h"
#include "uart.h"
#include "spi.h"
#include <stdio.h>
#include "display.h"
#include "printer.h"
#include "timer.h"
#include "KeyBoard.h"
#include "rtc.h"
#include "dac.h"
#include "mifare.h"
/*****************************************************************************
Main Function main()
*****************************************************************************/
void mainmenu(void);
void tsrdelay(void);
void rdrfid_card_det(void);
int call_req(void);
int init_reading_card(void);
int read_pass_card(unsigned char,unsigned int);
int wrt_crd(unsigned char ,char *);
void write_card_rfid(float );
void rdrfid_card_det(void);
void calculate(void);
void write_renew(void);
void show(void);
int input(unsigned char* ,unsigned int );
struct rfid_details
{
unsigned char card_id[10];
unsigned char vh_type[10];
unsigned char vh_id[10];
unsigned char vh_type_id[2];
float amount;
};
struct rfid_details rfid;
unsigned int i,j,x;
unsigned long l;
unsigned char addr1,cnt1,cnt3,intrpt_flag,key_temp,key_temp1;
unsigned char ptmp[20],memptr[30],rd_data1[20],main_buff[30],phone[11];
unsigned char default_keyA[]={0xFF,0xFF,0xFF,0xFF,0xFF,0xFF};
unsigned char mode_keyA = 0x00;
unsigned char mode_keyB = 0x04;
int main(void)
{
unsigned char temp_pass;
DWORD i = 0;
//BYTE ch;
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Disp_initial();
//Init_RTC();
init_IrDA();
//serial_open(0,9600);
//serial_open(2,19200);
//serial_open(1,9600);
serial_open(3,9600);
prt_dw_flag = 0;
prt_dh_flag = 0;
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
clrscr();
printf("SPOT BILLING MACHINE");
gotoxy(2,1);
printf(" RFID DEMO SOFTWARE ");
gotoxy(3,1);
printf("Dev By:- ANALOGICS-");
gotoxy(4,1);
printf(" TECH INDIA LIMITED ");
gotoxy(5,1);
//printf(" NACHARAM ");
while(1)IrDA_send('R');
//while(1){serial_send_string(0,"analogics");}
//while(1){serial_send(2,0x42);serial_send_string(2,"R");}
//for(i=0;i<4000000;i++);
for(i=0;i<4000000;i++);
for(i=0;i<4000000;i++);
mif_seq_no = 0x00;
for(i=0;i<16;i++)
{
{
temp_pass = mif_load_key(mode_keyA, i, default_keyA);// cust_keyA);//
if(!(temp_pass))
{
clrscr();
printf("FAILED AT(DA)");
get_key();
}
temp_pass = mif_load_key(mode_keyB, i, default_keyA);// cust_keyB);//
if(!(temp_pass))
{
clrscr();
printf("FAILED AT(DB)");
get_key();
}
}
}
while(1)
mainmenu();
}
void mainmenu(void)
{
unsigned char key;
clrscr();
for(x=0;x<200;x++)
tsrdelay();
for(x=0;x<200;x++)
tsrdelay();
for(x=0;x<=30;memptr[x++]=' ');
key = 0;
gotoxy(1,1);
printf("F1 - WRITING TO CARD");
gotoxy(2,1);
printf("F2 - READ FROM CARD");
key = get_key();
switch(key)
{
case 1 : write_renew();
break;
case 2 : show();
break;
default: break;
}
}
void tsrdelay(void)
{
int tsi;
for(tsi=0;tsi<300;tsi++);
}
int call_req(void)
{
unsigned int val_int1;//,cnt; //,v1;
//cnt=0;
key_temp1 = 0;
while(1)
{
val_int1=0;
// printf("out request");
if(mif_request() == 1)
{
// printf("request ok");
if(mif_anti_col() == 1)
{
// printf("anti colli ok");
val_int1=1;
break;
}
}
if(val_int1==0)
{
gotoxy(4,1);
printf(" ");
gotoxy(4,1);
// for(i4=0;i4<2000;i4++);
//cnt++;
}
//key_temp1 = kbhit();
if(key_temp1 != 0)
break;
// if(cnt==30000)
// break;
} //while1
if(val_int1==1)
return 1;
else
return 2;
//if(cnt==30000)
// return 0;
}
void show(void)
{
unsigned char rf1;
rf1 = 0;
clrscr();
printf("PLACE THE CARD NOW");
rf1 = init_reading_card();
if(rf1 == 1)
{
clrscr();
set_cursor(ROW1);
printf("THE VALUE WRITTEN IS");
gotoxy(2,1);
for(i=0;i<20;i++)
printf("%c",memptr[i]);
//printf("%.20s",memptr);
get_key();
}
return;
}
int init_reading_card(void)
{
unsigned int x,val2,halt_flag; //,addr1;
for(x=0;x<50;x++)
tsrdelay();
for(x=0;x<=200;memptr[x++]=' ');
addr1=0x04;//location for default card id
cnt1=1;
cnt3=0;
x=0;
val2=0;
while(1)
{
if(val2==0)
val2=call_req();
if(val2==1)
val2=read_pass_card(addr1,((cnt1-1)*16));
if(val2==1)
{
//addr1++;
cnt1++;
}
else if(val2==0)
{
cnt3++;
val2=0; //by force
}
else if(val2==2)
break;
if(cnt1==2)
break;
if(cnt3==30000)
break;
}
halt_flag=0;
while(1)
{
halt_flag=mif_halt();
if(halt_flag == 1)
break;
}
if(val2==1)
{
clrscr();
printf(" ACCEPTED CARD ... ");
}
if (val2==1)
return 1;
if (val2==2)
return 2;
else
return 0;
}
int read_pass_card(unsigned char addr2,unsigned int rf_j)
{
unsigned char rf_i,che;//,abc;
//che = authenticate(addr2);
//set_cursor(ROW4);
//printf(" ");
che = mif_read_card(rd_data1,addr2);
if (che==1)
{
clrscr();
printf("READING CARD DATA ..");
//strcpy(rd_data1,readrf(addr2));
for(rf_i=0;rf_i<16;rf_i++)
{
memptr[rf_j]=rd_data1[rf_i];
rf_j++;
}
return 1;
}
else
return 0;
}
/*
int wrt_crd(unsigned char addr,char *buff)
{
if(authenticate(addr)==1)
{
if(writerf(addr,buff)==1) //place
{
clrscr();
printf("WRITING DATA TO CARD",20);
strcpy(rd_data1,readrf(addr));
return 1;
}
}
return 0;
}
*/
void write_renew(void)
{
unsigned char rs2;
for(rs2=0;rs2<16;rs2++)
main_buff[rs2] = ' ';
clrscr();
printf("ENTER VALUE TO WRITE");
i = input(main_buff,16);
if(i==0)
return;
// (main_buff,16);
write_card_rfid(0);
}
void write_card_rfid(float amt)
{
unsigned int p_i,p_j;
unsigned char val,haltflag;
for(p_j=0;p_j<20;ptmp[p_j++]=' ');
p_j=0;
cnt1=1;
amt = 0;
for(p_i=0;p_i<16;p_i++)
{
ptmp[p_i] = main_buff[p_i];
}
clrscr();
gotoxy(2,1);
printf("PRESS ANY KEY ....");
get_key();
gotoxy(3,1);
printf("PLACE THE CARD...");
addr1=0x04;
val=0;
cnt3=0;
while(1) //size 15-->place
{
if(val==0)
val=call_req();
if(val==1)
val=mif_write_card(ptmp,addr1);
if(val==1)
{
cnt1++;
}
else
{
clrscr();
printf("NO CARD DETECTED");
val=0;
cnt3++;
// get_key();
}
if(cnt1==2)
break;
if (cnt3==30000)
break;
}
haltflag=0;
while(1)
{
haltflag=mif_halt();
if(haltflag ==1)
break;
}
clrscr();
printf("WRITING TO CARD.... ");
gotoxy(2,1);
printf("COMPLETED SUCCESSFUL");
// init_reading_card();
}
int input(unsigned char* ch,unsigned int n)
{
unsigned char keyf;
// shift_flag=1;
for(i=0;i<n;i++)
ch[i] = ' ';
j = 0;
keyf = 0;
keyf = _getkey();
while((keyf != ENTER) && (j<n))
{
if ((keyf >= '0') && (keyf <= '9'))
{
ch[j] = keyf + 0x30;
j++;
}
else
if ((keyf != SHIFT) && (keyf != BKSP))
{
ch[j] = keyf;
j++;
}
if (keyf == BKSP)
{
//Disp_cur_rev();
//printf(" ");
//Disp_cur_rev();
j--;
}
if(keyf == ESC)
break;
keyf = _getkey();
}
if(keyf == ESC)
return 0;
if ((keyf >= '0') && (keyf <= '9'))
{
ch[j] = keyf + 0x30;
j++;
}
if ((keyf == ENTER) && (j == 0))
{
// set_cursor(ROW3);
// printf(" INVALID ENTRY ");
// gotoxy(3,20);
// for(i=0;i<30000;i++);
// for(i=0;i<30000;i++);
// for(i=0;i<30000;i++);
return j;
}
//ch[j] = '\0';
return j;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -