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

📄 common.c.bak

📁 手机点菜系统手机端,利用GPRS实现菜名上报
💻 BAK
📖 第 1 页 / 共 3 页
字号:
		if ( sss.qEvent==EXIT_KEY_F1 ) return -2;
		if ( sss.qEvent==EXIT_KEY_F2 ) return -3;
		if ( sss.qEvent==EXIT_KEY_F3 ) return -4;
		return -5;
	}
}

//**********************************mifare卡设置*******************************************
short test_input()
{
	//char ch,*cha;
	long ch;
	char msg[8];
	char really[13];
	int sin,i;
	short ret;
	
	clr_scr();
	i = 0;
	memcpy(really,0,strlen(really));
	memcpy(msg,0,strlen(msg));
	DispStr_CE(0,0,"输入:",DISP_CLRSCR|DISP_POSITION);
	DispStr_E(0,2,really,DISP_CLRLINE|DISP_5x7);
	//cha=ch;
	while(ch= delay_and_wait_key( 0, EXIT_KEY_ALL, 0 ))
	{	
		
		//memcpy(msg,0,sizeof(msg));
		switch (ch)
			{
			case EXIT_KEY_0:
				{
				sin = 0;
				ret = SUCCESSFUL;
				break;
				} 
			case EXIT_KEY_1:
				{
				sin = 1; 
				ret = SUCCESSFUL;
				break; 
				}
			case EXIT_KEY_2: 
				{
				sin = 2; 
				ret = SUCCESSFUL;
				break; 
				}
			case EXIT_KEY_3: 
				{
				sin = 3; 
				ret = SUCCESSFUL;
				break; 
				}
			case EXIT_KEY_4: 
				{
				sin = 4; 
				ret = SUCCESSFUL;
				break; 
				}
			case EXIT_KEY_5: 
				{
				sin = 5; 
				ret = SUCCESSFUL;
				break; 
				}
			case EXIT_KEY_6: 
				{
				sin = 6; 
				ret = SUCCESSFUL;
				break; 
				}
			case EXIT_KEY_7: 
				{
				sin = 7; 
				ret = SUCCESSFUL;
				break; 
				}
			case EXIT_KEY_8: 
				{
				sin = 8; 
				ret = SUCCESSFUL;
				break; 
				}
			case EXIT_KEY_9: 
				{
				sin = 9; 
				ret = SUCCESSFUL;
				break; 
				}
			case EXIT_KEY_F1:
				{
				memcpy(really,0,strlen(really));
				return FAILURE;
				}
			case EXIT_KEY_F3:
				{
				memcpy(really,0,strlen(really));
				memcpy(msg,0,strlen(msg));
				i=0;
				clr_scr();
				DispStr_CE(0,0,"输入:",DISP_CLRSCR|DISP_POSITION);
				ret = FAILURE;
				break;
				}
			case EXIT_KEY_ENTER:
				{
				return SUCCESSFUL;
				}
			default: ret = FAILURE; break;
			}
		if(i>=13)
		{
			i++;
			DispStr_CE(0,2,really,DISP_CLRLINE);
			DispStr_CE(0,4,"输入超过最大值!",DISP_CLRLINE);
			DispStr_CE(0,6,"请按F3重新输入",DISP_CLRLINE);
			ret = FAILURE;
		}
		if(ret==SUCCESSFUL)
		{
			//if(0==i++){ sprintf(msg, "%d", sin);DispStr_CE(0,2,msg,DISP_CLRLINE);continue;}
			
			sprintf(msg, "%d", sin);
			strcat(really,msg);
			DispStr_CE(0,2,really,DISP_CLRLINE);
			i++;
               		
        	}
	}
}
//*****************************************************************************************
//****************************************************
//功能:
//描述:
//输入:
//输出:
//返回:
//****************************************************
void mifare_operate()
{
	short ret ;
	int cPtr = 0;
	int lPtr = 0;
	ret = 0;
	

		ret = browse_menu(0,mifare_Menu,&cPtr,&lPtr );
		switch( ret )
		{
			case 0:
			    	select_balance();
				break;
			case 1: input_data();
				break;
			/*case 2: search_info(1);
				break;*/
			case 2: test_input();
				break;
			default:
				break;
			
		}
}

