📄 ppos.c
字号:
#include <api.h>
#include <console.h>
#include <database.h>
#include <mifare530.h>
#include "PPOS.h"
struct sttMenu stMainMenu, stQueryMenu, stSetMenu, stTradeReport, stQueryReport1, stQueryReport2, stPrintReport;;
//主菜单
unsigned char menutitle001[17] = " ==主菜单== ";
unsigned char menubar001[17] = " 1.系统登录 ";
unsigned char menubar002[17] = " 2.刷卡消费 ";
unsigned char menubar003[17] = " 3.卡片余额查询";
unsigned char menubar004[17] = " 4.数据查询 ";
unsigned char menubar005[17] = " 5.数据通讯 ";
unsigned char menubar006[17] = " 6.参数设置 ";
unsigned char menubar007[17] = " 7.当日结算 ";
//数据查询菜单
unsigned char menutitle002[17] = " ==数据查询== ";
unsigned char menubar011[17] = "1.未采集记录查询";
unsigned char menubar012[17] = "2.未采集金额统计";
unsigned char menubar013[17] = "3.设备编号查询";
//参数设置
unsigned char menutitle003[17] = " ==参数设置== ";
unsigned char menubar021[17] = " 1.对比度设置 ";
unsigned char menubar022[17] = " 2.数据中心号码";
unsigned char menubar023[17] = " 3.关闭GSM模块 ";
unsigned char menubar024[17] = " 4.修改密码 ";
unsigned char menubar025[17] = " 5.设置日期时间";
unsigned char menubar026[17] = " 6.清除密码 ";
unsigned char menubar027[17] = " 7.短信中心号码";
//交易记录查询
unsigned char reporttitle001[17] = "=未采集记录 =";
unsigned char reportbar001[17] = "卡号:";
unsigned char reportbar002[17] = "";
unsigned char reportbar003[17] = "卡类:";
unsigned char reportbar004[17] = "";
unsigned char reportbar005[17] = "交易前金额:";
unsigned char reportbar006[17] = "";
unsigned char reportbar007[17] = "交易金额:";
unsigned char reportbar008[17] = "";
unsigned char reportbar009[17] = "余额:";
unsigned char reportbar00A[17] = "";
unsigned char reportbar00B[17] = "交易时间:";
unsigned char reportbar00C[17] = "";
unsigned char reportbar00D[17] = "";
//交易金额统计
unsigned char reporttitle002[17] = "=未采集金额统计=";
unsigned char reportbar011[17] = "交易次数:";
unsigned char reportbar012[17] = "";
unsigned char reportbar013[17] = "交易金额:";
unsigned char reportbar014[17] = "";
//交易成功
unsigned char reporttitle003[17] = " ==交易成功== ";
unsigned char reportbar021[17] = "卡号:";
unsigned char reportbar022[17] = "";
unsigned char reportbar023[17] = "交易金额:";
unsigned char reportbar024[17] = "";
unsigned char reportbar025[17] = "余额:";
unsigned char reportbar026[17] = "";
//交易记录打印
unsigned char reporttitle004[17] = "==交易成功结果==";
unsigned char reportbar031[17] = "卡号:";
unsigned char reportbar032[17] = "";
unsigned char reportbar033[17] = "交易前金额:";
unsigned char reportbar034[17] = "";
unsigned char reportbar035[17] = "交易金额:";
unsigned char reportbar036[17] = "";
unsigned char reportbar037[17] = "余额:";
unsigned char reportbar038[17] = "";
unsigned char reportbar039[17] = "交易时间:";
unsigned char reportbar03A[17] = "";
unsigned char reportbar03B[17] = "";
unsigned char reportbar03C[17] = "设备编号:";
unsigned char reportbar03D[17] = "";
unsigned char *menu001[8] = {menubar001, menubar002, menubar003, menubar004, menubar005, menubar006, menubar007, 0};
unsigned char *menu002[4] = {menubar011, menubar012, menubar013, 0};
unsigned char *menu003[8] = {menubar021, menubar022, menubar023, menubar024, menubar025, menubar026, menubar027, 0};
unsigned char *report001[14] = {reportbar001, reportbar002, reportbar003, reportbar004, reportbar005, reportbar006, reportbar007, reportbar008, reportbar009, reportbar00A, reportbar00B, reportbar00C, reportbar00D,0};
unsigned char *report002[5] = {reportbar011, reportbar012, reportbar013, reportbar014, 0};
unsigned char *report003[7] = {reportbar021, reportbar022, reportbar023, reportbar024, reportbar025, reportbar026, 0};
unsigned char *report004[14] = {reportbar031, reportbar032, reportbar033, reportbar034, reportbar035, reportbar036, reportbar037, reportbar038, reportbar039, reportbar03A, reportbar03B, reportbar00C, reportbar00D,0};
extern short initDb();
extern unsigned short GSM_State;
extern unsigned char *BCD2ASC(unsigned char *strBCD, unsigned char cLenBCD);
extern unsigned char *ASC2BCD(unsigned char *strASC, unsigned char cLenASC);
//extern void PrintTable();
void InitMenu()
{
stMainMenu.pTitle = menutitle001;
stMainMenu.ppItem = menu001;
stMainMenu.cItemNum = 7;
stMainMenu.cCursorPosition = 0;
stQueryMenu.pTitle = menutitle002;
stQueryMenu.ppItem = menu002;
stQueryMenu.cItemNum = 3;
stQueryMenu.cCursorPosition = 0;
stSetMenu.pTitle = menutitle003;
stSetMenu.ppItem = menu003;
stSetMenu.cItemNum = 7;
stSetMenu.cCursorPosition = 0;
stQueryReport1.pTitle = reporttitle001;
stQueryReport1.ppItem = report001;
stQueryReport1.cItemNum = 13;
stQueryReport1.cCursorPosition = 0;
stQueryReport2.pTitle = reporttitle002;
stQueryReport2.ppItem = report002;
stQueryReport2.cItemNum = 4;
stQueryReport2.cCursorPosition = 0;
stTradeReport.pTitle = reporttitle003;
stTradeReport.ppItem = report003;
stTradeReport.cItemNum = 6;
stTradeReport.cCursorPosition = 0;
stPrintReport.pTitle = reporttitle004;
stPrintReport.ppItem = report004;
stPrintReport.cItemNum = 13;
stPrintReport.cCursorPosition = 0;
}
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, "%05d", 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();
if (GetCardInformation(lSerialNo, SECTOR_ALL)!=1) return;
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;
}
else
{
l = gstWorkCardInfomation.lMoneyBak;
}
move_cursor(0,4);
printf("金额:%7.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;
}
}
}
}
main(void)
{
typ_msg_word msg_buffer;
struct sttSysRunTime srt;
void *p;
char flag;
unsigned char doDb;
unsigned long doPos;
unsigned long totalNum;
unsigned long S1,S2;
unsigned char cCommand;
unsigned char cPressKey;
unsigned short iLength;
unsigned char cBuffer[1024];
unsigned short iRLength;
unsigned char cRBuffer[1024];
unsigned char cCmdBuff[1024];
unsigned short iCmdBuffLength;
unsigned char i, j;
unsigned long l1, l2, lSerialNo;
unsigned int iIndex;
short shContrast;
unsigned char Time1[7], Time2[7];
UART_init(UART_OFF);
init_console(CONSOLE_CHINESE);
// l1 = KEY_beep_mask_read();
// l2 = KEY_EL_mask_read();
// clr_scr();
// Dispbcd(0,0, &l1, 4);
// Dispbcd(0,2, &l2, 4);
set_console_chinese();
set_normal_disp();
// if(GSM_State == 0)
// {
// clr_scr();
// move_cursor(0,0);
// puts("打开GSM模块!");
// move_cursor(0,2);
// puts("请稍等...");
// GSM_on();
// delay_n_ms(5000);
// clr_scr();
// move_cursor(0,0);
// puts("配置GSM模块!");
// move_cursor(0,2);
// puts("请稍等...");
// if(GSM_configure()==0)
// {
// clr_scr();
// move_cursor(0,0);
// puts("配置GSM模块错误");
// move_cursor(0,2);
// puts("按任意键继续");
// GSM_off();
// getch();
// }
// }
InitMenu();
gcAuthenMode = 0;
set_console_chinese();
set_normal_disp();
clr_scr();
move_cursor(0,0);
if(initDb()==0)
{
puts("初始化数据库成功");
}
else
{
puts("初始化数据库失败");
while(1);
}
getSysRunTime(&srt);
memcpy(CenterNo, srt.CenterNo, 12);
memcpy(SMSCenterNo, srt.SMSCenterNo, 20);
move_cursor(0,2);
i = get_LCD_contrast();
for(;i<28;i++)
inc_LCD_contrast();
i = ResetResponse(cCmdBuff, &j);
// clr_scr();
// move_cursor(0,0);
// set_console_english();
// printf("%d", j);
// Dispbcd(0,1, cCmdBuff, j);
// set_console_chinese();
if(i)
{
puts("SAM复位应答成功!");
memset(cCmdBuff,0, 40);
ReadBinary(0x15, 0, 10, cCmdBuff);
l1 = atol(BCD2ASC(cCmdBuff+6, 4));
memset(gcPSAMNo, 0, sizeof(gcPSAMNo));
OverTurnString(gcPSAMNo, &l1, 4);
//memcpy(gcCityNo, cCmdBuff, 2);
memcpy(gcCityNo, "\x24\x30", 2);
move_cursor(0,4);
printf("SAM卡号:%08ld", l1);
delay_n_ms(2000);
}
else
{
puts("SAM复位应答失败!");
// while(1);
}
// gcAuthenMode = 2;
// memcpy(gcWorkerNo, "\x01\x00\x00\x00", 4);
gGetDb = TD_DB_INDEX1;
gGetPos = 0;
stMainMenu.cCursorPosition = 0xff;
do
{
CloseSAMCard();
do
{
if(stMainMenu.cCursorPosition==0xff)
{
if(gcAuthenMode!=2)
{
stMainMenu.cCursorPosition=0;
}
else
{
stMainMenu.cCursorPosition=1;
}
break;
}
}while(SelectMenu(stMainMenu.pTitle, stMainMenu.ppItem, stMainMenu.cItemNum, &stMainMenu.cCursorPosition)!=KEY_ENTER);
switch(stMainMenu.cCursorPosition)
{
case 0:
if(gcAuthenMode==2)
{
clr_scr();
move_cursor(0,0);
set_inversed_disp();
puts("错误:");
set_normal_disp();
move_cursor(0,2);
puts("已经登录系统!");
move_cursor(0,6);
puts("按任意键返回");
getch();
break;
}
stMainMenu.cCursorPosition=0xff;
clr_scr();
move_cursor(0,0);
set_inversed_disp();
puts(" 系统登录 ");
set_normal_disp();
move_cursor(0,2);
puts("请输入管理员号:");
memset(cBuffer, 0, 10);
if(get_str(0,4,cBuffer,8,2)==KEY_ENTER)
{
l1 = atol(cBuffer);
OverTurnString(gcWorkerNo, &l1, 4);
if(l1 == srt.lWorkerNo)
{
clr_scr();
move_cursor(0,0);
set_inversed_disp();
puts(" 系统登录 ");
set_normal_disp();
move_cursor(0,2);
puts("请输入密码:");
memset(cBuffer, 0, 10);
if(get_str(0,4,cBuffer,8,2)==KEY_ENTER)
{
//Dispbcd(0,6,cBuffer, 8);
//Dispbcd(0,6,srt.cPassword, 8);
if(memcmp(cBuffer, srt.cPassword, 8)==0)
{
gcAuthenMode = 2;
clr_scr();
move_cursor(0,0);
set_inversed_disp();
puts(" 系统登录 ");
set_normal_disp();
move_cursor(0,2);
puts("系统登录成功!");
move_cursor(0,6);
puts("按任意键返回");
getch();
CheckPOSStatus(0);
break;
}
}
}
}
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("返回!");
cPressKey = getch();
if(cPressKey==KEY_CLR)
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -