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

📄 buffer.c

📁 dsp tmslf2407a 汇编,c的原代码,包括i2c,scitimer,fir等的很多程序.
💻 C
📖 第 1 页 / 共 2 页
字号:
					break;
					case 0x22:
					{
						len = buffer[0]*(2+(c_db_n+1)*5+4)+6+2;											
					
						pcdata[0] = 6+buffer[0]*(2+(c_db_n+1)*5+4)+2;
						pcdata[1] = deviceAddr;
						pcdata[2] = 0x21;
						if(len<=0xff)pcdata[3] = OK;
						else		pcdata[3] = 0x94;	
						pcdata[4] = c_tr_data;
						pcdata[5] = buffer[0];
						for(i=0;i<buffer[0]*(2+(c_db_n+1)*5+4);i++)
						{
							pcdata[6+i] = buffer[1+i];
						}
						wr_crc_resp();										
					}
					break;
					case 0x23:
					{
						len = buffer[0]*(1+8+2+(c_db_n+1)*5+4)+6+2;	
						pcdata[0] = 6+buffer[0]*(9+2+(c_db_n+1)*5+4)+2;
						pcdata[1] = deviceAddr;
						pcdata[2] = 0x21;
						if(len<=0xff)pcdata[3] = OK;
						else		pcdata[3] = 0x94;
						pcdata[4] = c_tr_data;
						pcdata[5] = buffer[0];
						for(i=0;i<buffer[0]*(9+2+(c_db_n+1)*5+4);i++)
						{
							pcdata[6+i] = buffer[1+i];
						}
						wr_crc_resp();						
					}
					break;
				}
			}
		}
		else
		{
			pcdata[0] = 6;
			pcdata[1] = deviceAddr;
			pcdata[2] = 0x32;
			pcdata[3] = 0x92;					
			wr_crc_resp();
		}
	}
}   
static void clearBufferData()
{
	uchar i;
	if( (bufferInitFlag == 1) && (bufferReadFlag == 1) )
	{
		for(i=0;i<BuffLen;i++){buffer[i] = 0;}
		bufferClrFlag = 1;
		bufferReadFlag = 0;
		
		if(pcdata[1] == deviceAddr)
		{		
			pcdata[0] = 6;
			pcdata[1] = deviceAddr;
			pcdata[2] = 0x32;
			pcdata[3] = OK;					
			wr_crc_resp();
		}		
	}
	else
	{
		if(pcdata[1] == deviceAddr)
		{		
			pcdata[0] = 6;
			pcdata[1] = deviceAddr;
			pcdata[2] = 0x32;
			pcdata[3] = 0x92;					
			wr_crc_resp();
		}
	}
}
static void serialNum( )
{
	uchar i,j;
   	uchar num_card;   	
   	   	
    myInvOut();	
    num_card = labeldata[0];     		
	if( num_card != 0 )
	{	
		if(buffer[0] >= 0x0b) {return;}	
	    buffer[0] += num_card;	        
	    for(i=0;i<num_card;i++)
	    {
	       	buffer[(buffer[0]-num_card+i)*9 + 1] = 0x03;	//tr-type
	       	for(j=0;j<8;j++)
	       	{
	       		buffer[(buffer[0]-num_card+i)*9+2+j] = labeldata[i*10+3+j];	// copy uid
	       	}
		}
	}
	else if( labeldata[0] == 0 )
	{
	}  
}
static void db( )		
{
	uchar i,j;   
	uchar flags = 0;	            
   	uchar num_card;
   	uchar len;   	
   	
    myInvOut();   	
	num_card = labeldata[0];  
	if( num_card != 0 )
	{
		bReadTag = 1;
		if(buffer[0] >= 0x0b) {return;}
		//buffer[0] += num_card;	
		len = 1+1+(c_db_n+1)*5;	
		flags = ISOFlagsSys&0xfb;	// not inventory
		flags |= 0x60;			// address_flag	,option_flag
	    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] = c_db_adr;	//start addr
	      	viccdata[12] = c_db_n;		// length
	      	wr_crc_send();                                                    

      		ISOMode = ISOModeSys&0xe7;	//read ,all	      		
      		sendISOCmd();
      		CS_RAM_1;
      		
      		if(viccdata[1] == 0)	// read correctly
      		{	
      			buffer[0] ++;
      			buffer[(buffer[0]-num_card+i)*len+1] = c_db_adr;	
      			buffer[(buffer[0]-num_card+i)*len+2] = c_db_n;	
      			for(j=0;j<(c_db_n+1)*5;j++)// copy block status and block data
      			{
      				buffer[(buffer[0]-num_card+i)*len+3+j] = viccdata[2+j];
      			}
      		}      			     					
		}
	}
	else
	{
	}
}
static void serialNumDb( )
{
	uchar i,j;   
	uchar flags = 0;	            
   	uchar num_card; 
   	uchar len;   	
   	
	myInvOut();   
	num_card = labeldata[0];   			     		
	if( num_card != 0 )
	{	
		bReadTag = 1;
		if(buffer[0] >= 0x0b) {return;}                   		
	    //buffer[0] += num_card;	        
		len = 1+8+1+1+(c_db_n+1)*5;
		
		flags = ISOFlagsSys&0xfb;	// not inventory
	    flags |= 0x60;			// address_flag	,option_flag
	    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] = c_db_adr;	//start addr
	      	viccdata[12] = c_db_n;		// length
	      	wr_crc_send();                                                    
      		ISOMode = ISOModeSys&0xe7;	//read ,all	      		
      		sendISOCmd();
      		CS_RAM_1;
      		
      		if(viccdata[1] == 0)	// read correctly
      		{	
      			buffer[0] ++;
      			buffer[(buffer[0]-num_card+i)*len+1] = 0x03;	//tr_typ
      			for(j=0;j<8;j++)//copy uid
      			{
      				buffer[(buffer[0]-num_card+i)*len+2+j] = labeldata[i*10+3+j];
      			}
      			buffer[(buffer[0]-num_card+i)*len+10] = c_db_adr;
      			buffer[(buffer[0]-num_card+i)*len+11] = c_db_n;
      			for(j=0;j<(c_db_n+1)*5;j++)// copy block status and block data
      			{
      				buffer[(buffer[0]-num_card+i)*len+12+j] = viccdata[2+j];
      			}
      		}      			     					
		}        		
	}
	else if( labeldata[0] == 0 )
	{
	}   	
}
static void serialNumTimer()
{
	uchar i,j;  
	uchar flags = 0;	            
   	uchar num_card;
   	uchar len;   	
   	
	myInvOut();
    num_card = labeldata[0];     		
	if( num_card != 0 )
	{
		bReadTag = 1;
		if(buffer[0] >= 0x0b) {return;}
	   	buffer[0] += num_card;	        
	       
	   len = 1+8+4;	//tr_typ+snr+timer
	   for(i=0;i<num_card;i++)
	 	{
	       	buffer[(buffer[0]-num_card+i)*13 + 1] = 0x03;	//tr-type
	       	for(j=0;j<8;j++)
	       	{
	       		buffer[(buffer[0]-num_card+i)*13+2+j] = labeldata[i*10+3+j];	// copy uid
	       	}
	       	getBufferTime();	//get time
	       	buffer[(buffer[0]-num_card+i)*13+10] = Day;
	       	buffer[(buffer[0]-num_card+i)*13+11] = Hour;
	       	buffer[(buffer[0]-num_card+i)*13+12] = Minute;
	       	buffer[(buffer[0]-num_card+i)*13+13] = Second;
	    }	               		
	}
	else if( labeldata[0] == 0 )
	{		
	}
}
static void dbTimer( )
{
	uchar i,j;   
	uchar flags = 0;	            
   	uchar num_card;
   	uchar len;   	
   	
    myInvOut();   	
	num_card = labeldata[0];  
	len = 1+1+(c_db_n+1)*5+4;	// db_adr+db_n+db+timer
	if( num_card != 0 )
	{
		bReadTag = 1;
		if(buffer[0] >= 0x0b){return;}
		//buffer[0] += num_card;
		
		flags = ISOFlagsSys&0xfb;	// not inventory
	    flags |= 0x60;			// address_flag	,option_flag
	    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] = c_db_adr;	//start addr
	      	viccdata[12] = c_db_n;		// length
	      	wr_crc_send();                                                    

   			ISOMode = ISOModeSys&0xe7;	//read ,all	   		
   			sendISOCmd();
    		CS_RAM_1;
      			
      		if(viccdata[1] == 0)	// read correctly
      		{	
      			buffer[0] ++;
      			buffer[(buffer[0]-num_card+i)*len+1] = c_db_adr;	
      			buffer[(buffer[0]-num_card+i)*len+2] = c_db_n;	
      			for(j=0;j<(c_db_n+1)*5;j++)// copy block status and block data
      			{
      				buffer[(buffer[0]-num_card+i)*len+3+j] = viccdata[2+j];
      			}
      			getBufferTime();	//get time
	        	buffer[(buffer[0]-num_card+i)*len+(len-3)] = Day;
        		buffer[(buffer[0]-num_card+i)*len+(len-2)] = Hour;
        		buffer[(buffer[0]-num_card+i)*len+(len-1)] = Minute;
        		buffer[(buffer[0]-num_card+i)*len+(len-0)] = Second;
   			}      			     					
        }
	}
	else
	{
	}
}
static void serialDbTimer()
{
	uchar i,j;   
	uchar flags = 0;	            
   	uchar num_card; 
   	uchar len;   	
   	
	myInvOut();   
	num_card = labeldata[0];   			     		
	if( num_card != 0 )
	{	
		bReadTag = 1;
		if(buffer[0] >= 0x0b) {return;}                   		
        //buffer[0] += num_card;	        
		len = 1+8+1+1+(c_db_n+1)*5+4;	//tr_typ+snr+db_adr+db_n+snr
		
		flags = ISOFlagsSys&0xfb;	// not inventory
        flags |= 0x60;			// address_flag	,option_flag
        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] = c_db_adr;	//start addr
      		viccdata[12] = c_db_n;		// length
      		wr_crc_send();                                                    
   			ISOMode = ISOModeSys&0xe7;	//read ,all	   			
   			sendISOCmd();
   			CS_RAM_1;
     			
   			if(viccdata[1] == 0)	// read correctly
   			{	
   				buffer[0] ++;
   				buffer[(buffer[0]-num_card+i)*len+1] = 0x03;	//tr_typ
   				for(j=0;j<8;j++)//copy uid
      			{
      				buffer[(buffer[0]-num_card+i)*len+2+j] = labeldata[i*10+3+j];
      			}
      			buffer[(buffer[0]-num_card+i)*len+10] = c_db_adr;
      			buffer[(buffer[0]-num_card+i)*len+11] = c_db_n;
      			for(j=0;j<(c_db_n+1)*5;j++)// copy block status and block data
      			{
      				buffer[(buffer[0]-num_card+i)*len+12+j] = viccdata[2+j];
      			}
      			getBufferTime();	//get time
	        	buffer[(buffer[0]-num_card+i)*len+(len-3)] = Day;
	        	buffer[(buffer[0]-num_card+i)*len+(len-2)] = Hour;
	        	buffer[(buffer[0]-num_card+i)*len+(len-1)] = Minute;
	        	buffer[(buffer[0]-num_card+i)*len+(len-0)] = Second;
      		}      			     					
		}        		
	}
	else if( labeldata[0] == 0 )
	{
	}   	
}
void getBufferTime() 
{
	uchar day,hour,minute,second;
	uchar addr02=0,addr03=0,addr04=0,addr05=0;/*addr in the pcf8583*/
	uint pcf8583_flag = 0;
	
	addr02 = ReadByte(0x02);
	if(addr02 == 0xffff)	
		pcf8583_flag = 1;	/*read i2c error*/
	
	addr03 = ReadByte(0x03);
	if(addr03 == 0xffff)	
		pcf8583_flag = 1;	

	
	addr04 = ReadByte(0x04);
	if(addr04 == 0xffff)	
		pcf8583_flag = 1;	

	
	addr05 = ReadByte(0x05);
	if(addr05 == 0xffff)		
		pcf8583_flag = 1;	

	day = addr05&0x3f;
	hour = addr04&0x3f;
	minute = addr03;
	second = addr02;
	
	Day = day;
	Hour = hour;
	Minute = minute;
	Second = second;		
}

⌨️ 快捷键说明

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