注册 登录
电子工程世界-论坛 返回首页 EEWORLD首页 频道 EE大学堂 下载中心 Datasheet 专题
tiankai001的个人空间 https://home.eeworld.com.cn/space-uid-139222.html [收藏] [复制] [分享] [RSS]
日志

CPU卡设计实例及程序设计(十四)命令头的发送及后续数据发送

已有 707 次阅读2017-2-20 23:51 |个人分类:CPU卡开发设计程序实例| 程序设计, CPU卡

/*******************************************
函数名称: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:;  
评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 注册

热门文章