📄 program.c
字号:
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 + -