📄 setup.c
字号:
sprintf(buf,"%lu",num);
if(strlen(buf)>MAX_INVOICE_LENGTH)
{
//无效票号
result=INVO_NO_ERROR;
break;
}
//num为原票号,根据票号查找是否有历史记录?
//2005.11.7
if(tempbuf[9]!=0)
{
result=locate_invoice_roll(num,tempbuf,&record);//,&tempbuf[20]发票卷代号
if(result && result!=1)break;
}
else
{
result=locate_invoice(num,&record,0);//,&tempbuf[20]发票卷代号
if(result && result!=1)break;
}
if(result==1)
{
/*clear_lcd(0,MAX_LCD_NUM);
strcpy(buf,"没找到该票号的记录");
lcd_disp(3,0,buf);
*/
result=FIND_NO_FAIL;
num=0;
break;
}
//2005.7.22
/*if(record.invoice_type==RESCISSORY_INVOICE)
{
clear_lcd(0,MAX_LCD_NUM);
strcpy(buf,"该票为废票");
lcd_disp(3,0,buf);
num=0;
delayms(1000);
break;
}
*/
//找到则打印
clear_lcd(3,1);
strcpy(buf,"打印该电子票根中...");
lcd_disp(3,0,buf);
rtc[0]=g_invoice_locate;
g_invoice_locate=0;//不找色标
if(g_printer_sel==1)g_printer_sel=0xaa;//转成内置打印机
for(i=0;i<=record.item_num;i++)
{
if(i==record.item_num)
result=print_record_item(&record,i,1,0,1);
else
result=print_record_item(&record,i,0,0,1);
if(result)break;
}
g_invoice_locate=rtc[0];//恢复
if(g_printer_sel==0xaa)g_printer_sel=1;//恢复打印机的选择
break;
case PLU_INMODE: //设置输入为商品号或为条形码
clear_lcd(0,4);
memset(buf,0,50);
strcpy(buf,"当前PLU输入:");
if(!input_plu_barcode)
strcat(buf,"商品号\r");
else
strcat(buf,"条形码\r");
strcat(buf,"按[确认]键切换\0");
lcd_disp(0,0,buf);
//----等待按键,确认则执行设置操----//
result=wait_usal_key(1);
if(result==POWER_OFF) return POWER_OFF;
else if(result==CANCEL) break;
if(!input_plu_barcode)input_plu_barcode=1;
else input_plu_barcode=0;
i=input_plu_barcode;
result= write_eeprom(PLU_INPUTMODE,1,&i);
if(result==0) result=OK;
else return result;
clear_lcd(0,4);
strcpy(buf,"当前PLU输入:");
if(!input_plu_barcode)
strcat(buf,"商品号\r");
else
strcat(buf,"条形码\r");
lcd_disp(1,0,buf);
break;
case SET_PRT_MODE:
if(!mach_initial)
{
result=MACH_NO_INITIALED;
break;
}
//-------检查是否插入用户卡--------//
result=check_user_card();
if(result)
{
result=CARD_ERROR;
break;
}
clear_lcd(0,4);
memset(buf,0,50);
strcpy(buf,"当前字体: ");
if(prt_mode==0x16)
strcat(buf,"16*16字体\r");
else
strcat(buf,"12*12字体\r");
strcat(buf,"按[确认]键切换\0");
lcd_disp(0,0,buf);
//----等待按键,确认则执行设置操----//
result=wait_usal_key(1);
if(result==POWER_OFF) return POWER_OFF;
else if(result==CANCEL) break;
if(prt_mode==0x16)buf[0]=0x12;
else buf[0]=0x16;
result= write_eeprom(PRT_MODE,1,buf);
if(result) return WRITE_EEPROM_FAIL;
prt_mode=buf[0];
clear_lcd(0,4);
strcpy(buf,"当前字体: ");
if(prt_mode==0x16)
strcat(buf,"16*16字体\r");
else
strcat(buf,"12*12字体\r");
lcd_disp(1,0,buf);
break;
case SELE_PRINTER:
if(!mach_initial)
{
result=MACH_NO_INITIALED;
break;
}
//-------检查是否插入用户卡--------//
result=check_user_card();
if(result)
{
result=CARD_ERROR;
break;
}
clear_lcd(0,4);
result=read_eeprom(SELE_PRINTER_FLAG,2,buf);//&g_print_item_sel);
if(result==READ_EEPROM_FAIL) break;
g_printer_sel=buf[0];
//----------提示当前功能--------------//
get_menu_name_sp(MAX_LAYER_MENU,function_no,buf);
lcd_disp(0,0,buf);
if(g_printer_sel==1) strcpy(buf,"当前:外设打印机打报表\r");
else strcpy(buf,"当前: 内置打印机打报表\r");
strcat(buf," 按[确认]切换\r");
lcd_disp(1,0,buf);
//----等待按键,确认则执行设置操----//
result=wait_usal_key(1);
if(result==POWER_OFF) return POWER_OFF;
else if(result==CANCEL) break;
result=set_switch_para(&g_printer_sel,SELE_PRINTER_FLAG);
if(result==0) result=OK;
clear_lcd(0,4);
result=read_eeprom(SELE_PRINTER_FLAG,2,buf);//&g_print_item_sel);
if(result==READ_EEPROM_FAIL) break;
g_printer_sel=buf[0];
// strcpy(buf,"是否打印税目名称\r");
if(g_printer_sel==1) strcpy(buf,"当前:外设打印机打报表\r");
else strcpy(buf,"当前: 内置打印机打报表\r");
lcd_disp(1,0,buf);
break;
/*case SET_TIME_MODE: //设定时间制
//result=read_eeprom(TIME_MODE,1,buf);//获取收款员权限
//time_mode_buf=buf[0];
clear_lcd(0,4);
memset(buf,0,50);
//测试时把以下的三个地址发给串口
/* read_eeprom(DAY_ADDR1,4,buf);
buf[4]=0x0d;
send_str(4,buf);
//明细地址
read_eeprom(RECORD_ADDR1,4,buf);
buf[4]=0x0d;
send_str(4,buf);
//发票卷记录地址
read_eeprom(INVOICE_ROLL_ADDR1,4,buf);
buf[4]=0x0d;
send_str(4,buf);
strcpy(buf,"当前时制: ");
if(!time_mode_buf)
strcat(buf,"12小时制\r");
else
strcat(buf,"24小时制\r");
strcat(buf,"按[确认]键切换\0");
lcd_disp(0,0,buf);
//----等待按键,确认则执行设置操----//
result=wait_usal_key(1);
if(result==POWER_OFF) return POWER_OFF;
else if(result==CANCEL) break;
if(!time_mode_buf)buf[0]=0x20;
else buf[0]=0;
result=Writ_ctr_rtc(0xe0,buf[0]);
if(result) break;
result=set_switch_para(&time_mode_buf,TIME_MODE);
if(result==0) result=OK;
clear_lcd(0,4);
strcpy(buf,"当前时制: ");
if(!time_mode_buf)
strcat(buf,"12小时制\r");
else
strcat(buf,"24小时制\r");
lcd_disp(1,0,buf);
strcpy(buf,"时间制切换成功!\r按任意键继续\r");
lcd_disp(2,0,buf);
while(1)
{
if(low_pwr) return POWER_OFF;//监测到断电了,则exit
openbacklight();
key=get_key();
if (!key) continue; //如果无键按下则重新扫描
result=0; //beep(300);
//if((key==ENTER)||(key==VOID)||(key==CLEAR))
break; //如果按下确认键就退出
}
break;
*/
//-------接收PLU头信息--------//
case READ_PLU_HEAD:
//send_str(2,testbuf);
clear_lcd(0,4);
//----------提示当前功能--------------//
get_menu_name_sp(MAX_LAYER_MENU,function_no,buf);
lcd_disp(0,0,buf);
strcpy(buf,"通讯中,请稍候...");
lcd_disp(1,0,buf);
result=Data_pack_transport(RECEIVE_MODE,RV_PLU_HEAD,PLU_HEAD_LEN);
if(result==POWER_OFF) return POWER_OFF;//如果断电了,则立即退出
else if(result==0)
{
clear_lcd(1,2); //清除掉第2行的"通讯中,请等候...."和第3行的"接收到第4包数据"等残留字样
result=OK;
}
break;
//-------发送PLU头信息--------//
case SEND_PLU_HEAD:
if(!mach_initial)
{
result=MACH_NO_INITIALED;
break;
}
clear_lcd(0,4);
//----------提示当前功能--------------//
get_menu_name_sp(MAX_LAYER_MENU,function_no,buf);
lcd_disp(0,0,buf);
strcpy(buf,"通讯中,请稍候...");
lcd_disp(1,0,buf);
result=Data_pack_transport(SEND_MODE,SD_PLU_HEAD,PLU_HEAD_LEN);
if(result==POWER_OFF) return POWER_OFF;//如果断电了,则立即退出
else if(result==0)
{
clear_lcd(1,2); //清除掉第2行的"通讯中,请等候...."和第3行的"发送最后一包数据"等残留字样
result=OK;
}
break;
//-------接收PLU整个结构信息--------//
case READ_PLU_ALL:
clear_lcd(0,4);
//----------提示当前功能--------------//
get_menu_name_sp(MAX_LAYER_MENU,function_no,buf);
lcd_disp(0,0,buf);
strcpy(buf,"通讯中,请稍候...");
lcd_disp(1,0,buf);
strcpy(buf,"请注意条形码由小到大排列");
lcd_disp(2,0,buf);
result=Data_pack_transport(RECEIVE_MODE,RV_PLU_ALL,PLU_STRUCT_LEN);
if(result==POWER_OFF) return POWER_OFF;//如果断电了,则立即退出
else if(result==0)
{
clear_lcd(1,2); //清除掉第2行的"通讯中,请等候...."和第3行的"接收到第4包数据"等残留字样
result=OK;
}
break;
//-------发送PLU整个结构信息--------//
case SEND_PLU_ALL:
if(!mach_initial)
{
result=MACH_NO_INITIALED;
break;
}
clear_lcd(0,4);
//----------提示当前功能--------------//
get_menu_name_sp(MAX_LAYER_MENU,function_no,buf);
lcd_disp(0,0,buf);
strcpy(buf,"通讯中,请稍候...");
lcd_disp(1,0,buf);
result=Data_pack_transport(SEND_MODE,SD_PLU_ALL,PLU_STRUCT_LEN);
if(result==POWER_OFF) return POWER_OFF;//如果断电了,则立即退出
else if(result==0)
{
clear_lcd(1,1); //清除掉第2行的"通讯中,请等候...."等残留字样
result=OK;
}
break;
//-------接收部门名称--------//
case READ_BRANCH_NAME:
clear_lcd(0,4);
//----------提示当前功能--------------//
get_menu_name_sp(MAX_LAYER_MENU,function_no,buf);
lcd_disp(0,0,buf);
strcpy(buf,"通讯中,请稍候...");
lcd_disp(1,0,buf);
result=Data_pack_transport(RECEIVE_MODE,RV_BRANCH,BRANCH_STRUCT_LEN-1);
if(result==POWER_OFF) return POWER_OFF;//如果断电了,则立即退出
else if(result==0)
{
clear_lcd(1,2); //清除掉第2行的"通讯中,请等候...."和第3行的"接收到第4包数据"等残留字样
result=OK;
}
break;
//-------上传部门名称--------//
case SEND_BRANCH_NAME://
clear_lcd(0,4);
//----------提示当前功能--------------//
get_menu_name_sp(MAX_LAYER_MENU,function_no,buf);
lcd_disp(0,0,buf);
strcpy(buf,"通讯中,请稍候...");
lcd_disp(1,0,buf);
result=Data_pack_transport(SEND_MODE,SD_BRANCH,BRANCH_STRUCT_LEN-1);
if(result==POWER_OFF) return POWER_OFF;//如果断电了,则立即退出
else if(result==0)
{
clear_lcd(1,2); //清除掉第2行的"通讯中,请等候...."和第3行的"接收到第4包数据"等残留字样
result=OK;
}
break;
//-------其他通信--------//
case OTHER_COMM:
clear_lcd(0,4);
//----------提示当前功能--------------//
get_menu_name_sp(MAX_LAYER_MENU,function_no,buf);
lcd_disp(0,0,buf);
strcpy(buf,"通讯中,请稍候...");
lcd_disp(1,0,buf);
result=Data_pack_transport(2,SD_PLU_ALL,PLU_STRUCT_LEN);
if(result==POWER_OFF) return POWER_OFF;//如果断电了,则立即退出
else if(result==0)
{
clear_lcd(1,1); //清除掉第2行的"通讯中,请等候...."等残留字样
result=OK;
}
break;
//-------FLASH卡下传PLU--------//
case FLASHCARD_PLU:
clear_lcd(0,4);
//----------提示当前功能--------------//
get_menu_name_sp(MAX_LAYER_MENU,function_no,buf);
lcd_disp(0,0,buf);
//-------检查用户卡合法性--------//
result=check_flash_card();
if(result)
{
result=CARD_ERROR;
break;
}
strcpy(buf,"读取中,请稍候...");
lcd_disp(1,0,buf);
//暂时没完成此功能
if(result==POWER_OFF) return POWER_OFF;//如果断电了,则立即退出
else if(result==0)
{
clear_lcd(1,2);
result=OK;
}
break;
#ifdef allowsetjiqi //允许设置出厂参数
case SET_JIQIHAO:
read_eeprom(PIN_TMP1,10,buf);
if(!((buf[0]==0|| buf[0]==0xFF) && (buf[1]==0 || buf[1]==0xFF) &&
(buf[2]==0 || buf[2]==0xFF) && (buf[3]==0 || buf[3]==0xFF) &&
(buf[4]==0 || buf[4]==0xFF) && (buf[5]==0 || buf[5]==0xFF) &&
(buf[6]==0 || buf[6]==0xFF) && (buf[7]==0 || buf[7]==0xFF)))
{
result=253;//CANCE;
break; //机器已初始化
}
//result=enter_application_direct(USER_CARD);
//if(result) return result;
result=check_clear_card(0,&k);
if(result==POWER_OFF) return POWER_OFF;
else if(result) break;//==CANCEL
clear_lcd(0,4);
strcpy(buf,"按[确定]条码枪输入\0");
lcd_disp(0,0,buf);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -