亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? tools.c

?? 基于單片機的SIM卡類CPU卡讀寫器源代碼
?? C
字號:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <api.h>
#include <ExEH0218.h>
#include <mifare530.h>
#include <memcard.h>
#include "Health.h"

void delay_n_ms(short i)
{
	for(;i>0;i--)
		delay_1ms();
}

void  dump_memory(unsigned char * buf,short int cnt,short line) 
{
      unsigned short cntr;
      unsigned char stmp[100];
      for (cntr = 0; cntr < cnt; cntr ++) {
		sprintf( stmp+2*cntr,"%02X", buf[cntr]);
	      }
      stmp[cnt*2] = 0;
      ClearLine(line,DISP_5x7);	 
      DispStr_E(0,line,stmp,DISP_POSITION|DISP_5x7);
}
/**************************************************************
函數名稱:Alarm
功能描述:蜂鳴器報警
函數說明:蜂鳴器鳴響三次
調用函數:無
全局變量:無
輸入:	  無
返回:    無
修改:
*************************************************************/
void Alarm()
{
	int count;
		
	for(count=0;count<3;count++)
	{	
		BEEPER_sound(0xBF0B);
		SPT_set(16);
		while(SPT_read());
		BEEPER_sound(0x7F0B);
		delay_n_ms(100);
	}	
	
}

/**************************************************************
函數名稱:BCDToASC
功能描述:將BCD碼轉換為ASCII碼
函數說明:
調用函數:無
全局變量:無
輸入:	  unsigned char *source:BCD碼 , unsigned char length:BCD碼的長度
輸出:    unsigned char *dest:  ASCII碼
返回:    無
修改:
*************************************************************/
void BCDToASC(unsigned char *source,unsigned char *dest,unsigned char length)
{
        unsigned char i, j;

        for(i=0;i<length;i++)
        {
                j=(source[i]>>4)&0x0f;
                if(j>9)
                        dest[2*i]=j+'A'-10;
                else
                        dest[2*i]=j+'0';
                j=source[i]&0x0f;
                if(j>9)
                        dest[2*i+1]=j+'A'-10;
                else
                        dest[2*i+1]=j+'0';
        }
}


/**************************************************************
函數名稱:LongToAsc
功能描述:將長整形整數轉換為ASCII碼
函數說明:
調用函數:無
全局變量:無
輸入:	  long a:長整形整數 
輸出:    unsigned char *buffer:  ASCII碼
返回:    無
修改:
*************************************************************/
void LongToAsc(long a, unsigned char *buffer)
{
	
	int	i,j;
	long 	z,b;  	

	memset(buffer, 0, sizeof(buffer));

	b = a;
	j = 19;

	for(i = 0; i < 20; i++)
		buffer[i] = 0x30;
	buffer[20] = 0;

	if(b == 0)
	{
		buffer[0] = 0;
		return;
	}

	while(b > 0)
 	{
   		z = b % 10;
    	buffer[j--] = (unsigned char)z + 0x30;
   		b = b / 10;
 	}

	for(i=0; i<21; i++)
		if (buffer[i] != 0x30)
			break;

	for(j=i; j<21; j++)
		buffer[j-i] = buffer[j];

	return;
 
}


/**************************************************************
函數名稱:ASCToBCD
功能描述:將ASCII碼轉換為BCD碼
函數說明:
調用函數:無
全局變量:無
輸入:	  unsigned char *source:ASCII碼 , unsigned char length:ASCII碼的長度
輸出:    unsigned char *dest:  BCD碼
返回:    無
修改:
*************************************************************/
void ASCToBCD(unsigned char *source, unsigned char *dest, unsigned char length)
{
        unsigned char i, j, k;

        for(i=0;i<length;i++)
        {
         	if((source[i]>='0') && (source[i]<='9'))
                        j=source[i]-'0';
                else if((source[i]>='a') && (source[i]<='z'))
                        j=source[i]-'a'+0x0a;
                else
                        j=source[i]-'A'+0x0a;
                i++;
                if((source[i]>='0') && (source[i]<='9'))
                        k=source[i]-'0';
                else if((source[i]>='a') && (source[i]<='z'))
                        k=source[i]-'a'+0x0a;
                else
                        k=source[i]-'A'+0x0a;
                dest[i/2]=(j<<4)|k;
        }
} 



