?? 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 + -