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

📄 program.c

📁 一款收款机C源代码!因为是几年前的代码了
💻 C
📖 第 1 页 / 共 5 页
字号:
		case	10:	*ret = (DWORD)(BYTE*)&sys_flag.Mche_Num_prn;  break;      
		case	11:	*ret = (DWORD)(BYTE*)&sys_flag.Rcpt_Num_prn;  break;    
		case	12:	*ret = (DWORD)(BYTE*)&sys_flag.zero_skip;     break;         
		case	13:	*ret = (DWORD)(BYTE*)&sys_flag.Z_Rpt_Reprn;   break;        
		case	14:	*ret = (DWORD)(BYTE*)&sys_flag.Rcpt_Reprn;    break;     
		case	15:	*ret = (DWORD)(BYTE*)&sys_flag.Z_Cntr_prn;    break;        
		case	16:	*ret = (DWORD)(BYTE*)&sys_flag.RPLDP_flag;    break;  
		case	17:	*ret = (DWORD)(BYTE*)&sys_flag.NS_switch;	  break;
        case    18: *ret = (DWORD)(BYTE*)&sys_flag.Rcpt_prn;      break;
        case    19: *ret = (DWORD)(BYTE*)&sys_flag.Crncy_Symbl_Prn;break;
        case    20: *ret = (DWORD)(BYTE*)&sys_flag.PLU_Prn_Fmt;   break;
        case    21: *ret = (DWORD)(BYTE*)&sys_flag.Logo_Prn_Flag; break;
        case    22: *ret = (DWORD)(BYTE*)&sys_flag.LogoPosi_Flag; break;
		default:	*ret = 0;break;
	}
}

void Prn_Bin2Asc(byte step)
{
    BYTE    i;
    byte len = 0;
    DWORD	ptr;
    
    if(Last_Prg_Idx == IDX_NULL)
    {
        Rst_Lcd_Text();     /* Reset the tax */
        Insert_Full_Text_List(Str_Prog_PrnPara_Menu,MAX_PRN_FLAG_NUM+1, 1);
    }
    
    Text_Lcd.CurrLine = step;
    
    for (i = 0; i < MAX_PRN_FLAG_NUM;i ++)
    {
        if((Last_Prg_Idx != IDX_NULL)&&(Last_Prg_Step != i))
            continue;
        Update_Prnflag_Get(i,&ptr);     
        if(ptr == 0)
            continue;
        
        if(i == 20)//PLU sale print format
        {
            memset(Text_Lcd.text[i]+MAX_TEXT-2, 0x20, len);
            Text_Lcd.text[i][MAX_TEXT-2] = '#';
            Text_Lcd.text[i][MAX_TEXT-1] = *(BYTE*)ptr + '0';
        }
        else if(i == 22)
        {
            len = strlen(Str_Logo_Posi_Sel[*(BYTE*)ptr]);
            memset(Text_Lcd.text[i]+MAX_TEXT-4, 0x20, 4);
            xtr_strcpy(Text_Lcd.text[i]+(MAX_TEXT-len), Str_Logo_Posi_Sel[*(BYTE*)ptr]);
        }
        else
        {
            len = strlen(STR_YES_No[*(BYTE*)ptr]);
            memset(Text_Lcd.text[i]+MAX_TEXT-4, 0x20, 4);
            xtr_strcpy(Text_Lcd.text[i]+(MAX_TEXT- len), STR_YES_No[*(BYTE*)ptr]);
        }
    }
    
    if((Last_Prg_Idx == IDX_NULL)||(Last_Prg_Step/DISP_LCD_TEXT_LINE != step/DISP_LCD_TEXT_LINE))
        Lcd_Reflush_List(0);
    else
        Lcd_Reflush_List(1);
    Last_Prg_Idx = 1;
    Last_Prg_Step = step;
    
    Rst_Tl_Sub();           /* 清除另外一个显示窗口 */
    Lcd_Send_Text_Buff_Str(BUF_ID_TL_SUB, 1,Str_Prog_Enter,ALIGN_LEFT);
    Lcd_Disp_Text_Buff(BUF_ID_TL_SUB);
}
byte Prn_Asc2Bin(byte step)
{
    const char  *Str_ptr[3];
    char    ret;
    DWORD   ptr;

    if(step >= MAX_PRN_FLAG_NUM)//复位所有操作
    {
        if(Get_Sure_Done(&ret)!= OK)
            return NG;
        
        if(ret == KD_YES)
            Rst_Sysflag(1);
        
        return OK;
    }
    if(step == 20)
    {
        Str_ptr[0] = Str_PLU_PrnFmt_Sel[0];
        Str_ptr[1] = Str_PLU_PrnFmt_Sel[1];
        Str_ptr[2] = Str_PLU_PrnFmt_Sel[2];
        Get_Btn_Choice_Input(Str_ptr, 0x16, 3);
        ret = lnum;
        if(lnum >=3)
            return NG;
    }
    else if(step == 22)
    {
        Str_ptr[0] = Str_Logo_Posi_Sel[0];
        Str_ptr[1] = Str_Logo_Posi_Sel[1];
        if (Get_Btn_Choice_Input_Ex(Str_ptr, 0x22, 2, &ret) == NG)
            return NG;
    }
    else
    {
        Str_ptr[0] = STR_YES_No[1];
        Str_ptr[1] = STR_YES_No[0];
        Lcd_Disp_Str_Btn(BUF_ID_TL_SUB, Str_Modify_Step[3]);
        if(Get_Btn_Choice_Input_Ex(Str_ptr, 0x22, 2, &ret) != OK)
            return NG;
    }
    
    Update_Prnflag_Get(step, &ptr);
    if(ptr == 0)
        return NG;
    if((step == 20)&&(ret < 3))
    {
        *(BYTE*)ptr = ret;
        modi_flag = 1;
    }
    else if ((ret == KD_YES)||(ret == KD_NO))
    {
        if(step == 22)
        {
            ret = !ret;
        }
        *(BYTE*)ptr = ret;
        modi_flag = 1;
    }
    return OK;
}