/**************************************************************
函數名稱:AscAdd
功能描述:把兩個用ascii碼表示的整數相加
函數說明:
調用函數:無
全局變量:無
輸入:	  unsigned char *add1:ascii碼的加數1 , unsigned char *add2:ASCII碼的加數2
輸出:    unsigned char *result: 結果
返回:    無 
修改:
*************************************************************/
void AscAdd(unsigned char *add1,unsigned char *add2,unsigned char *result)
{
	unsigned char temp[20];	
	unsigned char length;
	unsigned char carry;
	unsigned char j;
	int i;
	unsigned char length1,length2;

		memset(result,0,sizeof(result));
		length1 = strlen(add1);

		length2 = strlen(add2);
		length = length1;
		if ( length1 < length2 )
                {
			memset(temp,0,20);
			if (length1 == 1)
				temp[0] = add1[0];
			else	memcpy(temp,add1,length1);
			memset(add1,0,20);
			for ( j = 0 ; j < length2-length1; j ++ )
				add1[j] = 0x30;
			if (length1 == 1)
				add1[length2-length1] = temp[0];
			else	memcpy(add1 + length2 - length1 , temp ,length1);
			length = length2;
		}				
		if ( length2 < length1 )
                {
			memset(temp,0,20);
			if ( length2 == 1)
				temp[0] = add2[0];
			else	memcpy(temp,add2,length2);
			memset(add2,0,20);
			for ( j = 0 ; j < length1-length2; j ++ )
				add2[j] = 0x30;
			if ( length2 == 1 )
				add2[length2 - length1] = temp[0];
			else	memcpy(add2 + length1 - length2 , temp ,length2);
			length = length1;
		}			
		carry = 0;
		for ( i = length-1 ; i >= 0 ;  i-- )
		{
			result[i] = add1[i] + add2[i] - 0x30 + carry;

			if ( ( add1[i] + add2[i] - 0x09 + carry) >= 'a')			
				result[i] = add1[i] + add2[i] + carry - 0x3a;
			if ( ( add1[i] + add2[i] - 0x09 + carry ) >= 'a')			
				carry = 1;
			else carry = 0;
                };        
                if ( carry == 1 )
		{
			memset(temp,0,20);
			memcpy(temp,result,length);      
			memset(result,0,20);
			result[0] = '1';
			memcpy(result + 1, temp, length);
		}
}	
/**************************************************************
函數名稱:LongToBcd
功能描述:把長整形數轉換為bcd碼
函數說明:
調用函數:無
全局變量:無  
輸入:	  long LongData 長整形數 , unsigned char *BcdStr:轉換后的BCD碼
輸出:    int BcdStrLen :轉換后的bcd碼長度
返回:    無  
修改:
*************************************************************/
void LongToBcd(long LongData,unsigned char *BcdStr,int BcdStrLen)
{
	unsigned char ascstr[30];
	unsigned char temp[16];
	
		sprintf(ascstr,"%012ld",LongData);
		memcpy(temp,ascstr+12-BcdStrLen*2,BcdStrLen*2);
		temp[BcdStrLen*2] = 0;
		ASCToBCD(temp,BcdStr,BcdStrLen*2);
		
}


/**************************************************************
函數名稱:BcdToLong
功能描述:把bcd碼轉換為長整形數
函數說明:
調用函數:無
全局變量:無  
輸入:	  unsigned char *BcdStr:BCD碼,int BcdStrLen :bcd碼長度
輸出:    
返回:    轉換后的長整形數  
修改:
*************************************************************/
long BcdToLong(unsigned char *BcdStr,int BcdStrLen)
{
	unsigned char ascstr[500];

		BCDToASC(BcdStr,ascstr,BcdStrLen);
		ascstr[BcdStrLen*2] = 0;
		return(atol(ascstr));
}

