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

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

?? prog_tax.c

?? 一款收款機C源代碼!因為是幾年前的代碼了
?? C
?? 第 1 頁 / 共 2 頁
字號:
	char	Str1[10][MAX_LCD_TEXT+1];
	WORD	r1=0,r2=0;
	char	func_ret=NG;
	char	result=0;
	char	idx = 0;
	char	*ptr;
	char	i;
	char	len;

	const	char	*Str2[10] = 
	{
		{"To Program Canadian GST Tax. "},
		{"To program Canadian PST1 Tax."},
		{"To program Canadian PST2 Tax."},
		{"To program Canadian PST3 Tax."},
		{"To Select whether the non-taxable limit $ amount is with GST or without GST tax for Canadian tax."},
		{"To select whether to active Tax-On-Tax setting for Canadian tax."}
	};


    Lcd_Send_Text_Buff_Str(BUF_ID_TL_TITLE, 1, Str_ProgTaxRateTaxVatGst[0], ALIGN_MID);
    Lcd_Disp_Text_Buff(BUF_ID_TL_TITLE);


    while(1)
    {
		for (i=0;i<6;i++)
		{
			memset(Str1[i], ' ', MAX_LCD_TEXT);	/*Clear the buffer first*/
			memcpy(Str1[i],Str_ProgTaxRateTaxVatGst[MAX_TAX_NUM*2+i],MAX_LCD_TEXT);
		}
		/*在此處來判斷方式,是為了在控制鎖轉動時,快速退出此函數,無需后面的刷新*/
		GetMainMode();
		if (MainMode != CurrMode)
			break;

		/*確認是顯示GST,還是NON GST*/
		if (Tax_Rate.Tax_Lmt_type == TAX_LMT_NO_GST)
			ptr = (char*)Str_GstNonGst[0];
		else
			ptr = (char*)Str_GstNonGst[1];
		len = strlen(ptr);
		if (len >= MAX_LCD_TEXT)
			len = MAX_LCD_TEXT;
		memcpy((char*)&Str1[4][MAX_LCD_TEXT-len],ptr,len);
		/* 確認是顯示TAX ON TAX /NO TAX ON TAX*/
		memcpy((char*)Str1[5],Str_Tax_On_Tax[Tax_Rate.Tax_On_Tax],MAX_LCD_TEXT);

		r1 = Menu_Select(Str1,Str2,GST_PRG_MENU_LEN1,idx,1,0,&result);

	    if (r1 == KD_ENTER)
	    {
			if (result>= GST_PRG_MENU_LEN1)
				continue;				/*選擇錯誤*/
	    	r2 = NG;
			if (result < MAX_TAX_NUM)		/*GST/PST1--4 preset*/
			{
				if (TaxRate_GstRateLmt_Set(result))/*Update the Rate and Limitation*/
					r2 = OK;
			}
			else if (result == 4)	/*program the TAX Limit*/
			{
				if (TaxRate_Gst_Lmt_Set())		/*GST system limitation*/
					r2 = OK;
			}
			else if (result == 5)	/*Program the TAX ON TAX or not*/
			{
				if (TaxRate_Gst_TaxOnTax_Set())
					r2 = OK;
			}

			if(r2 == OK)			/*用戶設定了正確的參數等*/
			{
				idx = (result + 1 ) % GST_PRG_MENU_LEN1;	/*main menu for GST program is 6*/
			}
			else
			{
				Bell_Special_Alarm(0);		/*輸入非法*/				
							   /*Update the idx step with last cursor postion6*/
				idx = (result) % GST_PRG_MENU_LEN1;	
			}
		}			
		else if (r1 == KD_CANCEL)
		{
			break;
		}
	}
}

