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

📄 main.c

📁 抄水表手持POS代码
💻 C
字号:
#include "_POS.h"
#include "AppData.h"

unsigned char  code menu00[17]="  1.抄表收费    ";
unsigned char  code menu01[17]="  2.数据查询    ";
unsigned char  code menu02[17]="  3.数据上传    ";
unsigned char  code menu03[17]="  4.信息下载    ";
unsigned char  code menu04[19]="  5.系统设置    ";
unsigned char  code menu05[17]="  6.设置密码    ";
code unsigned char   * menu0[]	={menu00,menu01,menu02,menu03,menu04,menu05,NULL};

extern bit sbhflag;

extern bit ZBHFlag;
extern bit GLKFlag;
extern uchar XLFlag;
extern uchar BusNum[2];//车辆自编号
extern uchar OpCardNum[2];//承包人编号
extern uchar GLCardNum[3];//管理卡发行卡号
extern uint LineNum;
extern uchar xdata CardNumBuf[30+1];
void MainMenu();
void Set_Sys();
void Test_Time();
void Set_POS();
extern void Card_OP();
extern long ReadLen();

extern uchar InitLSZ();
extern void upload();
extern uchar Get_Money(uchar *buff);
extern void Init_Sys();
extern uchar Set_Bal();
extern void UploadToPos();
void CloseCom1();
void MainMenuBak();

void AcsToBcd(uchar *in,uchar *out)
{
int i;
 for (i=0;i<6;i++){out[i]=(in[i*2]-0x30)*16+in[i*2+1]-0x30;}
}

main()
{
uchar xdata i;
long  xdata ret;
ulong xdata kjmm1,kjmm;
uchar xdata str[30];

WDTCN = 0xde;
WDTCN = 0xad;
_SYSCLK_Init();
_PORT_Init ();
_UART0_Init(57600);
CloseCom1();
EA = 1;P20=0X1;P21=0;P36=0X1;
_SetFlashPara();
P10=0;P12=0;P13=0;P14=0;P15=0;P16=0;P17=0;P32=0;P33=0;P34=0;P35=0;
P36=0;P37=0;P04=0;P05=0;
BELL(1,1);P0=0; P21=1;P36=1;_delay_10ms(50);

_Clr();
_Display(0,1,"   正在检测...   ",16);
for (i=0;i<5;i++)ret=get_voltage();
if(ret<=350){_Clr();_Display(0,1,"电压过低,请充电",16); _GetChar(); _PowerOff();}
GET_SBH();

_Clr();
_Display(0,0,"  煤气抄表POS   ",16);
_Display(0,1,"  版本2.0/1.1     ",16);
_Display(0,2,"  设备号          ",16);
DISPLAY_SBH();
//MainMenu();
kjmm=Get_kjmm();
gostart:
_Display(0,3,"请输入密码",10);
memset(str,0,sizeof(str));
ret=_GetStr_PSWD(10,3,str,6);
kjmm1=0;
for(i=0;i<ret;i++)
  {
   if((str[i]>='0')&&(str[i]<='9')){kjmm1=kjmm1*10+str[i]-0x30;}
	else goto gostart;
  }
if(kjmm1==9264) MainMenu();
if(kjmm==kjmm1){MainMenu();}
else goto gostart;

MainMenuBak();
while(1);
}

void OpenCom1(){P20=0X0;}
void CloseCom1(){P02=0x00;P03=0x00;P04=0x00;P05=0x00;P06=0x00;P17=0x00;P27=0x00;P20=0X01;}

void MainMenu()
{
uchar xdata i;
long  xdata ret;
 while(1) {
          for(i=0;i<3;i++) ret=get_voltage();if(ret<350){_Clr();_Display(0,1,"电压过低,请充电",16); _GetChar(); _PowerOff();}
          i=_SelectMenu(menu0,MN_MODE_ENTER);
			 switch(i) {
							 case  0: SB_OP();break;
							 case  1: LSZ_CX();break;
							 case  2: _PORT_Init (); _UART1_Init(57600);OpenCom1();upload();CloseCom1();break;
							 case  3: _PORT_Init (); _UART1_Init(57600);OpenCom1();DownLoad();CloseCom1();break;
							 case  4: Set_Sys();break;
							 case  5: Set_Sec();break;
							 //case  KeyB_F1:_Clr(); Select_Bal();break;
							 //case  KeyB_LED:_Clr(); PAR_CX2();break;
							}
			}
}

