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

📄 ppos.c.bak

📁 用于小商品消费的SMS消费机程序
💻 BAK
📖 第 1 页 / 共 4 页
字号:
						}
					}
				}
				if(cPressKey==KEY_ENTER)
				{
					clr_scr();
					move_cursor(0,0);
					set_inversed_disp();
					puts("  查询卡片余额  ");
					set_normal_disp();
					move_cursor(0,2);
					puts("请放卡...");
					move_cursor(0,6);
					puts("或按取消键返回");	
					if((KEY_get_status()&0x01)!=0)
					{
						cPressKey = KEY_CLR;
					}					
//					SPT_set(2);
//					msg_buffer.s_word = sys_msg(SM_STAY_AWAKE);									
//					if (msg_buffer.bits.key_available)
//					{
//						cPressKey = KEY_CLR;
//					}
					delay_n_ms(100);
				}
			}while(cPressKey==KEY_ENTER);
			MC530Off;
			CloseSAMCard();
			CheckPOSStatus(0);
			break;			
		case 3:
			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;
			}			
			stQueryMenu.cCursorPosition = 0;
			while(SelectMenu(stQueryMenu.pTitle, stQueryMenu.ppItem, stQueryMenu.cItemNum, &stQueryMenu.cCursorPosition)==KEY_ENTER)
			{
				switch(stQueryMenu.cCursorPosition)
				{
				case 0:					
					if(!getSysRunTime(&srt))
					{				
//						clr_scr();
//						set_console_english();
//						Dispbcd(0,0,(unsigned char*)&srt, 30);
//						set_console_chinese();
						if(!haveTradeRecord(&srt))
						{
							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;
						}					
						doDb = srt.cLastTradeHandleDb;
						doPos = srt.lLastTradeHandle-1;
						iIndex = 0;
						totalNum = DB_count_records(doDb);
//						DispLong(0,0,totalNum);
						
						stQueryReport1.cCursorPosition = 0;
						do
						{
							p = DB_jump_to_record(doDb, doPos, &flag);
							memcpy(&gstQueryChargeRecord, p, sizeof(gstQueryChargeRecord));
							sprintf(reporttitle001+11, "%04d=", iIndex+1);
							sprintf(reportbar002, "%02x%02x%02x%02x", gstQueryChargeRecord.cCityCode[0], gstQueryChargeRecord.cCityCode[1], gstQueryChargeRecord.cTradeCode[0], gstQueryChargeRecord.cTradeCode[1]);
							sprintf(reportbar002+8, "%02x%02x%02x%02x", gstQueryChargeRecord.cCardNo[0], gstQueryChargeRecord.cCardNo[1], gstQueryChargeRecord.cCardNo[2], gstQueryChargeRecord.cCardNo[3]);
							sprintf(reportbar004, "%02x", gstQueryChargeRecord.cCardType);
							l1 = 0;
							OverTurnString(&l1, gstQueryChargeRecord.cMoneyOrTimes, 4);
							sprintf(reportbar006, "%7.2f元", (float)l1/100);
							l2 = 0;
							OverTurnString((unsigned char*)&l2+1, gstQueryChargeRecord.cChargeMoneyOrTimes, 3);
							sprintf(reportbar008, "%7.2f元", (float)l2/100);
							sprintf(reportbar00A, "%7.2f元", (float)(l1-l2)/100);
							memcpy(cBuffer, gstQueryChargeRecord.cChargeDateTime, 7);
							sprintf(reportbar00C, "%02x%02x年%02x月%02x日", cBuffer[0], cBuffer[1], cBuffer[2], cBuffer[3]);
							sprintf(reportbar00D, "%02x:%02x:%02x", cBuffer[4], cBuffer[5], cBuffer[6]);					
							cPressKey = DisplayReport(stQueryReport1.pTitle, stQueryReport1.ppItem, stQueryReport1.cItemNum, &stQueryReport1.cCursorPosition);
							if(cPressKey==KEY_F2)
							{
								if(doPos+1 == totalNum)
								{
									if(doDb == srt.cLastTradeHandleDb)
									{
//										doDb = srt.cLastGatherToDb;
//										doPos = srt.lLastGatherTo;
									}
									else
									{
										if(doDb == TD_DB_INDEX3)
											doDb = TD_DB_INDEX1;
										else 
											doDb ++;
										doPos = 0;
									}
									totalNum = DB_count_records(doDb);
								}
								else
								{
									doPos ++;
									iIndex -- ;
								}	
							}
							else if(cPressKey==KEY_F1)
							{
								if((doDb == srt.cLastGatherToDb)&&(doPos == srt.lLastGatherTo))
								{
//										doDb = srt.cLastTradeHandleDb;
//										doPos = srt.lLastTradeHandle-1;
//										totalNum = DB_count_records(doDb);
								}
								else if(doPos == 0)
								{
									if(doDb == TD_DB_INDEX1)
										doDb = TD_DB_INDEX3;
									else 
										doDb --;
									totalNum = DB_count_records(doDb);
									doPos = totalNum;
									iIndex ++ ;
								}
								else
								{
									doPos --;
									iIndex ++ ;
								}								
							}
						}while(cPressKey != KEY_CLR);
					}
					break;
				case 1:
					if(!getSysRunTime(&srt))
					{
						if(!haveTradeRecord(&srt))
						{
							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;
						}					
						clr_scr();
						move_cursor(0,0);
				    		set_inversed_disp();
						puts("提示:");
						set_normal_disp();
						move_cursor(0,2);
						puts("正在计算,请等待");
						doDb = srt.cLastTradeHandleDb;
						doPos = srt.lLastTradeHandle-1;
						iIndex = 0;
						l2 = 0;
						totalNum = DB_count_records(doDb);
						do
						{
							p = DB_jump_to_record(doDb, doPos, &flag);
							memcpy(&gstQueryChargeRecord, p, sizeof(gstQueryChargeRecord));
							l1 = 0;
							OverTurnString((unsigned char*)&l1+1, gstQueryChargeRecord.cChargeMoneyOrTimes, 3);
							l2 += l1;
							if((doDb == srt.cLastGatherToDb)&&(doPos == srt.lLastGatherTo))
							{
								break;
							}
							else if(doPos == 0)
							{
								if(doDb == TD_DB_INDEX1)
									doDb = TD_DB_INDEX3;
								else 
									doDb --;
								totalNum = DB_count_records(doDb);
								doPos = totalNum;
								iIndex ++ ;
							}
							else
							{
								doPos --;
								iIndex ++ ;
							}								
						}while(1);						
						
						stQueryReport2.cCursorPosition = 0;
						sprintf(reportbar012, "%4d次", iIndex+1);
						sprintf(reportbar014, "%8.2f元", (float)l2/100);
						do
						{
							stQueryReport2.cCursorPosition = 0;
							cPressKey = DisplayReport(stQueryReport2.pTitle, stQueryReport2.ppItem, stQueryReport2.cItemNum, &stQueryReport2.cCursorPosition);
						}while(cPressKey != KEY_CLR);
					}
					break;
				case 2:
					clr_scr();
					move_cursor(0,0);
			    	set_inversed_disp();
					puts(" 设备编号查询 ");
					set_normal_disp();
					move_cursor(0,2);
					puts("设备编号为:");
					OverTurnString(&l1, gcPSAMNo, 4);
					move_cursor(0,4);
					printf("%08ld", l1);
					move_cursor(0,6);
					puts("按任意键返回");
					getch();
					break;					
				}				
			}	
			break;
		case 4:		    
			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;
			}
			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_ENTER)
			{
//				if(CheckPOSStatus(0)==0)
//				{
//					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;
//				}
				gcCommMsgRow = 4;
				clr_scr();	
				move_cursor(0,0);
		    	set_inversed_disp();
				puts("    数据通讯    ");
				set_normal_disp();
				move_cursor(0,2);
				puts("开始通讯...");
				UART_open();
				cCommand = 0x00;
				j = 0;
				do
				{
					i = UART_receive(cCmdBuff, &iCmdBuffLength);
//					clr_scr();
//					set_console_english();
//					Dispbcd(0,0,cCmdBuff,10);
//					Dispbcd(0,3,&i,1);
//					set_console_chinese();
					if(i==0)
					{
						cCommand = cCmdBuff[3];
//						clr_scr();	
//						set_console_english();
//						Dispbcd(0,0,&cCommand,1);
//						if((cCommand!=CMD_GETDATA)&&(cCommand!=CMD_SETBLACKLIST))UART_disconnect();
						iLength = 0;
						memcpy(&iLength, cCmdBuff+1, 2);
//						clr_scr();
//						DispInt(0,0,iLength);
						memcpy(cBuffer, cCmdBuff+4, iLength);
//						DispInt(0,2,iLength);
//						Dispbcd(0,4,cBuffer,iLength);
						i = POSExecuteCommand(cCommand, iLength, cBuffer, &iRLength, cRBuffer);
						cCmdBuff[0] = i;
						memcpy(cCmdBuff+1, cRBuffer, iRLength);
//						if((cCommand!=CMD_GETDATA)&&(cCommand!=CMD_SETBLACKLIST))UART_open();
						i = UART_send(cCmdBuff, iRLength+1);						
						if((cCommand==CMD_GETDATA)&&(iRLength>0)&&(i==0))
						{
							memcpy(&srt, cBuffer, sizeof(srt));
							updateSysRunTime(&srt);//回写系统运行时参数
						}
//						set_console_chinese();
						j = 0;
					}
					else
					{
						j ++;
						if(j>50)					
						{
							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;						
						}					
					}
				}while(cCommand!=CMD_DISCONNECT);
				if(j<=50)
				{
					UART_disconnect();
					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;
		case 5:
			stSetMenu.cCursorPosition = 0;
			while(SelectMenu(stSetMenu.pTitle, stSetMenu.ppItem, stSetMenu.cItemNum, &stSetMenu.cCursorPosition)==KEY_ENTER)
			{
				switch(stSetMenu.cCursorPosition)
				{
				case 0:
					clr_scr();
					move_cursor(0,0);
			    	set_inversed_disp();
					puts("   对比度设置   ");
					set_normal_disp();
					move_cursor(0,2);
					puts("<-减小, ->增加");
					move_cursor(0,6);
					puts("按其它键返回");
					do
					{
						shContrast = get_LCD_contrast();
						move_cursor(0,4);
						printf("对比度:%2d", shContrast);
						cPressKey = getch();
						if(cPressKey==KEY_AUX3)
						{
							dec_LCD_contrast();
						}
						else if(cPressKey==KEY_AUX4)
						{
							inc_LCD_contrast();
						}
						else
							break;
					}while(1); 
					break;
				case 1:
					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;
					}			
					clr_scr();
					move_cursor(0,0);
					puts("请输入超级管理员");
					move_cursor(0,2);
					puts("密码");
					memset(cBuffer, 0, 40);
					if(get_str(0,4,cBuffer, 8, 2)==KEY_ENTER)
					{
						if(memcmp(cBuffer, "20031231", 8)==0)
						{
							if(!getSysRunTime(&srt))
							{
								clr_scr();
								move_cursor(0,0);
						    	set_inversed_disp();
								puts("  数据中心号码  ");
								set_normal_disp();
								move_cursor(0,2);
								puts(srt.CenterNo);
								move_cursor(0,4);
								puts("请输入新号码:");
								memset(cBuffer, 0, 20);
								if(get_str(0,6,cBuffer,12,0)==KEY_ENTER)
								{
									memcpy(srt.CenterNo, cBuffer, 12);
									memcpy(CenterNo, cBuffer, 12);
									updateSysRunTime(&srt);							
									move_cursor(0,2);
									puts("                ");
									move_cursor(0,2);
									puts(cBuffer);
									move_cursor(0,4);
									puts("新号码设置成功!");
									move_cursor(0,6);
									puts("按任意键返回!  ");
									getch();
								}													
								break;
							}		
						}									
					}			
					clr_scr();
					move_cursor(0,2);
					puts("输入错误");
					move_cursor(0,6);
					puts("按任意键返回");							
					getch();
					break;
				case 2:
					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;
					}			
					GSM_off();
					clr_scr();					
					move_cursor(0,2);
					puts("关闭GSM模块成功");
					move_cursor(0,6);
					puts("按任意键返回!");
					getch();
					break;	
				case 3:
					if(gcAuthenMode!=2)
					{
						clr_scr();
						move_cursor(0,0);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -