{uchari,tag=0,temp[4];
ReadSafeMemory(temp);
if(temp[0]==0x07)
{ReadMainMemory(32,p,14);//读主存储器14字节:32-35特征码;36-3A帐号;3B-3F余额
if(p[0]==0x00&&p[1]==0x0f&&p[2]==0xf0&&p[3]==0xff)//特征码:0x00,0x0f,0xf0,0xff
{for(i=0;i《10;i++)
if((p[i+4]》=0&&p[i+4]《=9))tag=tag+1;
if(tag!=10)return(2);
elsereturn(3);
}
else
return(1);
}
elsereturn(0);
}
//*********************卡初始化函数********************//
//说明:
//函数使用的数组参数用来存放写入的的ID值;
//返回值信息:
//2:初始化失败!
//3:初始化成功!
ucharInitial_Card(uchar*p)
{ucharPsw[3]={0xff,0xff,0xff};
uchari,j,temp=0;
uchartp[20];
//ResetIC(ICcode);//IC卡复位,读出复位后的厂家信息代码A2131091;
j=VerifyPassword(Psw);
WriteMainMemory(32,0x00);//写特征码:
WriteMainMemory(33,0x0f);
WriteMainMemory(34,0xf0);
WriteMainMemory(35,0xff);
for(i=0;i《5;i++)//写帐号
WriteMainMemory(36+i,p[i]);//从32+i地址开始写5字节帐号;
for(i=0;i《5;i++)
WriteMainMemory(41+i,0);//从32+i地址开始写5字节初始化金额0000.0
j=Read_Card(tp);
if(j==3)
{for(i=0;i《10;i++)
if(p[i]==tp[i+4])temp=temp+1;
}
if(temp==10)return(3);
elsereturn(2);
}
//***************卡修复函数********************//
//说明:
//返回值信息:
//0:修复失败!
//1:修复成功!
ucharRepair_Card(void)
{ucharPsw[3]={0xff,0xff,0xff};
uchari,j,temp;
i=VerifyPassword(Psw);
return(i);
}
//********************加卡函数***********//
voidAdd_Card(uchar*p)
{uchari;
uchartemp[14];
i=Read_Card(temp);
if(i==3)
{temp[13]=temp[13]+p[4];
if(temp[13]》9){temp[13]=temp[13]-10;temp[12]=temp[12]+1;}
temp[12]=temp[12]+p[3];
if(temp[12]》9){temp[12]=temp[12]-10;temp[11]=temp[11]+1;}
temp[11]=temp[11]+p[2];
if(temp[11]》9){temp[11]=temp[11]-10;temp[10]=temp[10]+1;}
temp[10]=temp[10]+p[1];
if(temp[10]》9){temp[10]=temp[10]-10;temp[9]=temp[9]+1;}
WriteMainMemory(41,temp[9]);
WriteMainMemory(42,temp[10]);
WriteMainMemory(43,temp[11]);
WriteMainMemory(44,temp[12]);
WriteMainMemory(45,temp[13]);
}
}
//********************减卡函数***********//