mifareproexcute.c

来自「mifarea卡程序mifarea卡程序mifarea卡程序」· C语言 代码 · 共 77 行

C
77
字号
#include "MifarePro.h"
#include "includes.h"
#include "COMMAND.H"


//卡片命令执行函数,调用相应的命令处理函数实现其命令功能.


unsigned int MifareProExcute(unsigned char *CmdBuf,unsigned int buflen)
{
    char prostatus;
    char proflag;
	//unsigned char *pcd;
    // unsigned int *len;
	unsigned int ExCmdLen;
    // len=&buflen;
    
	proflag  = CmdBuf[0]; 
   	ExCmdLen = buflen;
	
    //buf[0]是暂时的位置(或者其它位置的标识符),可能是其它的位置.         
    //读取命令格式中的标识符,选择不同的操作函数,可以有很多的操作函数.
    //可以有更多的操作函数,不仅限于这里的函数.



//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////


    if(CmdBuf[1]&0xFF !=0)
    {
        if(ExCmdLen<=MaxLength)
        {  
            //prostatus = Cmd_PackedProc(CmdBuf,&buflen);                    //注意buflen的大小!
			  prostatus = MProCommand(CmdBuf+2,ExCmdLen,CmdBuf,&buflen,1,11);
            if(prostatus == MI_OK)
            {
                // buflen=*len;
				
				ComputeCrc(CmdBuf+2,buflen-2,CmdBuf+buflen-2,CmdBuf+buflen-1);
				memcpy(CmdBuf,CmdBuf+2,buflen-2);
				buflen = buflen - 2;
                return buflen;
            }
			else
			{
			  CmdBuf[0] = FAIL;
			  return 1;
			}
        }
    }

    else
    {
        if(buflen<=MaxLength)
        {
            prostatus = MProCommand(CmdBuf+2,ExCmdLen,CmdBuf,&buflen,1,11);                     //card reset function
            if(prostatus == MI_OK)
            {
                // buflen=*len;
				
				ComputeCrc(CmdBuf,buflen,CmdBuf+buflen-2,CmdBuf+buflen-1);
               	memcpy(CmdBuf,CmdBuf+2,buflen-2);
                return buflen-2;
            }
			else
			{
			  CmdBuf[0] = FAIL;
			  return 1;
			}
        }
    }
    
    //CmdBuf[0] = FAIL;
    //return 1;

}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?