void select_balance()
{
	unsigned char rdata[1030];
	short ret ;
	
	sprintf(rdata,"%d",0);
	ret=read_sector( 1,rdata);
	if(!ret)
	{
		clr_scr();
		DispStr_CE(0,0,"你当前余额为:",DISP_POSITION|DISP_CLRLINE);
		sprintf(rdata,"%d元",(atoi(rdata)));
		DispStr_CE(0,2,rdata,DISP_POSITION|DISP_CLRLINE);
		delay_and_wait_key( 5, EXIT_KEY_ALL, 0 );
	}
}
int read_sector( int sec_num,unsigned char *rdata)
{
	unsigned char cntr, card_read_ok;
	unsigned char TempStatus, str[20];

	char str1[20],str2[20],str3[20];
	
	strcpy(str1,"卡接口错误!");
	strcpy(str2,"请在10秒内刷卡");
	strcpy(str3,"未读到合法卡!");
	
	if( InitMC530(TYPE_A_ISO14443)!=RCX_OK )
	{
		//MC530Off();
		DispStr_CE(0,3,str1,DISP_POSITION|DISP_CLRSCR);
		delay_and_wait_key( 5, EXIT_KEY_ALL, 0 );
		return -1;
	}
		
	DispStr_CE(0,0,str2,DISP_POSITION|DISP_CLRSCR);
		
	SPT_set(64);
	for ( card_read_ok=0,cntr=10; cntr&&!card_read_ok; )
	{
		if (!SPT_read())
		{
			cntr--;
			
			sprintf( str, "请在%d秒内刷卡", cntr );
						
			DispStr_CE(0,0,str,DISP_POSITION|DISP_CLRLINE);
			SPT_set(64);
  		}
  	
		TempStatus = MyCardAccessMultiBlocks( PICC_AUTHENT1A, PICC_ReadBlock, sec_num, 0, 3, rdata,NULL);
		if ( TempStatus==MI_OK )
		{
			card_read_ok = 1;
		}			
	}
	if ( !card_read_ok )
	{
		//MC530Off();
		DispStr_CE(0,3,str3,DISP_POSITION|DISP_CLRLINE);		
		delay_and_wait_key( 5, EXIT_KEY_ALL, 0 );
		return 1;
	}
	//MC530Off();
	return 0;
}

