📄 cpos.c.bak
字号:
#include <api.h>
#include <console.h>
#include <database.h>
#include <mifare530.h>
#include "CPOS.h"
extern short initDb();
void InitMenu()
{
}
void DispInt(unsigned char col, unsigned char row, unsigned int iValue)
{
unsigned char tmpbuf[100];
move_cursor(col,row);
memset(tmpbuf, 0, 10);
sprintf(tmpbuf, "%5d", iValue);
puts(tmpbuf);
getch();
}
void DispLong(unsigned char col, unsigned char row, unsigned long lValue)
{
unsigned char tmpbuf[100];
move_cursor(col,row);
memset(tmpbuf, 0, 10);
sprintf(tmpbuf, "%8ld", lValue);
puts(tmpbuf);
getch();
}
void Dispbcd(unsigned char col, unsigned char row, unsigned char *buff, unsigned char len)
{
unsigned char i, x, y;
unsigned char tmpbuf[100];
for(i=0;i<len;i++)
{
x = col+(i*2)%16;
y = row+(i*2)/16;
move_cursor(x,y);
memset(tmpbuf, 0, 10);
sprintf(tmpbuf, "%02x", buff[i]);
puts(tmpbuf);
}
getch();
}
void DisplayCardInfomation(unsigned long lSerialNo)
{
unsigned char sw, i;
unsigned long l;
typ_msg_word msg_buffer;
clr_scr();
move_cursor(0,0);
// for debug
// if((gstWorkCardInfomation.cKeyVerision==0xff)||(gstWorkCardInfomation.cKeyVerision==0xA0))
// {
// puts("提示:");
// move_cursor(0,2);
// puts("该卡是出厂卡!");
// }
// else
// for debug
{
gcSector = gstWorkCardInfomation.stCardStruct.cPublicSector;
gcBlock = gcSector * 4;
if (AuthenCard(&lSerialNo, gcSector, MIF_READ))
{
i = CompareBlock(gcSector, gcBlock, gcBlock+1, 1);
if (GetCardInformation(lSerialNo, SECTOR_ALL)!=1) return;
if(gstWorkCardInfomation.cCardType<32)
{
switch(gstWorkCardInfomation.cChargeStep)
{
case 0x01:
i = CardRestore('A');
break;
case 0x02:
i = CardRestore('B');
break;
default:
if (i==2)
i = CardRestore('B');
else
i = CardRestore('C');
break;
}
}
else
i=1;
if (i==0)
{
puts("错误:");
move_cursor(0,2);
puts("卡恢复失败!");
}
else if (i == 2)
{
puts("错误:");
move_cursor(0,2);
puts("钱包非法!");
}
else
{
sw = GetCardInformation(lSerialNo, SECTOR_ALL);
if(sw == 1)
{
move_cursor(0,0);
puts("卡号:");
move_cursor(0,2);
printf("%02x%02x%02x%02x%08lx", gstWorkCardInfomation.cCityCode[0], gstWorkCardInfomation.cCityCode[1], gstWorkCardInfomation.cTradeCode[0], gstWorkCardInfomation.cTradeCode[1], gstWorkCardInfomation.lCardNo);
if(gstWorkCardInfomation.cUsageFlag == 0x01)
{
move_cursor(0,4);
puts("该卡未启用!");
}
else if(gstWorkCardInfomation.cUsageFlag == 0x03)
{
move_cursor(0,4);
puts("该卡已经被停用!");
}
else if (gstWorkCardInfomation.cUsageFlag == 0x04)
{
move_cursor(0,4);
puts("该卡是黑名单卡!");
}
else
{
if(gstWorkCardInfomation.cCardType<0x20)
{
if (gstWorkCardInfomation.cChargeStep==0x02)
{
l = gstWorkCardInfomation.lMoney;
}
move_cursor(0,4);
puts("金额:");
move_cursor(0,6);
printf("%5.2f元", (float)l/100);
}
else
{
move_cursor(0,4);
switch(gstWorkCardInfomation.cCardType)
{
case CARD_NEW_CARD:
puts("该卡为白卡!");
break;
case CARD_DATA_GATHER:
puts("数据采集卡!");
break;
case CARD_DEV_SET:
puts("设备设置卡!");
break;
case CARD_LINE_SET:
puts("线路设置卡!");
break;
case CARD_NUMBER_SET:
puts("数码设置卡!");
break;
case CARD_DELAY_SET:
puts("该卡为延时卡!");
break;
case CARD_TOLL_START:
puts("收费启动卡!");
break;
case CARD_TIME_SET:
puts("该卡为设置卡!");
break;
case CARD_LEV_BUS:
puts("该卡为发车卡!");
break;
case CARD_ARV_BUS:
puts("该卡为到站卡!");
break;
case CARD_DRIVER_BUS:
puts("该卡为司机卡!");
break;
case CARD_CLERK_BUS:
puts("该卡为站务员卡!");
break;
case CARD_AUTHEN_DEV:
puts("该卡为空调卡!");
break;
case CARD_MONTH_STA:
puts("月票启动卡!");
break;
default:
puts("未知卡类型!");
break;
}
}
}
}
else if (sw == 2)
{
move_cursor(0,2);
puts("提示:");
move_cursor(0,2);
puts("该卡是出厂卡!");
}
else
{
move_cursor(0,2);
puts("提示:");
move_cursor(0,2);
puts("读卡片信息错误!");
}
}
}
}
i = 0;
SPT_set(2);
do
{
msg_buffer.s_word = sys_msg(SM_STAY_AWAKE);
if (msg_buffer.bits.comm_data)
break;
i++;
if(CardTypeARequest(PICC_REQIDL,gcATQ) == MI_OK)
if(CardTypeASelectLevel1((unsigned char*)&glSerialNo, gcATS)==MI_OK)
i=0;
// move_cursor(0,0);
// printf("%d", i);
}while(i<7);
}
main(void)
{
struct sttSysRunTime srt;
void *p;
char flag;
unsigned long toPos;
unsigned long totalNum;
unsigned char cCommand;
unsigned char cPressKey;
unsigned short iLength;
unsigned char cBuffer[1024];
unsigned short iRLength;
unsigned char cRBuffer[1024];
typ_msg_word msg_buffer;
unsigned char cCmdBuff[1024];
unsigned short iCmdBuffLength;
unsigned char i;
unsigned long l=0;
UART_init(UART_OFF);
init_console(CONSOLE_CHINESE);
sm_setting(MSK_KEY_AVAILABLE|MSK_COMM_DATA|MSK_TIME_OUT);
InitMenu();
gcAuthenMode = 0;
set_console_chinese();
set_normal_disp();
clr_scr();
move_cursor(0,0);
if(!initDb())
{
puts("初始化数据库成功");
}
else
{
puts("初始化数据库失败");
while(1);
}
move_cursor(0,2);
if(ResetResponse(cCmdBuff, &i))
{
puts("SAM复位应答成功!");
delay_n_ms(2000);
memset(cCmdBuff,0, 10);
ReadBinary(0x16, 0, 6, cCmdBuff);
memset(gcSAMNo, 0x30, sizeof(gcSAMNo));
memcpy(gcSAMNo + 2, cCmdBuff, 6);
}
else
{
puts("SAM复位应答失败!");
while(1);
}
/*
guDate.fields.year = 2003;
guDate.fields.month = 7;
guDate.fields.day = 28;
guTime.fields.hour = 9;
guTime.fields.minute = 23;
guTime.fields.second = 0;
RTC_set_date(guDate.l_word);
RTC_set_time(guTime.l_word);
*/
cCmdBuff[0] = 6;
memcpy(cCmdBuff+1, "123456", 6); //for debug
memcpy(cCmdBuff+9, "00000001", 8);
if(POSExecuteCommand(CMD_LOGON, 15, cCmdBuff, &iCmdBuffLength, cCmdBuff)==CMD_OK)
{
clr_scr();
move_cursor(0,0);
set_inversed_disp();
puts(" 系统登录 ");
set_normal_disp();
move_cursor(0,2);
puts("系统登录成功!");
move_cursor(0,6);
puts("按任意键返回");
// getch();
}
else
{
clr_scr();
move_cursor(0,0);
set_inversed_disp();
puts("错误:");
set_normal_disp();
move_cursor(0,2);
puts("系统登录失败,重");
move_cursor(0,4);
puts("新刷卡或按取消键");
move_cursor(0,6);
puts("返回!");
getch();
}
clr_scr();
move_cursor(0,0);
puts(" 欢迎使用 ");
gcCommMsgRow = 2;
UART_open();
InitMC530(TYPE_A_ISO14443);
do
{
//move_cursor(0, 0);
//printf("%05d",l);
//l++;
//UART_open();
cCommand = 0x00;
if(UART_receive(cCmdBuff, &iCmdBuffLength)==0)
{
// clr_scr();
// move_cursor(0,0);
// set_console_english();
// DispInt(0,0, iCmdBuffLength);
// clr_scr();
// Dispbcd(0,0, cCmdBuff, iCmdBuffLength);
// set_console_chinese();
cCommand = cCmdBuff[3];
if((cCommand!=CMD_GETDATA)&&(cCommand!=CMD_SETBLACKLIST))
{
delay_n_ms(10);
UART_disconnect();
}
iLength = 0;
memcpy(&iLength, cCmdBuff+1, 2);
memcpy(cBuffer, cCmdBuff+4, iLength);
i = POSExecuteCommand(cCommand, iLength, cBuffer, &iRLength, cRBuffer);
// clr_scr();
// move_cursor(0,0);
// set_console_english();
// DispInt(0,0, iRLength);
// clr_scr();
// Dispbcd(0,0, cRBuffer, iRLength);
// set_console_chinese();
cCmdBuff[0] = i;
memcpy(cCmdBuff+1, cRBuffer, iRLength);
if((cCommand!=CMD_GETDATA)&&(cCommand!=CMD_SETBLACKLIST))
{
delay_n_ms(10);
UART_open();
}
UART_send(cCmdBuff, iRLength+1);
}
//UART_disconnect();
//if(InitMC530(TYPE_A_ISO14443)==MI_OK)
//{
// clr_scr();
// move_cursor(0,0);
// puts("InitMC530");
// getch();
if(CardTypeARequest(PICC_REQIDL,gcATQ) == MI_OK)
{
// clr_scr();
// move_cursor(0,0);
// puts("CardTypeARequest");
// getch();
// delay_n_ms(10);
// if(CardTypeARequest(PICC_REQIDL,gcATQ) == MI_OK)
// {
// clr_scr();
// move_cursor(0,0);
// puts("CardTypeARequest");
// getch();
if(CardTypeAAnticollLevel1((unsigned char*)&glSerialNo)==MI_OK)
{
// clr_scr();
// move_cursor(0,0);
// puts("CardTypeAAnticollLevel1");
// getch();
if(CardTypeASelectLevel1((unsigned char*)&glSerialNo, gcATS)==MI_OK)
{
// clr_scr();
// move_cursor(0,0);
// puts("CardTypeASelectLevel1");
// getch();
if(GetCardKey(glSerialNo))
{
// clr_scr();
// move_cursor(0,0);
// puts("GetCardKey");
// getch();
if(gcAuthenMode==2)
DisplayCardInfomation(glSerialNo);
clr_scr();
move_cursor(0,0);
puts(" 欢迎使用 ");
gcCommMsgRow = 2;
}
}
}
// }
}
// MC530Off;
//}
}while(1);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -