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

📄 app.c

📁 抄水表手持POS代码
💻 C
📖 第 1 页 / 共 3 页
字号:
#include "_POS.h"
//#include "AppSjk.h"
#include "AppData.h"
//#include "Modem.h"

//bit ZBHFlag=NOK;
extern int pRecBuf0;
extern int pRecBuf;
//extern uchar  xdata _R232Buf0[R232MEMMAX+1];
//extern uchar  xdata _S232Buf0[R232MEMMAX+1];
//extern uchar  xdata _R232Buf[R232MEMMAX+1];
//extern uchar  xdata _S232Buf[R232MEMMAX+1];
bit BalFlag=NOK;
extern bit sbhflag;
extern bit ZBHFlag;
extern bit GLKFlag;
extern uchar XLFlag;
uchar xdata CardType=0xff,PriceTab[6]={1,1,1,1,1,1};
ulong xdata UCardNo=0,UCardNoBak=0;
uint UCardBal_0;//交易金额
uint UCardBal_1=0;
uint UCardBal_1Bak=0;
uint UCardBal_2=0;
//uchar OpCardSnr[4];//操作卡物理卡号
uchar GLCardNum[4]={1,0,0,0};
uchar OpCardNum[2];//承包人卡号
uchar BusNum[2];//车辆自编号
uchar UCardSnr[4];//用户卡物理卡号
uchar UCardNum[4];//用户卡卡号(用于印刷号)
uchar xdata UCardBal1[2];//交易前余额
//uchar UCardBal2[2];//交易后余额
//uchar UCardBal[2];//交易金额
uint LineNum;
uchar xdata xzdate[3];
extern uchar SBH[2];

uchar xdata CardNumBuf[30+1];
uchar xdata NoCardNumBuf[6+1];
uchar xdata keyflag;


uchar Get_Money(uchar *buff);//输入钱数
extern uchar Get_Bal2(uchar num);

bit CheckDate(uchar date1[3],uchar date2[3])
{
 if(date1[0]<date2[0])return OK;
 if(date1[0]>date2[0])return NOK;
 if(date1[1]<date2[1])return OK;
 if(date1[1]>date2[1])return NOK;
// if(date1[2]>date2[2])return NOK;
 else return OK;
}

void Data16ToData10(uchar *datain,uchar *dataout)
{
uchar i;
 for(i=0;i<6;i++)
 {
  dataout[i]=(datain[i]/16)*10+datain[i]%16;
 }
}

void Date6ToDate4(uchar *datein,uchar *dateout)
{
uchar xdata buff[4];

buff[0]=(datein[0]<<2)^(datein[1]>>2);
buff[1]=(datein[1]<<6)^(datein[2]<<1)^(datein[3]>>4);
buff[2]=(datein[3]<<4)^(datein[4]>>2);
buff[3]=(datein[4]<<6)^datein[5];
memcpy(dateout,buff,4);
}

void Date4ToDate6(uchar *datein,uchar *dateout)
{
uchar xdata buff[6];

buff[0]=datein[0]/4;
buff[1]=((datein[0]%4)*4)+(datein[1]/64);
buff[2]=(datein[1]%64)/2;
buff[3]=((datein[1]%2)*16)+(datein[2]/16);
buff[4]=((datein[2]%16)*4)+(datein[3]/64);
buff[5]=datein[3]%64;
memcpy(dateout,buff,6);
}


void display(char line,uchar *buff)
{
 _Display(0,line-1,buff,strlen(buff));
}

/*bit TestMif()
{
uchar i,j;
for(i=0;i<5;i++) {
   P37=0;_delay_10ms(100);_UART0_Init(57600);
   _S232Buf0[CC_ADDRINF]=CC_TEST;_S232Buf0[CC_ADDRINF+1]=CC_TEST;_ComS2320(2);
   _delay_1ms(100);
   j=_ComR2320();
   if(j==CC_TEST)    return OK; 
   }
return NOK;
}*/

/*bit ReadUCPub()
{
uchar i,j;
for(i=0;i<2;i++) {
   _S232Buf0[CC_ADDRINF]=CC_RUaO;_ComS2320(1);
   for(j=0;j<5;j++) {
	    _delay_10ms(9);
       if(_ComR2320()==CC_RUaO)  return OK; 
	    }
   }
return NOK;
}*/
bit Get_Ver()
{
uchar i,j;
uchar xdata str[30];
ulong xdata ret1,ret2;
ret1=get_voltage();
 P21=0x00;P36=0X0;_delay_10ms(50);_PORT_Init ();_UART0_Init(57600);_pRecBuf0=0;
 for(i=0;i<5;i++) {
   _S232Buf0[CC_ADDRINF]=CC_READVER;_S232Buf0[CC_ADDRINF+1]=0;_ComS2320(2);
   for(j=0;j<5;j++) {
	    _delay_10ms(50);
       if(_ComR2320()==CC_READVER)
		 {
		  _Clr();
		  sprintf(str,"版本校验:%02x%02x     ",(uint)_R232Buf0[CC_ADDRINF+2],(uint)_R232Buf0[CC_ADDRINF+3]);
		  _Display(0,0,str,16);
		  ret2=get_voltage();
		  sprintf(str,"电压1:%02.1fV           ",(float)ret1/100.0);	
			 _Display(0,1,str,16);
		  sprintf(str,"电压2:%02.1fV           ",(float)ret2/100.0);	
			 _Display(0,2,str,16);
		  _GetChar();P21=0x01;P36=0X01;_delay_10ms(50);
		 return OK;} 
	   }
   }
P21=0x01;P36=0X01;
return NOK;
}

bit ReadSnr()
{
uchar i,j;
//uchar xdata str[32];
for(i=0;i<2;i++) {
   _S232Buf0[CC_ADDRINF]=CC_ReadSnr;_ComS2320(1);
//	keyflag=_GetKey(50);
   for(j=0;j<3;j++) {
	    _delay_10ms(12);
		 if(_ComR2320()==CC_ReadSnr) {return OK; }
	    }
   }
return NOK;
}

bit ReadUCInc()
{
uchar i,j;
for(i=0;i<5;i++) {
   _S232Buf0[CC_ADDRINF]=CC_RUSERINC;_ComS2320(1);
//	keyflag=_GetKey(50);
   for(j=0;j<5;j++) {
	    _delay_10ms(8);
       if(_ComR2320()==CC_RUSERINC) return OK; 
	    }
   }
return NOK;
}

bit ReadYPKInc()
{
uchar i,j;
for(i=0;i<5;i++) {
   _S232Buf0[CC_ADDRINF]=CC_RYPK;_ComS2320(1);
   for(j=0;j<5;j++) {
	    _delay_10ms(11);
       if(_ComR2320()==CC_RYPK) return OK; 
	    }
   }
return NOK;
}

bit WriteUCInc(uchar ucsnr[4],uchar opsnr[4],uchar optime[4],uchar opno[4],uint bal)
{
uchar i,j;
//uchar xdata str[32];
for(i=0;i<5;i++) {
   _S232Buf0[CC_ADDRINF]=CC_WUSERVAL;
	memcpy(_S232Buf0+CC_ADDRINF+5 ,opsnr  ,4 );
	memcpy(_S232Buf0+CC_ADDRINF+9 ,optime ,4 );
	memcpy(_S232Buf0+CC_ADDRINF+13,ucsnr  ,4 );
	memcpy(_S232Buf0+CC_ADDRINF+17,opno ,4 );
//	_S232Buf0[CC_ADDRINF+20]=bal/0x100;
   _S232Buf0[CC_ADDRINF+5]=(uchar)bal;
	_S232Buf0[CC_ADDRINF+6]=bal/0x100;
	_S232Buf0[CC_ADDRINF+7]=0xff-(uchar)bal;
	_S232Buf0[CC_ADDRINF+8]=0xff-bal/0x100;
	_S232Buf0[CC_ADDRINF+21]=(uchar)bal;
	_S232Buf0[CC_ADDRINF+22]=bal/0x100;
//	_pRecBuf0=0;
	_ComS2320(23);
   for(j=0;j<5;j++) {
	    _delay_10ms(33);
/*		 if (_pRecBuf0>0) {sprintf(str,"%02x%02x%02x%02x%02x%02x%02x%02x",(uint)_R232Buf0[0],(uint)_R232Buf0[1],(uint)_R232Buf0[2],(uint)_R232Buf0[3],(uint)_R232Buf0[4],(uint)_R232Buf0[5],(uint)_R232Buf0[6],(uint)_R232Buf0[7]);
		 _Display(0,0,str,16); 
		 sprintf(str,"%02x%02x%02x%02x%02x%02x%02x%02x",(uint)_R232Buf0[8],(uint)_R232Buf0[9],(uint)_R232Buf0[10],(uint)_R232Buf0[11],(uint)_R232Buf0[12],(uint)_R232Buf0[13],(uint)_R232Buf0[14],(uint)_R232Buf0[5]);
		 _Display(0,1,str,16);
		 sprintf(str,"%02x%02x%02x%02x%02x%02x%02x%02x",(uint)_R232Buf0[16],(uint)_R232Buf0[17],(uint)_R232Buf0[18],(uint)_R232Buf0[19],(uint)_R232Buf0[20],(uint)_R232Buf0[21],(uint)_R232Buf0[22],(uint)_R232Buf0[23]);
		 _Display(0,2,str,16);
		 sprintf(str,"%02x%02x%02x%02x%02x%02x%02x%02x",(uint)_R232Buf0[24],(uint)_R232Buf0[25],(uint)_R232Buf0[26],(uint)_R232Buf0[27],(uint)_R232Buf0[28],(uint)_R232Buf0[29],(uint)_R232Buf0[30],(uint)_R232Buf0[31]);
		 _Display(0,3,str,16);_GetChar();}*/
       if(_ComR2320()==CC_WUSERVAL)  return OK; 
	    }
   }
return NOK;
}

bit WriteYPKInc(uchar ucsnr[4],uchar opsnr[4],uchar opno[4],uchar optime[2],uint times)
{
uchar i,j;
//uchar xdata str[32];
for(i=0;i<5;i++) {
   _S232Buf0[CC_ADDRINF]=CC_WYPKInc;
	memcpy(_S232Buf0+CC_ADDRINF+1 ,ucsnr  ,4 );
	memcpy(_S232Buf0+CC_ADDRINF+5 ,opsnr ,4 );
	memcpy(_S232Buf0+CC_ADDRINF+9,opno  ,4 );
	memcpy(_S232Buf0+CC_ADDRINF+13,optime ,2 );
	_S232Buf0[CC_ADDRINF+5]=(uchar)times;
	_S232Buf0[CC_ADDRINF+6]=times/0x100;
	_S232Buf0[CC_ADDRINF+7]=0xff-(uchar)times;
	_S232Buf0[CC_ADDRINF+8]=0xff-times/0x100;
	_S232Buf0[CC_ADDRINF+15]=(uchar)times;
	_S232Buf0[CC_ADDRINF+16]=times/0x100;
//	_pRecBuf0=0;//memset(_R232Buf0,0,80);
	_ComS2320(17);
   for(j=0;j<5;j++) {
	    _delay_10ms(33);
		 /*if (_pRecBuf0>0) {sprintf(str,"%02x%02x%02x%02x%02x%02x%02x%02x",(uint)_R232Buf0[0],(uint)_R232Buf0[1],(uint)_R232Buf0[2],(uint)_R232Buf0[3],(uint)_R232Buf0[4],(uint)_R232Buf0[5],(uint)_R232Buf0[6],(uint)_R232Buf0[7]);
		 _Display(0,0,str,16); 
		 sprintf(str,"%02x%02x%02x%02x%02x%02x%02x%02x",(uint)_R232Buf0[8],(uint)_R232Buf0[9],(uint)_R232Buf0[10],(uint)_R232Buf0[11],(uint)_R232Buf0[12],(uint)_R232Buf0[13],(uint)_R232Buf0[14],(uint)_R232Buf0[5]);
		 _Display(0,1,str,16);
		 sprintf(str,"%02x%02x%02x%02x%02x%02x%02x%02x",(uint)_R232Buf0[16],(uint)_R232Buf0[17],(uint)_R232Buf0[18],(uint)_R232Buf0[19],(uint)_R232Buf0[20],(uint)_R232Buf0[21],(uint)_R232Buf0[22],(uint)_R232Buf0[23]);
		 _Display(0,2,str,16);
		 sprintf(str,"%02x%02x%02x%02x%02x%02x%02x%02x",(uint)_R232Buf0[24],(uint)_R232Buf0[25],(uint)_R232Buf0[26],(uint)_R232Buf0[27],(uint)_R232Buf0[28],(uint)_R232Buf0[29],(uint)_R232Buf0[30],(uint)_R232Buf0[31]);
		 _Display(0,3,str,16);_GetChar();}*/
       if(_ComR2320()==CC_WYPKInc)  return OK; 
	    }
   }
return NOK;
}

bit WriteIncAddIn(uchar snr[4],uchar buf[16])
{
uchar i,j;

for(i=0;i<5;i++) {
   _S232Buf0[CC_ADDRINF]=CC_WUserAddin;
	memcpy(_S232Buf0+CC_ADDRINF+1 ,snr  ,4 );
	memcpy(_S232Buf0+CC_ADDRINF+5 ,buf ,16 );
	_ComS2320(21);
   for(j=0;j<5;j++) {
	    _delay_10ms(33);
       if(_ComR2320()==CC_WUserAddin)  return OK; 
	    }
   }
return NOK;
}

void jrjdms()
{
uchar key;
 _Clr(); _Display(0,1,"节电模式,按任意",16);_Display(0,2,"键进入刷卡状态。",16);
 while(1){key=_GetKey(111); if(key!=0) break;}
 return;
}

bit CheckCardNum(uchar *khbuf,uchar *xztime)
{
 uint i;
 uint tm1,tm2;
 for (i=0;i<5;i++)
 {
  if(memcmp(khbuf,CardNumBuf+(4-i)*6,4)==0)
  {
   tm1=(uint)CardNumBuf[(4-i)*6+4]*60+(uint)CardNumBuf[(4-i)*6+5];
	tm2=(uint)xztime[0]*60+(uint)xztime[1];
	if(tm2>tm1+5)return OK;
	else return NOK;
  }
 }
 return OK;
}

void SaveCardNum(uchar *khbuf,uchar *xztime)
{
 uint i;

 for (i=0;i<4;i++) { memcpy(CardNumBuf+i*6,CardNumBuf+i*6+6,6); }
 memcpy(CardNumBuf+24,khbuf,4);
 CardNumBuf[28]=xztime[0];
 CardNumBuf[29]=xztime[1];
 return ;
}

uchar ValidJH(uchar *tm)//检测CRC
{
//uchar xdata crc[2]; //check CRC
uchar xdata allff[8]={0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff};
//_Calc_crc(CRC16,36,tm,crc);
//if((crc[0]!=tm[36])||(crc[1]!=tm[37])) return NOK;
if(memcmp(tm,allff,8)==0)return NOK;
return OK;
}

⌨️ 快捷键说明

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