void pPrn_flag(void)
{
    byte step = 0;
    word key;
    
    Lcd_Send_Text_Buff_Str(BUF_ID_TL_TITLE, 1, Str_Option_Menu[0], ALIGN_MID);
    Lcd_Disp_Text_Buff(BUF_ID_TL_TITLE);
    
    Last_Prg_Idx = IDX_NULL;
    Last_Prg_Step = STEP_NULL;
    while(1)
    {
        Prn_Bin2Asc(step);
        key = GetKey();
        GetMainMode();    
        if (MainMode != CurrMode)
            return;
        
        switch(key)
        {
            case    KD_ENTER:           /*Enter for accept the input index*/
                if(Prn_Asc2Bin(step) != OK)
                    continue;
                step = (step +1)%(MAX_PRN_FLAG_NUM+1);
                break;
                
            case KD_PAGE_DOWN:
            case KD_PAGE_UP:
            case KD_DOWN:
            case KD_UP:
                Do_Menu_Roll(key);
                step = Text_Lcd.CurrLine%(MAX_PRN_FLAG_NUM+1);
                break;
                    
            case KD_CANCEL:
                if (Flag_Prgm_Head)
                {
                    Flag_Prgm_Head = 0;
                    prn_Line('-');
                    prn_Stamp();
                }
                return;
            default: 
                bellcnt = 0x10;
                break;
        }
	}		
}
#define  MAX_SCREEN_SAVER_NUM       5
#define  MAX_CRNCY_SYMBOL_NUM       6
void Update_SysPara_Flag_Get(BYTE	Idx, DWORD	*ret)
{
	switch(Idx)
	{
		case	0:	*ret = (DWORD)(BYTE*)&sys_flag.dept_shift;          break;      
		case	1:	*ret = (DWORD)(BYTE*)&sys_flag.DPLU_shift;          break;       
		case	2:	*ret = (DWORD)(BYTE*)&sys_flag.PLU_Stock_Flag;      break;
		case	3:	*ret = (DWORD)(BYTE*)&sys_flag.zero_skip;           break;       
		case	4:	*ret = (DWORD)(BYTE*)&sys_flag.Log_Atv_Flag;        break;       
		case	5:	*ret = (DWORD)(BYTE*)&sys_flag.Cmpls_Amt_Mode;      break;     
		case	6:	*ret = (DWORD)(BYTE*)&sys_flag.DPAmt_Per_Ttl_Flag;  break;       
		case	7:	*ret = (DWORD)(BYTE*)&sys_flag.z_reset_rcpt_no;     break;   
		case	8:	*ret = (DWORD)(BYTE*)&sys_flag.Rst_ZCntr_Flag;      break;   
        case    9:  *ret = (DWORD)(BYTE*)&sys_flag.Rst_GndTt_Flag;      break;  
		case	10:	*ret = (DWORD)(BYTE*)&sys_flag.clerk_mode;          break;      
		case	11:	*ret = (DWORD)(BYTE*)&sys_flag.Clerk_Pscd_Flag;     break;    
		case	12:	*ret = (DWORD)(BYTE*)&sys_flag.Screen_Saver;        break;         
        case    13: *ret = (DWORD)(BYTE*)&sys_flag.Crncy_Symbol;        break;
		default:	*ret = 0;break;
	}
}
void Disp_SysPara_Flag(byte Idx_Step)
{
    byte  i = 0;
    byte  len = 0;
    DWORD ptr;
    
    if(Last_Prg_Idx == IDX_NULL)
    {
        Rst_Lcd_Text();     /* Reset the text */
        Insert_Full_Text_List(Str_ParaSet_Menu4, MAX_SYSPARA_FLAG+1, 1);
    }
    Text_Lcd.CurrLine = Idx_Step;

    for (i = 0; i < MAX_SYSPARA_FLAG;i ++)
    {
        if((Last_Prg_Idx != IDX_NULL)&&(Last_Prg_Step != i))
            continue;
        Update_SysPara_Flag_Get(i,&ptr);     
        if(ptr == 0)
            continue;
        
        if(i == 12)//screen saver choice
        {
            memset(Text_Lcd.text[i]+MAX_TEXT-2, 0x20, len);
            if(*(BYTE*)ptr < MAX_SCREEN_SAVER_NUM)
                Text_Lcd.text[i][MAX_TEXT-1] = *(BYTE*)ptr + '1';
        }
        else if(i == 13)//Currency Symbol Choice  
        {
            memset(Text_Lcd.text[i]+MAX_TEXT-2, 0x20, len);
            if(*(BYTE*)ptr < MAX_CRNCY_SYMBOL_NUM)
                Text_Lcd.text[i][MAX_TEXT-1] = Crncy_Symvol[*(BYTE*)ptr];
        }
        else
        {
            len = strlen(STR_YES_No[*(BYTE*)ptr]);
            memset(Text_Lcd.text[i]+MAX_TEXT-4, 0x20, 4);
            xtr_strcpy(Text_Lcd.text[i]+(MAX_TEXT- len), STR_YES_No[*(BYTE*)ptr]);
        }
    }
    
    if(Last_Prg_Idx == IDX_NULL)
        Lcd_Reflush_List(0);
    else
        Lcd_Reflush_List(1);
    Last_Prg_Idx = 1;
    Last_Prg_Step = Idx_Step;
    
    Rst_Tl_Sub();           /* 清除另外一个显示窗口 */
    Lcd_Send_Text_Buff_Str(BUF_ID_TL_SUB, 1,Str_Prog_Enter,ALIGN_LEFT);
    Lcd_Disp_Text_Buff(BUF_ID_TL_SUB);
}
byte  Update_SysPara_Flag(byte Idx_Step)
{
    const char  *Str_ptr[3];
    char    tmp_text[MAX_CRNCY_SYMBOL_NUM][2];
    byte    i;
    char    ret;
    DWORD   ptr;

    if(Idx_Step >= MAX_SYSPARA_FLAG)//复位所有操作
    {
        if(Get_Sure_Done(&ret)!= OK)
            return NG;
        
        if(ret == KD_YES)
            Rst_Sysflag(2);
        
        return OK;
    }

    if(Idx_Step == 12)
    {
        Lcd_Disp_Str_Btn(BUF_ID_TL_SUB, Str_Modify_Step[2]);
        Lcd_Disp_Str_Btn(BUF_ID_TL_INPUT, Str_ParaSet_Menu4_Desc[0]);
        if(Get_Num_Input() != OK)
            return NG;
        if((lnum > MAX_SCREEN_SAVER_NUM)||(lnum == 0))
            {errorType(ERR_DIGIT_OVER);return NG;}
         ret = lnum -1;   
    }
    else if(Idx_Step == 13)
    {
        if(Select_Btn_Symbol(Crncy_Symvol, 0x11, MAX_CRNCY_SYMBOL_NUM) != OK)
            return NG;
        ret = lnum ;
    }
    else
    {
        if(Get_Sure_Done(&ret)!= OK)
            return NG;
    }
    
    Update_SysPara_Flag_Get(Idx_Step, &ptr);
    if(ptr == 0)
        return NG;
    if((Idx_Step == 12)||(Idx_Step == 13))
    {
        *(BYTE*)ptr = ret;
        modi_flag = 1;
    }
    else if ((ret == KD_YES)||(ret == KD_NO))
    {
        *(BYTE*)ptr = ret;
        modi_flag = 1;
    }
    return OK;
}
//system option
void pSysPara_flag(void)
{
    word key;
    byte step = 0;
    byte reflush_flag = 0;

    Lcd_Send_Text_Buff_Str(BUF_ID_TL_TITLE, 1, Str_Option_Menu[1], ALIGN_MID);
    Lcd_Disp_Text_Buff(BUF_ID_TL_TITLE);
    
    Last_Prg_Idx = IDX_NULL;
    Last_Prg_Step = STEP_NULL;
    
    while(1)
    {
        Disp_SysPara_Flag(step);
        
        key = GetKey();
        if(GetMainMode() != CurrMode)
            return;

        switch(key)
        {
            case    KD_ENTER:           /*Enter for accept the input index*/
                if(Update_SysPara_Flag(step) != OK)
                    continue;
                step = (step +1)%(MAX_SYSPARA_FLAG+1);
                break;
                
            case KD_PAGE_DOWN:
            case KD_PAGE_UP:
            case KD_DOWN:
            case KD_UP:
                Do_Menu_Roll(key);
                step = Text_Lcd.CurrLine%(MAX_SYSPARA_FLAG+1);
                break;
                    
            case KD_CANCEL:
                return;
            default: 
                bellcnt = 0x10;
                break;
        }
    }       
}
//system config
void Disp_SysCnfig(byte Idx_Step)
{
    byte  i = 0;
    byte  len;
    DWORD ptr;
    
    if(Last_Prg_Idx == IDX_NULL)
    {
        Rst_Lcd_Text();     /* Reset the text */
        Insert_Full_Text_List(Str_SysCnfg_Menu, MAX_SYS_CNFIG_NUM, 1);
    }
    Text_Lcd.CurrLine = Idx_Step;

    //date format
    if((Last_Prg_Idx == IDX_NULL)||(Last_Prg_Step == 0))
    {
        len = strlen(Str_DateFmt_Sel[sysflag->datefmt]);
        memset(Text_Lcd.text[0]+MAX_TEXT-len, 0x20, len);
        xtr_strcpy(Text_Lcd.text[0]+MAX_TEXT-len, Str_DateFmt_Sel[sysflag->datefmt]);
    }
    
    //time format
    if((Last_Prg_Idx == IDX_NULL)||(Last_Prg_Step == 2))
    {
        len = strlen(Str_TimeFmt_Sel[sysflag->timefmt]);
        memset(Text_Lcd.text[2]+MAX_TEXT-16, 0x20, 16);
        xtr_strcpy(Text_Lcd.text[2]+MAX_TEXT-len, Str_TimeFmt_Sel[sysflag->timefmt]);
    }

    //language
    if((Last_Prg_Idx == IDX_NULL)||(Last_Prg_Step == 4))
    {
        len = strlen(Str_Language_Sel[sysflag->Language]);
        memset(Text_Lcd.text[4]+MAX_TEXT-10, 0x20, 10);
        xtr_strcpy(Text_Lcd.text[4]+MAX_TEXT-len, Str_Language_Sel[sysflag->Language]);
    }
    
    //tax system
    if((Last_Prg_Idx == IDX_NULL)||(Last_Prg_Step == 5))
    {
        len = strlen(Str_TaxSys_Sel[sysflag->Tax_System]);
        memset(Text_Lcd.text[5]+MAX_TEXT-16, 0x20, 16);
        xtr_strcpy(Text_Lcd.text[5]+MAX_TEXT-len, Str_TaxSys_Sel[sysflag->Tax_System]);
    }

    //demical set
    if((Last_Prg_Idx == IDX_NULL)||(Last_Prg_Step == 6))
    {
        memset(Text_Lcd.text[6]+MAX_TEXT-5, 0x20, 5);
        Text_Lcd.text[6][MAX_TEXT-5] = '0';
        if(sysflag->sysdots > 0)
        {
            Text_Lcd.text[6][MAX_TEXT-4] = '.';

⌨️ 快捷键说明

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