www.pudn.com > cardreader.rar > 1.c


#define	test_card_file	"C:\\TEMP\\TESTCARD.DAT" 
 
/* Function: reader_main - entrance for READER task */ 
void reader_main(UNSIGNED argc, VOID *argv) 
{ 
	int len; 
	_UC tempstr[259]; 
	char Tcode = 0; 
	int	breakflag = 0; 
	int breakflag0 =0; 
	int breakflag1 =0; 
	int i; 
	int	fd; 
	char * testcontent; 
	MyTIME	curtime; 
	if(NU_Become_File_User() < 0) 
	{ 
		return; 
	}	 
	 while((breakflag0 + breakflag1 < 2)) 
	{ 
		tempstr[0] = 0x11; 
		tempstr[1] = 0xee; 
		tempstr[2] = 0x00; 
		 len =  readerWrite(Tcode, tempstr, 3 ); 
		 if(len<0) 
		 { 
//	       	len =  readerWrite(Tcode, tempstr, 3 ); 
//		 	if(len<0) 
		 		breakflag0++; 
				continue; 
		 } 
		 else 
		 	breakflag0 =0; 
		if(breakflag0>=2) 
			break; 
		 
		 NU_Sleep(200); 
		 memset(tempstr, 0, 259); 
			  
		len = readerRead(0,tempstr); 
		 if(len<=0) 
		 { 
//		  len =  readerWrite(Tcode, tempstr, 3 ); 
//		 	if(len=<0) 
		 		breakflag1++; 
		 } 
		 else if((tempstr[0]==0x00  && tempstr[1]==0xff  && tempstr[2]==0x01) || (tempstr[0]==0x01  && tempstr[1]==0xfe  && tempstr[2]==0x01)) 
		 	breakflag1 =0; 
		else 
		 	breakflag1 ++; 
		if(breakflag1>=2) 
			break; 
			 
	} 
	 
 	breakflag =0;	 
	if((fd = NU_Open(test_card_file, PO_RDWR|PO_NOSHAREANY |PO_BINARY|PO_CREAT, PS_IWRITE))<0) 
	{ 
		return; 
	} 
 
	NU_Seek(fd, 0, PSEEK_END); 
	testcontent = NU_malloc(50); 
	memset(testcontent, 0, 50); 
	if(breakflag0 >= 1) 
	{ 
		memcpy(testcontent, "flag = breakflag0", 17);   
	} 
	else 
	{ 
		memcpy(testcontent, "flag = breakflag1", 17); 
	}	 
	NU_Write(fd, testcontent, 17); 
	GetCurrentTime(&curtime); 
	sprintf(testcontent, "----Time: %d-%d-%d %d:%d:%d----",curtime.Year,curtime.Month,curtime.Day,curtime.Hour,curtime.Minute,curtime.Second); 
	NU_Write(fd, testcontent, strlen(testcontent)); 
	NU_Close(fd); 
	i =0; 
	while(!breakflag) 
	{			 
		for(i =0;i<3;i++) 
		{ 
			tempstr[0] = 0x11; 
			tempstr[1] = 0xee; 
			tempstr[2] = 0x00; 
 
			 len =  readerWrite(Tcode, (_UC *)tempstr, 3 ); 
			 if(len<0) 
			 { 
//		       	len =  readerWrite(Tcode, tempstr, 3 ); 
//			 	if(len<0) 
			 		breakflag =0; 
			 } 
			 NU_Sleep(200); 
			memset(tempstr, 0, 259); 
			len = readerRead(0,(_UC *)tempstr); 
			 if(len<=0) 
			 { 
//			      	len =  readerWrite(Tcode, tempstr, 3 ); 
//			 	if(len<0) 
			 		breakflag =0; 
			 } 
			 else if((tempstr[0]==0x00  && tempstr[1]==0xff  && tempstr[2]==0x01) || (tempstr[0]==0x01  && tempstr[1]==0xfe  && tempstr[2]==0x01)) 
			 	breakflag =0; 
			else 
			 	breakflag =0; 
				 
		} 
	}	 
}