📄 main.c.bak
字号:
//读税控卡的监控管理文件//保存用户信息到EEPROM等任务
rlt=read_control_msg(0);
if(rlt)
{
return(rlt);
}
rlt=Format_File();
if(rlt)
return(rlt);
rlt=check_pin();
if(rlt)
return(rlt);
if(Write_FAU_data(SYSINTI,0))return 1;
}
else //比较税控卡使用口令
{
clear_lcd(0,MAX_LCD_NUM);
strcpy(buf,"机器机卡验证工作状态\r请稍候...");
lcd_disp(1,0,buf);
rlt=check_pin();
if(rlt){return(rlt);}
rlt=init_var(); //初始化全局变量
if(rlt)return(rlt);
}
return(0);
}
//extern void TestCOM();
extern void TestUsb();
/*--------------------------------------------------------------
功能:主循环,捕捉方式锁
输入:NO
----------------------------------------------------------------*/
main()
{
#define IS_CHOOSED 0x1 //选定某项菜单
code uchar home_menu[7]={EXCHANGE,READ_REPORT,REPORT_TAX,SETUP,EXERCITATION,FAUCLASS,0};
uchar cur_line,tmp_line,menu_num;
uchar error,old_error,rlt;
uchar sw; //方式锁
uchar key_tmp;
uchar xdata buf[200];
uchar Mach_initialed,page_displayed; //机器已初始化,主页已显示
uchar i;
P1_1=0;
//Back_pwrflg=0;
delayms(10);
receiver_log=0;//收款员登录标志
InitialPrinter();
initial_system(); //硬件初始化
Writ_cpld(Backlight,1);lighton=1;//开背光
SetupPortD(Bat_cnt,0); //关法拉电
for(i=0;i<12;i++)
{
DisplayVFD(i,8);
}
// card_vcc(1);//卡上电//
cur_line=1;
tmp_line=1;
menu_num=strlen(home_menu);
page_displayed=0;
error=0; //初始化成无错误
old_error=0;
key_tmp=0;
g_tax_pin_pass=0;
sw=SWNUM; //开关位置数 =5
if(!NO_Paperflg) open_Nopaper_Printing_light(1);//装好纸
else open_Nopaper_Printing_light(2);//缺纸
//open_Nopaper_Printing_light(1); //初始化指示灯
open_Nopaper_Printing_light(4); //
InitialLCD();
Display_allgrass();
delayms(5000);
clear_lcd(0,MAX_LCD_NUM); //清最大显示行数4行
//Display_allgrass();
strcpy(buf," 欢迎使用税控收款机\r");
lcd_disp(0,0,buf);
strcpy(buf,"===竭诚为中国税务服务===\r");
lcd_disp(3,0,buf);
delayms(5000);
clear_lcd(0,MAX_LCD_NUM);
strcpy(buf,"是否运行器件检测程序\r 按[确定]键运行");
lcd_disp(0,0,buf);
CH375LibInit( ); /* 初始化CH375程序库和CH375芯片,操作成功返回0 */
counter=150; //150*50 MS
while(1) //自检程序
{
delayms(200);
if(!counter)break;
key_tmp = get_key();
if(!key_tmp) continue;
if(key_tmp==VOID)
break;
if(key_tmp==CASH)
self_test();
break;
}
if(read_eeprom(PIN_TMP1,10,buf)) error=READ_EEPROM_FAIL;
//if(Check_init_machine(8,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))
{
Mach_initialed=0; //机器未初始化
}
else Mach_initialed=0x01; //机器已初始化
init_var(); //得到出厂信息,包括税控机编号
//显示产品信息
display_producer();
delayms(30000);
//if(read_eeprom(RECEIVER_CHINESE_NAME,100,buf)) error=READ_EEPROM_FAIL;
//send_str(100,buf);
Writ_cpld(Bat_cnt,1); //开法拉电
error=init_machine_card();
Writ_cpld(Bat_cnt,0);
clear_lcd(0,MAX_LCD_NUM);
if(error)
{
if(!Mach_initialed)Write_FAU_data(SYSINTI,1);//初始化失败
if(error==MAX_FAU_ERR)g_tax_pin_pass=0;
catch_error_display(error,0);
strcpy(buf,"请检查错误,开机再试\r按[取消]键继续");
lcd_disp(0,0,buf);
beep(250);
while(1)
{
delayms(200);
if(get_key()==VOID)break;
}
}
else
{
strcpy(buf,"机器验证通过!!");
lcd_disp(2,0,buf);
delayms(5000);
if(read_eeprom(FORMATFILE,5,buf))
error=READ_EEPROM_FAIL;
if(buf[0]==0xaa &&buf[1]==0xaa && buf[2]==0xaa && buf[3]==0xaa && buf[4]==0xaa)
error=Format_File();
}
if(read_eeprom(PIN_TMP1,10,buf)) error=READ_EEPROM_FAIL;
//if(Check_init_machine(8,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))
{
Mach_initialed=0; //机器未初始化
}
else Mach_initialed=0x01; //机器已初始化
if((g_tax_pin_pass)&&(!error))
{
buf[0]=0;
rlt=write_eeprom(RECEIVER_NO,1,buf);//1070地址 清登录标志//收款员号清0
}
/*-------------扫描方式琐主循环----------------*/
clear_lcd(0,MAX_LCD_NUM);
InitialLCD(); //防止关过电重新初始化键盘
//清VFD
ClrVFD();
while(1)
{
if(!NO_Paperflg) open_Nopaper_Printing_light(1);//装好纸
else open_Nopaper_Printing_light(2);//缺纸
if((low_pwr)||(error==POWER_OFF))
{
error=0;
old_error=0;
shut_bat(1);
while(1)
{
delayms(50);
if(!low_pwr)//重新上电
{
InitialLCD();
page_displayed=0;
Last_line=0xff;
dismode=0;
break;
}
}//while(1);
} //主循环检测到交流掉电
openbacklight();
//检查是否到了新的一天并保存数据
rlt=save_day_data();
if(rlt) error=rlt;
/*------------------------读方式开关-------------------------------*/
if(error)
{
//if((error==POWER_OFF)&&(!low_pwr)){error=0;old_error=0;shut_bat(1);}//掉电又来电
if(error!=old_error)
{
beep(255);
catch_error_display(error,0);
old_error=error;
}
if(get_key()==VOID){error=0;old_error=0;}
else continue;
}
while(1)//主菜单选择
{
if(low_pwr)
{
shut_bat(1);
while(1)
{
delayms(50);
if(!low_pwr)//重新上电
{
InitialLCD();
page_displayed=0;
Last_line=0xff;
dismode=0;
//shut_bat(0);
break;
}
}
} //如果断电了
//else if(!Back_pwrflg){SetupPortD(Bat_cnt,1);Back_pwrflg=1;}//
if(!NO_Paperflg)open_Nopaper_Printing_light(1); //装好纸
else open_Nopaper_Printing_light(2); //缺纸
openbacklight();
key_tmp =get_key();
if(key_tmp==PAPER1)
{
Fast_feed_paper_hang(120);
continue;
}
#ifdef HYS620
else if(key_tmp==BACK_PAPER) //响应C8上的退纸键
{
back_on_dot(120);
continue;
}
#endif
if((!page_displayed)||(page_displayed==2))//||(page_displayed==1))
{
//display_menu_page(HOME,0,home_menu,cur_line);//主菜单
get_menu_name_hm(cur_line,page_displayed);
page_displayed=1;
}
rlt =choose_home_menu(key_tmp,&cur_line);// choose_menu_line(key_tmp,menu_num,&cur_line);//选择菜单项,当前行将移到新位置;
if((key_tmp>'0')&&(key_tmp<'7')&&(tmp_line==cur_line))cur_line=key_tmp&0x0f;//数字选择菜单
if(rlt==IS_CHOOSED)
{
sw=home_menu[cur_line-1];
break;
}
if(tmp_line!=cur_line)
{
page_displayed=2;
tmp_line=cur_line;
}
/*
while(1)//循环写CPLD 测试CPLD用
{
bit databit;
uchar i;
uint add;
add=0x8100;
for(i=0;i<19;i++)
{
delayms(500);
Writ_cpld(add+i,databit);
}
databit=!databit;
}
*/
}
switch(sw)
{
case EXCHANGE: //正常营业
if(g_tax_pin_pass)//口令已通过
{
error=exchange_function(YES);
cur_line=1;
}
else
{
clear_lcd(0,MAX_LCD_NUM);
strcpy(buf,"口令未通过或机器未初始化\r或锁机日期到按任意键退出");
lcd_disp(0,0,buf);
while(1)
{
delayms(200);
if(get_key())break;
}
}
//清VFD
ClrVFD();
break;
case READ_REPORT: //查询
if(!receiver_log){error=POWER_FAIL_1;break;}
error=query(Mach_initialed);
if(!Mach_initialed) error=MACH_NO_INITIALED;
cur_line=2;
break;
case REPORT_TAX: //报表/税
if((!receiver_log)&&(g_tax_pin_pass)){error=POWER_FAIL_1;break;}
error = declare();
if(!Mach_initialed) error=MACH_NO_INITIALED;
cur_line=3;
break;
case SETUP: //编程
if((!receiver_log)&&(g_tax_pin_pass))
{
error=POWER_FAIL_1;
break;
}
error = setup(Mach_initialed);
cur_line=4;
break;
case EXERCITATION: //培训操作
error=exchange_function(NO);
cur_line=5;
//清VFD
ClrVFD();
break;
case FAUCLASS: //安全审计类
Safety_function();
cur_line=6;
break;
default:
break;
}
page_displayed=0;
Last_line=0xff;
dismode=0;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -