📄 poskb.c
字号:
}
else
Lcd_Text_Line_Disp(i, FALSE);
}
}
void Lcd_Draw_Btn(word logic_code, byte btn_id);
/*---------------------------------------------------------------------------------*
* updata the dplu'pluno
*---------------------------------------------------------------------------------*/
byte Update_Dplu_No(byte Idx_Step)
{
byte logic;
if((lnum > Max_Plu_No))
{
errorType(ERR_DIGIT_ILLEGAL);
return (NOTOK);
}
#ifdef REST_PLU_FUNC
if(lnum != 0)
{
if((plu[lnum-1].attr.mode==PLU_DESC)||(plu[lnum-1].attr.mode==PLU_GIFT))
{
errorType(ERR_NORMAL_ATTR);
return (NOTOK);
}
}
#endif
Dplu_Pluno[Idx_Step] = lnum; /* Update the preset data */
logic = key_logi_get(DPLU_Pop_Key_Tabl, Idx_Step%48 + KD_DPLU_ST, MAX_LAYOUT_KEY);
Lcd_Draw_Btn(logic, BTN_ID_KEY_EX);
modi_flag = 1;
return (OK);
}
/*------------------------------------------------------------------*
* print the dplu'dplu number
*
*-------------------------------------------------------------------*/
void prn_DPLU(byte Idx)
{
byte mode; /* The print all messages mode or print the single message mode
1: Print all messange
0: Print single message
*/
byte len;
return;
if(!Flag_Prgm_Head)
{
Flag_Prgm_Head = 1;
xtr_strcpy(prn_Buf+1,Dplu_Prn_Head);
prn_Buf[0] = DB_HEIGT_PRN;
print();
Line_Feed(1);
}
if(Idx == 0xFF) /* The print all message mode */
{
mode = 1;
Idx = 0;
}
else /* The print one message mode */
{
mode = 0;
}
do
{
if(Key_Buff_Chk(KD_CLEAR) == OK) /* Check the key buffer contain the key KD_CLEAR or not */
{ /* If press the CLEAR key, stotp printing the PLU attribute */
xtr_strcpy(prn_Buf+1,Str_PrnInt); /* Modified on 2004-04-07 17:08 */
print();
break;
}
xtr_strcpy(prn_Buf+1, Str_DPLU_prn1);
len = strlen(Str_DPLU_prn1);
LongtoAsc(prn_Buf+len+1, Idx+1, 3);
xtr_strcpy(prn_Buf+11, Str_DPLU_prn2);
LongtoAsc(prn_Buf+18, Dplu_Pluno[Idx], 4);
print();
Idx ++;
}while(mode&&(Idx<MAX_DPLU_NO));
if(mode == 1)
{
prn_Line('-');
prn_Stamp();
Flag_Prgm_Head = 0;
}
}
/*查找当前PLU所在行数, (0~DISP_LCD_TEXT_LINE-1)*/
byte Srch_PLU_on_Line( int PLU_Idx, int *Curr_PLU_List)
{
byte i;
for(i = 0; i < DISP_LCD_TEXT_LINE; i++)
{
if(Curr_PLU_List[i] == PLU_Idx+1)
break;
}
return i;
}
/*-----------------------------------------------------------------------------*
* Program the direct PLU
* 1> 整屏显示 Direct PLU (48/屏)
* 2> 功能按键有: KD_ENTER, KD_CANCEL, KD_DPLUSF, KD_NUM_INPUT
* 3> Text区域显示 PLU List
* 4> 操作方式: 选择一个PLU, 然后按下某一个DPLU 按键.
* 5> PLU 的选择方式:
* a. 在左侧的文本框使用 UP/DOWN 按键和 PAGE UP/PAGE DOWN 按键选择PLU
* b. 使用 KD_NUM_INPUT 按键切换画面, 选择PLU 编号 --> [ENTER] 方式选择PLU
* c. 使用条码枪输入.
* 6> 在选择好DPLU 连接的PLU 之后, 此按键的名称就改为连接的PLU 的名称.
*-----------------------------------------------------------------------------*/
void pDPLU(void)
{
int PLU_Idx =0;
int Bak_PLU_Idx;
word DPLU_Idx = 0;
byte line;
byte Refresh_flag = 1;
byte Refresh_mode = 0; /*0: 向下更新。 1: 向上更新。 2: 跳跃更新*/
byte kd_void_flag = 0;
byte bak_DPLU_Shift_Inc;
int Curr_PLU_List[DISP_LCD_TEXT_LINE]; /*元素的范围是 1~Max_Plu_No, 注意使用时要保持一致*/
BOOL rslt = NG;
if(Srch_Next_Used_PLU(0) >= Max_Plu_No)
{errorType(ERR_PLU_EMPTY); return;}
bak_DPLU_Shift_Inc = sysflag->DPLU_Shift_Inc;
sysflag->DPLU_Shift_Inc = 48;
Bak_Ts_Key_Tab1 = Ts_Key_Tab;
Bak_Ts_Key_Table_Size1 = Ts_Key_Table_Size;
Ts_Key_Tab = DPLU_Pop_Key_Tabl;
Ts_Key_Table_Size = DPLU_Pop_Key_Tabl_Size;
Lcd_Layout_Draw_Key();//弹出左界面
Lcd_Send_Text_Buff_Str(BUF_ID_TL_TITLE, 1, Str_ParaSet_Menu[0], ALIGN_MID);
Lcd_Disp_Text_Buff(BUF_ID_TL_TITLE);
DPLUShiftFlag = 0;
Lcd_Disp_Str_Btn(BUF_ID_TL_SUB, Str_Dplu_Prog_Step[0]);
memset((byte *)Curr_PLU_List, 0, DISP_LCD_TEXT_LINE*sizeof(int));//清空缓冲区。
while(TRUE)
{
GetMainMode();
if(MainMode != CurrMode)
{
sysflag->DPLU_Shift_Inc = bak_DPLU_Shift_Inc;
Ts_Key_Tab = Bak_Ts_Key_Tab1;
Ts_Key_Table_Size = Bak_Ts_Key_Table_Size1;
Lcd_Layout_Draw_Key();//弹出左界面
return;
}
if(Refresh_flag)
{
Refresh_flag = 0;
Get_Full_PLU_List(&PLU_Idx, Curr_PLU_List, Refresh_mode);
}
InCmd = GetKey();
switch(InCmd)
{
case KD_PAGE_DOWN:
if(Curr_PLU_List[DISP_LCD_TEXT_LINE-1] == 0)
PLU_Idx = 0;
else
PLU_Idx = Curr_PLU_List[DISP_LCD_TEXT_LINE-1]-1;
Refresh_mode = 0;
Refresh_flag = 1;
break;
case KD_PAGE_UP:
if(Curr_PLU_List[0] == 0)
PLU_Idx = 0;
else
PLU_Idx = Curr_PLU_List[0]-1;
Refresh_mode = 1;
Refresh_flag = 1;
break;
case KD_DOWN:
line = Srch_PLU_on_Line(PLU_Idx,Curr_PLU_List);
if((line < DISP_LCD_TEXT_LINE-1)&&(Curr_PLU_List[line+1] > 0))//页内变化
{
Lcd_Text_Line_Disp(line, FALSE);
PLU_Idx = Curr_PLU_List[line+1]-1;
Lcd_Text_Line_Disp(line+1, TRUE);
Refresh_flag = 0;
}
else
{
if(Curr_PLU_List[line+1] == 0)
PLU_Idx = 0;
else
PLU_Idx = Curr_PLU_List[DISP_LCD_TEXT_LINE-1]-1;
Refresh_mode = 0;
Refresh_flag = 1;
}
break;
case KD_UP:
line = Srch_PLU_on_Line(PLU_Idx,Curr_PLU_List);
if((line > 0)&&(Curr_PLU_List[line-1]>0))//页内变化
{
Lcd_Text_Line_Disp(line, FALSE);
PLU_Idx = Curr_PLU_List[line - 1]-1;
Lcd_Text_Line_Disp(line - 1, TRUE);
Refresh_flag = 0;
}
else
{
if((line > 0)&&(Curr_PLU_List[line-1] == 0))
PLU_Idx = 0;
else
PLU_Idx = Curr_PLU_List[0]-1;
Refresh_mode = 1;
Refresh_flag = 1;
}
break;
case KD_DPLUSF:
DPLUShiftFlag = (DPLUShiftFlag+1)%5;
Lcd_Shift_Exchange(KD_DPLUSF);
break;
case KD_CANCEL:
sysflag->DPLU_Shift_Inc = bak_DPLU_Shift_Inc;
Ts_Key_Tab = Bak_Ts_Key_Tab1;
Ts_Key_Table_Size = Bak_Ts_Key_Table_Size1;
Lcd_Layout_Draw_Key();//弹出左界面
return;
case KD_NUM_INPUT:
ProgBar = 1;
rslt = Lcd_Digit_GetIn();
Lcd_Disp_Str_Btn(BUF_ID_TL_SUB, Str_Dplu_Prog_Step[0]);
if((rslt != OK)||((!BarInFlag) && (InCmd != SPLU)))
break;
//如果刚才有条码枪扫描条码输入
Bak_PLU_Idx = PLU_Idx;
if(Judge_Weight_PLU(BCDbuf) == OK) /* Judge is the weight PLU bar code or not */
{
byte tmp_buf[BAR_BUFF_LEN];
memcpy(tmp_buf, BCDbuf, BAR_BUFF_LEN);
Do_Weight_PLU(tmp_buf, BCDbuf);
}
PLU_Idx = SC_SearchIndex(BCDbuf);
if(PLU_Idx < 0)
{errorType(ERR_BAR_EXIST);PLU_Idx = Bak_PLU_Idx; break;}
PLU_Idx = Sindex[PLU_Idx];
if(!Chk_Idle_PLU(PLU_Idx))//Idle PLU
{errorType(ERR_BAR_EXIST);PLU_Idx = Bak_PLU_Idx; break;}
if((PLU_Idx >= Curr_PLU_List[0])&&(PLU_Idx <= Curr_PLU_List[DISP_LCD_TEXT_LINE-1]))
{
line = Srch_PLU_on_Line(Bak_PLU_Idx,Curr_PLU_List);
Lcd_Text_Line_Disp(line, FALSE);
line = Srch_PLU_on_Line(PLU_Idx,Curr_PLU_List);
Lcd_Text_Line_Disp(line, TRUE);
Refresh_flag = 0;
}
else
{
Refresh_mode = 2;
Refresh_flag = 1;
}
break;
case KD_VOID:
kd_void_flag = !kd_void_flag;//取反
Lcd_Disp_Str_Btn(BUF_ID_TL_SUB, Str_Dplu_Prog_Step[kd_void_flag]);
break;
default:
if((InCmd >= KD_DPLU_ST)&&(InCmd <= KD_DPLU_END))
{
DPLU_Idx = getDPLU();
if(DPLU_Idx >= MAX_DPLU_NO)
{
errorType(ERR_DPLU_OVER);
break;
}
if(kd_void_flag)
lnum = 0;
else
lnum = PLU_Idx+1;
kd_void_flag = 0;
if(Update_Dplu_No(DPLU_Idx)==NOTOK)
break;
if(modi_flag == 1)
{
modi_flag = 0;
prn_DPLU(DPLU_Idx);
}
Lcd_Disp_Str_Btn(BUF_ID_TL_SUB, Str_Dplu_Prog_Step[0]);
break;
}
} /* end switch */
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -