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

📄 app.c

📁 抄水表手持POS代码
💻 C
📖 第 1 页 / 共 3 页
字号:
			   else {continue;}
			   //sprintf(str,"%07ld   ",UCardNo);_Display(8,0,str,8);
				if(_R232Buf0[17]<xzdate[0]){optime[0]=06;optime[1]=02;}//{_Display(0,1,khstr,16);_Display(0,2,"时间超期!          ",16);continue;}
				if((_R232Buf0[17]==xzdate[0])&&(_R232Buf0[18]<xzdate[1])){optime[0]=06;optime[1]=02;}//{_Display(0,1,khstr,16);_Display(0,2,"时间超期!           ",16);continue;}
				memcpy(optime,_R232Buf0+17,2);memcpy(UCardBal1,_R232Buf0+19,2);//交易前余额
				UCardBal_1=(uint)_R232Buf0[19]*0x100+(uint)_R232Buf0[20];UCardBal_1Bak=UCardBal_1;
				sprintf(jyqstr,"刷卡前:%03u        ",UCardBal_1);
				//_Display(0,1,"刷卡前:           ",16);sprintf(str,"%03u      ",UCardBal_1);_Display(8,1,str,7);
				ucardbal0=(int)PriceTab[CardType-0x0a];
			  }
			  if(UCardBal_1<ucardbal0){_Display(0,1,khstr,16);_Display(0,2,"余额不足!         ",16);continue;}
			  if((fjxx[0]==0xb1)&&(fjxx[1]==0xca)){_Display(0,1,"异常卡,请与IC卡",16);_Display(0,2,"中心联系           ",16);hkbz=1;goto gobreak;}
           if(memcmp(NoCardNumBuf,UCardSnr,4)==0)
			  {
		      if((NoCardNumBuf[4]==UCardBal_1%0x100)&&(NoCardNumBuf[5]==UCardBal_1/0x100))
				{
             _Display(0,1,khstr,16);//_Display(0,1,jyqstr,16);
				 if((CardType==0x0a)||(CardType==0x0c)) sprintf(jyhstr,"刷卡后:%3.1f       ",(float)UCardBal_2/10);
				 else sprintf(jyhstr,"刷卡后:%3u        ",UCardBal_2);
				 _Display(0,2,jyhstr,16);
				 _Display(0,3,"****刷卡完成****",16);
				 //sprintf(str,"收费次数:%01u         ",(uint)len+1);_Display(0,3,str,16);
				 SPEAKON;_delay_10ms(250); SPEAKOFF;_LightOff();_delay_10ms(10);_LightOn();goto gobreak;
				}
			  }
			  memset(NoCardNumBuf,0,sizeof(NoCardNumBuf));
			  if(CardType==0x0a)
			  {
			  //err=0;start:
			  status=0;
			  if(UCardBal_1>8000){_Display(0,1,"异常卡,请与IC卡",16);_Display(0,2,"中心联系           ",16);continue;}
			  if(UCardBal_1Bak!=UCardBal_1)continue;
			  if(ucardbal0>100)continue;
			  UCardBal_2=UCardBal_1-ucardbal0;
			  if(UCardBal_2>8000)continue;
			  for(i=0;i<3;i++){_pRecBuf0=0;if(WriteUCInc(UCardSnr, "\0\0\0\0","\0\0\0\0","\0\0\0\0",UCardBal_2)==OK) {status=1;break;}}
			  if(i==3){memcpy(NoCardNumBuf,UCardSnr,4);NoCardNumBuf[4]=UCardBal_2%0x100;NoCardNumBuf[5]=UCardBal_2/0x100;continue;}
			  //key=0;_pRecBuf0=0;
			  /*if(ReadUCInc()==NOK)
			  { 
			   if(status==1)status=2;if(status==0)status=9;
			   _pRecBuf0=0;
			   if(ReadUCInc()==NOK)
				{
				 //_Display(0,2,"    交易未完       ",16);_Display(0,3,"请正确放置公交卡",16);	BELL(5,2);
				 while(1)
				 {
				  _pRecBuf0=0;if(ReadUCInc()==OK)break;
				  if(_GetKey(111)==KeyB_No)key++;
				  if(key>=5){if(status==1)status=2;if(status==0)status=9;      break;}
				 }
				}
			  }
			  if(status==9)continue;
			  //if(status==9){_Display(0,2,"                 ",16);_Display(0,3,"    交易失败    ",16);	BELL(5,2);_GetChar();continue;}
			  if(status==2){UCardBal_2=UCardBal_1-ucardbal0;status=1;}
			  else {
//			  memcpy(UCardBal2,_R232Buf0+CC_ADDRINF+1+20,2);//交易后余额
			  UCardBal_2=(uint)_R232Buf0[CC_ADDRINF+1+20]+(uint)_R232Buf0[CC_ADDRINF+1+21]*0x100;
			  if((UCardBal_2!=UCardBal_1-ucardbal0)&&(UCardBal_2!=UCardBal_1Bak-ucardbal0))
			  {
			   if(UCardBal_1Bak==(uint)UCardBal1[0]+(uint)UCardBal1[1]*0x100) UCardBal_1=UCardBal_1Bak;
			   err++;if(err<4)goto start; 
				continue;}
			  }*/
			  }
			  else
			  {
			  //err=0;start1:
//				status=0;_Display(0,1,jyqstr,16);
            if(UCardBal_1Bak!=UCardBal_1)continue;
            if(CardType==0x0c)
				{if(UCardBal_1>8000){_Display(0,1,"异常卡,请与IC卡",16);_Display(0,2,"中心联系           ",16);continue;}if(ucardbal0>100)continue;
				UCardBal_2=UCardBal_1-ucardbal0;if(UCardBal_2>8000)continue;}
				else if(CardType==0x0d)
				{if(UCardBal_1>720) UCardBal_1=720;UCardBal_1Bak=720;UCardBal_2=UCardBal_1-1;if(UCardBal_2>3000)continue;}
				else
				{if(UCardBal_1>3000){_Display(0,1,"异常卡,请与IC卡",16);_Display(0,2,"中心联系           ",16);continue;}
				UCardBal_2=UCardBal_1-1;if(UCardBal_2>3000)continue;}
				if((optime[0]<4)||(optime[1]>0x12)||(optime[1]<0x01)){optime[0]=06;optime[1]=02;}//continue;
				//UCardBal_2=4000;//optime[0]=05;optime[1]=0x11;//tttt
			   for(i=0;i<3;i++){_pRecBuf0=0;if(WriteYPKInc(UCardSnr, "\0\0\0\0","\0\0\0\0",optime,UCardBal_2)==OK){status=1;break;}}
				//_Display(0,1,"ok6",3);
				if(i==3){memcpy(NoCardNumBuf,UCardSnr,4);NoCardNumBuf[4]=UCardBal_2%0x100;NoCardNumBuf[5]=UCardBal_2/0x100;continue;}
				/*key=0;_pRecBuf0=0;
			   if(ReadYPKInc()==NOK)
			   { 
			    if(status==1)status=2; if(status==0)status=9;
				 _pRecBuf0=0;
				 if(ReadYPKInc()==NOK)
				 {
				  _Display(0,2,"    交易未完       ",16);_Display(0,3,"请正确放置公交卡",16);	BELL(5,2);
				  while(1)
				  {
				   _pRecBuf0=0;if(ReadYPKInc()==OK)break;
				   if(_GetKey(111)==KeyB_No)key++;
				   if(key>=5){if(status==1)status=2; if(status==0)status=9;     break;}
				  }
				 }
			   }
				UCardBal_2=(uint)_R232Buf0[19]*0x100+_R232Buf0[20];
				if(status==9)continue;
				//if(status==9){_Display(0,2,"                 ",16);_Display(0,3,"    交易失败    ",16);	BELL(5,2);_GetChar();continue;}
			   if(status==2){UCardBal_2=UCardBal_1-ucardbal0;status=1;}
			   else UCardBal_2=(uint)_R232Buf0[19]*0x100+_R232Buf0[20];
			   if((UCardBal_2!=UCardBal_1-ucardbal0)&&(UCardBal_2!=UCardBal_1Bak-ucardbal0))
				{
				 if(UCardBal_1Bak==(uint)UCardBal1[0]+(uint)UCardBal1[1]*0x100) UCardBal_1=UCardBal_1Bak;
				 err++;if(err<4)goto start1; 
				 //_Display(0,2,"                 ",16);_Display(0,3,"    交易失败    ",16);	BELL(5,2);_GetChar();
				 continue;
			   }*/ 
			  }
           _Display(0,1,khstr,16);//_Display(0,1,jyqstr,16);
			  //_Display(0,2,"刷卡后:           ",16);
			  if((CardType==0x0a)||(CardType==0x0c)) sprintf(jyhstr,"刷卡后:%3.1f       ",(float)UCardBal_2/10);
           else sprintf(jyhstr,"刷卡后:%3u        ",UCardBal_2);
			  _Display(0,2,jyhstr,16);
			  _Display(0,3,"****刷卡完成****",16);
			  //sprintf(str,"收费次数:%01u         ",(uint)len+1);_Display(0,3,str,16);
			  //_Display(0,3,"                    ",16);
			  SPEAKON;_delay_10ms(250); SPEAKOFF;_LightOff();_delay_10ms(10);_LightOn();
			  while(1) {
							_pRecBuf0=0;if(ReadSnr()==NOK)break;//{_delay_10ms(10);_pRecBuf0=0;if(ReadUCInc()==NOK)break; }// {_delay_10ms(10);_pRecBuf0=0;if(ReadUCInc()==NOK) break;}
							memcpy(cardsnr,_R232Buf0+CC_ADDRINF+1+3,4);
							if(memcmp(cardsnr,UCardSnr,4)!=0)break;
							}
			  if(CheckHMD(UCardSnr)==NOK)
			  {
			   if((fjxx[2]!=0x00)||(fjxx[3]!=0x00))
				{fjxx[0]=0xb1;fjxx[1]=0xca;}
				else
				{memcpy(fjxx+2,SBH,2);}
				for(i=0;i<3;i++){if(WriteIncAddIn(UCardSnr,fjxx)==OK)break;}
			   _Display(0,1,"异常卡,请与IC卡",16);_Display(0,2,"中心联系           ",16);
				hkbz=1;
			  }
			  gobreak:
			  len=ReadLen();
			  if(len<0){  _PORT_Init (); _Clr(); _Display(0,1,"   内存错误       ",16); _GetChar(); return; }
			  if(len>9000){ _PORT_Init ();_Clr();_Display(0,1,"   POS机已满     ",16); _GetChar(); return;}
			  if(len>8800){ _PORT_Init (); _Clr(); _Display(0,1,"   POS机将满     ",16); _GetChar();}
			  memset(lsz_buf,0xff,sizeof(lsz_buf));
			  beginaddr=(ulong)len*LSZLENGTH; len++; 
			  for(i=0;i<3;i++){if(WriteLen(len)==OK)break;}
			  if(i==3){_Clr();_Display(0,1,"    内存错误       ",16); _GetChar(); return;}
			  _GetTime(str);memcpy(xzdate,str,3);xztime[0]=str[3]/16*10+str[3]%16;xztime[1]=str[4]/16*10+str[4]%16;
			  Data16ToData10(str,str);
			  Date6ToDate4(str,str);
			  memcpy(lsz_buf,str,4);
			  memcpy(lsz_buf+4,UCardNum,4);//用户卡号
			  memcpy(lsz_buf+8,SBH,2);//设备号
			  lsz_buf[10]=LineNum;//线路号
			  lsz_buf[11]=(LineNum/0x100)%0x10+card_type*0x10;
			  memcpy(lsz_buf+12,BusNum,2);//车辆自编号
			  memcpy(lsz_buf+14,OpCardNum,2);//承包人卡号
			  memcpy(lsz_buf+16,GLCardNum,3);//管理卡发行卡号或用户卡发行卡号
			  memcpy(lsz_buf+19,UCardSnr,4);//用户卡物理卡号
			  if(hkbz==1)	{lsz_buf[23]=CardType*0x10+0x0f;UCardBal_1=0;UCardBal_2=0;ucardbal0=0;}
			  else lsz_buf[23]=CardType*0x10+2;//卡种和交易类型
			  //memcpy(lsz_buf+23,UCardBal1,2);
			  //memcpy(lsz_buf+25,UCardBal2,2);
			  lsz_buf[24]=(uchar)UCardBal_1;
			  lsz_buf[25]=UCardBal_1/0x100;
			  lsz_buf[26]=(uchar)UCardBal_2;
			  lsz_buf[27]=UCardBal_2/0x100;
			  lsz_buf[28]=(uchar)ucardbal0;
			  lsz_buf[29]=ucardbal0/0x100;
			  _Calc_crc(CRC16,30,lsz_buf,lsz_buf+30);
			  for(i=0;i<3;i++)if(WriteLSZ(lsz_buf,beginaddr,LSZLENGTH)==OK){break;}
			  else {_Clr();_Display(0,1,"    内存错误    ",16);_GetChar();return;}
			  
			  //_Display(0,3,"刷卡完成        ",16);
			  SaveCardNum(UCardNum,xztime);//UCardNoBak=UCardNo;//UCardBal_0=UCardBal_0_bak;
			  /*while(1) {
							_pRecBuf0=0;if(ReadUCInc()==NOK)break;//{_delay_10ms(10);_pRecBuf0=0;if(ReadUCInc()==NOK)break; }// {_delay_10ms(10);_pRecBuf0=0;if(ReadUCInc()==NOK) break;}
							uccardno=(ulong)_R232Buf0[CC_ADDRINF+1]+(ulong)_R232Buf0[CC_ADDRINF+2]*0x100l+(ulong)_R232Buf0[CC_ADDRINF+3]*0x10000l;
							if(uccardno!=UCardNo) break;
							}*/
			  }
			  _delay_10ms(50);P21=1;P36=0X01;_delay_10ms(50);//P34=0x01;P37=0X01;P37=1;_delay_10ms(10);//
}

void LSZ_CX()
{
long  xdata len;
ulong xdata flag;
uchar xdata page,key,ret;
ulong xdata beginaddr,uccardno;
uchar xdata str[20],lszbuf[LSZLENGTH+1],tmp[10];
ulong xdata bh,zs;
uchar xdata buffer[16],buff[10];
uint i;

 _Clr();
 len=ReadLen();
 if(len<=0){_Display(0,1,"  机内没有纪录  ",16);_GetChar();return;}
 flag=len;
 while(1)
 {
  gost:
  page=(flag-1)*LSZLENGTH/PAGELENGTH+LSZPAGE;beginaddr=(flag-1)*LSZLENGTH%PAGELENGTH;_FlashRead(page,beginaddr,LSZLENGTH,lszbuf);
  if(ValidFlow(lszbuf)!=OK)goto gobr;
  Date4ToDate6(lszbuf,tmp);
  sprintf(str,"时间:%02d%02d%02d%02d%02d%02d",(ulong)tmp[0],(ulong)tmp[1],(ulong)tmp[2],(ulong)tmp[3],(ulong)tmp[4],(ulong)tmp[5]);
  _Display(0,0,str,16);
  uccardno=(ulong)lszbuf[4]+(ulong)lszbuf[5]*0x100l+(ulong)lszbuf[6]*0x10000l+(ulong)lszbuf[7]*0x1000000l;
  sprintf(str,"表号:%lu           ",uccardno);
  _Display(0,1,str,16);
  uccardno=(ulong)lszbuf[8]+(ulong)lszbuf[9]*0x100l+(ulong)lszbuf[10]*0x10000l+(ulong)lszbuf[11]*0x1000000l;
  sprintf(str,"止码:%lu           ",uccardno);
  _Display(0,2,str,16);_Display(0,3,"*可按上下键翻页*",16);
  gobr:
  key=_GetChar();
  if(key==KeyB_No)return;
  else if(key==KeyB_Up) {flag--;if(flag<1) flag=1;}
  else if(key==KeyB_Down) {flag++;if(flag>len) flag=len;}
  else if(key==KeyB_F1)
  {
   start:
	memset(buffer,0,sizeof(buffer));_Clr();_Display(0,1,"请输入表号:     ",16);
	ret=_GetStr(0,2,buffer,12);
	if (ret==0) {_Clr();_Display(0,1,"确定退出吗?    ",16);_Display(0,2,"按<取消>退出    ",16);if(_GetChar()==KeyB_No)goto gost;goto start;}
	bh=0;
	for(i=0;i<ret;i++)
	{
   if((buffer[i]>='0')&&(buffer[i]<='9')){ bh=bh*10+buffer[i]-0x30;	}
	else{_Display(0,1,"非法数据        ",16);_Display(0,2,"请重新输入      ",16);_GetChar();goto start;}
	}
	start2:
	memset(buff,0,sizeof(buff));_Clr();_Display(0,1,"请输入止码:      ",16);
	ret=_GetStr(0,2,buff,5);
	if (ret==0) {_Clr();_Display(0,1,"确定退出吗?    ",16);_Display(0,2,"按<取消>退出    ",16);if(_GetChar()==KeyB_No)goto gost;goto start2;}
	zs=0;
	for(i=0;i<ret;i++)
	{
   if((buff[i]>='0')&&(buff[i]<='9')){ zs=zs*10+buff[i]-0x30;	}
	else{_Display(0,1,"非法数据        ",16);_Display(0,2,"请重新输入      ",16);_GetChar();goto start2;}
	}
	_Clr();_Display(0,1,"正在修改请稍候..",16);
	lszbuf[4]=(uchar)bh;lszbuf[5]= bh/0x100;lszbuf[6]= bh/0x10000;lszbuf[7]= bh/0x1000000;
	lszbuf[8]=(uchar)zs;lszbuf[9]= zs/0x100;lszbuf[10]= zs/0x10000;lszbuf[11]= zs/0x1000000;
	_Calc_crc(CRC16,14,lszbuf,lszbuf+14);
	_FlashSectormodfiyPage(page,lszbuf,beginaddr,LSZLENGTH);
  }
  else ;
 }
}
//-------------------------------------------------------------------------------------------------
uchar Get_Money(uchar *buff)//输入钱数
{
uchar xdata ret,ret1,buffer[7];
uint  xdata i;
ulong xdata int1;
//uchar xdata str[20];

start:
memset(buffer,0,sizeof(buffer));  
_Clr();
_Display(0,1,"请输入收费金额     ",16);
ret=_GetStr(0,2,buffer,5);
if (ret==0) {_Clr();_Display(0,1,"确定退出吗?    ",16);_Display(0,1,"按<确定>退出    ",16);if(_GetChar()==KeyB_Yes)return NOK;goto start;}

 ret=0;
 ret1=5;
 if((buffer[0]==0x2e)||(buffer[4]==0x2e)||(buffer[0]==0)) {_Clr();_Display(0,1,"非法数据,请重新输入\0",20); _GetChar();goto start; }
 for(i=0;i<5;i++)
 {
  if((buffer[i]>='0')&&(buffer[i]<='9')||(buffer[i]==0)||(buffer[i]==0x2e))
  {
   if(buffer[i]==0x2e)
   {
    if((buffer[i+1]>='0')&&(buffer[i+1]<='9')&&(buffer[i+2]==0)||(buffer[i+2]=='0')) {ret=i+1;ret1=i+2;break;}
    else {_Clr();_Display(0,1,"非法数据,请重新输入\0",20);_GetChar();goto start;  }
	}
    if(buffer[i]==0) {ret1=i;break;}
  }
  else {_Clr();_Display(0,1,"非法数据,请重新输入\0",20);_GetChar();goto start;}
 }
 int1=0;
 if(ret==0)
 {
  for(i=0;i<ret1;i++){int1=(int1*10+buffer[i]-0x30);}
  int1=int1*10;
 }
 else
 {
  for(i=0;i<ret1-2;i++){int1=int1*10+buffer[i]-0x30;}
  int1=int1*10+buffer[ret1-1]-0x30;
 }
if(int1>8000){_Clr();_Display(0,1,"金额过大          ",16);_GetChar();goto start;}
else if(int1<=0){_Clr();_Display(0,1,"金额过大          ",16);_GetChar();goto start;}
		   buff[0]=(uchar)int1;buff[1]=(uchar)(int1/0x100); 
UCardBal_0=int1;
 return OK;
}

void Init_Sys()
{
 char key;

 _Clr();
 _Display(0,0, "****清空文件****",16);
 _Display(0,1, "文件系统初始化  ",16);
 _Display(0,2, "会失掉所有文件  ",16);
 _Display(0,3, "确定吗          ",16);

 key=_GetChar();
 if (key==KeyB_Yes)
 {
  _Clr();
  display(3, "正在清空  ");
  InitLSZ();
  display(3, "清空完毕  ");
  _GetChar();
 }
}

⌨️ 快捷键说明

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