/*******************************************************************************
*	用戶選擇更新USA/VAT Rate
*	輸入:	idx -- TAX/VAT index ( ○-- MAX_TAX_NUM -1)
*	功能:
*			根據idx,提示用戶輸入相關的Rate, 然后根據輸入的Rate更新參數
*	return	: BOOL -- true / false
*******************************************************************************/
BOOL	TaxRate_SetUsaVatRateUpdate(char	idx)
{
	char	i;
	long	rate;
	char	*ptr;
	BOOL 	r = false;
	char	str[5][MAX_LCD_TEXT+1];

	for (i = 0; i < 4; i ++)
		memcpy(str[i],(char*)Str_USAVATRATEPRG_PROMPT[i],MAX_LCD_TEXT);
		
	if (sysflag->Tax_System == USA_TAXTYPE)
		ptr = (char*)Str_TaxVat[0];				/*USA dispaly the TAXx string*/
	else
		ptr = (char*)Str_TaxVat[1];				/*VAT display the VATx string*/
	memcpy(str[1],ptr,5);
	str[1][4] = idx + '1';
	if (Lcd_GetTenKey(str,4, 5, 99999,&rate) == OK)/*4行提示,輸入5位數,返回在rate*/
	{
		Tax_Rate.rate[idx].rate = rate;			/*Update the Rate*/
		r = true;
	}
	return(r);
}
/*------------------------------------------------------------------------------
* 	Program the TAX Rate of USA/VAT system
*	For USA tax system, only consider the rate, without the taxable function
*	For VAT tax system, the rate only also.
*-----------------------------------------------------------------------------*/
void	TaxRate_SetUsaVat(void)
{
	BYTE	i,r = 0;
	BYTE	key = 0;
	BYTE	idx = 0;
	BYTE	Base = 0;
	BYTE	loop = true;
	BYTE	result = 0;
	BOOL	Flag_Reflush = true;
	char	Lcd_Text_Buf[7][MAX_LCD_TEXT+1];
	const   char	*Str_Prompt[10] = 
	{
		{"  "},
		{"  "},
		{"  "},
		{"  "},
		{"  "},
		{"  "},
		{"  "},
		{"  "},
		{"  "},
		{"  "}
	};	
/*	顯示Title  */
//    Lcd_Send_Text_Buff_Str(BUF_ID_TL_TITLE, 1, Str_ProgTaxRate[0], ALIGN_MID);
    Lcd_Disp_Text_Buff(BUF_ID_TL_TITLE);
    
    while(loop)
    {
		/*在此處來判斷方式,是為了在控制鎖轉動時,快速退出此函數,無需后面的刷新*/
		GetMainMode();
		if (MainMode != CurrMode)
		{
			return;
		}

		if(sysflag->Tax_System == USA_TAXTYPE)		/*USA tax system*/
			Base = 0;
		else if(sysflag->Tax_System == VAT_TAXTYPE)/*VAT tax system*/
			Base = MAX_TAX_NUM;
		else										/*非法數據*/
			return;
		/*	先Copy需要顯示的菜單內容到緩沖區 -- 純文本區域*/
		for (i=0;i<MAX_TAX_NUM;i++)
		{
			memcpy(Lcd_Text_Buf[i],(char*)Str_ProgTaxRateTaxVatGst[Base+i],MAX_LCD_TEXT);
		}

		/*顯示稅率,如果稅率為0,則不顯示. 如果不為0,則先擦除前面的SET UP字樣,
		 *然后顯示相對應的稅率
		 */
		for (i=0;i<MAX_TAX_NUM;i++)
		{
			char	temp[20];
			if (Tax_Rate.rate[i].rate != 0)		/*Rate 不為0,則需要顯示Rate*/
			{									/*Clear the SET UP characters*/
				memset((char*)&Lcd_Text_Buf[i][5],' ', MAX_LCD_TEXT-5);	
				sprintf(temp,"%.5l",Tax_Rate.rate[i].rate);	/*Change to ASCII*/
				temp[6] = '%';
				temp[5] = temp[4];
				temp[4] = temp[3];
				temp[3] = temp[2];
				temp[2] = '.';
				memcpy((char*)&Lcd_Text_Buf[i][MAX_LCD_TEXT-7], temp, 7);
			}
		}

		/*每次都需要重新刷新*/
		r = Menu_Select(Lcd_Text_Buf,Str_Prompt,MAX_TAX_NUM,idx,1,0,&result);
		switch(r)
		{
		case	KD_ENTER:
            if (TaxRate_SetUsaVatRateUpdate(result))	/*Ascii input change to Binary*/
            {
            	idx = ( result + 1 ) % MAX_TAX_NUM;  /*編程步驟的Index*/
            }
            else
            {
            	Bell_Special_Alarm(0);		/*輸入非法*/
            	idx = result % MAX_TAX_NUM;  
            }
            break;
        case	KD_CANCEL:				/*用戶取消輸入*/
        case	CTRL_LOCK_CHG:			/*控制鎖取消*/
        	loop = false;
        	break;
        default:
			Bell_Special_Alarm(0);		/*輸入非法*/
			break;
		}
	}
}
/*------------------------------------------------------------------------------
*	顯示文本在文本顯示區域,
*	此函數主要用在一些提示場合,比如需要在屏幕上顯示一串提示符,然后在底部要求用戶
*	輸入等場合.
*	由于此函數把屏幕內容已經清除,所以在函數返回以后需要再次刷新屏幕方可.
*	
*	char	**str -- 需要顯示的字符串指針 -- 二維數組
*	char	line  -- 需要顯示的字符串的行數
*
*	此處有一點需要考慮的是: 函數可以考慮更加強大一些,即自動判斷行數,通過判斷單詞
*	結束來決定. (以后再考慮 -- 這樣的話,翻譯成其它語言的時候,就比較容易一些
*-----------------------------------------------------------------------------*/
void	Lcd_DispNormalText(const char str[][MAX_LCD_TEXT+1],char line)
{
	char	r;
	
	Rst_Lcd_Text();			/*Clear the LCD buffer*/
	for (r = 0;r < line; r ++)
	{						/*Send to buffer first*/
		Lcd_Send_Text_Buff_Str(BUF_ID_LCD_TEXT, 1,str[r],ALIGN_LEFT);	
		Lcd_Disp_Text_Buff(BUF_ID_LCD_TEXT);	/*Send it to LCD display*/
	}
}

