/*******************************************
函数名称:SendCommandHead_Pro
函数功能:向卡或ESAM发送命令头
输入参数:无
输出参数:无
描述:发送命令头:4字节命令体+1字节命令长度,
返回的数据时发送的第二个字节,如果不是,读写错误
*******************************************/
void SendCommandHead_Pro(void)
{
unsigned char cReturnCommand;
SendCommand(cCommandLen); //先发送5个命令头字节
if(ErrorReadWriteBIT&iErrorRWrCard) goto SendCommandHead_ProEnd;
if(ICSAM&icflag1) cReturnCommand=CardReceChar(); //等待返回的字节
else cReturnCommand=EsamReceChar();
if(cReturnCommand==TxAndRxBuff[1]) //判断是否正确
{
cTxAndRxStatus=ReceINSRightBIT|cTxAndRxStatus;
}
SendCommandHead_ProEnd:;
}
/*******************************************
函数名称:SendCommand
函数功能:向卡或ESAM发送命令头后续的数据
输入参数:cCommandLen,数据长度
输出参数:无
描述:命令头发送成功后,发送命令体
*******************************************/
void SendCommand(unsigned char cCommandLen)
{
int itemp;
if(ICSAM&icflag1)
{
for(itemp=0;itemp<cCommandLen;itemp++)
{
CardSendChar(TxAndRxBuff[itemp]);
if(ErrorReadWriteBIT&iErrorRWrCard) goto SendCommandErr;
}
}
else
{
for(itemp=0;itemp<cCommandLen;itemp++)
{
EsamSendChar(TxAndRxBuff[itemp]);
if(ErrorReadWriteBIT&iErrorRWrCard) goto SendCommandErr;
}
}
SendCommandErr:;
}