void selectcode(char *Card_Read_Buff,char *Buff,int j)
{
	int i,k,m,n;  //
	char temstr[500];
	 memset(temstr,0,500);
	 memcpy(temstr,Card_Read_Buff,500);
	  //DispStr_E(0,0,temstr,DISP_CENTER|DISP_CLRSCR);
	    //  delay_and_wait_key( 10, EXIT_KEY_ALL, 0 );
	
	/*if (j==1)
	{
			for(i=0;i<1000;i++)
			{
				if (temstr[i]=='|')
				{
					if (i == 1)
					{
						memcpy(Buff,"null",4);
				  	break;
					}					
					
					memcpy(Buff,temstr,i-1);	
				}
				else continue;
			} 		
	}*/

	m = 1;

	for(i=0;i<500;i++)
	{
		//if (*(Card_Read_Buff+i)=="|")
		if (temstr[i]=='|')
		{
			m = m + 1;
			if ((j == 1)&&(m == 2))
			{
				break;
			}
			if (m == j)
			{
				/*memcpy(tmp,temstr+i,10);        
		      DispStr_E(0,0,tmp,DISP_CENTER);
		      DispStr_E(0,2,p,DISP_CENTER);
	      delay_and_wait_key( 10, EXIT_KEY_ALL, 0 );*/
				break;				
			}
		}
		else continue;
	}

	if (j == 1)
	{
		memcpy(Buff,temstr,i);
	}else
	{
		for (n=i+1;n<i+100;n++)
		{
			if (temstr[n]=='|')
			{
				if (n==(i+1))
				{
					memcpy(Buff," ",1);
					break;
				}    else		memcpy(Buff,temstr+i+1,n-i-1);
				break;
			}	
			continue;
		}
	}
		        
		//memcpy(tmp,Buff,10);        
		//        DispStr_E(0,4,tmp,DISP_CENTER|DISP_CLRSCR);
	  //    delay_and_wait_key( 10, EXIT_KEY_ALL, 0 );

	return;
}


int Getdatanum(char *Card_Read_Buff,char *buff)
{
	int i,j,k,m,n;//k is PHY# ,n is  PHY#`s number
	char str1[10],tmpstr[500];
	
	k=0;
	m=0;
	n=0;
	memcpy(str1,buff,10);
	memcpy(tmpstr,Card_Read_Buff,500);
	for (i=0;i<10;i++)
	{
			
		if (str1[i]=='#') 
		{
			k=i;
			//DispStr_E(0,1,str1+i,DISP_POSITION|DISP_CLRSCR);	
			//delay_and_wait_key( 10, EXIT_KEY_ALL, 0 );
			break;
		}
	}
	
	for (i=0;i<500;i++)
	{
		m=0;
		if (tmpstr[i]==str1[0]) 
		{
			
			for (j=1;j<k+1;j++)
			{
				if (tmpstr[i+j]==str1[j])	
				{
					m++;
					//
					//memcpy(ss,tmpstr+j,12);
					//DispStr_E(0,0,ss,DISP_POSITION|DISP_CLRSCR);	
					//delay_and_wait_key( 10, EXIT_KEY_ALL, 0 );
					//MH#|med 2|1/11/2006 01:00:00 AM|no|\n\nMH#|med 3|||\n\n
				}
				else
				{
					m=0;
					break;
				}
			}
			if (m == k)
			{
				n++;
				//DispStr_E(0,1,"test",DISP_CENTER|DISP_CLRSCR);	
				//delay_and_wait_key( 10, EXIT_KEY_ALL, 0 );
				//break;
			}
		}
		
	}
	//str1[0]=n;
	//
	//DispStr_E(0,4,str1,DISP_CENTER|DISP_CLRSCR);	
	//delay_and_wait_key( 10, EXIT_KEY_ALL, 0 );
	//

	
	return n;
}

void Getphydata(char *Card_Read_Buff,char * buff,int number)
{
	//"PHY#|lam don|sp 1|5454512121|\n\n"
	//"FFH#|china|teacher|cancer|32|True|True|True|True|True|False|False|False|False|False|False|False|False|False|False|False|False|True|True|True|\n\n
	int i,j,k=0,m=0,n=0,p=0,q=0;//k is PHY# ,n is  PHY#`s number
	char str1[10],temstr[500];
	
	memcpy(str1,buff,10);
	memcpy(temstr,Card_Read_Buff,500);
	for (i=0;i<10;i++)
	{
		if (str1[i]=='#') 
		k=i;
		//
		//DispStr_E(0,3,"find #",DISP_CENTER|DISP_CLRSCR);	
		//delay_and_wait_key( 10, EXIT_KEY_ALL, 0 );
		//
		break;
	}
	
	for (i=0;i<500;i++)
	{
		if (temstr[i]==str1[0]) 
		{
			for (j=0;j<k;j++)
			{
				if (temstr[i+j+1]==str1[j+1])	
				m++;
				else
				break;
			}
			if (m == k)
			{
				n=i+k;
				break;
			}
		}
	}
	//
	//"PHY#|lam don|sp 1|5454512121|\n\n"
	//DispStr_E(0,3,temstr+n+2,DISP_CENTER|DISP_CLRSCR);	
		//delay_and_wait_key( 10, EXIT_KEY_ALL, 0 );
	//
	
	for (i=0;i<500;i++)
	{
		if (temstr[i+n]=='#')
		{
			
			p++;
			if (p==number)
			{
				for(q=0;q<100;q++)
				{
					if (temstr[n+i+q]==92)
					{
						break;
					}	
				}
				memcpy(buff,temstr+n+i+2,q);
					//DispStr_E(0,3,temstr+n+i+2,DISP_CENTER|DISP_CLRSCR);	
		      //delay_and_wait_key( 10, EXIT_KEY_ALL, 0 );
				break;	
			}		
			//q=i+n+k;
		}
		
	}
	
	
	return ;
}

void tmpGetphydata(char *temstr,char * buff,int number)
{
	int i,j,k=0,m=0,n=0,p=0,q=0;//k is PHY# ,n is  PHY#`s number
	char str1[10],temp[10];
	//char *strtmp;
	memset(str1,0,10);
	memset(temp,0,10);
	memcpy(str1,buff,10);
	//memcpy(temstr,Card_Read_Buff,2000);
	for (i=0;i<10;i++)
	{
		if (str1[i]=='#') 
		{
			k=i;
			break;
		}
		
	}
	memset(buff,0,500);
	for (i=0;i<number;i++)
	{
		if (temstr[i]==str1[0]) 
		{
			m=0;
			for (j=0;j<k;j++)
			{
				if (temstr[i+j+1]==str1[j+1])	
				m++;
				else
				break;
			}
			if (m == k)
			{
				n=i;//n=i+k; 20060615
				break;
			}
		}
	}
	
	for (i=number-k;i>=n;i--)
	{
		if (temstr[i]==str1[0]) 
		{
      m = 0;
			for (j=0;j<k;j++)
			{
				if (temstr[i+j+1]==str1[j+1])	
				m++;
				else
				break;
			}
			if (m == k)
			{
				p=i;
				if ((p-n)>400) continue ;
				else  break;
			}
		}
	}	

	if (p>=n)
	{	
		
		for(q=0;q<300;q++)
		{
			if (temstr[p+q+k+2]=='#')	break;	
		}
	}

	if ((p+q-n)>500) 
	{
		DispStr_E(0,3,"erro",DISP_POSITION|DISP_CLRSCR);
		delay_and_wait_key( 10, EXIT_KEY_ALL, 0 );
		memset(buff,0,500);
		return ;
	}
	
	
	memcpy(buff,temstr+n,p+q+k-n);//memcpy(buff,temstr+n+i+2,q);

	return ;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
夜夜揉揉日日人人青青一国产精品| 成人av综合一区| 成人深夜视频在线观看| 欧美日韩亚洲不卡| 国产精品久久久久久久裸模| 亚洲中国最大av网站| 欧美日韩国产美| 91在线国产观看| 欧美tickle裸体挠脚心vk| 亚洲欧美色图小说| 国产精品一区免费在线观看| 欧美绝品在线观看成人午夜影视| 欧美韩国日本不卡| 国产一区二区三区四区五区美女 | 欧美妇女性影城| 中文字幕五月欧美| 国产大陆亚洲精品国产| 精品久久久影院| 蜜桃av一区二区三区电影| 欧美色综合网站| 亚洲精品成人a在线观看| 99精品国产一区二区三区不卡| 国产人妖乱国产精品人妖| 激情综合色综合久久综合| 欧美一区二区三级| 卡一卡二国产精品| 日韩欧美123| 国产在线精品一区二区夜色 | 日本伊人色综合网| 91麻豆精品国产综合久久久久久| 亚洲综合久久久| 欧美吞精做爰啪啪高潮| 亚洲国产精品久久久久婷婷884 | 夜夜嗨av一区二区三区中文字幕 | 欧美成人官网二区| 久久国产乱子精品免费女| 精品国产乱码久久久久久老虎| 久久精品国产一区二区三| 日韩丝袜美女视频| 久久电影网电视剧免费观看| 国产亚洲一本大道中文在线| 成人av电影免费观看| 亚洲免费在线视频一区 二区| 91美女精品福利| 亚洲一区二区三区自拍| 欧美一区二区三区在线看| 国内不卡的二区三区中文字幕| 日韩美女视频在线| 成人白浆超碰人人人人| 一区二区三区日韩欧美精品 | 久久久久9999亚洲精品| 粉嫩蜜臀av国产精品网站| 一区在线播放视频| 欧美系列日韩一区| 精品在线你懂的| 亚洲欧美日韩久久精品| 在线91免费看| 福利一区福利二区| 亚洲国产成人tv| 精品欧美一区二区久久 | 欧美老肥妇做.爰bbww| 久久国产精品无码网站| 综合分类小说区另类春色亚洲小说欧美| 成人精品gif动图一区| 亚洲一区免费视频| 久久噜噜亚洲综合| 欧美探花视频资源| 国产v日产∨综合v精品视频| 亚洲免费在线视频| 精品国产一区二区三区av性色| 91啪九色porn原创视频在线观看| 日韩国产在线观看| 成人免费在线视频观看| 日韩午夜激情电影| 色婷婷av一区二区三区大白胸| 美日韩一区二区三区| 亚洲日本在线天堂| 精品sm在线观看| 欧美无砖砖区免费| 成人免费视频网站在线观看| 麻豆91精品视频| 亚洲自拍与偷拍| 国产精品私人自拍| 精品久久久久久久久久久久久久久久久 | 亚洲女人的天堂| 国产午夜亚洲精品午夜鲁丝片 | 色综合久久中文字幕综合网| 经典三级视频一区| 日产精品久久久久久久性色| 亚洲免费视频成人| 国产色综合一区| 日韩精品自拍偷拍| 91精品国产综合久久精品性色| 色视频成人在线观看免| 成人午夜精品在线| 韩日精品视频一区| 久久精品国产99国产精品| 性做久久久久久免费观看欧美| 亚洲三级在线免费| 国产精品青草综合久久久久99| 欧美成人一区二区三区在线观看| 91官网在线免费观看| 99久久精品免费精品国产| 成人性视频免费网站| 国产精品资源网站| 国产一区二区三区四区在线观看 | 91亚洲精品久久久蜜桃| 国产iv一区二区三区| 国产麻豆精品theporn| 久久黄色级2电影| 六月丁香婷婷久久| 国产一区二区精品久久99| 久久99国产精品免费| 激情综合网天天干| 国产在线看一区| 国产69精品久久久久777| 国产99久久精品| 不卡一区二区中文字幕| 91丝袜美腿高跟国产极品老师 | 偷拍日韩校园综合在线| 亚洲综合网站在线观看| 亚洲国产精品精华液网站| 亚洲成人精品一区| 青娱乐精品在线视频| 男女视频一区二区| 国产乱码精品一区二区三区av | 国产成人a级片| 成人黄色777网| 色综合久久综合网97色综合| 日本韩国视频一区二区| 欧美日韩一区二区三区不卡| 欧美一区三区二区| 欧美不卡在线视频| 国产精品毛片高清在线完整版| 中文字幕一区三区| 亚洲18色成人| 狠狠狠色丁香婷婷综合久久五月| 成人免费高清在线观看| 欧美羞羞免费网站| 精品久久五月天| 亚洲色图视频网站| 蜜臀av亚洲一区中文字幕| 大胆欧美人体老妇| 欧美午夜理伦三级在线观看| 欧美videossexotv100| 国产精品私房写真福利视频| 一区二区三区加勒比av| 另类小说欧美激情| 91小视频在线| 欧美一级搡bbbb搡bbbb| 中文字幕欧美一区| 久久精品国产精品亚洲综合| 成人免费高清在线观看| 91精品免费在线观看| 国产精品素人一区二区| 日韩av在线发布| 97久久精品人人做人人爽| 欧美本精品男人aⅴ天堂| 亚洲欧美日韩国产综合| 韩国欧美国产一区| 欧美色图第一页| 中文字幕欧美日韩一区| 视频精品一区二区| 91麻豆国产在线观看| 久久免费精品国产久精品久久久久| 亚洲蜜臀av乱码久久精品| 狠狠色丁香婷婷综合久久片| 在线观看欧美精品| 国产精品久久久久久久裸模| 久久狠狠亚洲综合| 欧美日韩中文字幕一区| 国产精品乱人伦| 久久成人麻豆午夜电影| 欧美日韩在线综合| 国产精品欧美精品| 精久久久久久久久久久| 欧美一区二区三区在线观看| 亚洲精品免费在线| aaa国产一区| 国产精品天天看| 国产成人av电影在线| 日韩美女主播在线视频一区二区三区 | 久久天堂av综合合色蜜桃网 | 亚洲精品水蜜桃| 成人美女视频在线观看18| 亚洲精品在线三区| 天天免费综合色| 欧美日韩美少妇| 国产iv一区二区三区| 26uuu国产在线精品一区二区| 日韩成人精品视频| 欧美视频一区二区三区在线观看 | 国产成人精品免费在线| xf在线a精品一区二区视频网站| 全部av―极品视觉盛宴亚洲| 777xxx欧美| 麻豆精品一区二区av白丝在线| 欧美丰满美乳xxx高潮www| 日韩福利视频网| 精品久久久三级丝袜|