📄 waterctrlv3.c
字号:
//Name :RdCdOneBnk
//Input :unsigned char banknum:which bank in the card
//Output :unsigned char :0x01:ok
// 0x05:read card is error
// 0x06:read data checksun is error
//Function :
//D.R.P :QiuHao
//Date :06.12.4
//*****************************************************************//
unsigned char RdCdOneBnk(unsigned char whichbank)
{
unsigned char tempa=0,tempb=0,tempc=0;
RevBuffer[0] = 0x08;
RevBuffer[1] = whichbank;
DsInt;
Cmd_process();
OpInt;
for(tempa=100;tempa>0;tempa--)
{
if((RevBuffer[0]== 0x11)&&( RevBuffer[1]==0x00))
{
for(tempb=2;tempb<17;tempb++)
tempc += RevBuffer[tempb];
if(tempc!=RevBuffer[17]) //check bank cs
return 0x06; //bank cs error
if(whichbank == 4)
{
CdBnk4Grp[0] = RevBuffer[2];
CdBnk4Grp[1] = RevBuffer[3];
CdBnk4Grp[2] = RevBuffer[4];
CdBnk4Grp[3] = RevBuffer[5];
CdBnk4Grp[4] = RevBuffer[6];
CdBnk4Grp[5] = RevBuffer[7];
CdBnk4Grp[6] = RevBuffer[8];
CdBnk4Grp[7] = RevBuffer[9];
CdBnk4Grp[8] = RevBuffer[10];
CdBnk4Grp[9] = RevBuffer[11];
CdBnk4Grp[10] = RevBuffer[12];
CdBnk4Grp[11] = RevBuffer[13];
CdBnk4Grp[12] = RevBuffer[14];
CdBnk4Grp[13] = RevBuffer[15];
CdBnk4Grp[14] = RevBuffer[16];
CdBnk4Grp[15] = RevBuffer[17];
}
if(whichbank == 5)
{
CdBnk5Grp[0] = RevBuffer[2];
CdBnk5Grp[1] = RevBuffer[3];
CdBnk5Grp[2] = RevBuffer[4];
CdBnk5Grp[3] = RevBuffer[5];
CdBnk5Grp[4] = RevBuffer[6];
CdBnk5Grp[5] = RevBuffer[7];
CdBnk5Grp[6] = RevBuffer[8];
CdBnk5Grp[7] = RevBuffer[9];
CdBnk5Grp[8] = RevBuffer[10];
CdBnk5Grp[9] = RevBuffer[11];
CdBnk5Grp[10] = RevBuffer[12];
CdBnk5Grp[11] = RevBuffer[13];
CdBnk5Grp[12] = RevBuffer[14];
CdBnk5Grp[13] = RevBuffer[15];
CdBnk5Grp[14] = RevBuffer[16];
CdBnk5Grp[15] = RevBuffer[17];
}
if(whichbank == 6)
{
CdBnk6Grp[0] = RevBuffer[2];
CdBnk6Grp[1] = RevBuffer[3];
CdBnk6Grp[2] = RevBuffer[4];
CdBnk6Grp[3] = RevBuffer[5];
CdBnk6Grp[4] = RevBuffer[6];
CdBnk6Grp[5] = RevBuffer[7];
CdBnk6Grp[6] = RevBuffer[8];
CdBnk6Grp[7] = RevBuffer[9];
CdBnk6Grp[8] = RevBuffer[10];
CdBnk6Grp[9] = RevBuffer[11];
CdBnk6Grp[10] = RevBuffer[12];
CdBnk6Grp[11] = RevBuffer[13];
CdBnk6Grp[12] = RevBuffer[14];
CdBnk6Grp[13] = RevBuffer[15];
CdBnk6Grp[14] = RevBuffer[16];
CdBnk6Grp[15] = RevBuffer[17];
}
return 0x01;
}
}
return 0x05;//return read card is error code
}
//*****************************************************************//
//Name :WrCdOneBnk
//Input :uchar whichbank
//Output :unsigned char :0x01:ok
// 0x0d:defected
//
//Function :
//D.R.P :QiuHao
//Date :06.12.04
//*****************************************************************//
unsigned char WrCdOneBnk(unsigned char whichbank)
{
unsigned char tempa,tempb=0;
RevBuffer[0] = 0x09;
RevBuffer[1] = whichbank;
if(whichbank ==4)
{
RevBuffer[2] = CdBnk4Grp[0];
RevBuffer[3] = CdBnk4Grp[1];
RevBuffer[4] = CdBnk4Grp[2];
RevBuffer[5] = CdBnk4Grp[3];
RevBuffer[6] = CdBnk4Grp[4];
RevBuffer[7] = CdBnk4Grp[5];
RevBuffer[8] = CdBnk4Grp[6];
RevBuffer[9] = CdBnk4Grp[7];
RevBuffer[10] = CdBnk4Grp[8];
RevBuffer[11] = CdBnk4Grp[9];
RevBuffer[12] = CdBnk4Grp[10];
RevBuffer[13] = CdBnk4Grp[11];
RevBuffer[14] = CdBnk4Grp[12];
RevBuffer[15] = CdBnk4Grp[13];
RevBuffer[16] = CdBnk4Grp[14];
RevBuffer[17] = CdBnk4Grp[15];
}
if(whichbank ==5)
{
RevBuffer[2] = CdBnk5Grp[0];
RevBuffer[3] = CdBnk5Grp[1];
RevBuffer[4] = CdBnk5Grp[2];
RevBuffer[5] = CdBnk5Grp[3];
RevBuffer[6] = CdBnk5Grp[4];
RevBuffer[7] = CdBnk5Grp[5];
RevBuffer[8] = CdBnk5Grp[6];
RevBuffer[9] = CdBnk5Grp[7];
RevBuffer[10] = CdBnk5Grp[8];
RevBuffer[11] = CdBnk5Grp[9];
RevBuffer[12] = CdBnk5Grp[10];
RevBuffer[13] = CdBnk5Grp[11];
RevBuffer[14] = CdBnk5Grp[12];
RevBuffer[15] = CdBnk5Grp[13];
RevBuffer[16] = CdBnk5Grp[14];
RevBuffer[17] = CdBnk5Grp[15];
}
if(whichbank ==6)
{
RevBuffer[2] = CdBnk6Grp[0];
RevBuffer[3] = CdBnk6Grp[1];
RevBuffer[4] = CdBnk6Grp[2];
RevBuffer[5] = CdBnk6Grp[3];
RevBuffer[6] = CdBnk6Grp[4];
RevBuffer[7] = CdBnk6Grp[5];
RevBuffer[8] = CdBnk6Grp[6];
RevBuffer[9] = CdBnk6Grp[7];
RevBuffer[10] = CdBnk6Grp[8];
RevBuffer[11] = CdBnk6Grp[9];
RevBuffer[12] = CdBnk6Grp[10];
RevBuffer[13] = CdBnk6Grp[11];
RevBuffer[14] = CdBnk6Grp[12];
RevBuffer[15] = CdBnk6Grp[13];
RevBuffer[16] = CdBnk6Grp[14];
RevBuffer[17] = CdBnk6Grp[15];
}
DsInt;
Cmd_process();
OpInt;
if((RevBuffer[0]!=0x01) || (RevBuffer[1]!=0x00))
return 0x0d;
return 0x01;
}
//********************************************************************//
//Name :CardStopOp
//Input :void
//Output :unsigned char :0x01:ok
// 0x20:card stop options defseted
//Function :
//D.R.P :QiuHao
//Date :06.07.05
//********************************************************************//
unsigned char CardStopOp(void)
{
unsigned char tempa;
RevBuffer[0] = 0x01;
DsInt;
Cmd_process();
OpInt;
for(tempa=100;tempa>0;tempa--)
{
if((RevBuffer[0] == 0x01) && (RevBuffer[1] == 0x00))
return 0x01;
}
return 0x20;
}
//********************************************************************//
//Name :DisplayErrCode
//Input :unsigned char errcode: error code
//Function :display error code in Number address area (35`38)
//D.R.P :QiuHao
//Date :06.07.07
//********************************************************************//
void DisplayErrCode(unsigned char errcode)
{
unsigned char temppa,tempppa;
temppa = errcode;
tempppa = errcode;
tempppa = (tempppa >> 4) & 0x0f; //high bit number
temppa = temppa & 0x0f; //low bit number
Wr1BCDNumToLcd(14 , 35); //E
Wr1BCDNumToLcd(19 , 36); //-
Wr1BCDNumToLcd(tempppa , 37); //X
Wr1BCDNumToLcd(temppa , 38); //X
}
//********************************************************************//
//Name :ClearNumDpy
//Input :unsigned char WhatNumArea (0-4)
// 0:?(S`A?S`6nGx
// 1:5%<[Ih6(A?Gx
// 2:K.A?Gx
// 3:=p6nGx
// 4:@[<FK.A?Gx
// :unsigned char WhatflagAera(0-4)
// 0:?(S`A?S`6nGx1j<G
// 1:5%<[Ih6(A?Gx1j<G
// 2:K.A?Gx1j<G
// 3:=p6nGx1j<G
// 4:@[<FK.A?Gx1j<G
//Function :clear some display area
//D.R.P :QiuHao
//Date :06.07.07
//********************************************************************//
void ClearNumDpy(unsigned char WhatNumArea,unsigned char WhatflagAera)
{
unsigned char temppb=0,temppc=0;
if(WhatNumArea==0)
{
Wr1BCDNumToLcd(21 , 0);
Wr1BCDNumToLcd(21 , 1);
Wr1BCDNumToLcd(21 , 2);
Wr1BCDNumToLcd(21 , 3);
Wr1BCDNumToLcd(21 , 4);
Wr1BCDNumToLcd(21 , 5);
Wr1BCDNumToLcd(21 , 6);
Wr1BCDNumToLcd(21 , 7);
}
if(WhatNumArea==1)
{
Wr1BCDNumToLcd(21 , 35);
Wr1BCDNumToLcd(21 , 36);
Wr1BCDNumToLcd(21 , 37);
Wr1BCDNumToLcd(21 , 38);
Wr1BCDNumToLcd(21 , 39);
}
if(WhatNumArea==2)
{
Wr1BCDNumToLcd(21 , 8);
Wr1BCDNumToLcd(21 , 9);
Wr1BCDNumToLcd(21 , 10);
Wr1BCDNumToLcd(21 , 11);
Wr1BCDNumToLcd(21 , 12);
Wr1BCDNumToLcd(21 , 13);
}
if(WhatNumArea==3)
{
Wr1BCDNumToLcd(21 , 29);
Wr1BCDNumToLcd(21 , 30);
Wr1BCDNumToLcd(21 , 31);
Wr1BCDNumToLcd(21 , 32);
Wr1BCDNumToLcd(21 , 33);
Wr1BCDNumToLcd(21 , 34);
}
if(WhatNumArea==4)
{
Wr1BCDNumToLcd(21 , 14);
Wr1BCDNumToLcd(21 , 15);
Wr1BCDNumToLcd(21 , 16);
Wr1BCDNumToLcd(21 , 17);
Wr1BCDNumToLcd(21 , 18);
Wr1BCDNumToLcd(21 , 19);
Wr1BCDNumToLcd(21 , 20);
Wr1BCDNumToLcd(21 , 21);
Wr1BCDNumToLcd(21 , 22);
}
if(WhatNumArea==5)
{
Wr1BCDNumToLcd(21 , 23);
Wr1BCDNumToLcd(21 , 24);
Wr1BCDNumToLcd(21 , 25);
Wr1BCDNumToLcd(21 , 26);
Wr1BCDNumToLcd(21 , 27);
Wr1BCDNumToLcd(21 , 28);
}
if(WhatflagAera==0)
{
UnDPY_CardJEorYL_Area();
}
if(WhatflagAera==1)
{
UnDPY_DJorSDL_Area();
}
if(WhatflagAera==2)
{
UnDPY_SL_Area();
}
if(WhatflagAera==3)
{
UnDPY_JE_Area();
}
if(WhatflagAera==4)
{
UnDPY_LJSL_Area();
UnDPY_DateT();
}
if(WhatflagAera==5)
{
UnDPY_Time_Area();
}
}
//********************************************************************//
//Name :DypWaitSetSDST
//Input :unsigned char tempdyptype:
// 0x00:is setting JinE
// 0x01:is setting ShuiLiang
// :unsigned char tempdpyst:
// 0x01:on
// 0x00:off
//Function :when wait to setting value that display
//D.R.P :QiuHao
//Date :06.07.08
//********************************************************************//
void DypWaitSetSDST(unsigned char tempdyptype,unsigned char tempdpyst)
{
if(tempdpyst)//if this time is display
{
if(tempdyptype == 0x00)
{
OneLcdFlagSET(43);//SheDinLiang
OneLcdFlagSET(73);//'.'
OneLcdFlagSET(79);//display 'T*' flag
OneLcdFlagClear(77);
}
else
{
OneLcdFlagSET(43);//SheDinLiang
OneLcdFlagSET(73);//'.'
OneLcdFlagSET(77);//display "M2" flag
OneLcdFlagClear(79);
}
//display 6 bit number are '-'
Wr1BCDNumToLcd( 19 ,35 );
Wr1BCDNumToLcd( 19 ,36 );
Wr1BCDNumToLcd( 19 ,37 );
Wr1BCDNumToLcd( 19 ,38 );
Wr1BCDNumToLcd( 19 ,39 );
}
else//this is not display
{
OneLcdFlagClear(43);
OneLcdFlagClear(73);
OneLcdFlagClear(79);
OneLcdFlagClear(77);
Wr1BCDNumToLcd( 21 ,35 );
Wr1BCDNumToLcd( 21 ,36 );
Wr1BCDNumToLcd( 21 ,37 );
Wr1BCDNumToLcd( 21 ,38 );
Wr1BCDNumToLcd( 21 ,39 );
}
}
//********************************************************************//
//Name :UserSettingPrice
//Input :unsigned char settingtype:0x00:JinE
// : 0x01:ShuiLiang
//Output :unsigned char : 0x00:setting error
// 0x01:setting ok
//Function :
//D.R.P :QiuHao
//Date :06.07.11
//********************************************************************//
unsigned char UserSettingValue(unsigned char * whichtypedatabuf)
{
unsigned int temppii = 0;
unsigned char tempnumaddr = 35;
char selectnum=0;
unsigned char temo=0;
while(1)
{
while(1)
{
temppii++;
if(temppii == 12000)
{
if(tempnumaddr==35)
selectnum = (*(whichtypedatabuf))&0x0f;
if(tempnumaddr==36)
selectnum = ((*(whichtypedatabuf+1))&0xf0)>>4;
if(tempnumaddr==37)
selectnum = ((*(whichtypedatabuf+1))&0x0f);
if(tempnumaddr==38)
selectnum = ((*(whichtypedatabuf+2))&0xf0)>>4;
Wr1BCDNumToLcd(selectnum ,tempnumaddr );
}
if(temppii == 24000)
Wr1BCDNumToLcd(21 ,tempnumaddr );
if(temppii > 24000)
{
ReflashLcdTimeDpy(0);
temppii = 0;
}
//setting next number //KEYSEL
if(systemflag2 & 0x01)
{
KEYUPDS;
systemflag2 &= 0xfe;
Wr1BCDNumToLcd(selectnum , tempnumaddr);
selectnum = 0;
break; //exit this number into next number
}
//number add 1 KEYUP
if(systemflag2&0x04)
{
KEYONOFFDS;
systemflag2 &= 0xfb;
selectnum +=1;
if(selectnum>9)
selectnum=0;
//Record user setting value
if(tempnumaddr==35)
*whichtypedatabuf = selectnum;
if(tempnumaddr==36)
{
temo=(*(whichtypedatabuf+1)&0x0f);
*(whichtypedatabuf+1) = ((selectnum<<4)+temo);
}
if(tempnumaddr==37)
{
temo=(*(whichtypedatabuf+1)&0xf0);
*(whichtypedatabuf+1) = (selectnum+temo);
}
if(tempnumaddr==38)
{
*(whichtypedatabuf+2) = (selectnum<<4);
}
}
//number DEC 1 KEYDOWN
if(systemflag2&0x02)
{
KEYSELDS;
systemflag2 &= 0xfd;
selectnum -=1;
if(selectnum<0)
selectnum = 9;
//Record user setting value
if(tempnumaddr==35)
*whichtypedatabuf = selectnum;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -