⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 setup.c

📁 税控收款机源码:拼音输入法,LCD,VFD驱动,IC卡驱动,税控国标
💻 C
📖 第 1 页 / 共 5 页
字号:
		#else
		feed_on_line(1);
		#endif
		continue;
	}
     #ifdef HYS620
    else if(key==BACK_PAPER) //响应C8上的退纸键
    { 
     back_on_dot(120);
     continue;
    }
     #endif
     else 
      over_mode=choose_menu_line(key,menu_num,&cur_line);//否则选择菜单项,当前行将移到新位置
    switch(over_mode)
    {
		case IS_CHOOSED://若选定某项菜单,
        if(layer<MAX_LAYER_MENU)//在最后菜单级之前,则到其对应下一级的首行开始反显页面 
        {
          last_line=cur_line;//保存此级当前项所在行位置
          cur_line=1;//下一级的首行
        }
        else//若此时为最后菜单级时,则取得相应功能号
          function_no=menu_Lmax_ST[last_line-1][cur_line-1];

		if((layer==SND_LAYER_MENU)&&(last_line==SET_MANUFACTURE))//需要清机卡的操作
		{
		   strcpy(buf,"请插入设置卡后\r     按任意键继续");
		   clear_lcd(0,2);
		   lcd_disp(0,0,buf);
          while(1)
          {
            openbacklight();
            key=get_key();
           if(low_pwr) return POWER_OFF;//监测到断电了,则exit 
		   if (!key)  continue;  //如果无键按下则重新扫描
		   if(key==VOID)layer--;
            result=0;
            break;      //如果按下键就退出
          }
		  //result=enter_application_direct(USER_CARD);
          //if(result) return result;

		}
		layer++;//指到其对应下一级
		break;
      
		case EXIT_CHOOSE://若选择返回  
        if(layer>FST_LAYER_MENU)//在第1级菜单之前,则回到其对应的上一级菜单项反显 
        {
			layer--;
			cur_line=last_line;
			if(layer==SND_LAYER_MENU) last_line=1;
        }
		break;
		
		default://未选定,则继续等待按键
			break;
    }    
    //-------------2.1.3 显示当前菜单级页面-----------------------//
    switch(layer)
    {
   
      case SND_LAYER_MENU:
        display_menu_page(switch_mode,layer,menu_L2_ST,cur_line);
        menu_num=strlen(menu_L2_ST);
      break;
      case MAX_LAYER_MENU:
        display_menu_page(switch_mode,layer,menu_Lmax_ST[last_line-1],cur_line);
        menu_num=strlen(menu_Lmax_ST[last_line-1]);
      break;
      default://若到达功能级,则转到功能设置
      break;
    }
    //===============2.2 功能设置=========================//
    if(layer==FUNCTION_LAYER)//若到达功能级 
    {
		//-----------2.2.1 执行相应功能------------//
		switch(function_no)
		{
		//-------获取发票卷--------// 
		case GET_INVOICE_NO:
			if(!mach_initial)
			{
	            result=MACH_NO_INITIALED;
	            break;
			}
		//----------提示当前功能--------------//
			get_menu_name_sp(MAX_LAYER_MENU,function_no,buf);
			lcd_disp(0,0,buf);
			clear_lcd(1,3);

			//从EEPROM中检查是否还有暂存的发票卷未录入税控卡 
			//result=get_distribute_invoice(0,&distribute_invoice,&index_no,0);
			//2005.8.5
			result=get_V_invoice(tempbuf);
			if(result==POWER_OFF)return(result);
			if((result!=0)&&(result!=tempbuf[result]))return(result);
			j=result;
			//send_str(j,tempbuf);
			if(result) //从EEPROM中没有未录入税控卡的暂存发票卷154
			{
				result=check_user_card();//-------检查用户卡合法性--------//
		
				if(result) 
				{
					result=CARD_ERROR;
					break;
				}
				clear_lcd(0,4);
				sprintf(buf,"请输入要获取的发票卷数\r最大输入%bu卷",j);//sprintf(buf,"请输入要获取的发票卷数[1-%bu]",MAX_DISTRIBUTE_NUM);//1-50
				lcd_disp(0,0,buf);
			
				result=wait_input_num(&num,0,2,j);//wait_input_num(&num,0,2,MAX_DISTRIBUTE_NUM); //不允许输入小数
				
				if(result==POWER_OFF) return POWER_OFF;
	  			else if(result==CANCEL) break;
				//从用户卡分发发票
				result=get_invoice_nb((uchar)num,tempbuf);//从用户卡分发的发票卷暂存在EEROM中
			    break;
			}
			else //从EEPROM中还有未录入税控卡的暂存发票卷
			{
				clear_lcd(0,4);
				sprintf(buf,"对不起,机器位置已满");
	            lcd_disp(0,0,buf);
				//memset(buf,0,50);
				/*sprintf(buf,"还有发票卷起止号:\r%08lu--%08lu\r可以录入到税控卡\r",
	            		distribute_invoice.invoice_start_no,distribute_invoice.invoice_end_no);
	     
				lcd_disp(0,0,buf);
				//clear_lcd(2,2);
				sprintf(buf,"            按[取消]退出");
				lcd_disp(3,0,buf);
				//----等待按键执行设置操----//
	 			result=wait_usal_key(2);//只接受[取消]键			
	  			if(result==POWER_OFF) return POWER_OFF;
	  			else
				{
					clear_lcd(0,3);
					break;      						
				}
				*/
			}
			break;
		//-------录入发票卷--------//
		case SET_INVOICE_ROLL:	
			if(!mach_initial)
			{
	            result=MACH_NO_INITIALED;
	            break;
			}	
			//----------提示当前功能--------------//
			get_menu_name_sp(MAX_LAYER_MENU,function_no,buf);
			lcd_disp(0,0,buf);
			//---检查发票是否用完---//
			//从税控卡获得发票卷的信息
			result=get_invoice_roll_info(&inv_roll_info);
			if(result==0) //没有用完
			{
				strcpy(buf,"对不起,当前发票卷没用完");
				clear_lcd(2,2);
				lcd_disp(2,0,buf);
				result=PLEASE_RETURN;
				break;
			}
			if(result!=INVO_ROLL_END)return(result);
			clear_lcd(0,4);
		  /*sprintf(buf,"请输入发票起始号码");
		  lcd_disp(0,0,buf);
		  result=wait_input_num(&start_no,0,10,0);
		 
		  if(result==POWER_OFF) return POWER_OFF;
  		  else if(result==CANCEL) break;
		  //发票用完,从EEPROM中检查是否有未录入税控卡的暂存发票卷
		  result=get_distribute_invoice(start_no,&distribute_invoice,&index_no);
		  
		  
          if(result==READ_EEPROM_FAIL)
			  return(result);
		  
		  if(result) //从EEPROM中没有未录入税控卡的暂存发票卷
		  {
			strcpy(buf,"请先获取新发票卷!!\r            按[取消]退出\r");
            clear_lcd(1,3);
			lcd_disp(1,0,buf);
			wait_usal_key(2);//接受[取消]键
			break;
		  }
          else
		  {
            sprintf(buf,"已获取的发票卷起止号:\r%010lu--%010lu\r",
            		distribute_invoice.invoice_start_no,distribute_invoice.invoice_end_no);  	
            lcd_disp(1,0,buf);
            strcpy(buf,"            按[确认]录入");
            lcd_disp(3,0,buf);
			*/
			
			result=get_distribute_invoice(0,&distribute_invoice,&index_no,0);
			if((distribute_invoice.invoice_start_no==0)&&(distribute_invoice.invoice_end_no==0))
            {
			strcpy(buf,"对不起,发票卷已用完!!\r  请取发票卷!");
			clear_lcd(2,2);
			lcd_disp(2,0,buf);
			result=PLEASE_RETURN;
			break;
		    }
			sprintf(buf,"有发票卷起止号:\r%08lu--%08lu\r可以录入到税控卡",
            		distribute_invoice.invoice_start_no,distribute_invoice.invoice_end_no);
     
			lcd_disp(0,0,buf);
            sprintf(buf,"按上/下选择 按[确定]录入");
			lcd_disp(3,0,buf);
         i=index_no;
		 j=index_no;
		 k=index_no;
         end_index=49;
		while(1)
         {
      
           if(low_pwr) return POWER_OFF;//监测到断电了,则exit 
		   key=get_key();
           if (!key)  continue;  //如果无键按下则重新扫描
           if(key==VOID) {result=CANCEL; break;}
		   else if((key== '8')||(key== '2'))
		   {
		     if((key== '8')&&(j>=i)){if((j==i)&&(i==0))j=0;else j--;}
		     else if(key== '2'){if(j<end_index)j++;else j=0;}
			 else continue;
		     if((j>=0)&&(j<50))
		     result=get_distribute_invoice(0,&distribute_invoice,&index_no,j);
		     //else continue; 
		     if(!result)
		      {
		       k=index_no;
			   j=index_no;
              
		       sprintf(buf,"有发票卷起止号:\r%08lu--%08lu\r可以录入到税控卡\r",
            		   distribute_invoice.invoice_start_no,distribute_invoice.invoice_end_no);
		       lcd_disp(0,0,buf);
			   sprintf(buf,"按上/下选择 按[确定]录入");
			   lcd_disp(3,0,buf);
		      }
		     else if(result==INVO_ROLL_END){index_no=k;j=index_no;end_index=k;}//buf[1]=1;
		
		   }
           else if(key==ENTER)
           {
             result=input_invoice_nb(&distribute_invoice,index_no);//录入税控卡
		    if(result==0) result=OK;
            break;           //如果按下确认键就退出
           }
		   
		   continue;     
         }
			  //----等待按键执行设置操----//
 			 /* result=wait_usal_key(1);//接受[取消]键或[确认]键
  			  if(result==POWER_OFF) return POWER_OFF;
  			 else if(result==CANCEL) 
			  {
				  
				  break; 
			  }
			  
			  result=input_invoice_nb(&distribute_invoice,index_no);//录入税控卡
			  if(result==0) result=OK;
			//}
            */
        break;
    #ifdef	DISPLAY_PRODUCER
       //-------------显示出厂信息-------------
		case DISP_PRODUCER:
			display_producer();
			result=0;
			break;
	#endif

        //-------设置固定加成\折扣\辅币兑换率--------//
        case FIXED_SERVICE:	
        case FIXED_DISCOUNT:
        //#ifdef NEED_BIT
        case SET_BIT_RATE:
        //#endif
          if(!mach_initial)
          {
            result=MACH_NO_INITIALED;
            break;
          }	
          result=set_parameter_struct(function_no);
      	  if(result==POWER_OFF) return result;////断电,返回
        break;
        
        //-------设置是否色标定位--------//
        case INVOICE_LOCATE:
		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,"当前状态:  色标定位状态\r");
          if(!g_invoice_locate)
          {
             buf[9] = 0xb7;//非色标
             buf[10] = 0xc7;
			 //buf[12] = 0;

          }
          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_invoice_locate,INVOICE_LOCATE_ADDR);
          if(result==0) result=OK;
          //----------提示设置结果---------------//
          strcpy(buf,"当前状态:  色标定位状态\r");
          if(!g_invoice_locate)
          {
             buf[9] = 0xb7;//非
             buf[10] = 0xc7;
			 //buf[12] = 0;
          }
          clear_lcd(1,1);
          lcd_disp(1,0,buf);
          con_disp(1,0,strlen(buf),buf);
        break;
         //-------设置是部门或PLU快捷键--------//
        case BRANCH_PLU_SWITCH:
          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,"当前状态:");
          if(g_branch_plu_switch)
            strcat(buf,"PLU快捷键\r");
      	  else
            strcat(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_branch_plu_switch,BRANCH_PLU_SWITCH_ADDR);
          if(result==0) result=OK;
          //----------提示设置结果---------------//
          strcpy(buf,"当前状态:");
          if(g_branch_plu_switch)
            strcat(buf,"PLU快捷键\r");
      	  else
            strcat(buf,"部门快捷键\r");
		  
          clear_lcd(1,1);
          lcd_disp(1,0,buf);
          con_disp(1,0,strlen(buf),buf);
	  
        break;
        //-------设置是否PDA输入--------//
        case PDA_SWITCH:
          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,"当前状态:  需要手写板输入\r");
          if(!g_pda_switch)
          {
             buf[9] = 0xb2;//不
             buf[10] = 0xbb;
          }
          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_pda_switch,PDA_SELECT);
          if(result==0) result=OK;
          //----------提示设置结果---------------//
          strcpy(buf,"当前状态:  需要手写板输入\r");
          if(!g_pda_switch)
          {
             buf[9] = 0xb2;//不
             buf[10] = 0xbb;
          }
          clear_lcd(1,1);
          lcd_disp(1,0,buf);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -