?? 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 + -