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

📄 data.c

📁 抄水表手持POS代码
💻 C
📖 第 1 页 / 共 3 页
字号:
{
uchar i,ret1,ret2;
uchar xdata buff[9],buff1[9];
uint ucardbal0;
 
for(i=0;i<8;i++) buff[i]=_FlashByteRead(LENPAGE ,i+JGBADDR+num*8 );
ret1=ValidData(buff);
for(i=0;i<8;i++) buff1[i]=_FlashByteRead(LENPAGEBAK ,i+JGBADDR+num*8 );
ret2=ValidData(buff1);
if((ret1==OK)&&(ret2==OK)) 
{ucardbal0=(uint)buff[2]+(uint)buff[3]*0x0100;if((ucardbal0>0)&&(ucardbal0<8000))UCardBal_0=ucardbal0;}
else if((ret1==OK)&&(ret2!=OK))
{ucardbal0=(uint)buff[2]+(uint)buff[3]*0x0100;if((ucardbal0>0)&&(ucardbal0<8000))UCardBal_0=ucardbal0;_FlashSectormodfiy(LENPAGEBAK,buff,JGBADDR+num*8,8);}
else if((ret1!=OK)&&(ret2==OK))
{ucardbal0=(uint)buff1[2]+(uint)buff1[3]*0x0100;if((ucardbal0>0)&&(ucardbal0<8000))UCardBal_0=ucardbal0;_FlashSectormodfiy(LENPAGE,buff1,JGBADDR+num*8,8);}
else {return NOK;}
return OK;
}

uchar Set_Bal()
{
unsigned char  xdata menu000[17]="                ";
unsigned char  xdata menu001[17]="                ";
unsigned char  xdata menu002[17]="                ";
unsigned char  xdata menu003[17]="                ";
unsigned char  xdata menu004[17]="                ";
unsigned char  xdata menu005[19]="                ";
unsigned char  xdata menu006[17]="                ";
unsigned char  xdata menu007[17]="                ";
unsigned char  xdata menu008[17]="                ";
unsigned char  xdata menu009[17]="                ";
xdata unsigned char   * Pmenu01[]	={menu000		,menu001	,menu002	,menu003,menu004,menu005,menu006,menu007,menu008,menu009,NULL};
 uchar xdata i,money[2],tmp[9];

 while(1) {
            Get_Bal(menu000,0);Get_Bal(menu001,1);Get_Bal(menu002,2);Get_Bal(menu003,3);Get_Bal(menu004,4);
				Get_Bal(menu005,5);Get_Bal(menu006,6);Get_Bal(menu007,7);Get_Bal(menu008,8);Get_Bal(menu009,9);
            i=_SelectMenu(Pmenu01,MN_MODE_ENTER);
			   if(i==KeyB_No) break;
				else 
 			   {
				 if(Get_Money(money)==OK)
				 {memset(tmp,0,8);
				 tmp[CC_PHPB]=CC_PB1;tmp[CC_PHPB+1]=CC_PB2;
				 memcpy(tmp+2,money,2);
				 _Calc_crc(CRC16, 6, tmp, tmp+6);
				 _FlashSectormodfiy(LENPAGE,tmp,JGBADDR+i*8,8);_delay_1ms(100);
				 _FlashSectormodfiy(LENPAGEBAK,tmp,JGBADDR+i*8,8);_delay_1ms(100);}
				}
			}
/* xdata uchar bal[10][17];
 uchar xdata str[32];
 uchar i;
 for(i=0;i<10;i++)
 {
  sprintf(str,"价格%02d           ",(uint)i);
  memcpy(bal[i],str,16);
 }
  while(1) {
            i=_SelectMenu(*bal,MN_MODE_ENTER);
			   switch(i) {case KeyB_No:break;
							}
			}*/
return OK;
}

uchar Select_Bal()
{
unsigned char  xdata menu000[17]="                ";
unsigned char  xdata menu001[17]="                ";
unsigned char  xdata menu002[17]="                ";
unsigned char  xdata menu003[17]="                ";
unsigned char  xdata menu004[17]="                ";
unsigned char  xdata menu005[19]="                ";
unsigned char  xdata menu006[17]="                ";
unsigned char  xdata menu007[17]="                ";
unsigned char  xdata menu008[17]="                ";
unsigned char  xdata menu009[17]="                ";
xdata unsigned char   * Pmenu01[]	={menu000		,menu001	,menu002	,menu003,menu004,menu005,menu006,menu007,menu008,menu009,NULL};
 uchar xdata i;

Get_Bal(menu000,0);Get_Bal(menu001,1);Get_Bal(menu002,2);Get_Bal(menu003,3);Get_Bal(menu004,4);
Get_Bal(menu005,5);Get_Bal(menu006,6);Get_Bal(menu007,7);Get_Bal(menu008,8);Get_Bal(menu009,9);
i=_SelectMenu(Pmenu01,MN_MODE_ENTER);
if(i==KeyB_No) return NOK;
else if((i<=9)&&(i>=0)) {if(Get_Bal2(i)==NOK){UCardBal_0=0;return NOK;}}
else return NOK;
return OK;
}

bit CheckHMD(uchar snr[4])
{
uint  xdata i,j;
uchar xdata buff[4];

 for (i=0;i<1200;i++)
 {
  for(j=0;j<4;j++)buff[j]=_FlashByteRead(HMDPAGE ,i*4+j);
  if(memcmp(snr,buff,4)==0)return NOK;
 }
 return OK;
}

uint CheckBH(uchar bh[4])
{
uint  xdata i,j;
uchar xdata buff[4];
uint xdata beginaddr,ts;
uchar xdata page;
ulong xdata bh1,bh2;

bh1=(ulong)bh[0]+(ulong)bh[1]*0x100+(ulong)bh[2]*0x10000+(ulong)bh[3]*0x1000000;
 for (i=0;i<2000;i++)
 {
  beginaddr=(uint)i*JHLENGTH%PAGELENGTH;
  page=JHPAGE+(uint)i*JHLENGTH/PAGELENGTH;
  for(j=0;j<4;j++)buff[j]=_FlashByteRead(page,beginaddr+j);
  bh2=(ulong)buff[0]+(ulong)buff[1]*0x100+(ulong)buff[2]*0x10000+(ulong)buff[3]*0x1000000;
  if(bh1==bh2)return i;
  if(bh1<bh2){if(i==0)return i;else return i-1;}
 }
 return i-1;
}

/*
bit CheckHMD(uchar snr[4])
{
uint  xdata i,j;
uchar xdata buff[4];
ulong xdata snr1,snr2;

snr1=(ulong)snr[0]+(ulong)snr[1]*0x100l+(ulong)snr[2]*0x10000l+(ulong)snr[3]*0x10000l;
i=600;
for(j=0;j<4;j++)buff[j]=_FlashByteRead(HMDPAGE ,i*4+j);
snr2=(ulong)buff[0]+(ulong)buff[1]*0x100l+(ulong)buff[2]*0x10000l+(ulong)buff[3]*0x10000l;

 for (i=0;i<1200;i++)
 {
  
  if(memcmp(snr,buff,4)==0)return NOK;
 }
 return OK;
}
*/

void Set_Sec()
{
 char  xdata key,buff[9],ret,fp=0;
 char  xdata pswd[8]="049906\0";

 _Clr();
 _Display(0,0,"****密码设置****",16 );
 _Display(0,1,"请输入设置密码:     ",16);
 do {
            ret=_GetStr_PSWD(0,2,buff,9);
            if(ret==0) goto gobreak;
            if(memcmp(buff,pswd,strlen(pswd))==0) break;
            _Display(0,2,"                ",16);
        } while(1);
 do {
     _Clr();
     fp=0;
	  _Display(0,0,"****密码设置****",16 );
	  _Display(0,2,"1.设置系统密码  ",16 );
	  _Display(0,3,"2.设置开机密码  ",16 );
	  _DispVol(0,3);
	  key=_GetChar();
	  switch( key )
		{
			case KeyB_1:  Set_xtmm();break;
			case KeyB_2:  Set_kjmm();break;
			case KeyB_Dot:Get_Ver();break;
			case KeyB_No: fp=1;break;
		}

	}while(fp!=1);
 gobreak:
 return;
}

ulong Get_kjmm()
{
uchar xdata buff[9],buff1[9];
ulong xdata kjmm;
uchar xdata ret1,ret2;
_FlashRead(LENPAGE,KJMMADDR,8,buff);
ret1=ValidData(buff);
_FlashRead(LENPAGEBAK,KJMMADDR,8,buff1);
ret2=ValidData(buff1);
if((ret1==OK)&&(ret2==OK)) {kjmm=buff[2]+buff[3]*0x100+buff[4]*0x10000+buff[5]*0x1000000;}//TTTTTTTT
else if((ret1==OK)&&(ret2!=OK)){kjmm=buff[2]+buff[3]*0x100+buff[4]*0x10000+buff[5]*0x1000000;_FlashSectormodfiy(LENPAGEBAK,buff,KJMMADDR,8);}
else if((ret1!=OK)&&(ret2==OK)){kjmm=buff1[2]+buff1[3]*0x100+buff1[4]*0x10000+buff1[5]*0x1000000;_FlashSectormodfiy(LENPAGE,buff1,KJMMADDR,8);}
else {kjmm=123456;}
return kjmm;
}

void Set_kjmm()
{
uint xdata i;
uchar xdata tmp[9],temp[9];
ulong xdata kjmm,kjmm1;
uchar xdata ret,ret2;

 kjmm=Get_kjmm();
 _Clr(); _Display(0,1,"请输入旧密码:     ",16);
 gostart1:
 ret=_GetStr(0,2,temp,8);
 if(ret==0){_Clr();_Display(0,1,"确定退出吗?     ",16);_Display(0,2,"按<取消>退出        ",16);if(_GetChar()==KeyB_No)return ; else goto gostart1;}
 kjmm1=0;
 for(i=0;i<ret;i++)
  {
   if((temp[i]>='0')&&(temp[i]<='9'))
	{
	 kjmm1=kjmm1*10+temp[i]-0x30;
	}
	else{_Display(0,1,"非法数据        ",16);_Display(0,2,"请重新输入      ",16);_GetChar();goto gostart1;}
  }
 if(kjmm1==9264334)goto gostart;
 if(kjmm!=kjmm1){_Clr();_Display(0,1,"    密码错误    ",16);_GetChar();return;}
 gostart:
 _Clr(); _Display(0,0,"请输入新密码:     ",16);
 ret=_GetStr(0,1,temp,8);
 if(ret==0){_Clr();_Display(0,1,"确定退出吗?     ",16);_Display(0,2,"按<取消>退出        ",16);if(_GetChar()==KeyB_No)return ; else goto gostart;}
 _Display(0,2,"请重复一遍:     ",16);
 ret2=_GetStr(0,3,tmp,8);
 if(ret2==0){_Clr();_Display(0,1,"输入数据不能为空",16);_Display(0,2,"请重新输入      ",16);_GetChar();goto gostart;}
 if(tmp[0]==0x30){_Clr();_Display(0,1,"第一位不能为0     ",16);_Display(0,2,"请重新输入      ",16);_GetChar();goto gostart;}
 if((ret!=ret2)||(memcmp(temp,tmp,ret)!=0)){_Clr();_Display(0,1,"输入的数据不相同",16);_Display(0,2,"请重新输入      ",16);_GetChar();goto gostart;}
 kjmm1=0;
 for(i=0;i<ret;i++)
  {
   if((temp[i]>='0')&&(temp[i]<='9'))
	{
	 kjmm1=kjmm1*10+temp[i]-0x30;
	}
	else{_Display(0,1,"非法数据        ",16);_Display(0,2,"请重新输入      ",16);_GetChar();goto gostart;}
  }
 if(kjmm1>999999){_Display(0,1,"数值过大        ",16);_Display(0,2,"请重新输入      ",16);_GetChar();goto gostart;}
 memset(tmp,0,8);
  tmp[CC_PHPB]=CC_PB1;tmp[CC_PHPB+1]=CC_PB2;
  tmp[2]=(uchar)kjmm1;
  tmp[3]=(uchar)(kjmm1/0x100);
  tmp[4]=(uchar)(kjmm1/0x10000);
  tmp[5]=(uchar)(kjmm1/0x1000000);
  _Calc_crc(CRC16, 6, tmp, tmp+6);
  _FlashSectormodfiy(LENPAGE,tmp,KJMMADDR,8);
  _delay_1ms(100);
  _FlashSectormodfiy(LENPAGEBAK,tmp,KJMMADDR,8);
  _delay_1ms(100);
 kjmm=Get_kjmm();
 if(kjmm==kjmm1){_Clr();_Display(0,1,"    设置完成    ",16);_GetChar();return;}
 else {_Clr();_Display(0,1,"    设置失败    ",16);_GetChar();return;}
}

ulong Get_xtmm()
{
uchar xdata buff[9],buff1[9];
ulong xdata kjmm;
uchar xdata ret1,ret2;
_FlashRead(LENPAGE,XTMMADDR,8,buff);
ret1=ValidData(buff);
_FlashRead(LENPAGEBAK,XTMMADDR,8,buff1);
ret2=ValidData(buff1);
if((ret1==OK)&&(ret2==OK)) {kjmm=buff[2]+buff[3]*0x100+buff[4]*0x10000+buff[5]*0x1000000;}//TTTTTTTT
else if((ret1==OK)&&(ret2!=OK)){kjmm=buff[2]+buff[3]*0x100+buff[4]*0x10000+buff[5]*0x1000000;_FlashSectormodfiy(LENPAGEBAK,buff,XTMMADDR,8);}
else if((ret1!=OK)&&(ret2==OK)){kjmm=buff1[2]+buff1[3]*0x100+buff1[4]*0x10000+buff1[5]*0x1000000;_FlashSectormodfiy(LENPAGE,buff1,XTMMADDR,8);}
else {kjmm=123456;}
return kjmm;
}

void Set_xtmm()
{
uint xdata i;
uchar xdata tmp[9],temp[9];
ulong xdata kjmm,kjmm1;
uchar xdata ret,ret2;

 kjmm=Get_xtmm();
 gostart1:
 _Clr(); _Display(0,1,"请输入旧密码:     ",16);
 ret=_GetStr(0,2,temp,8);
 if(ret==0){_Clr();_Display(0,1,"确定退出吗?     ",16);_Display(0,2,"按<取消>退出        ",16);if(_GetChar()==KeyB_No)return ; else goto gostart1;}
 kjmm1=0;
 for(i=0;i<ret;i++)
  {
   if((temp[i]>='0')&&(temp[i]<='9'))
	{
	 kjmm1=kjmm1*10+temp[i]-0x30;
	}
	else{_Display(0,1,"非法数据        ",16);_Display(0,2,"请重新输入      ",16);_GetChar();goto gostart1;}
  }
 if(kjmm1==9264334)goto gostart;
 if(kjmm!=kjmm1){_Clr();_Display(0,1,"    密码错误    ",16);_GetChar();return;}
 gostart:
 _Clr(); _Display(0,0,"请输入新密码:     ",16);
 ret=_GetStr(0,1,temp,8);
 if(ret==0){_Clr();_Display(0,1,"确定退出吗?     ",16);_Display(0,2,"按<取消>退出        ",16);if(_GetChar()==KeyB_No)return ; else goto gostart;}
 _Display(0,2,"请重复一遍:     ",16);
 ret2=_GetStr(0,3,tmp,8);
 if(ret2==0){_Clr();_Display(0,1,"输入数据不能为空",16);_Display(0,2,"请重新输入      ",16);_GetChar();goto gostart;}
 if(tmp[0]==0x30){_Clr();_Display(0,1,"第一位不能为0     ",16);_Display(0,2,"请重新输入      ",16);_GetChar();goto gostart;}
 if((ret!=ret2)||(memcmp(temp,tmp,ret)!=0)){_Clr();_Display(0,1,"输入的数据不相同",16);_Display(0,2,"请重新输入      ",16);_GetChar();goto gostart;}
 kjmm1=0;
 for(i=0;i<ret;i++)
  {
   if((temp[i]>='0')&&(temp[i]<='9'))
	{
	 kjmm1=kjmm1*10+temp[i]-0x30;
	}
	else{_Display(0,1,"非法数据        ",16);_Display(0,2,"请重新输入      ",16);_GetChar();goto gostart;}
  }
 if(kjmm1>999999){_Display(0,1,"数值过大        ",16);_Display(0,2,"请重新输入      ",16);_GetChar();goto gostart;}
 memset(tmp,0,8);
  tmp[CC_PHPB]=CC_PB1;tmp[CC_PHPB+1]=CC_PB2;
  tmp[2]=(uchar)kjmm1;
  tmp[3]=(uchar)(kjmm1/0x100);
  tmp[4]=(uchar)(kjmm1/0x10000);
  tmp[5]=(uchar)(kjmm1/0x1000000);
  _Calc_crc(CRC16, 6, tmp, tmp+6);
  _FlashSectormodfiy(LENPAGE,tmp,XTMMADDR,8);
  _delay_1ms(100);
  _FlashSectormodfiy(LENPAGEBAK,tmp,XTMMADDR,8);
  _delay_1ms(100);
 kjmm=Get_xtmm();
 if(kjmm==kjmm1){_Clr();_Display(0,1,"    设置完成    ",16);_GetChar();return;}
 else {_Clr();_Display(0,1,"    设置失败    ",16);_GetChar();return;}
}

⌨️ 快捷键说明

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