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

📄 typb_test_mini.c

📁 pos机contactless源码
💻 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 + -