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

📄 scanner.c

📁 dsp tmslf2407a 汇编,c的原代码,包括i2c,scitimer,fir等的很多程序.
💻 C
📖 第 1 页 / 共 4 页
字号:
	      		serialPortOutput1byte(Second);	//send out time	      			
	      		if(ec == 0x0d0a)
	      		{
	      			serialPortOutput1byte(ec>>8);
	      			serialPortOutput1byte(ec&0xff);
	      		}
	      		else 	serialPortOutput1byte(ec&0xff);//sendout ec						
		}
		for(i=0;i<8;i++)lastUid[i] = currUid[i];//copy current uid as last uid		      		
      	} 
      	else if( num_card >= 2)  //exist card
		{                   	
	        flags = ISOFlagsSys&0xfb;	// not inventory
	        flags |= 0x20;	// address_flag	,no security
	        if((ISOModeSys & 0x04) == 0x04) { flags |= 0x40; }// option_flag,TI卡为1才能操作
	        for(i=0;i<num_card;i++)	// read multiple blocks
	        {
	        	viccdata[0] = 15;     //len
	      		viccdata[1] = flags;     //flags
	      		viccdata[2] = 0x23;	//cmd
	      		for(j=0;j<8;j++)	// copy uid
	      		{
	      			viccdata[3+j] = labeldata[i*10+10-j];
	      		}
	      		viccdata[11] = db_adr;	//start addr
	      		viccdata[12] = (db_n+1);		// length
	      		wr_crc_send(); 

      			ISOMode = ISOModeSys&0xe7;	//read ,all      		
      			m = sendISOCmd(ISOMode);
				CS_RAM_1;
      			getBufferTime();
      			for(j=0;j<8;j++)
      			{      				
      				serialPortOutput1byte(labeldata[i*10+3+j]);
      			}
      			if(sc == 0x0d0a)
      			{
      				serialPortOutput1byte(sc>>8);
      				serialPortOutput1byte(sc&0xff);
      			}
      			else 	serialPortOutput1byte(sc&0xff);//send out sc
      			if((ISOModeSys & 0x04) == 0x04)	//含有块状态信息
      			{
      				for(k=0;k<(db_n+1)*5;k++)	//send out block data
      					serialPortOutput1byte(viccdata[2+k]); 
      			}
      			else	//不含有块状态信息
      			{
      				for(k=0;k<(db_n+1)*4;k++)	//send out block data
      					serialPortOutput1byte(viccdata[2+k]);
      			}
      			if(sc == 0x0d0a)
      			{
      				serialPortOutput1byte(sc>>8);
      				serialPortOutput1byte(sc&0xff);
      			}
      			else 	serialPortOutput1byte(sc&0xff);//send out sc	
      			serialPortOutput1byte(Day);
      			serialPortOutput1byte(Hour);
      			serialPortOutput1byte(Minute);
      			serialPortOutput1byte(Second);	//send out time	      			
      			if(ec == 0x0d0a)
      			{
      				serialPortOutput1byte(ec>>8);
      				serialPortOutput1byte(ec&0xff);
      			}
      			else 	serialPortOutput1byte(ec&0xff);//sendout ec
      		}      		
      	}
      	else
      	{;}	//error	
}
static void snrDbComPrefix(void)
{
		uchar i,j,m,k;   
		uchar flags = 0;
		uchar num_card;	

		myInvOut();       	
      	num_card = labeldata[0];		     		
      	if(num_card != 0)bReadTag = 1;
		if( num_card == 1)
      	{
      		for(i=0;i<8;i++)currUid[i] = labeldata[3+i];//copy uid to current UID 
      		
	      	if(compareUid()==0 )	// same uid
	      	{
		      	if(trigger == 0)// single read
		      	{
		      		flags = ISOFlagsSys&0xfb;	// not inventory
	        		flags |= 0x20;	// address_flag	,no security
	        		if((ISOModeSys & 0x04) == 0x04) { flags |= 0x40; }// option_flag,TI卡为1才能操作
	        		viccdata[0] = 15;     //len
	      			viccdata[1] = flags;     //flags
	      			viccdata[2] = 0x23;	//cmd
	      			for(j=0;j<8;j++)viccdata[3+j] = labeldata[10-j];	// copy uid
	      		
		      		viccdata[11] = db_adr;	//start addr
		      		viccdata[12] = (db_n+1);		// length
		      		wr_crc_send();	                                                   

	      			ISOMode = ISOModeSys&0xe7;	//read ,all		      		
	      			m = sendISOCmd(ISOMode);
      				CS_RAM_1;
	      			serialPortOutput1byte(deviceAddr);	//send out addr	      			
	      			for(j=0;j<8;j++)serialPortOutput1byte(labeldata[3+j]);
	      			if(sc == 0x0d0a)
	      			{
	      				serialPortOutput1byte(sc>>8);
	      				serialPortOutput1byte(sc&0xff);
	      			}
	      			else 	serialPortOutput1byte(sc&0xff);//send out sc
	      			if((ISOModeSys & 0x04) == 0x04)	//含有块状态信息
      				{
      					for(k=0;k<(db_n+1)*5;k++)	//send out block data
      						serialPortOutput1byte(viccdata[2+k]); 
      				}
      				else	//不含有块状态信息
      				{
      					for(k=0;k<(db_n+1)*4;k++)	//send out block data
      						serialPortOutput1byte(viccdata[2+k]);
      				}     				
	      			if(ec == 0x0d0a)
	      			{
	      				serialPortOutput1byte(ec>>8);
	      				serialPortOutput1byte(ec&0xff);
	      			}
	      			else 	serialPortOutput1byte(ec&0xff);//sendout ec
	      		}
		}
		else	//different uid
		{
				flags = ISOFlagsSys&0xfb;	// not inventory
	        	flags |= 0x20;			// address_flag	,no security
	        	if((ISOModeSys & 0x04) == 0x04) { flags |= 0x40; }// option_flag,TI卡为1才能操作
	        	viccdata[0] = 15;     		//len
	      		viccdata[1] = flags;     	//flags
	      		viccdata[2] = 0x23;		//cmd
	      		for(j=0;j<8;j++)viccdata[3+j] = labeldata[10-j];	// copy uid
	      		
		      	viccdata[11] = db_adr;		//start addr
		      	viccdata[12] = (db_n+1);	// length
		      	wr_crc_send(); 	                                                   

	      		ISOMode = ISOModeSys&0xe7;	//read ,all		      	
	      		m = sendISOCmd(ISOMode);
      			CS_RAM_1;
	      		serialPortOutput1byte(deviceAddr);	//send out addr	      		
	      		for(j=0;j<8;j++)serialPortOutput1byte(labeldata[3+j]);	
	      		if(sc == 0x0d0a)
	      		{
	      			serialPortOutput1byte(sc>>8);
	      			serialPortOutput1byte(sc&0xff);
	      		}
	      		else 	serialPortOutput1byte(sc&0xff);//send out sc
	      		if((ISOModeSys & 0x04) == 0x04)	//含有块状态信息
      			{
      				for(k=0;k<(db_n+1)*5;k++)	//send out block data
      					serialPortOutput1byte(viccdata[2+k]); 
      			}
      			else	//不含有块状态信息
      			{
      				for(k=0;k<(db_n+1)*4;k++)	//send out block data
      					serialPortOutput1byte(viccdata[2+k]);
      			}     				
	      		if(ec == 0x0d0a)
	      		{
	      			serialPortOutput1byte(ec>>8);
	      			serialPortOutput1byte(ec&0xff);
	      		}
	      		else 	serialPortOutput1byte(ec&0xff);//sendout ec					
		}
		for(i=0;i<8;i++)lastUid[i] = currUid[i];//copy current uid as last uid		      		
      	} 
      	else if( num_card >= 2)  //exist card
		{                      	
	        flags = ISOFlagsSys&0xfb;	// not inventory
	        flags |= 0x20;			// address_flag	,no security
	        if((ISOModeSys & 0x04) == 0x04) { flags |= 0x40; }// option_flag,TI卡为1才能操作
	        for(i=0;i<num_card;i++)		// read multiple blocks
	        {
	        	viccdata[0] = 15;     	//len
	      		viccdata[1] = flags;    //flags
	      		viccdata[2] = 0x23;	//cmd
	      		for(j=0;j<8;j++)	// copy uid
	      		{
	      			viccdata[3+j] = labeldata[i*10+10-j];
	      		}
	      		viccdata[11] = db_adr;	//start addr
	      		viccdata[12] = (db_n+1);	// length
	      		wr_crc_send();                                                    

      			ISOMode = ISOModeSys&0xe7;	//read ,all	      		
      			m = sendISOCmd(ISOMode);
    			CS_RAM_1;
      			serialPortOutput1byte(deviceAddr);	//send out addr
      			for(j=0;j<8;j++)
      			{      				
      				serialPortOutput1byte(labeldata[i*10+3+j]);
      			}
      			if(sc == 0x0d0a)
      			{
      				serialPortOutput1byte(sc>>8);
      				serialPortOutput1byte(sc&0xff);
      			}
      			else 	serialPortOutput1byte(sc&0xff);//send out sc
      			if((ISOModeSys & 0x04) == 0x04)	//含有块状态信息
      			{
      				for(k=0;k<(db_n+1)*5;k++)	//send out block data
      					serialPortOutput1byte(viccdata[2+k]); 
      			}
      			else	//不含有块状态信息
      			{
      				for(k=0;k<(db_n+1)*4;k++)	//send out block data
      					serialPortOutput1byte(viccdata[2+k]);
      			}     				
      			if(ec == 0x0d0a)
      			{
      				serialPortOutput1byte(ec>>8);
      				serialPortOutput1byte(ec&0xff);
      			}
      			else 	serialPortOutput1byte(ec&0xff);//sendout ec
      		}      		
      	}
      	else
      	{;}	//error
}
static void snrDbTimeComPrefix(void)
{
		uchar i,j,m,k;   
		uchar flags = 0;
		uchar num_card;

		myInvOut();    
      	num_card = labeldata[0];	 		     		
      	if(num_card != 0)bReadTag = 1;
		if( num_card == 1)
      	{
      		for(i=0;i<8;i++)currUid[i] = labeldata[3+i];//copy uid to current UID 
      		
	      	if(compareUid() == 0)	// same uid
	      	{
		      	if(trigger == 0)// single read
		      	{
		      		flags = ISOFlagsSys&0xfb;	// not inventory
	        		flags |= 0x20;	// address_flag	,no security
	        		if((ISOModeSys & 0x04) == 0x04) { flags |= 0x40; }// option_flag,TI卡为1才能操作
		        	viccdata[0] = 15;     //len
		      		viccdata[1] = flags;     //flags
		      		viccdata[2] = 0x23;	//cmd
		      		for(j=0;j<8;j++)viccdata[3+j] = labeldata[10-j];	// copy uid
		      		
		      		viccdata[11] = db_adr;	//start addr
		      		viccdata[12] = (db_n+1);		// length
		      		wr_crc_send(); 
	                                                   

	      			ISOMode = ISOModeSys&0xe7;	//read ,all		      			
	      			m = sendISOCmd(ISOMode);
					CS_RAM_1;
	      			getBufferTime();
	      			serialPortOutput1byte(deviceAddr);	//send out addr	      			
	      			for(j=0;j<8;j++)serialPortOutput1byte(labeldata[3+j]);	//send uid    			
	      			if(sc == 0x0d0a)
	      			{
	      				serialPortOutput1byte(sc>>8);
	      				serialPortOutput1byte(sc&0xff);
	      			}
	      			else 	serialPortOutput1byte(sc&0xff);//send out sc
	      			if((ISOModeSys & 0x04) == 0x04)	//含有块状态信息
      				{
      					for(k=0;k<(db_n+1)*5;k++)	//send out block data
      						serialPortOutput1byte(viccdata[2+k]); 
      				}
      				else	//不含有块状态信息
      				{
      					for(k=0;k<(db_n+1)*4;k++)	//send out block data
      						serialPortOutput1byte(viccdata[2+k]);
      				}
      			
	      			if(sc == 0x0d0a)
	      			{
	      				serialPortOutput1byte(sc>>8);
	      				serialPortOutput1byte(sc&0xff);
	      			}
	      			else 	serialPortOutput1byte(sc&0xff);//send out sc	
	      			serialPortOutput1byte(Day);
	      			serialPortOutput1byte(Hour);
	      			serialPortOutput1byte(Minute);
	      			serialPortOutput1byte(Second);	//send out time	
	      			     			
	      			if(ec == 0x0d0a)
	      			{
	      				serialPortOutput1byte(ec>>8);
	      				serialPortOutput1byte(ec&0xff);
	      			}
	      			else 	serialPortOutput1byte(ec&0xff);//sendout ec 
			}
		}
		else	//different uid
		{
				flags = ISOFlagsSys&0xfb;	// not inventory
	        	flags |= 0x20;	// address_flag	,no security
	        	if((ISOModeSys & 0x04) == 0x04) { flags |= 0x40; }// option_flag,TI卡为1才能操作
		        viccdata[0] = 15;     //len
		      	viccdata[1] = flags;     //flags
		      	viccdata[2] = 0x23;	//cmd
		      	for(j=0;j<8;j++)viccdata[3+j] = labeldata[10-j];	// copy uid
		      		
		      	viccdata[11] = db_adr;	//start addr
		      	viccdata[12] = (db_n+1);		// length
		      	wr_crc_send(); 
	                                                   

	      		ISOMode = ISOModeSys&0xe7;	//read ,all		      		
	      		m = sendISOCmd(ISOMode);
				CS_RAM_1;
	      		getBufferTime();
	      		serialPortOutput1byte(deviceAddr);	//send out addr
	      		
	      		for(j=0;j<8;j++)serialPortOutput1byte(labeldata[3+j]);		    			
	      		if(sc == 0x0d0a)
	      		{
	      			serialPortOutput1byte(sc>>8);
	      			serialPortOutput1byte(sc&0xff);
	      		}
	      		else 	serialPortOutput1byte(sc&0xff);//send out sc
	      		if((ISOModeSys & 0x04) == 0x04)	//含有块状态信息
      			{
      				for(k=0;k<(db_n+1)*5;k++)	//send out block data
      					serialPortOutput1byte(viccdata[2+k]); 
      			}
      			else	//不含有块状态信息
      			{
      				for(k=0;k<(db_n+1)*4;k++)	//send out block data
      					serialPortOutput1byte(viccdata[2+k]);
      			}
      			
	      		if(sc == 0x0d0a)
	      		{
	      			serialPortOutput1byte(sc>>8);
	      			serialPortOutput1byte(sc&0xff);
	      		}
	      		else 	serialPortOutput1byte(sc&0xff);//send out sc	
	      		serialPortOutput1byte(Day);
	      		serialPortOutput1byte(Hour);
	      		serialPortOutput1byte(Minute);
	      		serialPortOutput1byte(Second);	//send out time	
	      			     			
	      		if(ec == 0x0d0a)
	      		{
	      			serialPortOutput1byte(ec>>8);
	      			serialPortOutput1byte(ec&0xff);
	      		}
	      		else 	serialPortOutput1byte(ec&0xff);//sendout ec							
		}
		for(i=0;i<8;i++)lastUid[i] = currUid[i];//copy current uid as last uid		      		
      	} 
      	else if( num_card >= 2)  		//exist card
		{ 	                             	
	        flags = ISOFlagsSys&0xfb;	// not inventory
	        flags |= 0x20;			// address_flag	,no security
	        if((ISOModeSys & 0x04) == 0x04) { flags |= 0x40; }// option_flag,TI卡为1才能操作
	        for(i=0;i<num_card;i++)		// read multiple blocks
	        {
	        	viccdata[0] = 15;     	//len
	      		viccdata[1] = flags;     //flags
	      		viccdata[2] = 0x23;	//cmd
	      		for(j=0;j<8;j++)	// copy uid
	      		{
	      			viccdata[3+j] = labeldata[i*10+10-j];
	      		}
	      		viccdata[11] = db_adr;	//start addr
	      		viccdata[12] = (db_n+1);	// length
	      		wr_crc_send(); 
                                                   

      			ISOMode = ISOModeSys&0xe7;	//read ,all	      			
      			m = sendISOCmd(ISOMode);
				CS_RAM_1;
      			getBufferTime();
      			serialPortOutput1byte(deviceAddr);	//send out addr
      			for(j=0;j<8;j++)
      			{      				
      				serialPortOutput1byte(labeldata[i*10+3+j]);
      			}      			
      			if(sc == 0x0d0a)
      			{
      				serialPortOutput1byte(sc>>8);
      				serialPortOutput1byte(sc&0xff);
      			}
      			else 	serialPortOutput1byte(sc&0xff);//send out sc
      			if((ISOModeSys & 0x04) == 0x04)	//含有块状态信息
      			{
      				for(k=0;k<(db_n+1)*5;k++)	//send out block data
      					serialPortOutput1byte(viccdata[2+k]); 
      			}
      			else	//不含有块状态信息
      			{
      				for(k=0;k<(db_n+1)*4;k++)	//send out block data
      					serialPortOutput1byte(viccdata[2+k]);
      			}
      			
      			if(sc == 0x0d0a)
      			{
      				serialPortOutput1byte(sc>>8);
      				serialPortOutput1byte(sc&0xff);
      			}
      			else 	serialPortOutput1byte(sc&0xff);//send out sc	
      			serialPortOutput1byte(Day);
      			serialPortOutput1byte(Hour);
      			serialPortOutput1byte(Minute);
      			serialPortOutput1byte(Second);	//send out time	
      			     			
      			if(ec == 0x0d0a)
      			{
      				serialPortOutput1byte(ec>>8);
      				serialPortOutput1byte(ec&0xff);
      			}
      			else 	serialPortOutput1byte(ec&0xff);//sendout ec 
      		}      		
      	}
      	else
      	{;}	//error      	
}
/*
	compare the UID
	1: different
	0: same
*/
static uchar compareUid()
{
	uchar i,flag = 0;
	
	for(i=0;i<8;i++)
	{		
	    	if(lastUid[i] != currUid[i])	    
	    	{
	    		flag = 1;
	    		break;
		}
		flag = 0;
	}
	return (flag);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -