📄 waterctrlv2.c
字号:
//*****************************************************************//
//Name :IsSelectCradOk
//Input :void
//Output :unsigned char :0x01:ok
// 0x03:defeated
//Function :
//D.R.P :QiuHao
//Date :06.7.05
//*****************************************************************//
unsigned char IsSelectCradOk(void)
{
unsigned char tempa;
RevBuffer[0] = 0x04 ; //Load Command
DsInt;
Cmd_process();
OpInt;
for(tempa=100;tempa>0;tempa--)
{
if((RevBuffer[0] == 0x01) && (RevBuffer[1] == 0x00))
return 0x01;
}
return 0x03;
}
//*****************************************************************//
//Name :DownLoadm1CradKey
//Input :unsigned char :sectornum (0-15)
// :unsigned char :keyab (0x60 keya || 0x61 keyb)
//Output :unsigned char :0x01:download m1 crad key code ok
// 0x04:mater is be using and download m1 crad key code defeated
// 0x05:mater is not be using and download m1 crad key code defeated
//
//Function :download m1 crad key code ok
//D.R.P :QiuHao
//Date :06.07.05
//*****************************************************************//
unsigned char DownLoadm1CradKey(unsigned char sectornum,unsigned char keyab)
{
unsigned char tempa;
RevBuffer[0] = 0x06;
RevBuffer[1] = keyab; //load keya or keyb
RevBuffer[2] = sectornum; //load sector number
READ_E2PROM(&tempa,BeingUserFlagADD,1);
if(tempa==0xa5)
{
READ_E2PROM(RevBuffer+3,HartCardLoadPWAdd,6);
}
else
{
RevBuffer[3]=0xff;
RevBuffer[4]=0xff;
RevBuffer[5]=0xff;
RevBuffer[6]=0xff;
RevBuffer[7]=0xff;
RevBuffer[8]=0xff;
}
DsInt;
Cmd_process();
OpInt;
for(tempa=100;tempa>0;tempa--)
{
if((RevBuffer[0]==1) && (RevBuffer[1]==00))
return 0x01; //Down load mi crad key ok
}
if(tempa==0xa5)
{
return 0x04;
}
else
{
return 0x09;
}
}
//*****************************************************************//
//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 :ChkCsSysCrdSerNum
//Input :void
//Output :unsigned char :0x01:ok
// 0x05:read card defeated
// 0x06:cs error
// 0x07:system serial number is wrong
// 0x08:crad serial number wrong
//Function :
//D.R.P :QiuHao
//Date :06.07.05
//*****************************************************************//
/*
unsigned char ChkCsSysCrdSerNum(void)
{
unsigned char tempa=0,tempb=0,tempc=0;
RevBuffer[0] = 0x08;
RevBuffer[1] = 0x04;
DsInt;
Cmd_process();
OpInt;
for(tempa=100;tempa>0;tempa--)
{
if((RevBuffer[0]==0x11)&&(RevBuffer[1]==0x00))
{
Delay10TCYx(5); //waitting for recevice 16 data
for(tempb=2;tempb<17;tempb++)
tempc += RevBuffer[tempb];
if(tempc!=RevBuffer[17]) //check bank cs
return 0x06; //bank cs error
Bank10dataCS=tempc; //load cs
//chcek system number
READ_E2PROM(Systemnum,SystemNumADD,3);
if(RevBuffer[2] != Systemnum[0])
return 0x07;
if(RevBuffer[3] != Systemnum[1])
return 0x07;
if(RevBuffer[4] != Systemnum[2])
return 0x07; //system serial number is error
READ_E2PROM(&carderrorbyte,BeingUserFlagADD,1);
if(carderrorbyte==0xa5)
{
tempc = 0;
for(tempb=0;tempb<3;tempb++)
tempc += RevBuffer[tempb+5];
tempc -= 3; //count card number cs
if(tempc!=RevBuffer[8])
return 0x08; //crad serial number is error
Cardnum[0] = RevBuffer[5]; //load card number
Cardnum[1] = RevBuffer[6];
Cardnum[2] = RevBuffer[7];
Cardtype = RevBuffer[9]; //load card type // 02 test
Cardcmd = RevBuffer[10]; //load card command
Settingprice[0] = RevBuffer[14];//load card setting price
Settingprice[1] = RevBuffer[15];
Settingprice[2] = RevBuffer[16];
GetHalfDJ();
return 0x01;
}
}
}
return 0x05;
}
*/
//********************************************************************//
//Name :RdCardMoney
//Input :void
//Output :unsigned char :0x01:ok
// 0x0a:Read card defeated
// 0x0b:bank cs error
// 0x0c:card residual money keypassword error
//
//Function :
//D.R.P :QiuHao
//Date :06.07.05
//********************************************************************//
/*
unsigned char RdCardMomey(void)
{
unsigned char tempa=0,tempb=0,tempc=0;
RevBuffer[0] = 0x08;
RevBuffer[1] = 0x05;
DsInt;
Cmd_process();
OpInt;
for(tempa=100;tempa>0;tempa--)
{
if((RevBuffer[0]==0x11) && (RevBuffer[1]==0x00))
{
for(tempa=2;tempa<17;tempa++)
{
tempb += RevBuffer[tempa];
} //count bank cs
if(tempb!=RevBuffer[17])
{
return 0x0b;
}
//load cs to mcu memory#?
// if(RevBuffer[2]!=CardBalancekey[0])
// return 0x0c;
// if(RevBuffer[3]!=CardBalancekey[1])
// return 0x0c;
// if(RevBuffer[4]!=CardBalancekey[2])
// return 0x0c;
// if(RevBuffer[5]!=CardBalancekey[3])
// return 0x0c;
CardBalance[0] = RevBuffer[6]; //read card balance
CardBalance[1] = RevBuffer[7];
CardBalance[2] = RevBuffer[8];
CardBalance[3] = RevBuffer[9];
return 0x01;
}
}
return 0x0a;
}
*/
//*****************************************************************//
//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];
}
READ_E2PROM(&systemtemp1,AD_DE_NumAdd,1);
systemtemp = CardBalance[0]+CardBalance[1]+CardBalance[2]+CardBalance[3];
systemtemp -= systemtemp1;
RevBuffer[6] = systemtemp;
RevBuffer[11] = systemtemp;
// RevBuffer[16] = CardUsingTimes;
for(tempa=2;tempa<17;tempa++)
tempb += RevBuffer[tempa];
RevBuffer[17] = tempb;
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)
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -