📄 main0.c
字号:
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 + -