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

📄 setup.c

📁 税控收款机源码:拼音输入法,LCD,VFD驱动,IC卡驱动,税控国标
💻 C
📖 第 1 页 / 共 5 页
字号:
		
		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 + -