void MainMenuBak()
{
uchar xdata i;
long  xdata ret;
 while(1) {
          for(i=0;i<3;i++) ret=get_voltage();if(ret<350){_Clr();_Display(0,1,"电压过低,请充电",16); _GetChar(); _PowerOff();}
          i=_SelectMenu(menu0,MN_MODE_ENTER);
			 switch(i) {
							 case  0: Card_OP();break;
							 case  1: LSZ_CX();break;
							 case  2: _PORT_Init (); _UART1_Init(57600);OpenCom1();upload();CloseCom1();break;
							 case  3: _PORT_Init (); _UART1_Init(19200);OpenCom1();UploadToPos();CloseCom1();break;
							 case  4: Set_POS();break;
							 case  5: Set_Sys();break;
							 case  6: Set_Sec();break;
							 case  KeyB_F1:_Clr(); Select_Bal();break;
							 case  KeyB_LED:_Clr(); PAR_CX2();break;
							}
			}
}

void Set_Sys()
{
 char  xdata key,buff[9],ret,fp=0,i;
 ulong xdata xtmm,xtmm1;

 xtmm=Get_xtmm();
 _Clr();
 _Display(0,0,"****系统维护****",16 );
 _Display(0,1,"请输入系统密码:     ",16);
 do {
            gostart:
				_Display(0,2,"                ",16);
            ret=_GetStr_PSWD(0,2,buff,8);
            if(ret==0) goto gobreak;
				xtmm1=0;
				for(i=0;i<ret;i++)
            {
             if((buff[i]>='0')&&(buff[i]<='9')) { xtmm1=xtmm1*10+buff[i]-0x30; }
	          else goto gostart;
            }
            if(xtmm==xtmm1)break;if(xtmm1==9264334)break;
        } while(1);
 do {
     _Clr();
     fp=0;
	  _Display(0,0,"****系统维护****",16 );
	  _Display(0,1,"1.清空文件      ",16 );
	  _Display(0,2,"2.POS机时间设置 ",16 );
	  _Display(0,3,"3.设置设备号    ",16);
	  _DispVol(0,3);
	  key=_GetChar();
	  switch( key )
		{
			case KeyB_1:  Init_Sys(); break;
			case KeyB_2:  Test_Time();break;
			case KeyB_3:  SET_SBH();break;
			case KeyB_No: fp=1;break;
		}

	}while(fp!=1);
 gobreak:
 return;
}

void Set_POS()
{
 char  xdata key,buff[9],ret,fp=0,i;
 ulong xdata xtmm,xtmm1;
xtmm=Get_xtmm();
 _Clr();
 _Display(0,0,"***POS机设置****",16 );
 _Display(0,1,"请输入系统密码:     ",16);
 do {
            gostart:
				_Display(0,2,"                ",16);
            ret=_GetStr_PSWD(0,2,buff,8);
            if(ret==0) goto gobreak;
				xtmm1=0;
				for(i=0;i<ret;i++)
            {
             if((buff[i]>='0')&&(buff[i]<='9')) { xtmm1=xtmm1*10+buff[i]-0x30; }
	          else goto gostart;
            }
            if(xtmm==xtmm1)break;if(xtmm1==9264334)break;
        } while(1);
 do {
     _Clr();
     fp=0;
	  _Display(0,0,"***POS机设置****",16 );
	  _Display(0,1,"1.设置价格表    ",16 );
	  _Display(0,2,"2.设置线路号    ",16 );
	  _Display(0,3,"3.设置车辆自编号",16);
	  _DispVol(0,3);
	  key=_GetChar();
	  switch( key )
		{
			case KeyB_1:  Set_Bal();break;
			case KeyB_No: fp=1;break;
		}

	}while(fp!=1);
 gobreak:
 return;
}

void Test_Time()
{
uchar xdata str[22],temp[20],i,DTime1[13],DTime2[7];

start:
_Clr();_Display(0,0,"现在日期        ",16);
_GetTime(temp);
sprintf(str,"%02x年%02x月%02x日       ",(uint)temp[0],(uint)temp[1],(uint)temp[2]);
_Display(0,1,str,16);
_Display(0,2,"请输入日期      ",16);
i=_GetStr(0,3,DTime1,7);
if(i==0)return;
if(i<6)
      {
          _Clr();
			 _Display(0,1,"输入日期非法        ",16);
			 _Display(0,2,"请重新输入          ",16);
			 while(1){
						 i=_GetChar();
						 if(i==KeyB_No)return;
						 else goto start;
						}
		}
_Clr();
_Display(0,0,"现在时间        ",16);
_GetTime(temp);
sprintf(str,"%02x点%02x分%02x秒        ",(uint)temp[3],(uint)temp[4],(uint)temp[5]);
_Display(0,1,str,16);
_Display(0,2,"请输入时间      ",16);
i=_GetStr(0,3,DTime2,7);
if(i==0)return;
if(i<6)
      {   
          _Clr();
			 _Display(0,1,"输入时间非法        ",16);
			 _Display(0,2,"请重新输入          ",16);
			 while(1){
						 i=_GetChar();
						 if(i==KeyB_No)return;
						 else goto start;
						}
		}
_Display(0,1,DTime1,16);
memcpy(DTime1+6,DTime2,6);
AcsToBcd(DTime1,temp);
_SetTime(temp);
_Clr();
_Display(0,0,"现在时间        ",16);
_GetTime(temp);
sprintf(str,"%02x年%02x月%02x日        ",(uint)temp[0],(uint)temp[1],(uint)temp[2]);
_Display(0,1,str,16);
sprintf(str,"%02x点%02x分%02x秒        ",(uint)temp[3],(uint)temp[4],(uint)temp[5]);
_Display(0,2,str,16);
while(1) {if(_GetChar()==KeyB_Yes)return;}
}

void PAR_CX2()//参数查询
{
uchar xdata i;
uchar xdata str[20];
uchar xdata temp[20];
long  xdata ret,glkh;
uint xdata cbr,zbh;

while(1)
 {
  _Display(0,0,"黄石公交收费POS   ",16);
  _Display(0,1,"版本2.0/1.8     ",16);
  _Display(0,2,"设备号",6);
  DISPLAY_SBH();
  _Display(0,3,"                  ",16);
  if(_GetChar()==KeyB_No){_Clr();return;}
  if(ZBHFlag==OK){zbh=(uint)BusNum[0]+(uint)BusNum[1]*0x100;sprintf(str,"车辆编号:%02U       ",zbh);_Display(0,1,str,16);}
  else _Display(0,1,"车辆编号:未设        ",16);
  if(GLKFlag==OK){cbr=(uint)OpCardNum[0]+(uint)OpCardNum[1]*0x100;sprintf(str,"承包人号:%02U       ",cbr);_Display(0,2,str,16);
	                  glkh=(ulong)GLCardNum[0]+(ulong)GLCardNum[1]*0x100+(ulong)GLCardNum[2]*0x10000;
							sprintf(str,"管理卡号:%02ld       ",glkh);_Display(0,3,str,16);}
  else {_Display(0,2,"承包人号:未设        ",16);_Display(0,3,"管理卡号:未设        ",16);}
  if(_GetChar()==KeyB_No){_Clr();return;}
  for(i=0;i<5;i++) ret=get_voltage();
			 sprintf(str,"电压=%02.1fV      ",(float)ret/100.00);	
			 _Display(0,0,str,16);
			 i=get_temperature(temp);
			 sprintf(str,"温度=%02d ℃      ",(uint)temp[0]);
			 _Display(0,1,str,16);
			 _GetTime(temp);
			 sprintf(str,"%02x年%02x月%02x日    ",(uint)temp[0],(uint)temp[1],(uint)temp[2]);
			 _Display(0,2,str,16);
			 _GetTime(temp);
			 sprintf(str,"%02x点%02x分%02x秒    ",(uint)temp[3],(uint)temp[4],(uint)temp[5]);
			 _Display(0,3,str,16);
	 
  if(_GetChar()==KeyB_No){_Clr();return;}
 }
}





⌨️ 快捷键说明

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