1、读二进制文件
/*******************************************
函数名称:ReadBinFile
函数功能:读二进制文件
输入参数:cReadFileTitle,文件标识符,
cReadByteOffect,欲读取数据在文件中的偏移量
cReadByteLen需要返回的数据长度
输出参数:无
描述:
*******************************************/
void ReadBinFile(unsigned char cReadFileTitle,unsigned char cReadByteOffect,
unsigned int cReadByteLen)
{
int itemp;
unsigned int iTemp;
delay_ms2M(5);
iTemp=cReadByteLen;
cCommandLen=0x05;
TxAndRxBuff[0]=0x00;
TxAndRxBuff[1]=0xb0;
//要读取的文件01(短文件标识符)
TxAndRxBuff[2]=cReadFileTitle;
//读取偏移量
TxAndRxBuff[3]=cReadByteOffect;
//要读取的数据长度
TxAndRxBuff[4]=(unsigned char)iTemp;
SendCommandHead_Pro();
//Delay1XETU(4);
//读卡
if(CardORESAM&CardWorkFlag)
{
for(itemp=0;itemp<cReadByteLen+2;itemp++)
{
TxAndRxBuff[itemp]=CardReceChar();
if(ErrorRWBIT&CardError) break;
}
}
//读模块
else
{
for(itemp=0;itemp<cReadByteLen+2;itemp++)
{
TxAndRxBuff[itemp]=EsamReceChar();
if(ErrorRWBIT&CardError) break;
}
}
if((TxAndRxBuff[cReadByteLen]!=0x90)&&(TxAndRxBuff[cReadByteLen+1]!=0x00))
CardError=ErrorRWBIT|CardError;
delay_ms2M(5);
}
2、写二进制文件
/*******************************************
函数名称:WriteBinFile
函数功能:写二进制文件
输入参数:cWriteFileTitle--要写的文件名,WriteByteOffect--数据在文件中的偏移量,
cWriteByteLen--数据长度,*cTransDataBuff--要写的数据
输出参数:
描述:
*******************************************/
void WriteBinFile(unsigned char cWriteFileTitle,unsigned char cWriteByteOffect,
unsigned char cWriteByteLen,unsigned char *cTransDataBuff)
{
DelayX1ms(5);
cCommandLen=0x05;
TxAndRxBuff[0]=0x00;
TxAndRxBuff[1]=0xd6;
//要写的文件标识符
TxAndRxBuff[2]=cWriteFileTitle;
//要写的数据在文件中的偏移量
TxAndRxBuff[3]=cWriteByteOffect;
//要写的数据长度
TxAndRxBuff[4]=cWriteByteLen;
SendCommandHead_Pro();
if(ErrorRWBIT&CardError) goto WriteBinFileEnd;
Delay1XETU(4);
cCommandLen=cWriteByteLen;
memcpy(&TxAndRxBuff[0],cTransDataBuff,cWriteByteLen);
SendCommand(cCommandLen);
if(ErrorRWBIT&CardError) goto WriteBinFileEnd;
if(CardORESAM&CardWorkFlag)
{
TxAndRxBuff[0]=CardReceChar();
TxAndRxBuff[1]=CardReceChar();
}
else
{
TxAndRxBuff[0]=EsamReceChar();
TxAndRxBuff[1]=EsamReceChar();
}
if((TxAndRxBuff[0]!=0x90)||(TxAndRxBuff[1]!=0x00))
CardError=ErrorRWBIT|CardError;
WriteBinFileEnd:;
}