⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main0.c

📁 mifarea卡程序mifarea卡程序mifarea卡程序
💻 C
📖 第 1 页 / 共 5 页
字号:

                if(mode & NOTIFY_ON_CARD_INOUT)
                {
                    buf[0] = HASCARD;
                    buf[1] = cardin;
                    buf[2] = rfcardin;
                    
                    #if 1
                    CommSendNotWaitAck(buf, 3); //////////////////////////////////////
                    #else
                    CommSend(buf, 3);
                    #endif
                }
            }
        }

        // 串口侦听
        if((len = CommRead(buf, sizeof(buf)-1)) > 0)
        {
            unsigned char *cmddata;     // 命令数据
            unsigned char *m1data;
            // unsigned char cmdtag;       // 命令目标
            // unsigned char cmdtype;      // 命令类型
            
            starttime = GetTickCount();

            //////////////////////////////////////////////////////
            // 命令解包                                         //
            //命令包:stx len1 len2  cmdtarget cmdtype udp etx lrc
            //cmdtag = buf[0];                                    //
            #define     cmdtag  (buf[0])
            //cmdtype = buf[1];                                   //
            #define     cmdtype (buf[1])
            cmddata = buf + 2;                                  //
            //////////////////////////////////////////////////////
            
            rsplen = 1;

            //########################################################################//
            // 命令解包
            switch(cmdtag)
            {
                case MCU:
                    if(cmdtype == CMD_EJECTCARD)
                    {
                        if(len != 2)
                            buf[0] = ERRORCMDLEN;
                        else if(IccUserEject())      // first
                            buf[0] = SUCCESS;
                        else                        // fail
                        {
                            cardin = 0;             // 050521, to start a insert card proc
                            buf[0] = FAIL;
                        }
                    }
                    else if(cmdtype == CMD_SETMODE)
                    {
                        if(len != 3)
                            buf[0] = ERRORCMDLEN;
                        else
                        {
                            mode = cmddata[0];
                            buf[0] = SUCCESS;
                        }
                    }
                    else if(cmdtype == CMD_GETMODE)
                    {
                        if(len != 2)
                            buf[0] = ERRORCMDLEN;
                        else
                        {
                            buf[0] = SUCCESS;
                            buf[1] = mode;
                            rsplen = 2;
                        }
                    }
                    else if(cmdtype == CMD_SETRFRXGAIN)
                    {
                        if(len != 3)
                            buf[0] = ERRORCMDLEN;
                        else
                        {
                            M500SetRcvGain(cmddata[0]);
                            buf[0] = SUCCESS;
                        }
                    }
                    else if(cmdtype == CMD_GETVER)
                    {
                        if(len != 2)
                            buf[0] = ERRORCMDLEN;
                        else
                        {                        
                            buf[0] = SUCCESS;
                            strcpy(buf+1, ver);
                            rsplen = strlen(ver) + 1;
                        }
                    }
                    else if(cmdtype == CMD_GETSYSINFO)
                    {
                        if(len != 2)
                            buf[0] = ERRORCMDLEN;
                        else
                        {
                            buf[0] = SUCCESS;
                            strcpy(buf+1, sysinfo);
                            rsplen = strlen(sysinfo) + 1;
                        }
                    }
                    else if(cmdtype == CMD_SYSRESET)
                    {
                        if(len != 2)
                            buf[0] = ERRORCMDLEN;
                        else
                        {
                            buf[0] = SUCCESS;
                            CommSend(buf, 1);
                            delay(10);
                            #if 0
                            #pragma asm
                            CLR     EA
                            MOV     A, 0
                            PUSH    ACC
                            PUSH    ACC
                            reti
                            #pragma endasm
                            #else
                            disable();
                            while(1)
                            {
                                LED = ~LED;
                                //unsigned int l1, l2;
                                //for(l1=0; l1<65535; l1++)
                                //    for(l2=0; l2<3; l2++);
                                // ComWrite("\r\nReset\r\n", 7);
                            }   // wait for watchdog reset
                            #endif
                        }
                    }
                    else if(cmdtype == CMD_TESTCARD)
                    {
                        if(len != 2)
                            buf[0] = ERRORCMDLEN;
                        else
                        {
                            buf[0] = SUCCESS;
                            buf[1] = IccUserTest();     // 行程开关
                            buf[2] = rfcardtest(snr);   // 射频卡状态
                            rsplen = 3;
                        }
                    }
                    else if(cmdtype == CMD_SETICCBRATE)
                    {
                        if(len != 3)
                            buf[0]=ERRORCMDLEN;
                        else
                        {
                            buf[0] = SUCCESS;

                            if(cmddata[0] == 0)
                                IccInit(248);   // 9600
                            else if(cmddata[0] == 1)
                                IccInit(62);    // 38400
                            else if(cmddata[0] == 2)
                                IccInit(124);   // 19200
                            else if(cmddata[0] == 3)
                                IccInit(192);   // on-card-clock 9600
                            else
                                buf[0] = ERRORCMD;
                        }
                    }
                    else if(cmdtype == CMD_USEDEBUG)
                    {
                        if(len != 3)
                            buf[0] = ERRORCMDLEN;
                        else
                        {
                            buf[0] = SUCCESS;
                            if(cmddata[0])
                                CommUseDbg(1);
                            else
                                CommUseDbg(0);
                        }
                    }
                    else if(cmdtype == CMD_BEEP)
                    {
                        if(len != 4)
                            buf[0] = ERRORCMDLEN;
                        else
                        {
                            len = cmddata[1];
                            len <<= 8;
                            len += cmddata[0];
                            #ifdef BUZZEROUT
                            buzzer(0, len);
                            #endif
                            
                            buf[0] = SUCCESS;
                        }
                    }
                    else if(cmdtype == CMD_INV_PACK)
                    {
                        if(len != 3)
                            buf[0] = ERRORCMDLEN;
                        else
                        {
                            if(cmddata[0] == 0)
                                CommInvPack(0);
                            else
                                CommInvPack(1);
                            
                            buf[0] = SUCCESS;
                        }
                    }
                    else if(cmdtype == CMD_RFRESET)
                    {
                        if(len != 2)
                            buf[0] = ERRORCMDLEN;
                        else
                        {
                            if(MI_OK == M500PcdInit())
                                buf[0] = SUCCESS;
                            else
                                buf[0] = FAIL;
                        }
                    }
                    else if(cmdtype == CMD_GETHDINFO)
                    {
                        if(len != 2)
                            buf[0] = ERRORCMDLEN;
                        else
                        {
                            buf[0] = SUCCESS;
                            strcpy(buf+1, pcbinfo);
                            rsplen = strlen(pcbinfo) + 1;
                        }
                    }
                    else if(cmdtype == CMD_SETTOCRF)
                    {
                        if(len != 3)
                            buf[0] = ERRORCMDLEN;
                        else
                        {
                            RfConfirmTime = cmddata[0];
                            RfConfirmTime = RfConfirmTime * 100 + 50;
                            buf[0] = SUCCESS;
                        }
                    }
                    /*else if(cmdtype == CMD_STARTISP)
                    {
                        if(len != 2)
                            buf[0] = ERRORCMDLEN;
                        else
                        {
                            buf[0] = SUCCESS;
                            CommSend(buf, 1);
                            memcpy(fisp, "FISP", 4);
                            while(1);   // wait for watchdog reset
                            //FlashEnterISP();
                        }
                    }*/
                    else
                    {
                        // error package
                        buf[0] = ERRORCMD;
                    }
                    
                    CommSend(buf, rsplen);
                    break;
                
                case IC_MEMORY:
                    buf[0] = ERRORCMD;
                    CommSend(buf, 1);
                    break;
                    
                case IC_SMART:
                    fwaitcmd = 0;   // disable resend message to host, 050523
                    
                case IC_SAM1:   // = IC_PSAM = IC_ISAM:
                case IC_SAM2:
                case IC_SAM3:
                case IC_SAM4:
                case IC_SAM5:
                case IC_SAM6:
                case IC_SAM7:
                case IC_SAM8:
                
                    IccSelect(cmdtag);
                    
                    if(cmdtype == CMD_RESET)
                    {
                        if(len != 2)
                            buf[0] = ERRORCMDLEN;
                        else
                        {
                            // send reset infomation to host
                            i = IccOpen(cmdtag, buf+1);
                            buf[0] = SUCCESS;
                            rsplen = i + 1;
                        }
                    }
                    #if 0
                    else if(cmdtype == CMD_OPERATE)
                    {
                        if(len < 8)
                            buf[0] = ERRORCMDLEN;
                        else
                        {
                            icccmd.CLA = cmddata[0];
                            icccmd.INS = cmddata[1];
                            icccmd.P1 = cmddata[2];
                            icccmd.P2 = cmddata[3];
                            icccmd.Lc = cmddata[4];
                            icccmd.DAT = cmddata + 5;
                            icccmd.Le = cmddata[5 + icccmd.Lc];
                            iccrsp.DAT = buf+1;
                            if(!IccSendCmd(&icccmd, &iccrsp))
                            {
                                // command failed
                                buf[0] = FAIL;
                            }
                            else
                            {
                                // command success, send command excute result
                                // pdu: response_data*n + response_sw*2
                                buf[0] = SUCCESS;

⌨️ 快捷键说明

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