/*------------------------------------------------------------------------------
*	屏幕上顯示一串提示字符,然后接受用戶數據的輸入
*	Input:
*			char	**Str_Prompt -- 需要提示用戶的提示符指針
*			char	MaxCntr	 -- 最多允許輸入的數字 --不理會小數點的輸入
*			long	MaxNum  -- 最大的允許輸入的數值
*			
*	Output:
*			long 	*ret		 -- 用戶輸入的數字(小數和整數部分)
*	Return:
*			OK/NG
*
*-----------------------------------------------------------------------------*/
char Lcd_GetTenKey(const char **Str,char line,char MaxCntr,long MaxNum,long *ret)
{
	char	rtn = NG;       //程序執行結果判斷
	char	loop = true;    //循環結束控制判斷
	char	flag;
    
    Lcd_DispNormalText(Str,line);   /*display the message*/
	while(loop)
	{
		if (GetIn() == NG)
			continue;
		GetMainMode();
		if(MainMode != CurrMode)		/* The control lock is changed */
		{
			rtn = NG;
			loop = false;
			break;
		}
		switch(InCmd)
		{
			case	KD_ENTER:			/*確認輸入,判斷輸入是否合法*/
				if((numcnt == 0) ||(numcnt > MaxCntr) || (lnum> MaxNum))
				{
					errorType(ERR_DIGIT_ILLEGAL);
					break;
				}
				*ret = lnum;			/*保存需要返回的參數&*/
				rtn = OK;					/*正常返回*/
				loop = false;
				break;
			case	KD_CANCEL:
				rtn = NG;					/*異常返回 -- 用戶放棄輸入*/
				loop = false;
				break;
			case	KD_CLEAR:			/*Clear key, 繼續輸入*/
				break;
			default:
				break;
		}
	}
	return(rtn);
}


/*Reserved function*/
void	Bell_Special_Alarm(char	flag)
{
	flag = flag+1;
}


/*----------------------------------------------------------------------------*
    函數功能
        操作menu
    輸入參數
        **Str_Menu: 需要顯示的菜單
        **Str_Prompt: 需要顯示的提示符內容
        : 當前操作的步驟(對應當前需要反顯的行數), 返回時, 也更新當前操作的步驟.
        Menu_Line: 菜單長度
        FirstLine: 起始行數(1~48)
        mode:  0-整屏刷新 1 -- 單行刷新
	輸出參數:
    	*result	-- 光標當前反顯行的行號(0--Menu_Line -1)
    返回參數:
    KD_ENTER	-- 用戶按下ENTER鍵盤  --- *result中數據有效
    KD_CANCEL   -- 用戶按下CANCEL鍵盤 --- *result中數據無效
    
    考慮把此函數做的更加完善,上層程序無需判斷是否需要全屏或者單行刷新,
    在此函數中根據傳下來的**Str_Menu 和 Text_Lcd.text內容來確定 .......
*----------------------------------------------------------------------------*/
WORD	Menu_Select(const char **Str_Menu, const char *Str_Prompt[],BYTE	Menu_Line,
					BYTE CurrLine,BYTE FirstLine, BYTE mode, BYTE *result)
{
	BOOL loop = true;
	WORD	r = KD_CANCEL;
	
    if(mode == 0)			/*全屏刷新*/
    {
        Rst_Lcd_Text();     				/* Reset the text */
        Insert_Full_Text_List(Str_Menu, Menu_Line, FirstLine);
        if ((CurrLine < Text_Lcd.EndLine) && (CurrLine >=Text_Lcd.FirstLine))
            Text_Lcd.CurrLine = CurrLine + Text_Lcd.FirstLine;
        Lcd_Reflush_List(0);
    }
    else					/* 單行刷新*/
    {
        if(CurrLine < (Text_Lcd.EndLine-Text_Lcd.FirstLine))
            Text_Lcd.CurrLine = CurrLine +Text_Lcd.FirstLine;
        memcpy(Text_Lcd.text[Text_Lcd.LastLine], *Str_Menu+(Text_Lcd.LastLine)*MAX_TEXT, MAX_TEXT);	

        Lcd_Reflush_List(1);
    }
    
    while(loop)
    {
		/*暫時只顯示兩行字符即可, 以后可以考慮滾動顯示*/    	
		Lcd_Disp_Str_Btn(BUF_ID_TL_INPUT,Str_Prompt[Text_Lcd.CurrLine]);

        if( GetIn()==NG)
            continue;
        GetMainMode();    
        if (MainMode != CurrMode)		/*Control Lock changed*/
        {
        	r = CTRL_LOCK_CHG;
        	break;
        }
        
        switch(InCmd)
        {
             
            case KD_PAGE_DOWN:
            case KD_PAGE_UP:
            case KD_DOWN:
            case KD_UP:
                Lcd_Reflush_List(Do_Menu_Roll(InCmd));
                break;
                
            case KD_CANCEL:
                r = KD_CANCEL;			/*函數返回參數*/
                loop = false;			/*退出While循環*/
                break;

            case    KD_ENTER:           /*Enter for accept the input index*/
                *result = Text_Lcd.CurrLine-Text_Lcd.FirstLine;
                r = KD_ENTER;			/*函數返回參數*/
                loop = false;			/*退出While循環*/
                break;

            default: 
                bellcnt = 0x10;
                break;
        }
    }
    return(r);
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲愉拍自拍另类高清精品| 亚洲精品五月天| 91麻豆精品国产| 欧美亚洲一区二区三区四区| 色综合中文综合网| 色成年激情久久综合| 丁香另类激情小说| 国产69精品久久久久777| 国产精品自拍网站| 国产mv日韩mv欧美| 91免费版在线| 欧美三级午夜理伦三级中视频| 在线观看免费成人| 欧美日韩国产综合一区二区| 777色狠狠一区二区三区| 日韩欧美国产一区在线观看| 精品国产成人在线影院| 国产欧美一区二区三区在线看蜜臀| 久久久久久久久岛国免费| 国产精品久久久久久久久免费桃花| 亚洲欧美二区三区| 亚洲国产欧美另类丝袜| 日本aⅴ亚洲精品中文乱码| 婷婷久久综合九色综合伊人色| 日韩精品免费视频人成| 国产在线精品免费av| 国产mv日韩mv欧美| 欧美性一二三区| 亚洲精品在线三区| 亚洲视频网在线直播| 亚洲成a人v欧美综合天堂| 精东粉嫩av免费一区二区三区| 国产高清久久久久| 99精品欧美一区二区三区小说 | 国产精品热久久久久夜色精品三区| 中文字幕一区二区三区四区| 亚洲影院在线观看| 国产精品综合一区二区| 色妞www精品视频| 欧美v亚洲v综合ⅴ国产v| 中文字幕成人av| 亚洲国产美国国产综合一区二区| 老司机午夜精品| 91小视频在线| 欧美大片顶级少妇| 亚洲视频电影在线| 亚洲国产aⅴ成人精品无吗| 韩日欧美一区二区三区| 在线中文字幕不卡| 国产亚洲一区二区在线观看| 亚洲精品国产高清久久伦理二区| 麻豆久久久久久久| 久久综合九色综合97婷婷女人 | 欧美亚一区二区| 久久精品视频在线免费观看| 亚洲综合图片区| 成人午夜av影视| 欧美不卡一区二区三区| 一区二区免费看| 成人av在线网站| 一区二区三区在线观看欧美 | 国产婷婷色一区二区三区四区| 久久久国产精品午夜一区ai换脸| 一区二区三区蜜桃| av在线一区二区| 亚洲女子a中天字幕| 欧美精品一区二区久久久| 日本少妇一区二区| 久久久久久久久99精品| 99精品偷自拍| 日日夜夜一区二区| 久久久国产精品午夜一区ai换脸| 成人午夜短视频| 香蕉av福利精品导航 | 欧美三区免费完整视频在线观看| 一区二区三区中文在线| 色综合久久中文字幕综合网| 国产精品免费看片| 国产嫩草影院久久久久| 91网站视频在线观看| 一区二区三区欧美激情| 3d成人动漫网站| 国产·精品毛片| 亚洲欧洲精品一区二区三区| 91电影在线观看| 日韩av高清在线观看| 日韩欧美的一区二区| 国模大尺度一区二区三区| 日韩美女视频一区| 日韩欧美中文字幕制服| 成人免费观看男女羞羞视频| 日韩高清欧美激情| 国产精品日韩精品欧美在线| 3atv一区二区三区| 91蝌蚪porny| 久久不见久久见免费视频1| 亚洲欧洲成人自拍| xvideos.蜜桃一区二区| 日本久久电影网| 国产精品一区二区久久精品爱涩 | 欧美日韩免费一区二区三区 | 亚洲动漫第一页| 国产精品久久久久久久裸模| 欧美一区二区在线视频| 91在线视频免费观看| 国产综合色产在线精品| 亚洲一区在线电影| 久久久久久久久99精品| 欧美日韩成人激情| av在线播放成人| 青青国产91久久久久久| 中文av一区特黄| 精品国产乱码久久久久久浪潮| 99re亚洲国产精品| 日本aⅴ亚洲精品中文乱码| 亚洲欧美日韩系列| 综合亚洲深深色噜噜狠狠网站| 久久精品一区蜜桃臀影院| 欧美大片拔萝卜| 日韩女优av电影| 欧美一区二区三区爱爱| 911精品国产一区二区在线| 在线观看视频欧美| 91麻豆高清视频| 国产裸体歌舞团一区二区| 午夜成人免费电影| 亚洲欧美视频在线观看| 国产色产综合色产在线视频| 久久久久久毛片| 555www色欧美视频| 91麻豆免费观看| 色拍拍在线精品视频8848| 成人爽a毛片一区二区免费| 精品中文字幕一区二区| 亚洲国产精品久久一线不卡| 亚洲一区二区欧美日韩| 午夜精品福利一区二区蜜股av| 亚洲欧洲日产国码二区| 亚洲视频1区2区| 国产精品入口麻豆九色| 亚洲欧美在线视频观看| 久久综合久久综合亚洲| 国产婷婷色一区二区三区 | 91欧美激情一区二区三区成人| av欧美精品.com| 色综合久久久久| 欧美日韩在线播放三区| 欧美亚洲愉拍一区二区| 色狠狠桃花综合| 99久久精品国产导航| 99久久国产综合精品女不卡| 国产成人亚洲精品青草天美| 久久99这里只有精品| 免费看精品久久片| 天堂成人国产精品一区| 狠狠色丁香婷婷综合久久片| 国产在线精品一区二区不卡了| 国产69精品久久99不卡| 欧美无乱码久久久免费午夜一区 | 精品欧美一区二区三区精品久久| 久久蜜桃av一区二区天堂 | 亚洲欧美日韩久久精品| 首页国产欧美久久| 另类欧美日韩国产在线| 国产高清视频一区| 成人精品在线视频观看| 日本高清无吗v一区| 欧美三级午夜理伦三级中视频| 欧美大度的电影原声| 亚洲国产激情av| 亚洲精品乱码久久久久久久久| 亚洲一区二区三区美女| 青青草国产成人av片免费| 亚洲国产精品欧美一二99| 国产揄拍国内精品对白| 国产美女久久久久| 99久久国产综合精品女不卡| 欧美亚洲国产bt| 日韩欧美国产精品| 国产精品入口麻豆原神| 国产精品丝袜一区| 国产精品日日摸夜夜摸av| 亚洲综合色视频| 亚洲午夜精品一区二区三区他趣| 激情综合五月天| aaa亚洲精品一二三区| 欧美人牲a欧美精品| 国产欧美综合色| 偷拍亚洲欧洲综合| 国内精品久久久久影院色| 欧美色视频在线| 国产片一区二区| 另类的小说在线视频另类成人小视频在线 | 久色婷婷小香蕉久久| 狠狠狠色丁香婷婷综合久久五月| 日本久久电影网| 日韩视频免费直播| 国产日韩欧美a| 亚洲视频资源在线| 国产一区二区影院|