📄 typb_test_mini.c
字号:
/*TypeB Test program
Wang Yue 2005-8-7
*/
#include <api.h>
#include <contactless.h>
#include <ExEH0218.h>
#include "common.h"
short dis_atqb(typ_ATQB *atqb);
short typeb_test_std(void);
short typeb_test_mot(void);
short typeb_test_ask(void);
short typeb_test_mini(void)
{
short ret;
BROWINFO INFO_main;
char menu_info[50];
if(Get_Language()==LANG_CHN)
{
strcpy(menu_info,"1.标准模式 2.MOTOTOLA模式 3.ASK模式 ");
}
else
{
strcpy(menu_info,"1.Standard Mode 2.MOTOTOLA Mode 3.ASK Mode ");
}
INFO_main.lPtr = 0;
INFO_main.cPtr = 0;
while(1)
{
clr_scr();
INFO_main.iStr = menu_info;
INFO_main.mInt = 3;
INFO_main.lineMax = 16;
INFO_main.sFont = 0;
INFO_main.numEnable = 0;
INFO_main.qEvent = EXIT_KEY_F1|EXIT_KEY_POWER|EXIT_AUTO_QUIT;
INFO_main.autoexit = 0;
ret = brow_select(&INFO_main);
switch( ret )
{
case 0:
typeb_test_std();
break;
case 1:
typeb_test_mot();
break;
case 2:
typeb_test_ask();
break;
default:
return -1;
break;
}
}
return 0;
}
short typeb_test_mot(void)
{
unsigned char tmpbuf[30];
unsigned char rdata[40];
unsigned short rlen;
unsigned char databuf[80];
char ret;
typ_ATQB ATQB;
unsigned char trycnt;
unsigned char read_ok = 0;
unsigned char hintstr1[20];
unsigned char hintstr2[20];
unsigned char hintstr3[20];
unsigned char errstr[30];
if(Get_Language()==LANG_CHN)
{
strcpy(errstr,"接口打开错误");
strcpy(hintstr1,"请在%d秒内刷卡");
strcpy(hintstr2,"未读到合法卡!");
strcpy(hintstr3,"读取ATQB成功");
}
else
{
strcpy(errstr,"Interface Error!");
strcpy(hintstr1,"put card:%d sec");
strcpy(hintstr2,"no legal card");
strcpy(hintstr3,"Read ATQB OK!");
}
clr_scr();
if(ret = RCX_Init(CARD_TYPE_14443B_MOT))
{
DispStr_CE(0,3,errstr,DISP_POSITION|DISP_CLRSCR);
dump_memory(&ret,1,5);
delay_and_wait_key(0,EXIT_KEY_ALL,0);
return -1;
}
SPT_set(1);
for ( trycnt=11; trycnt>0; )
{
if(!SPT_read())
{
sprintf(tmpbuf,hintstr1,--trycnt);
DispStr_CE(0,0,tmpbuf,DISP_POSITION|DISP_CLRLINE);
SPT_set(64);
}
CardTypeBExchangeBlock("\xA0\x00\x00",3,rdata, &rlen, 10000);
delay_ms(10);
ret = CardTypeBExchangeBlock("\xA1",1,rdata, &rlen, 10000);
if(ret==RCX_OK)
{
read_ok = 1;
break;
}
RCX_RF_Reset(10);
}
if ( !read_ok )
{
DispStr_CE(0,3,hintstr2,DISP_POSITION|DISP_CLRSCR);
delay_and_wait_key( 0, EXIT_KEY_ALL, 0 );
return 1;
}
else
{
clr_scr();
if(rlen>8)
{
dump_memory(rdata,8,1);
dump_memory(rdata+8,(rlen-8)%10,2);
}
else
{
dump_memory(rdata,rlen,1);
}
DispStr_CE(0,6,hintstr3,DISP_POSITION);
}
//RCX_Close();
delay_and_wait_key(0,EXIT_KEY_ALL,0);
return 0;
}
short typeb_test_std(void)
{
unsigned char tmpbuf[30];
unsigned char rdata[40];
unsigned short rlen;
unsigned char databuf[80];
char ret;
typ_ATQB ATQB;
unsigned char trycnt;
unsigned char read_ok = 0;
unsigned char hintstr1[20];
unsigned char hintstr2[20];
unsigned char hintstr3[20];
unsigned char errstr[30];
if(Get_Language()==LANG_CHN)
{
strcpy(errstr,"接口打开错误");
strcpy(hintstr1,"请在%d秒内刷卡");
strcpy(hintstr2,"未读到合法卡!");
strcpy(hintstr3,"读取ATQB成功");
}
else
{
strcpy(errstr,"Interface Error!");
strcpy(hintstr1,"put card:%d sec");
strcpy(hintstr2,"no legal card");
strcpy(hintstr3,"Read ATQB OK!");
}
clr_scr();
if(ret = RCX_Init(CARD_TYPE_14443B_STD))
{
DispStr_CE(0,3,errstr,DISP_POSITION|DISP_CLRSCR);
dump_memory(&ret,1,5);
delay_and_wait_key(0,EXIT_KEY_ALL,0);
return -1;
}
SPT_set(1);
for ( trycnt=11; trycnt>0; )
{
if(!SPT_read())
{
sprintf(tmpbuf,hintstr1,--trycnt);
DispStr_CE(0,0,tmpbuf,DISP_POSITION|DISP_CLRLINE);
SPT_set(64);
}
ret = CardTypeBRequest(PICC_WUPB,0,1,&ATQB);
if ( ret==RCX_OK )
{
read_ok = 1;
break;
}
}
if ( !read_ok )
{
DispStr_CE(0,3,hintstr2,DISP_POSITION|DISP_CLRSCR);
delay_and_wait_key( 0, EXIT_KEY_ALL, 0 );
return 1;
}
else
{
clr_scr();
dis_atqb(&ATQB);
DispStr_CE(0,6,hintstr3,DISP_POSITION);
}
//RCX_Close();
delay_and_wait_key(0,EXIT_KEY_ALL,0);
return 0;
}
short typeb_test_ask(void)
{
unsigned char tmpbuf[30];
unsigned char rdata[40];
unsigned short rlen;
unsigned char databuf[80];
char ret;
typ_ATQB ATQB;
unsigned char trycnt;
unsigned char read_ok = 0;
unsigned char hintstr1[20];
unsigned char hintstr2[20];
unsigned char hintstr3[20];
unsigned char errstr[30];
if(Get_Language()==LANG_CHN)
{
strcpy(errstr,"接口打开错误");
strcpy(hintstr1,"请在%d秒内刷卡");
strcpy(hintstr2,"未读到合法卡!");
strcpy(hintstr3,"读取ATQB成功");
}
else
{
strcpy(errstr,"Interface Error!");
strcpy(hintstr1,"put card:%d sec");
strcpy(hintstr2,"no legal card");
strcpy(hintstr3,"Read ATQB OK!");
}
clr_scr();
if(ret = RCX_Init(CARD_TYPE_14443B_ASK))
{
DispStr_CE(0,3,errstr,DISP_POSITION|DISP_CLRSCR);
dump_memory(&ret,1,5);
delay_and_wait_key(0,EXIT_KEY_ALL,0);
return -1;
}
SPT_set(1);
for ( trycnt=11; trycnt>0; )
{
if(!SPT_read())
{
sprintf(tmpbuf,hintstr1,--trycnt);
DispStr_CE(0,0,tmpbuf,DISP_POSITION|DISP_CLRLINE);
SPT_set(64);
}
ret = CardTypeBExchangeBlock("\x10",1,rdata, &rlen, 1000);
if(ret==RCX_OK)
{
read_ok = 1;
break;
}
}
if ( !read_ok )
{
DispStr_CE(0,3,hintstr2,DISP_POSITION|DISP_CLRSCR);
delay_and_wait_key( 0, EXIT_KEY_ALL, 0 );
return 1;
}
else
{
clr_scr();
if(rlen>8)
{
dump_memory(rdata,8,1);
dump_memory(rdata+8,rlen-8,2);
}
else
{
dump_memory(rdata,rlen,1);
}
DispStr_CE(0,6,hintstr3,DISP_POSITION);
}
//RCX_Close();
delay_and_wait_key(0,EXIT_KEY_ALL,0);
return 0;
}
short dis_atqb(typ_ATQB *atqb)
{
unsigned char tmpbuf[30];
dump_memory(atqb->PUPI,4,0);
sprintf(tmpbuf,"AFI:%02X,NOA:%02X",atqb->AFI,atqb->NOA);
DispStr_CE(0,1,tmpbuf,DISP_POSITION|DISP_5x7);
sprintf(tmpbuf,"BitRate:%02X,MaxSize:%02X",atqb->Bit_Rate_capability,atqb->Max_Frame_Size);
DispStr_CE(0,2,tmpbuf,DISP_POSITION|DISP_5x7);
sprintf(tmpbuf,"Protocol:%02x,FWI:%02x",atqb->Protocol_Type,atqb->FWI);
DispStr_CE(0,3,tmpbuf,DISP_POSITION|DISP_5x7);
sprintf(tmpbuf,"ADC:%02X, FO:%02X",atqb->ADC,atqb->FO);
DispStr_CE(0,4,tmpbuf,DISP_POSITION|DISP_5x7);
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -