📄 main.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 + -