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

📄 ppos.c.bak

📁 用于小商品消费的SMS消费机程序
💻 BAK
📖 第 1 页 / 共 4 页
字号:
#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 + -