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

CPU卡设计实例及程序设计(十六)取8字节和4字节随机数

已有 1173 次阅读2017-2-27 22:16 |个人分类:CPU卡开发设计程序实例| 程序设计, CPU卡

/*******************************************
函数名称:Get_RandNum
函数功能:从卡或者ESAM取8字节随机数
输入参数:无
输出参数:*pcRandBuff
描述:发命令头-接收到的数据等于命令头中的第二字节后,接下来的8个字节是随机数
*******************************************/
unsigned char *Get_RandNum(void)
{
  unsigned char cRandBuff[10]={0};  
  unsigned char *pcRandBuff;
  unsigned int itemp; 
  
  cCommandLen=0x05;         
  TxAndRxBuff[0]=0x00;  
  TxAndRxBuff[1]=0x84;
  TxAndRxBuff[2]=0x00;  
  TxAndRxBuff[3]=0x00;  
  TxAndRxBuff[4]=0x08;
  SendCommandHead_Pro(); 
  
  if(ICSAM&icflag1)
  {
    for(itemp=0;itemp<10;itemp++)
    {
      cRandBuff[itemp]=CardReceChar();
      if(ErrorReadWriteBIT&iErrorRWrCard) goto GetRandNumEnd; 
    }
  } 
   else
  {
    for(itemp=0;itemp<10;itemp++)
    {
      cRandBuff[itemp]=EsamReceChar();
      if(ErrorReadWriteBIT&iErrorRWrCard) goto GetRandNumEnd; 
    }
  } 
  if((cRandBuff[8]!=0x90)&&(cRandBuff[9]!=0x00))
  {
    iErrorRWrCard=ErrorRandBIT|iErrorRWrCard;
  }
GetRandNumEnd:
   delay_ms2M(5);
   pcRandBuff=&cRandBuff[0];   
   return   pcRandBuff;
}

/*******************************************
函数名称:Get_RandNum4Byte
函数功能:从卡或者ESAM取4字节随机数
输入参数:无
输出参数:*pcRandBuff
描述:发命令头-接收到的数据等于命令头中的第二字节后,接下来的4个字节是随机数
*******************************************/
unsigned char *Get_RandNum4Byte(void)
{
  unsigned char cRandBuff[6]={0};  
  unsigned char *pcRandBuff;
  unsigned int itemp; 
  
  cCommandLen=0x05;         
  TxAndRxBuff[0]=0x00;  
  TxAndRxBuff[1]=0x84;
  TxAndRxBuff[2]=0x00;  
  TxAndRxBuff[3]=0x00;  
  TxAndRxBuff[4]=0x04;
  SendCommandHead_Pro(); 
  
  if(ICSAM&icflag1)
    {
      for(itemp=0;itemp<6;itemp++)
      {
        cRandBuff[itemp]=CardReceChar();
        if(ErrorReadWriteBIT&iErrorRWrCard) goto GetRandNum4ByteEnd; 
      }
    } 
   else
    {
      for(itemp=0;itemp<6;itemp++)
      {
        cRandBuff[itemp]=EsamReceChar();
        if(ErrorReadWriteBIT&iErrorRWrCard) goto GetRandNum4ByteEnd; 
      }
    } 
  if((cRandBuff[4]!=0x90)&&(cRandBuff[5]!=0x00))
  {
    iErrorRWrCard=ErrorRandBIT|iErrorRWrCard;
  }
GetRandNum4ByteEnd:
   delay_ms2M(5);
   pcRandBuff=&cRandBuff[0];   
   return   pcRandBuff;
}
评论 (0 个评论)

facelist doodle 涂鸦板

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

热门文章