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

📄 diss_s.c

📁 税控收款机软件。包括底层驱动和上层的应用一起。是一个完整的税控收款机软件方案
💻 C
📖 第 1 页 / 共 5 页
字号:
#include "upsd.h"
#include <absacc.h>
#include "zhd.h"
#include "dis1_1.h"

#include <intrins.h>
#include "ssxandicc.h"
#include "string.h"
#include "stdio.h"
#include "mag.h"
#define ENGLISH 00        //---|
#define HZ_CHAR 10        //   |
#define HZ_PY   11        //   |____ INPUT_STATE
#define HZ_WB   12        //---|
#define HZ_QW   13        //   |
#define HZ_SX	14		  //---|
//uchar xdata fft[256] _at_ 0x7f00;
//uchar xdata x32[32];
 /**********************/
 /* 汉字,汉字行显示模块*/
 /* 完成日期2005-1-10,ease to us DisHz */
 /* no hzdm change */
 /*使用要注意显示缓存与编译模式的关系*/
 /************************************/
									//  19264
									//  CS3---A4
									//  CS2---A3
									//  CS1---A2
									//  R/~W--A1    +++--control                                              --+
									//  D/~I--A0    + +--WR                                                     |
									//  E-----------+++--RD ;if read E must is high,if write E must high to low +--> 
									//   start adr of buffer which store information of hzdm
									
#define CS1STATE_R XBYTE[0x31a]   //  |         E--must be high
#define CS2STATE_R XBYTE[0x316]   //  |=>read chip state DB.7=1 busy; DB.5=1 on; DB.4=1 Rst     
#define CS3STATE_R XBYTE[0x30e]   //  |  
#define CS1COM_W   XBYTE[0x318]   // +   + write chip command include 'ON=0x3f,OFF=0x3e';setup startline with ddram C0h~FFH 
#define CS2COM_W   XBYTE[0x314]   // +==>+ setup row_adr "40h~7Fh,(64row)/CS,total 3*64row " NOT: row_adr auto +1 if write_data
#define CS3COM_W   XBYTE[0x30c]   // +   + setup Col_adr "B8h~BFh,(8col)/cs,(8dot/col),total 8col,because 16dot/hz so max dis(8/2)row hz
#define CS1DATA_W  XBYTE[0x319]   //  |
#define CS2DATA_W  XBYTE[0x315]   //  |=>write HZDM information to display at row/col setup by command_W
#define CS3DATA_W  XBYTE[0x30d]   //  |  write data then row_adr auto +1;
#define CS1DATA_R  XBYTE[0x313]   // + 31B
#define CS2DATA_R  XBYTE[0x317]   // +==>read chip data to Data_bus ,read row auto +1
#define CS3DATA_R  XBYTE[0x30f]   // +
/*

*/

extern uint crcbuf(uint len, uchar *buf);
extern FISCAL_DATA_INDEX  xdata fiscal_data_index;
SPAN xdata span1;
extern void InvoicePrint();
void fiscalcheck();
void check();
void base_info();
void fiscal();
uchar xdata LineNumber _at_ 0x537;
uchar xdata jinechaoxian _at_ 0xddc;
extern uchar daily_collect_sign(void);
extern ulong bcd_to_long (uchar *bcd_buf, uchar lgBcd);
//void input_inv_pro();
void fiscal_chk();
extern void InvVolCHK();
extern void DeclareCHK();
extern void DailyCHK();
extern uchar * declare_chk(void);
extern void daily_chk(void);
extern void DailyCollectOrDeclareDuty(uchar n);
uchar InvoiceStatus();
void InvGet();
extern uchar xdata fiscal_id1;
//U32 xdata TuiPiaoTemp[3] _at_ 0x538;//tuipiaocunqian
uchar xdata InvNumber _at_ 0x520;	//6zhangjishuqi 
uint xdata AutInvIndex _at_ 0x521;	//fapiaozhizhen
uchar xdata LastDay _at_ 0x550;		//Yuemofapiaojishuqi
//extern xdata float aaaa,bbbb,cccc,dddd,eeee,ffff;
//extern uchar * TimeCHK(uchar *p);
extern INVOICE_PRN_INFO xdata inv_prn_cur_old_info;
extern INVOICE_DAY xdata inv_tmp_day;
extern uchar update_control(void);
extern DECLARE_DATA xdata declare_tmp_data ;
uchar fiscal_check(void);
uchar fiscal_check_getadr(uchar n);
extern FISCAL_CK xdata fiscal_ck_dat;
extern uchar get_volume_info(uchar* str);
extern INVOICE_VOL xdata inv_tmp_vol;
extern FISCAL_CK_INDEX xdata fiscal_ck_index;
extern void StrToHex1(uchar *src, uchar *dest, uchar len);
extern void HexToStr(uchar *src, uchar *dest, uchar len);
extern void distribute_invoice();
extern uchar declare_fiscal(void);
void DailyCollect();
//extern void Prn_HPaper(unsigned char n);
extern INVOICE_PRN_INFO xdata inv_prn_tmp_info;
extern uchar long_to_asc (uchar *ascii_buf, uchar lgAsc, ulong *ptSrc);
extern void SelfCHK1(void);
void DisAsc(uchar *p_dm,uchar col,uchar row);
void fnLCMInit(void);
extern uchar fiscal_check_auth(void);
uchar xdata prn_page_buf[34][36] _at_ 0x900;
//extern void InvoiceGenerate1(void);
extern void  Prn_Sp(uchar *phzline);
void  DisHzYm(uchar *p_dm,uchar col,uchar row);
void  DisHzLinYm(uchar *p_hzline,uchar col);
extern uchar ExeIcc(uchar *src,bit mode);
uchar xdata databuf[10] _at_ 0x60a;
extern void InvoiceFullIn();
uchar xdata ID_byte[3];
//extern void rd_id(uchar *buf);
void Start_format();
extern uchar getstr(uchar keynum,uchar * keybuff,uchar col);
//extern void INVCHK (void);
extern void Delay1(void);
void BlankREC(void);
uchar xdata flash_temp[256] _at_ 0x800;
extern code void upsd_i2c_init (void);
extern code void upsd_i2c_xmit (uchar i2c_address, uchar start_address, uchar data_len);
extern code void upsd_i2c_rcv (uchar i2c_address, uchar start_address, uchar data_len);
extern code void i2c_wait_for_int (void);
extern INVOICE_PRN_INFO xdata inv_prn_cur_info;
void com_process(void);
extern void AutoInvoiceCHK(void);
INVOICE_INPUT xdata invoice_input1;
extern uchar xdata i2c_xmit_buf[20];
extern uchar xdata i2c_rcv_buf[20];	
extern bit ERROR;
xdata COMMDATA chCommData;
uchar xdata F_rs232=0;
extern uchar xdata AutoInvoiceNumber;
ulong xdata TimeControlCard;
ulong xdata SeaInvoice;
//void InvDisCHKandPrnDate();
//void InvDisCHKandPrnNum();
extern void rd_buf1(ulong adr);
code uchar * Err_CHK1[7] = {
	"  CPU正常",
	" ROM累加和为0x1d, 正常",
	" RAM写读正常",
	" 发票税控存储器",
	" 串口环线已经连接",
	" 串口环线没有连接",
	" 自检正常"
};

void HzHsCHG(void);
uchar fiscal_fei();
void ModifyPassWord(uchar n);
uchar PassWord(uchar n);
uchar data  g_temp ; 
uchar data  keyc ; 
uchar code  *p_cb ;
uchar xdata *p_xb ;
extern uchar xdata Hz_Record[40] ;
TIME  xdata sys_time;
uint xdata timebit _at_ 0x508;
uchar xdata Invoice_Mode _at_ 0x5dd;
uchar xdata  HZResult_col;  
uchar xdata  HZResult_row; 
uchar xdata  HZInput_max;    
uchar code *xdata p_team[24];
extern uchar code ASC_Xing;
//-------------------------------------------------------------------//
uchar xdata input_state;
uchar fiscal_declare(void);
extern void DisplayTime();
extern uchar fun_digitinput(uchar col);

extern uchar fiscal_tui(void);
uchar * Readtime1(void);
extern void Prn_Paper1(uchar n);
extern void InvoiceDisCHKandPrn(uchar mode);
//-------------------------------------------------------------------//
extern void PRN(uchar n);
void QingMiMa();
void DisAsc(uchar *p_dm,uchar col,uchar row);
void DisAscPush(uchar *p_dm,uchar col,uchar end_row);
void DisAscPop(uchar col,uchar end_row); 
void DisHz(uchar *p_dm,uchar col,uchar row);
void ClsLin(uchar col);
extern uchar xdata InvoicePrintIndex;
void PTeamInit(uchar *p_dm,uchar col); 
extern void GetKey();
extern code void InvokeCal(uchar col);
extern code void DL(void);
extern code void  HzInput(void); 
void Writetime1(void);
extern uint  code  *p_cword;
void cls(void);
extern void init_shui(void);
extern uchar xdata  sw1,sw2,stat,length;
extern uchar xdata icc_buff[250];

extern FISCAL_CK_INDEX xdata fiscal_ck_index;
extern code void Result(uchar col);
void DisAsc(uchar* p_dm,uchar row,uchar col);

extern void rs232_s(void);

extern void rs232_2s(uchar *d_data,uchar data_len);
extern  void Com_Init2(void);
extern void Com_Init(void);
extern void rs232_send_byte (uchar da);
extern void rs232_ss(void);
extern PSD_REGS UPSD_xreg; 
/*****************************************************************************************/
uchar xdata gCurRow,gCurCol;	// 当前行、列存储,行高16点,列宽8点
extern uchar xdata f_shouxie;
extern void Poslogin(void);
extern xdata PASSWORD sys_man;
extern xdata PASSWORD manager;
extern void icc_init() ;
extern void icc_init_sam();
extern void issue_invoice(void);
extern uchar input_invoice();
extern uchar xdata icctemp[16];
extern uchar xdata icctemp1[4];

xdata uchar Mac_Code[8] _at_ 0x5c00;
extern FISCAL_CK_INDEX xdata fiscal_ck_index;

extern INVOICE_DAY xdata inv_cur_day;
extern INVOICE_VOL xdata inv_cur_vol;
extern INVOICE_PRN_INFO xdata inv_prn_cur_info;
extern xdata INVOICE_CUR_INFO inv_cur_info;
DECLARE_DATA xdata declare_data _at_ 0x7380;
INVOICE_INPUT xdata invoice_input _at_ 0x1000;
extern USER xdata user;
extern TAX  xdata tax[6];
uchar xdata Temp_All[8] _at_ 0x6f0;
uchar xdata Init_Flag _at_ 0x510;
uchar xdata Fit_Flag _at_ 0x511;
uchar xdata timeinput _at_ 0x513;
uchar xdata cal _at_ 0x518;
extern void er_buck(void);
extern void er_sector(ulong addr);
extern void rd_buf(ulong addr);
extern void wr_page(ulong addr);
extern uchar update_user();
float CalDataInput(uchar col);
extern void ModifyTime();
void PRN_CHK(void);
uchar xdata InvoiceMode _at_ 0x512 ;
//extern code void TimeInvoiceTotal();
extern code void SingleInvoiceTotal();
extern void ElectrBackup();
extern SPAN xdata span;
void LCD_CHK(void);
void QX_CHK(void);
extern void timer0_init (void);
uchar xdata icctempp[32];
void AUTO_CHK();
void UserBaseInfo();
void ISO7816_CHK();
//uchar xdata InvoiceIndex   _at_ 0x524;
//U32   xdata InvoiceTemp    _at_ 0x519;
uchar xdata GLZpassword[10] _at_ 0x6fc;
uchar xdata YYYpassword[10] _at_ 0x5fa;

uchar xdata colnumber      _at_ 0xdcf;
uchar xdata pp;
uchar xdata *p11;
uchar xdata declare_temp[4];
void time_input(void);
void HzHsCHG(void);
uchar PassWord1(void);

void  main()
{
	//uchar *p;
	float zzzz;
	uint asz=0x1234;
	zzzz=((float)asz)/100;
	UPSD_xreg.DIRECTION_A=0xff;
	UPSD_xreg.DATAOUT_A=0x0f; 
	UPSD_xreg.DIRECTION_D=6;
	UPSD_xreg.DATAOUT_D=2;

	WDKEY=0x55;
	f_shouxie=0;
	input_state=HZ_PY;

	
	Com_Init();
	Com_Init2();
	EA=1;
	
	upsd_i2c_init();

	cal=0;	
	HzHsCHG();

	memcpy(span.id,user.tax_id,6);

	UPSD_xreg.DIRECTION_C=0x80;
	UPSD_xreg.DATAOUT_C=0x00;
	UPSD_xreg.DATAOUT_D=6;
	fnLCMInit();

	time_input();

	rs232_2s("欢迎使用博通税控收款机,谢谢",28);

	if(Init_Flag!=1)
	{
	
		cls();

		DisHzLinYm("    本机初始化? Y/N?",Col2); 

    	GetKey();
    	if(keyc=='y')
    	{
    		INIT_PRO:
    		DisHzLinYm(" 请装好税控卡,用户卡",Col2);
    		GetKey();
    		CARD_IO=1;
    		CARD_IO_SAM=1;
    		P4_2=0;
    		P4_6=0;
    		if((CARD_IO==1)&&(CARD_IO_SAM==1))
    		{
    			P4_2=1;
    			P4_6=1;
    			icc_init() ;
    			icc_init_sam();				
    			icc_reset_sam();
    
    			if(length<4)
    			{ 
    				DisHzLinYm("税控卡无响应,初始化,Y/N?",Col2);
    				GetKey();cls();
    				if(keyc=='y')goto INIT_PRO;
    				else Init_Flag=0;goto INIT_PRO_END;
    			}
    
    			icc_reset();

    			if(length<4)
    			{ 
    				DisHzLinYm(" 用户卡无响应,初始化?Y/N?",Col2);
    				GetKey();cls();
    				if(keyc=='y')	goto INIT_PRO;
    				else   Init_Flag=0;goto INIT_PRO_END;
    			}
            }
			else
			{
				cls();
				if(CARD_IO==0)DisHzLinYm(" 用户卡故障",Col2);
				if(CARD_IO_SAM==0)DisHzLinYm(" 税控卡故障",Col2);
				DisHzLinYm("   重新初始化,Y/N?",Col2);
				GetKey();
				if(keyc=='y')goto INIT_PRO;
				else Init_Flag=0;goto INIT_PRO_END;
			} 
   
			init_shui();

			if(stat!=0)
			{
				cls();
				if(stat==1)	DisHzLinYm("   税控卡不匹配",Col2); 
				else if(stat==2) DisHzLinYm("  用户卡不匹配",Col2);
                
				else
				{
					DL();
					DisHzLinYm("  非法的初始化",Col2);
					DL();
					goto INIT_PRO_END;
				}
                DL(); 
				DisHzLinYm("   重新初始化,Y/N?",Col2);
				GetKey();
				if(keyc=='y')goto INIT_PRO;
				else Init_Flag=0;goto INIT_PRO_END;
			}

			DisHzLinYm("   正在初始化,请稍候...",Col2);
			update_user();
			Init_Flag=1;
			Fit_Flag=1;
			memset(&inv_cur_day,0,sizeof(inv_cur_day));

			p11=Readtime1();
			inv_cur_day.date[0]=32;
			inv_cur_day.date[1]=sys_time.year;
			inv_cur_day.date[2]=sys_time.month;
			inv_cur_day.date[3]=sys_time.date;
			memcpy(span.st_date,user.start_time,4);
			memcpy(span.ed_date,user.start_time,4);
			invoice_input.index=0;
			//memcpy(inv_cur_day.date,p11,4);
			for(pp=0;pp<6;pp++)inv_cur_day.id[pp]=tax[pp].tax_id;
			er_buck();
    	}
    	else Init_Flag=0;goto INIT_PRO_END;	
    }
	else
	{
		Fit_Flag=1;
		icc_init() ;
		icc_init_sam();
		icc_reset_sam();

		if(length<4)Fit_Flag=0;
		goto INIT_PRO_END;

		icc_buff[0]=0x00;
		icc_buff[1]=0xa4;
		icc_buff[2]=0;
		icc_buff[3]=0;
		icc_buff[4]=2;
		icc_buff[5]=0x2f;
		icc_buff[6]=0x02 ;
		
		icc_sam_in();
		
		icc_buff[0]=0x00;//读税控机注册号
		icc_buff[1]=0xb0;//READ EF02
		icc_buff[2]=0x82;
		icc_buff[3]=0x0a;
		icc_buff[4]=8;
		
		icc_sam_out();

		if(memcmp(icc_buff,Mac_Code,8)!=0)Fit_Flag=0;
	}  //sys_man.no[0]='8';sys_man.no[1]='8';for(loop=0;loop<6;loop++) sys_man.password[loop]='8';


	INIT_PRO_END:
	pp=1;
	cls();
	//memset(&inv_cur_info,0,sizeof(inv_cur_info));
	if(LineNumber)
    {
		//memset(&prn_page_buf,'H',31*32);
		DisHzLinYm("  票据打印,请稍候...",Col2);
		LineNumber=LineNumber-1;
		memset(&prn_page_buf[LineNumber][0],32,31+colnumber);
        BfLine();BfLine();
        Prn_Paper1(34);
		cls();
    }

	/*
	while(pp)
	{
		LineNumber=0;
	//if(LineNumber)
    //{
		memset(&prn_page_buf,'H',31*32);
		//DisHzLinYm("  票据打印,请稍候...",Col4);
		//LineNumber=LineNumber-1;
		//memset(&prn_page_buf[LineNumber][0],32,31+colnumber);
        //BfLine();BfLine();
        Prn_Paper1(34);
		//pp++;
		//cls();
    //}
	} */
	DisHzLinYm("      有了您的纳税",         Col1);

	DisHzLinYm("才有了中华民族的伟大复兴",   Col3);

	DisHzLinYm(" 华博税控SY-A6伴您成功",     Col4);

	GetKey();
	
	do
	{
        cls();
		DisHzLinYm("1.税控销售  2.税控管理",Col1);
		DisHzLinYm("3.基本信息  4.机器检验",Col2); 
		DisHzLinYm("5.历史信息  6.退货处理",Col3); 
		DisHzLinYm("7.废票处理  8.税控稽查",Col4);	
		//DailyCollect();		
		GetKey();

		cls();
        switch(keyc)
        {
            case 1:
                if(PassWord(2))break;

    			do
    			{
                    if(InvoiceStatus()==0)
                    {
						memset(&inv_prn_cur_info,0,sizeof(inv_prn_cur_info));
						memset(&inv_tmp_day.tax1,0,48);
						memset(&span1,0,sizeof(span1));
        				inv_prn_cur_info.type=1;
						DailyCollect();
        				InvoiceFullIn();
                        if(InvoicePrintIndex==0)InvoicePrint();
						jinechaoxian=0;
                    }
                    else keyc=0x1b;
    			}while(keyc!=KEY_ESC);
                break;

⌨️ 快捷键说明

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