char MyCardAccessMultiBlocks(unsigned char auth_mode,unsigned char WR_mode,
                             unsigned char sector,unsigned char block,
                             unsigned char blockcnt,unsigned char* rdata,
                             unsigned char* wdata)
{
	char ret;
  	unsigned char ATQ[3];       //ATQ(2 bytes)
  	unsigned char PICCsnr[5];   //Serial number(4 bytes) 
  	unsigned char ATS[2];       //mifare1:0x08(1 byte)
  	unsigned char newauth;	    //need authentication again?

 	//check parameters
	ret = MI_OK;
	if( (auth_mode!=PICC_AUTHENT1A)&&(auth_mode!=PICC_AUTHENT1B) )
	{
		ret = RCX_ERROR_PARAM;
	}
	else if( (WR_mode!=PICC_ReadBlock)&&(WR_mode!=PICC_WriteBlock) )
	{
		ret = RCX_ERROR_PARAM;
	}
	else if( (sector>15)||(block>2)||((sector+(block+blockcnt-1)/3)>15) )
	{
		ret = RCX_ERROR_PARAM;
	}
	
	if( (WR_mode==PICC_ReadBlock)&&(rdata==NULL) )
	{
		ret = RCX_ERROR_PARAM;
	}
	else if( (WR_mode==PICC_WriteBlock)&&(wdata==NULL) )
	{
		ret = RCX_ERROR_PARAM;
	}
    	
    	newauth = 1;		//first authtication
    	while( (blockcnt>0)&&(ret==MI_OK) )
    	{
    		if(newauth==1)
    		{
    			ret = CardTypeARequest(PICC_REQALL,ATQ); //maybe Halt
    			if(ret!=MI_OK)
    			{
    				ret = CardTypeARequest(PICC_REQALL,ATQ);//maybe active//搜所活动的卡
    			}
    	    		if(ret==MI_OK)
    			{
   				ret = CardTypeAAnticollLevel1(PICCsnr);
   			}   	
   			if(ret==MI_OK)
    			{
    				ret = CardTypeASelectLevel1(PICCsnr,ATS);
    				if(ATS[0]!= 0x08)
    	    			{
    					ret = RCX_ERROR_CARDTYPE;
    				}
    			}  		 	
  			if(ret==MI_OK)
  			{
  				ret = CardMFCAuthKey(PICC_AUTHENT1A,PICCsnr,dummy_key,(4*sector+block));
 			}
 			newauth = 0;			
  		}
  		if(ret==MI_OK)	
 		{
 			if(WR_mode==PICC_ReadBlock)
 			{
 				ret = CardMFCRead16Bytes(4*sector+block,rdata);
 				rdata += 16;
 			}
 			else
 			{
 				ret = CardMFCWrite16Bytes(4*sector+block,wdata);
 				wdata += 16;
 			}
 			block++;
    			if(block>2)
    			{
    				sector++;
     				block = 0;
     				newauth = 1;	//new sector
     			}
    		}
  		blockcnt--;	
  	}
  		
	return ret;
}
int input_data()
{
	//BROWINFO	bi;
	GETSTR_PARAM gs;
	unsigned char dumpstr[25*8],str[20];
	int		x,y;
	int sub = 0;
	unsigned char rdata[1030];
	unsigned char fp_data[1030];
	char str1[20];
	char *s;
	int n=0;
	short ret ;
	
	clr_scr();
	sprintf( str, "%d", sub );
	gs.qx = 0;
	gs.qy = 0;
	gs.pPrompt = "请输入金额:";
	gs.sFont = 0;
	gs.alpha = 0;
	gs.nullEnable = 0;
	gs.csChar = '_';
	gs.pwChar = 0;
	gs.spChar = 0;
	gs.pStr = str;
	gs.maxNum = 5;
	gs.minNum = 1;
	gs.minValue = 0;
	gs.maxValue = 99999;
	gs.retNum = strlen(str);
	gs.qEvent = EXIT_KEY_F1;
	if ( huGetStr_E(&gs)<0 )
	{
		return 0;
	}
	sub = gs.retValue;
	//---------
	clr_scr();
	DispStr_CE(0,0,"你确定要扣除",DISP_POSITION|DISP_CLRLINE);
	sprintf(str1,"%d元吗?",sub);
	DispStr_CE(0,2,str1,DISP_POSITION|DISP_CLRLINE);
	if(!(ret = sure(2,4,"确定","取消")))
	{	
	read_sector( 1,rdata);
	n=atoi(rdata);//字符数组转换成整形
	if(n<sub)
	{
		return 0;
	}
	else
	{
		sprintf(fp_data,"%d",n-sub);
		sprintf(rdata,"%d",0);
		MyCardAccessMultiBlocks( PICC_AUTHENT1A, PICC_WriteBlock, 1, 0, 1, rdata,fp_data );
		//delay_and_wait_key( 2, EXIT_KEY_ALL, 0 );
		//read_sector( 1,rdata);
		clr_scr();
		DispStr_CE(0,0,"结账成功",DISP_POSITION|DISP_CLRLINE);
		delay_and_wait_key( 4, EXIT_KEY_ALL, 0 );
	}
	return 1;
	}
		//---------
}
//*****************************************************************************mifare卡设置end

/*
//--------------------------------------------------------------------------------------------
//函数名:  win_vccode_info
//函数功能:和上位机建立连接并获取信息,
//输入:
//输出:
//返回:
//----------------------------------------------------------------------------------------------
short win_vccode_info()
{
	short ret;
}
//-------------------------------------------------------------------------
*/

⌨️ 快捷键说明

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