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

📄 diss_s.c

📁 税控收款机软件。包括底层驱动和上层的应用一起。是一个完整的税控收款机软件方案
💻 C
📖 第 1 页 / 共 5 页
字号:

void InvGet()
{
	memcpy(icctempp,invoice_input.invoice_info[0].vcode,22);
	
	input_invoice();
	if(stat!=0)return;	

	memcpy(&inv_cur_vol,&invoice_input.invoice_info[0],18);
	memcpy(&inv_cur_info,&invoice_input.invoice_info[0].start_id,8);
	inv_cur_info.f_first=1;
	memset(&invoice_input.invoice_info[0],0,sizeof(invoice_input.invoice_info[0]));
}

void com_process(void)
{
    uchar i;
	U32 data adr;
	uint cs;
	cls();
	DisHzLinYm(" 串口通讯中请稍候ESC退出",Col3);
    while(1)
    {	
		ES=1;
        GetKey();
		if(keyc==KEY_ESC){ES=0;return;}
		f_shouxie=0;
		DisHzLinYm(" 串口通讯中请稍候ESC退出",Col3);
		if(keyc==0xf0)
		{
			ES=0;
			cs=crcbuf(chCommData.len,&chCommData.head1);
			if(cs!=chCommData.commbuf[chCommData.len-5]*256+chCommData.commbuf[chCommData.len-4])
			{
				chCommData.cla=0xfc;
			}
			ES=1;
	        switch(chCommData.cla)
	        {
	   
	            case CMD_SC_POWER_ON: 
	                icc_reset();
	                chCommData.id=0x00;
	                chCommData.len=length+4;
	                memcpy(chCommData.commbuf,icc_buff,length);
	                rs232_s();	
	                break;
	            case CMD_SC_ISO_IN:
	                memcpy(icc_buff,chCommData.commbuf,chCommData.len-5);
	                icc_in();
	                chCommData.id=0x00;
	                chCommData.len=length+4;
	                 memcpy(chCommData.commbuf,icc_buff,length);
	                rs232_s();	
	                break;
	            case CMD_SC_ISO_OUT:
	                memcpy(icc_buff,chCommData.commbuf,chCommData.len-5);
	                icc_out();
	                chCommData.id=0x00;
	                chCommData.len=length+4;
	                memcpy(chCommData.commbuf,icc_buff,length);
	                rs232_s();	
	                break;
	            case CMD_SC_POWER_OFF:
	                icc_off();
					chCommData.id=0x00;
	                chCommData.len=7;
				    chCommData.commbuf[0]=0x90;
				    chCommData.commbuf[1]=0x00;
				    chCommData.commbuf[2]=0x00;
	                rs232_s();	
	                break;
	            case CMD_SAM_ISO_IN:
	                memcpy(icc_buff,chCommData.commbuf,chCommData.len-5);
	                icc_sam_in();
	                chCommData.id=0x00;
	                chCommData.len=length+4;
	                memcpy(chCommData.commbuf,icc_buff,length);
	                rs232_s();		
	                break;
	            case CMD_SAM_ISO_OUT:
	                memcpy(icc_buff,chCommData.commbuf,chCommData.len-5);
	                icc_sam_out();	        
	                chCommData.id=0x00;
	                chCommData.len=length+4;
	                memcpy(chCommData.commbuf,icc_buff,length);
	                rs232_s();		
	                break;
	            case CMD_SAM_POWER_ON:
	
	                icc_reset_sam();
	                chCommData.id=0x00;
	                chCommData.len=length+4;
	                memcpy(chCommData.commbuf,icc_buff,length);
	                rs232_s();
	                //rs232_s(&chCommData.type,length+1);
	                break;
	            case CMD_SAM_POWER_OFF:
	                icc_off_sam();
					chCommData.id=0x00;
	                chCommData.len=7;
				    chCommData.commbuf[0]=0x90;
				    chCommData.commbuf[1]=0x00;
				    chCommData.commbuf[2]=0x00;
	                rs232_s();
	                break;
	            case CMD_CONNECT:
	                chCommData.id=0;
	                chCommData.len=4;
	                rs232_s();
	                break;
	            case CMD_GET_INIT_DATA:
				    chCommData.id=0x00;
	                chCommData.len=132;
	                memcpy(chCommData.commbuf,&user,128);
	                rs232_s();
	                break;	
	            case CMD_GET_ONE_DAILY:
				     F_rs232=1;
	                if(fiscal_check_getadr(1))
					 {
						ES=0;
						rs232_send_byte ('E');
						rs232_send_byte ('R');
						ES=1;
						break;
					 }
	                 F_rs232=0;
					adr=fiscal_ck_index.index1;
					rd_buf(adr);
					memcpy(chCommData.commbuf,flash_temp,sizeof(inv_tmp_day));
				    chCommData.id=0x00;
	                chCommData.len=sizeof(inv_tmp_day)+4;
	                rs232_s();
	                break;	
	            case CMD_GET_SPAN_DAILY:
				     F_rs232=1;
	                 if(fiscal_check_getadr(2))
					 {
						ES=0;
						rs232_send_byte ('E');
						rs232_send_byte ('R');
						ES=1;
						break;
					 }
	                 F_rs232=0;
					 for(i=0;i<fiscal_ck_index.n;i++)
			     	{
						adr=fiscal_ck_index.index1+i*256;
						rd_buf(adr);
						memcpy(&inv_tmp_day,flash_temp,sizeof(inv_cur_day));
	                   if(i==fiscal_ck_index.n-1)
	                   {
							chCommData.id=0;
	                   }
	                   else if(i%2)
	                   {
				          chCommData.id=2;
	                   }
	                   else
	                   {
	                      chCommData.id=1;
	                   }
	                   chCommData.len=sizeof(inv_tmp_day)+4;
				       memcpy(chCommData.commbuf,flash_temp,sizeof(inv_tmp_day));
					   rs232_s();
	     			}           
	                break;  
	            case CMD_GET_ID_VOL:
					F_rs232=1;
					if(fiscal_check_getadr(8))
					 {
						ES=0;
						rs232_send_byte ('E');
						rs232_send_byte ('R');
						ES=1;
						break;
					 }
					F_rs232=0;
					 for(i=0;i<fiscal_ck_index.n;i++)
			     	{
						adr=fiscal_ck_index.index1+i*256;
						rd_buf(adr);
						memcpy(&inv_tmp_vol,flash_temp,sizeof(inv_tmp_vol));
	                   if(i==fiscal_ck_index.n-1)
	                   {
	                    chCommData.id=0;
	                   }
	                   else if(i%2)
	                   {
				          chCommData.id=2;
	                   }
	                   else
	                   {
	                      chCommData.id=1;
	                   }
	                   chCommData.len=sizeof(inv_tmp_vol)+4;
				       memcpy(chCommData.commbuf,flash_temp,sizeof(inv_tmp_vol));
					   rs232_s();
	     			} 
	                break;	    
	            case CMD_GET_SPAN_VOL:
				     F_rs232=1;
	                 if(fiscal_check_getadr(4))
					 {
						ES=0;
						rs232_send_byte ('E');
						rs232_send_byte ('R');
						ES=1;
						break;
					 }
	                 F_rs232=0;
					 for(i=0;i<fiscal_ck_index.n;i++)
			     	{
						adr=fiscal_ck_index.index1+i*256;
						rd_buf(adr);
						//memcpy(&inv_tmp_vol,flash_temp,sizeof(inv_tmp_vol));
	                   if(i==fiscal_ck_index.n-1)
	                   {
	                    chCommData.id=0;
	                   }
	                   else if(i%2)
	                   {
				          chCommData.id=2;
	                   }
	                   else
	                   {
	                      chCommData.id=1;
	                   }
	                   chCommData.len=sizeof(inv_tmp_vol)+4;
				       memcpy(chCommData.commbuf,flash_temp,sizeof(inv_tmp_vol));
					   rs232_s();
	     			}           
	                break;	
	            case CMD_GET_ID_PRN:
				     F_rs232=1;
	                 //fiscal_check_getadr(5);
					 if(fiscal_check_getadr(5))
					 {
						ES=0;
						rs232_send_byte ('E');
						rs232_send_byte ('R');
						ES=1;
						break;
					 }
	                 F_rs232=0;
					
					 for(i=0;i<fiscal_ck_index.n;i++)
			     	{
						adr=fiscal_ck_index.index1+i*256;
						rd_buf(adr);
						//memcpy(&inv_prn_tmp_info,flash_temp,sizeof(inv_prn_tmp_info));
	                   if(i==fiscal_ck_index.n-1)
	                   {
	                    chCommData.id=0;
	                   }
	                   else if(i%2)
	                   {
				          chCommData.id=2;
	                   }
	                   else
	                   {
	                      chCommData.id=1;
	                   }
	                   chCommData.len=178;//sizeof(inv_prn_tmp_info)+4;
				       memcpy(chCommData.commbuf,flash_temp,174);
					   rs232_s();
	     			}      
	                break;		
	            case CMD_GET_SPAN_PRN:
				     F_rs232=1;
	                 //fiscal_check_getadr(6);
					 if(fiscal_check_getadr(6))
					 {
						ES=0;
						rs232_send_byte ('E');
						rs232_send_byte ('R');
						ES=1;
						break;
					 }
	                 F_rs232=0;
					for(i=0;i<fiscal_ck_index.n;i++)
			     	{
						adr=fiscal_ck_index.index1+i*256;
						rd_buf(adr);
						//memcpy(&inv_prn_tmp_info,flash_temp,sizeof(inv_prn_tmp_info));
	                   if(i==fiscal_ck_index.n-1)
	                   {
	                    chCommData.id=0;
	                   }
	                   else if(i%2)
	                   {
				          chCommData.id=2;
	                   }
	                   else
	                   {
	                      chCommData.id=1;
	                   }
	                   chCommData.len=178;//sizeof(inv_prn_tmp_info)+4;
				       memcpy(chCommData.commbuf,flash_temp,174);
					   rs232_s();
	     			}      
	                break;    
	            case CMD_GET_UPDATE_DATA:
				    chCommData.id=0x00;
	                chCommData.len=34;
	                memcpy(chCommData.commbuf,user.end_time,30);
	                rs232_s();
	                break;		
	            case CMD_SET_UPDATE_DATA:
				    chCommData.id=0;
	                chCommData.len=4;
					memcpy(user.end_time,chCommData.commbuf,30);
	                rs232_s();
	                break;     
	            
	            default:
					ES=0;
					rs232_send_byte ('E');
					rs232_send_byte ('R');
					ES=1;
	                break;
	        }
		}
    }
}

uchar InvoiceStatus()
{  
    uchar i=0,*p;
    cls(); 
    p=Readtime1();

    memcpy(inv_cur_vol.end_time,p,4);	
	P3_4=1;
	if(P3_4)
	{
		DisHzLinYm(" 请装入发票或空白纸",Col2);
        do
        {
            P3_4=1;
            i++;
            FfLine();
            if(P3_4==0)i=0;
        }while((i!=0)&&(i!=255));
        if(i>50)i=1;
	}
	_nop_();
	if(inv_cur_vol.start_id==inv_cur_vol.end_id)
	{
		DisHzLinYm(" 发票用完请录入新发票",Col3);
		i = 1;
	} 
	_nop_();
	if(jinechaoxian==1)
	{
		DisHzLinYm(" 发票累计总金额超限,请报税",Col4);
        i = 1;
	}
	_nop_();
	if(jinechaoxian==2)
	{
		DisHzLinYm(" 请回送申报监控信息",Col1);
        i = 1;
	}
	_nop_();
	if(i)
	{
		DL();
		DL();
	}
	_nop_();
    return i;
}

void UserBaseInfo()
{
	uchar *p;
	uchar i,j;
	uchar xdata temp1[40];
	DisHzLinYm("1.显示用户基本信息",Col2);	//test ok
	j=0;
	do
	{	
		cls();
		//DisHzLinYm("左右键看更多信息",7);
		if(keyc==KEY_PUP){if(j>0)j--;}
		if(keyc==KEY_PDN){if(j<7)j++;}
		
		switch(j)
		{
			case 0:
			    
				DisHzLinYm(Fpxe[1],Col1);
				DisHzLinYm(user.user_name,Col2);
				if(user.user_name[24]!=0)DisHzLinYm(&user.user_name[24],Col3);
				for(i=10;i<30;i++)DisAsc(&PrnVAsc,Col3,i);
				DisHzLinYm(Fpxe[2],Col4);
				DL();cls();
				DisHzLinYm(Fpxe[3],Col1);
				DisAsc(&D00+(user.end_time[0]&0xf0),Col1,Row1);
				DisAsc(&D00+(user.end_time[0]%16)*0x10,Col1,Row2);
				DisAsc(&D00+(user.end_time[1]&0xf0),Col1,Row3);
				DisAsc(&D00+(user.end_time[1]%16)*0x10,Col1,Row4);
				DisAsc(&D00+(user.end_time[2]&0xf0),Col1,Row7);
				DisAsc(&D00+(user.end_time[2]%16)*0x10,Col1,Row8);
				DisAsc(&D00+(user.end_time[3]&0xf0),Col1,Row11);
				DisAsc(&D00+(user.end_time[3]%16)*0x10,Col1,Row12);
				p=Fpxe[4];
			    memset(temp1,0,sizeof(temp1));
			    sprintf(temp1,"%lu",user.zc_total_top);
				for(i=0;i<15;i++)temp1[i+17]=temp1[i];
				for(i=0;i<17;i++)temp1[i]=*(p+i);
			    DisHzLinYm(temp1,Col2);
				p=Fpxe[0];
			    memset(temp1,0,sizeof(temp1));
			    sprintf(temp1,"%lu",user.tp_total_top);
				for(i=0;i<15;i++)temp1[i+17]=temp1[i];
				for(i=0;i<17;i++)temp1[i]=*(p+i);
			    DisHzLinYm(temp1,Col3);//退票累计限额(分)							
				break;

			case 1:
		        DisHzLinYm("纳税人编码:",Col1);
				memset(Hz_Record,0,sizeof(Hz_Record));
				for(i=0;i<8;i++)
				{
					Hz_Record[i+i ] =user.user_id[i]/16+48;
					Hz_Record[i+i+1]=user.user_id[i]%16+48;
				}
		        DisHzLinYm(Hz_Record,Col2);

				DisHzLinYm("税号:",Col3);
		        //DisHzLinYm(user.fiscal_id,Col4);
				memset(Hz_Record,0,40);
				memcpy(Hz_Record,user.fiscal_id,sizeof(user.fiscal_id));
				DisHzLinYm(Hz_Record,Col1);

				DisAsc(&PrnVAsc,Col4,20);
		        memset(temp1,0,sizeof(temp1));
				DL();
		        DisHzLinYm("单张发票开票限额(分):",Col1);
		        sprintf(temp1,"%lu",user.one_top);
		        DisHzLinYm(temp1,Col2);
				break;

			case 2:
			case 3:
			case 4:
			case 5:
			case 6:
			case 7:
		        memset(Hz_Record,0x20,40);
		        HexToStr(&tax[j-2].tax_id, &Hz_Record[13], 1);
		        DisHzLinYm(Hz_Record,Col1);
				memset(Hz_Record,0x20,40);
		        HexToStr(tax[j-2].tax_code, &Hz_Record[13], 4);//older is 12
		        DisHzLinYm(Hz_Record,Col3);
				memset(Hz_Record,0x20,40);
		        HexToStr(tax[j-2].tax_count, &Hz_Record[13], 2);
		        DisHzLinYm(Hz_Record,Col2);

				DisHzLinYm("税目索引:",Col1);
				DisHzLinYm("税率:",Col2);
				DisHzLinYm("税种项目代码:",Col3);
				

				DL();DL();cls();
				memset(Hz_Record,0,40);
				DisHzLinYm("经营项目中文名称:",Col1);
				memcpy(Hz_Record,tax[j-2].sale_cn_name,sizeof(tax[j-2].sale_cn_name));
				DisHzLinYm(Hz_Record,Col2);
				memset(Hz_Record,0,40);
				DisHzLinYm("经营项目英文名称:",Col3);
				memcpy(Hz_Record,tax[j-2].sale_en_name,sizeof(tax[j-2].sale_en_name));
		        DisHzLinYm(Hz_Record,Col4);
			    
				break;
		}
		GetKey();
	}while(keyc!=KEY_ESC);
}

uchar PassWord2()
{
	uchar j;
	memset(Hz_Record,0,13);
    for(j=0;j<=12;j++)
    {
        GetKey();
        if(keyc==0x1b)return 1;
        else if(keyc==KEY_CR)
		{
			Hz_Record[0]=Hz_Record[0]*16 + Hz_Record[1];
			Hz_Record[1]=Hz_Record[2]*16 + Hz_Record[3];			
			Hz_Record[2]=Hz_Record[4]*16 + Hz_Record[5];
			Hz_Record[3]=Hz_Record[6]*16 + Hz_Record[7];	
			Hz_Record[4]=Hz_Record[8]*16 + Hz_Record[9];
			Hz_Record[5]=Hz_Record[10]*16+ Hz_Record[11];
			Hz_Record[6]=(j+

⌨️ 快捷键说明

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