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

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

?? descinput.c

?? 一款收款機C源代碼!因為是幾年前的代碼了
?? C
?? 第 1 頁 / 共 2 頁
字號:
*       desc_len:  允許輸入的最大字符長度. 
*         注意, 當 mode == YES 時, 字符串的最后一個字節用作是否整行Bold的標志
*       mode:     2  --- 按鍵名稱的輸入
*                 1  --- 允許在輸入描述符同時設定字符的格式(是否為雙寬).
*                 0  --- 在輸入描述符同時不能選擇字符格式的設定.
*   當前暫時只支持一種輸入方式, 即直接輸入描述符, 沒有代碼選擇方式.
*   輸入的同時,也會顯示輸入結果,
*----------------------------------------------------------------------------*/
byte Get_Desc(byte *desc_str, byte desc_len, byte mode)
{
    byte bak_str[MAX_DESC_EX_LEN];    /* Can support the max description length */
	byte caps_flag = 0;		/* The capital letter input flag:
									1: Small letter input mode (Default)
									0: Capital letter input mode
									*/
    byte Symbole_flag = 0;   /*1-Symbole / 0-normal*/
    byte cch1,cch2;  // 當前輸入的最近的描述符. 主要考慮到控制字符的干擾
    word key;        // 當前按鍵的邏輯代碼輸入
    byte count;      // 當前輸入的字符個數.
    byte BOLD;       //設置是否需要支持整行雙寬 
    byte DB_Mode;    //設置當前字體是否為雙寬
	byte idx = 0;
    BOOL loop = TRUE;

    //顯示當前的操作界面
    Bak_Ts_Key_Tab = Ts_Key_Tab;
    Bak_Ts_Key_Table_Size = Ts_Key_Table_Size;
    Ts_Key_Tab = Desc_Input_KeyTab;
    Ts_Key_Table_Size = Desc_Input_Key_Size;
    Lcd_Desc_Input_Layout(mode, 0);

    memset(bak_str, 0, MAX_DESC_EX_LEN);
    cch1 = 0;
    cch2 = 0;
	key = KD_NULL;
    count=0;
    BOLD = NRM_FONT;
    DB_Mode = 0;
    
    if(mode == 2)//保留最后一個字節作為BOLD 的存放空間
        desc_len -=1;

    while(Key_Poll_Chk() != TRUE);//等待第一個按鍵按下
    while (loop)
    {
//   	 if(count == 0)
//            progflag = 0;
//        else
//      	    progflag = 1;
        
        //顯示輸入的字符串
        Lcd_Disp_Text_btn(BUF_ID_TL_INPUT, bak_str,count,MAX_TEXT, BTN_DFT_FONT, ALIGN_RIGHT);
        if(mode == 2)//需要顯示按鍵效果
        {
            memset(Input_Btn.desc, 0x20, MAX_BTN_DESC_LEN+1);
            memcpy(Input_Btn.desc, bak_str,count);
            Input_Btn.desc[MAX_BTN_DESC_LEN] = BOLD;
            Lcd_Draw_Button(Input_Btn);
        }
        
        key = GetKey();
        
        GetMainMode();//檢測控制鎖的位置
        if(GetMainMode() != CurrMode)
        {
            loop = FALSE;
            break;
        }

        switch( key )
        {
            case DS_CHAR://符號鍵輸入
                key = Check_Key(Ts_Key.curr_logi,RIGHT);//取當前代碼的邏輯輸入值
                if(key >= MAX_LAYOUT_KEY) 
                    continue;
                cch2 = cch1;
                cch1 = code[key + (Symbole_flag*2+caps_flag)*MAX_LAYOUT_KEY];
                if(cch1 == 0xff)
                {
                    cch1 = cch2;
                    continue;
                }
                if(count + DB_Mode < desc_len)
                {
                    if(DB_Mode)
                        bak_str[count++] = DB_BOLD_FONT;
                    bak_str[count++] = cch1;
                }
                break;
			case KD_CAP_SHIFT:
                caps_flag = (caps_flag+1)%2;
                Lcd_Desc_Input_Layout(mode, Symbole_flag*2+caps_flag+1);
                break;
            case KD_SYMBOLE:
                Symbole_flag = (Symbole_flag+1)%2;
                Lcd_Desc_Input_Layout(mode, Symbole_flag*2+caps_flag+1);
                break;
            case KD_BACK_SPACE:
                if(count > 0)
                {
                    count--;
                    if((count > 0)&&(bak_str[count-1] == DB_BOLD_FONT))
                        count--;
                }
                break;

            case KD_CANCEL:
                if(count > 0)
                    count = 0;
                else
                {
                    Lcd_Res_Pop_Text();
                    InCmd = KD_ENTER;
                    progflag = 0;
                    return NG;
                }
                break;

            case KD_DB_WIDTH:
                DB_Mode = (DB_Mode+1)%2;
                break;

            case KD_LARGE_FONT:
                if(mode == 0)
                    break;
                BOLD = (BOLD +1)%2;
                break;

            case KD_ENTER:
                if(count >0)
                {
                    if(mode != 1)
                    {
                        memset(desc_str, 0x20, desc_len);
                        memcpy(desc_str, bak_str, count);
                        if(mode != 0)
                            desc_str[desc_len] = BOLD_FONT;
                    }
                    else//mode == 1
                    {
                        byte tmp_i;
                        for(tmp_i = 0; tmp_i < count; tmp_i++)
                        {
                            if(bak_str[tmp_i] <0x20)//有控制字符輸入
                            {
//                                if(BOLD) 
//                                    desc_str[2*tmp_i] = DB_HTWDT_PRN;
//                                else     
                                    desc_str[2*tmp_i] = DB_WIDTH_PRN;
                                desc_str[2*tmp_i+1] = bak_str[tmp_i+1];
                                tmp_i++;
                                desc_str[2*tmp_i] = DB_WIDTH_PRN;
                                desc_str[2*tmp_i+1] = DB_WIDTH_PRN;
                            }
                            else
                            {
//                                if(BOLD) 
//                                    desc_str[2*tmp_i] = DB_HEIGT_PRN;
//                                else     
                                    desc_str[2*tmp_i] = NM_FONT_PRN;
                                desc_str[2*tmp_i+1] = bak_str[tmp_i];
                            }
                        }
                    }
                }
                Lcd_Res_Pop_Text();
                InCmd = KD_ENTER;
//                progflag = 1;
                return OK;

          #ifdef SCANNER          /* Support the scanner function */
            case SPLU:
          #endif /* End SCANNER */
            case KD_PAGE_UP:
            case KD_PAGE_DOWN:
            case KD_UP:
            case KD_DOWN:    
                loop = FALSE;
                break;
            default:
                break;
        }
    } // End while
    Lcd_Res_Pop_Text();
    progflag = 0;
    InCmd = KD_NULL;
    return NG;
} 


/*------------------------------------------------------------------*
 *					Calculate the description length
 *------------------------------------------------------------------*/
byte Get_Desc_Len(byte *disp_str, byte disp_len)
{
	byte i;

	i = disp_len;
   disp_str += disp_len-1;
   while((*disp_str == ' ') || (*disp_str == DB_WIDTH_PRN))
   {
   	disp_str --;
      i --;
      if (i == 0)
         break;
   }
   return (i);
}
#define	PRN_DBWD_FREE_BYTE			0xff			// 雙寬屬性后續字節為空.

/************************************************************
		The next sentences is create by Jiang WangMing
************************************************************/
// Note: In this funciton not consider of the disp_len is 0
byte Get_Desc_Len_Ex(byte *disp_str, byte disp_len, byte mode)
{
	byte	i;
	byte	db_wid_flag;		/* Double width flag */

	if (mode == NO)
	{
		return (Get_Desc_Len(disp_str, disp_len));
	}
	else
	{
		i = disp_len;
		disp_str += 2*disp_len - 1;
		db_wid_flag = 0;
		while(TRUE)
		{
			if((*disp_str == PRN_DBWD_FREE_BYTE) && (!db_wid_flag))		/* The double width */
			{
				db_wid_flag = 1;
				disp_str -= 2;
			}
			else if(*disp_str == ' ')
			{
				if(db_wid_flag)
					i -= 2;
				else
					i -= 1;
				db_wid_flag = 0;
				disp_str -= 2;
				if(i == 0)
					break;
			}
			else
			{
				break;
			}
		}
		return (i);
	}
}
/***********************************************************/


/*-----------------------------------------------------------------------------*
 *                Display the description to the screen,                       *
 *                   only display the number to the VFD.                       *
 *    Note: This function is especial for the description's format is sepecial *
 *          The description's format has no end tag, the description is append *
 *             with '0'.                                                       *
 *-----------------------------------------------------------------------------*/
void Disp_Desc_Len(byte *disp_str, byte disp_len, byte mode)
{
   byte len;
	byte	i;

	if(mode == NO)
	{
	   len = Get_Desc_Len_Ex(disp_str, disp_len, mode);
		if(len > MAX_LCD_NUM-3)		// 保留三個空間作為代碼輸入時候的顯示
			len = MAX_LCD_NUM-3;
		for(i = 0; i < len; i ++)
		{
			Insert_Char(disp_str[i], i);
		}
	}
	else
	{
		len = Get_Desc_Len_Ex(disp_str, disp_len, mode);
		disp_Char_Str(Disp_Desc_Length, 0);
		Insert_Num(len/10, 14);
		Insert_Num(len%10, 15);
	}
}

///////////////////////////////////////////////////////////////////////////////
// Descript: 	計算字符串的打印寬度,以普通字體為單位,此字符串符合打印的標準格式.
// In Param:	*str, maxLen -- 字符串的最大長度(注: 不包含格式字符的長度).
// Out Param:	void
// Return:		字符串的打印寬度.
///////////////////////////////////////////////////////////////////////////////
byte Prn_CalcuWidth(const byte *str, byte maxLen)
{
	byte width = 0;
	byte i;

	for (i=0; i<maxLen; i++)
	{
		switch (*str++)
		{
		case NM_FONT_PRN:	if (*str++ == 0)	return width;	width++;	break;
		case DB_HEIGT_PRN:	if (*str++ == 0)	return width;	width++;	break;
		case DB_WIDTH_PRN:	if (*str++ == 0)	return width;	width+=2;	break;
		case DB_HTWDT_PRN:	if (*str++ == 0)	return width;	width+=2;	break;
		case PRN_DBWD_FREE_BYTE: str++; break;
		default:		                        return width;
		}
	}
	return width;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本不卡不码高清免费观看| 日韩一区日韩二区| 91看片淫黄大片一级| 国产麻豆视频一区| 国产一区欧美日韩| 国产真实乱偷精品视频免| 国产一区二区按摩在线观看| 极品美女销魂一区二区三区| 黄色小说综合网站| 国产美女娇喘av呻吟久久| 国产盗摄一区二区| 丁香婷婷综合激情五月色| 懂色一区二区三区免费观看| 99久久精品免费看国产| 色婷婷久久综合| 欧美网站大全在线观看| 9191久久久久久久久久久| 日韩区在线观看| 国产日韩欧美精品电影三级在线 | 亚洲私人黄色宅男| 中文字幕一区二区三区蜜月| 日韩毛片视频在线看| 亚洲最快最全在线视频| 亚洲va中文字幕| 久久国产精品72免费观看| 国产乱一区二区| 91在线高清观看| 在线成人午夜影院| 久久久久久久国产精品影院| 国产精品不卡在线观看| 亚洲午夜精品在线| 国内精品写真在线观看| 99九九99九九九视频精品| 制服丝袜一区二区三区| 久久久久久影视| 亚洲综合男人的天堂| 麻豆国产精品官网| jlzzjlzz亚洲日本少妇| 欧美乱妇15p| 中文成人av在线| 天天综合色天天| 成人动漫一区二区| 日韩视频一区二区三区在线播放 | 丰满少妇在线播放bd日韩电影| 91视频一区二区三区| 欧美理论电影在线| 国产精品久久午夜夜伦鲁鲁| 日韩在线一二三区| www.欧美日韩| 久久影院午夜论| 亚洲国产综合视频在线观看| 成人综合婷婷国产精品久久免费| 欧美日韩三级视频| 国产精品伦一区二区三级视频| 午夜久久久久久久久| 丁香激情综合五月| 精品99一区二区三区| 亚洲国产中文字幕| 97久久超碰国产精品| 久久毛片高清国产| 免费美女久久99| 在线电影一区二区三区| 亚洲精品国产一区二区精华液 | 中文字幕免费不卡在线| 久久机这里只有精品| 欧美美女一区二区三区| 亚洲免费av观看| av一二三不卡影片| 日本一区二区三区电影| 国产综合色视频| 精品国产乱码久久久久久闺蜜| 亚洲成人资源网| 欧美日韩亚洲综合在线 | 欧美国产欧美综合| 国产大陆亚洲精品国产| 精品国产免费一区二区三区香蕉| 亚洲va韩国va欧美va| 91成人网在线| 亚洲精品视频观看| 欧美专区亚洲专区| 亚洲欧美视频一区| 日本电影亚洲天堂一区| 亚洲精品成人精品456| 91免费在线看| 亚洲精品视频在线看| 91久久精品一区二区三| 亚洲一区欧美一区| 欧美丰满美乳xxx高潮www| 午夜电影网一区| 日韩一区二区三区电影 | 精品国产麻豆免费人成网站| 久久国产免费看| 久久久久久亚洲综合| 成人网页在线观看| 国产精品国产精品国产专区不蜜| 成人av网站在线观看| 一区二区三区视频在线观看| 欧美久久一区二区| 美女一区二区三区在线观看| 国产婷婷一区二区| 91美女蜜桃在线| 视频一区视频二区中文| 久久免费电影网| 99久久综合狠狠综合久久| 亚洲一区二区三区免费视频| 日韩欧美不卡在线观看视频| 国产高清成人在线| 亚洲综合免费观看高清完整版在线| 欧美精品aⅴ在线视频| 国产精一区二区三区| 一区二区三区国产豹纹内裤在线| 欧美一区二区视频观看视频| 国产福利一区在线| 亚洲一区av在线| 精品久久久久一区二区国产| 99久久久久免费精品国产 | 久久国产视频网| 国产日韩欧美一区二区三区综合| 欧洲亚洲国产日韩| 国产一区美女在线| 午夜精品成人在线视频| 中文字幕在线不卡视频| 精品少妇一区二区三区视频免付费| 成人av电影观看| 久久精品久久久精品美女| 一区二区三区欧美视频| 久久精品视频免费| 777xxx欧美| 欧洲亚洲国产日韩| av电影天堂一区二区在线| 久久9热精品视频| 亚洲一区在线观看免费观看电影高清 | 2023国产一二三区日本精品2022| 色综合av在线| 成人福利视频网站| 国产激情一区二区三区桃花岛亚洲| 日韩激情在线观看| 亚洲综合丝袜美腿| 亚洲免费大片在线观看| 欧美激情资源网| 精品少妇一区二区三区日产乱码 | 日韩一区二区三区三四区视频在线观看| 懂色av中文一区二区三区 | 国产成人精品亚洲日本在线桃色| 丝袜亚洲另类丝袜在线| 亚洲一区二区三区中文字幕在线| 亚洲欧洲日产国产综合网| 久久九九影视网| 久久先锋影音av| 精品久久久久久久久久久久久久久久久 | 天天av天天翘天天综合网| 一区二区三区在线观看视频| 亚洲人成网站影音先锋播放| 国产精品女主播av| 亚洲少妇中出一区| 亚洲视频一区在线观看| 国产精品国产精品国产专区不蜜| 中文一区二区在线观看| 国产蜜臀97一区二区三区| 欧美国产国产综合| 中文无字幕一区二区三区| 欧美国产成人精品| 亚洲欧美偷拍另类a∨色屁股| 亚洲欧美日韩久久| 一区二区三区在线免费观看| 亚洲韩国精品一区| 蜜桃久久久久久| 国产乱码精品一区二区三区忘忧草| 国产一区二区三区综合| 国产999精品久久久久久| yourporn久久国产精品| 色欧美日韩亚洲| 日韩一区二区电影网| 久久久久久久综合日本| 日韩伦理免费电影| 午夜免费欧美电影| 精品一区二区影视| jizzjizzjizz欧美| 欧美日韩午夜在线视频| 欧美本精品男人aⅴ天堂| 国产欧美日韩在线观看| 亚洲欧美日韩久久| 蜜臀av一区二区三区| 国产成人亚洲综合a∨猫咪| 色视频欧美一区二区三区| 91精品国产综合久久久蜜臀粉嫩| 欧美精品一区二区在线观看| 亚洲欧美综合网| 日韩精品国产精品| 高清在线观看日韩| 欧美日韩国产美| 久久久影院官网| 亚洲一级电影视频| 国产成人免费视频精品含羞草妖精 | 青青草原综合久久大伊人精品优势| 国产精品香蕉一区二区三区| 精品视频免费看| 亚洲国产精品精华液ab| 午夜精品在线看| 成人午夜在线视频|