📄 menuprocess.c
字号:
#include "typedef.h"
#include "menu.h"
#include "menuProcess.h"
#include "keyBoard.h"
#include "display.h"
#include "commoninterface.h"
#include "menuinterface.h"
#include "glitter.h"
#include "string.h"
#include "common_function.h"
#include "global.h"
#include "manualboard.h"
#include "playsound.h"
#include "trans_process.h"
#include "menubuffer.h"
#include "message.h"
#include "autoboard.h"
#include <string.h>
#include "nvram.h"
SET_WORKSTATUS* gpMsgStatus = NULL;//全局变量,供所有显示文本信息来使用
unsigned char xdata nMenuIndex=0;//判断是否第一次进入菜单
unsigned char xdata ip_time = 0;//输入IP时记录输入有效值的次数
Byte xdata serverPara[6];//IP地址和端口号数组
unsigned char xdata drivNum_order = 0;//司机工号输入的有效次数
unsigned char xdata driverID[4];//司机工号输入的数组
unsigned char xdata phoneValue = 0;//记录所选电话号码的序号
unsigned char xdata busIdNum[5];//车辆ID输入的数组
unsigned char xdata busId_time = 0;//记录车辆ID输入的次数
char xdata SmsSequence = 0;//记录当前查看的消息条数
char xdata CurrentScreen = 0;//记录当前短信显示的屏数
Uchar xdata findNextSMS = 0;//标志是否查询下条短信(0:查看本条短信,1:查看下条短信)
char xdata device_time = 0;//设备号输入次数
char xdata deviceNum[7];//设备号数组
char xdata totalPhoneNum = 0;//电话的个数
Byte menuMsgBuffer[255];//界面读取短消息的全局变量
Byte gCallStatus = MENU_NOTINCALLSTATE;//电话的状态//陈剑添加,07年3月15日,将原来pickUp_phone中的mark修改而来
//PhoneBookArray是连续存放8组电话本的数组,其中姓名长度为11,号码长度为15
/*开机显示界面*/
unsigned char code *code startupMsg[]= {
" ", /*KJ_NULL=0*/
" CP VDS02- II型 ", /*KJ_deviceType=1*/
"公交车载终端 ", /*KJ_deviceNam=2*/
};
/*运行显示界面*/
char code *code drivingMsg[]= {
" ", /*YX_gpsIcon=0*/
" ", /*YX_gprsIcon=1*/
" ", /*YX_msgIcon=2*/
"手动", /*YX_manual=3*/
"自动", /*YX_auto=4*/
" ", /*YX_alarmIcon =5*/
"首站:", /*YX_SZ =6*/
"下站:", /*YX_XZ =7*/
"本站:", /*YX_BZ =8*/
" ", /*YX_line=9*/
"-", /*YX_mode=10*/
"营运 ", /*YX_YY=11*/
"非营运", /*YX_FYY=12*/
};
/*运营设置菜单界面*/
char code *code runSet[]= {
" ", /*YY_NULL=0*/
"1-运营设置 ", /*YY_YYSZ=1*/
"1-出勤考核 ", /*YY_CQKH=2*/
"工号:", /*YY_GH=3*/
"1-修改", /*YY_XG=4*/
"2-上班确认", /*YY_SBQR=5*/
"3-下班确认", /*YY_XBQR=6*/
"2-线路选择 ", /*YY_XLXZ=7*/
"1-线路1", /*YY_XL1=8*/
"2-线路2", /*YY_XL2=9*/
"3-线路3", /*YY_XL3=10*/
"4-线路4", /*YY_XL4=11*/
"5-线路5", /*YY_XL5=12*/
"6-线路6", /*YY_XL6=13*/
"请选择发车方向:", /*YY_QXZFCFX=14*/
"1-上行", /*YY_SX=15*/
"2-下行", /*YY_XX=16*/
"3-行车模式 ", /*YY_XCMS=17*/
"1-模式1", /*YY_mode1=18*/
"2-模式2", /*YY_mode2=19*/
"3-模式3", /*YY_mode3=20*/
"4-模式4", /*YY_mode4=21*/
"5-模式5", /*YY_mode5=22*/
"6-模式6", /*YY_mode6=23*/
"4-报站自学习 ", /*YY_BZZXX=24*/
"请输入工号:", /*YY_QSRGH=25*/
"当前为:", /*YY_DQW=26*/
" ",
"是否进行另一方向", /*YY_SFJXLYFX=28*/
"自学习", /*YY_ZXX=29*/
"(是/否)", /*YY_YESNO=30*/
"报站自学习已完成", /*YY_BZZXXYWC=31*/
"与中心通信失败!", /*YY_SZSB=32*/
/*add by cj*/
"是否确认上班", /*YY_QRSB=33*/
"是否确认下班", /*YY_QRXB=34*/
"是", /*YY_QR=35*/
"中心确认中,", /*YY_QRZ=36*/
"登录成功,", /*YY_DLCG=37*/
"您可以正常上班", /*YY_KYSB=38*/
"您可以正常下班", /*YY_KYXB=39*/
"对不起,", /*YY_DBQ=40*/
"您不能上班", /*YY_BNSB=41*/
"您不能下班", /*YY_BNXB=42*/
/*end of add*/
};
/*调度信息菜单界面*/
char code *code dispatchMsg[]= {
"2-收发短信", /*DD_DDXX=0*/
"4-固定短语", /*DD_GDDY=1*/
"1-路堵", /*DD_LD=2*/
"2-事故", /*DD_RD=3*/
"3-车故障", /*DD_GZ=4*/
"4-POS机故障", /*DD_SG=5*/
"5-报警", /*DD_BJ=6*/
"6-满座", /*DD_JF=7*/
"7-通话", /*DD_MZ=8*/
"1-调度指令", /*DD_DDZL=9*/
"发送退出营",
"发送进入营",
"运请求,请等候",
"已查看完所有消息", /*DD_CKJS=13*/
"无消息记录", /*DD_WXXJL=14*/
"2-告警信息", /*DD_GJXX=15*/
" ",
" ",
" ",
"网络繁忙,", /*DD_WLFM=19*/
"请稍后再试!", /*DD_QSHZS=20*/
"3-营运计划", /*DD_YYJH=21*/
"发送成功", /*DD_FSCG=22*/
};
/*通话功能菜单界面*/
char code *code callFunc[]={
"3-通话功能", /*TH_THGN=0*/
"1-通信录", /*TH_TXL=1*/
" ",
" ",
" ",
" ",
"2-拨打电话", /*TH_BDDH=6*/
"请输入号码:", /*TH_QSUHM=7*/
"已挂断", /*TH_YGD=8*/
"通话中...", /*TH_HJ=9*/
"有来电", /*TH_ZZLJ=10*/
"呼出...", /*TH_WFJT=11*/
"3-呼入电话", /*TH_HRDH=12*/
"未接电话", /*TH_WJDH=13*/
" ", /*TH_ZZHJ=14*/
" ",
" ",
"无通话记录", /*TH_WTHJL=17*/
"4-呼出电话", /*TH_HCDH=18*/
"对方正忙", /*TH_DFZM=19*/
" ",
" ",
" ",
};
/*系统信息菜单界面*/
char code *code sysMsg[]={
"4-系统信息", /*XT_XTXX=0*/
"1-网络设置", /*XT_WLSZ=1*/
"1-服务器设置", /*XT_FWQSZ=2*/
"2-APN设置 ", /*XT_APNSZ=3*/
"服务器IP地址:", /*XT_IP=4*/
"端口号: ", /*XT_DKH=5*/
"2-车辆ID号", /*XT_ID=6*/
"车辆ID号:", /*XT_SRCLID=7*/
"00", /*XT_CB=8*/
"3-系统查询", /*XT_XTCX=9*/
"系统查询:", /*XT_CX=10*/
"1-GPS 信息查询", /*XT_GPS=11*/
"东经:", /*XT_DJ=12*/
"北纬:", /*XT_BW=13*/
"方向:", /*XT_FX=14*/
"状态:", /*XT_ZT=15*/
"速度:", /*XT_SD=16*/
"2-版本号查询", /*XT_BBHCX=17*/
"输入错误,请重试", /*XT_QCS=18*/
"4-语音/程序更新", /*XT_YYGX=19*/
"语音正在更新", /*XT_YYZZGX=20*/
"请等候...", /*XT_QDD=21*/
"语音更新成功", /*XT_YYGXCG=22*/
"通信失败!", /*XT_TXSB=23*/
"更新失败", /*XT_GXSB=24*/
"主机版本号:", /*XT_ZJBBH=25*/
"公交终端版本号:", /*XT_GJZDBBH=26*/
"3-设备号查询", /*XT_SBHCX=27*/
"设备号:", /*XT_SBH=28*/
" ", /*XT_CKGXYY=29*/
"1-USB更新语音", /*XT_USBGXYY=30*/
"2-终端程序更新", /*XT_ZDCXGX=31*/
"4-主机程序更新", /*XT_ZJCXGX=32*/
"程序正在更新", /*XT_CXZZGX=33*/
"程序更新成功", /*XT_CXGXCG=34*/
"USB驱动正确装载,", /*XT_USBZZZ=35*/
"请重启后重新下载", /*XT_QCQ=36*/
"上传成功", /*XT_SCCG=37*/
"USB被正确设置,", /*XT_USBSET=38*/
"请重新开机后下载", /*XT_QCXKJXZ=39*/
"下载成功", /*XT_XZCG=40*/
};
/*音量调节弹出界面*/
char code *code voiceClassAjust[]={
"音量等级:", /*YLTJ_YLDJ=0*/
" ",
};
Byte gbMenuInMain;//是否在运行界面上
Byte gnMainMenuTimeout;
char startup_menu(char FlashLcd) /*开机画面*/
{
gbMenuInMain = INVALID_DATA;
gnMainMenuTimeout = 0;
if (FlashLcd == FLASH_SCREEN)
{
lcd_init();
display_attribute( 0,1,0 );
display_string( startupMsg[KJ_deviceType] );
display_attribute( 2,2,0 );
display_string( startupMsg[KJ_deviceNam] );
}
return OK;
}
/********公用的显示消息的函数*******
*pBuffer:显示内容缓存
*bufLen:显示内容长度
*nLcd:显示第几屏
***********************************/
Byte display_Msg_byLCD(Byte* pBuffer, Byte bufLen, Byte nLcd)
{
Byte tmpBuf[65];
Byte firstByte, lastByte;
if ((NULL != pBuffer) && (nLcd > 0))
{
memset(tmpBuf, 0, 65);
if (bufLen > 0)
{
firstByte = 64*(nLcd-1);
if (nLcd == 4)
lastByte = 0xff;
else
lastByte = 64*nLcd;
if (firstByte >= bufLen)
return (nLcd-1);
else
{
if (lastByte > bufLen)
lastByte = bufLen;
memcpy(tmpBuf, pBuffer+firstByte, lastByte-firstByte);
lcd_clear_srceen();
display_attribute( 0,0,0 );
display_string(tmpBuf);
return (nLcd);
}
}
else
return 0;
}
else
return 0;
}
/*通用菜单显示函数*/
void comm_menu( char *str1, char *str2, char *str3, char *str4 )
{
lcd_clear_srceen();
if (NULL != str1)
{
display_attribute( 0,0,0 );
display_string( str1 );
}
if (NULL != str2)
{
display_attribute( 0,1,0 );
display_string( str2 );
}
if (NULL != str3)
{
display_attribute( 0,2,0 );
display_string( str3 );
}
if (NULL != str4)
{
display_attribute( 0,3,0 );
display_string( str4 );
}
}
/*******************************以下函数为主界面需要调用的函数********/
/*显示本站,下站,首站。flash判断是否刷新标志,以下相同。该内容从*get_busInfo()中获取。*/
unsigned char menuMainStaAttr = 0;
unsigned char gMenuSpeed, gMenuSpeed2= 0;
void display_stationAttr(char flash)
{
Byte attr, tmpvalue;
char tmpbuf[4];
/* tmpvalue = get_menu_speed();
if ((flash == FLASH_SCREEN) || (gMenuSpeed != tmpvalue))
{
memset(tmpbuf, 0, 4);
gMenuSpeed = tmpvalue;
tmpbuf[0] = gMenuSpeed/10+'0';
tmpbuf[1] = gMenuSpeed%10+'0';
tmpbuf[2] = ':';
display_attribute( 11,1,0 );
display_string(tmpbuf);
}*/
tmpvalue = get_menucurspeed();
if ((flash == FLASH_SCREEN) || (gMenuSpeed2 != tmpvalue))
{
memset(tmpbuf, 0, 4);
gMenuSpeed2= tmpvalue;
tmpbuf[0] = gMenuSpeed2/10+'0';
tmpbuf[1] = gMenuSpeed2%10+'0';
// sprintf(tmpbuf, "%2bd", get_menucurspeed());
display_attribute( 14,1,0 );
display_string(tmpbuf);
}
get_station_attr(&attr);
if ((flash == FLASH_SCREEN) || (attr != menuMainStaAttr))
{
menuMainStaAttr = attr;
switch (menuMainStaAttr)
{
case FIRST_STATION:
display_attribute( 2,1,0 );
display_string(drivingMsg[YX_SZ]);
break;
case CURRENT_STATION:
display_attribute( 2,1,0 );
display_string(drivingMsg[YX_BZ]);
break;
case NEXT_STATION:
display_attribute( 2,1,0 );
display_string(drivingMsg[YX_XZ]);
break;
default:
break;
}
}
}
/*显示站点序号和站名,该内容从*get_busInfo()中获取*/
unsigned char menuMainStaNum = 0;//主界面站点序号
void display_stationNumNam(char flash)
{
Byte num;
Byte *nam;
unsigned char numStr[5],row,len,i,str_row,str[17];
get_cur_displayStation(&num);
if ((flash == FLASH_SCREEN)||(num != menuMainStaNum))
{
menuMainStaNum = num;/*显示站点序号*/
nam = get_station_name();
if (num > 64) /*判断上下行*/
num = num - 64;
display_attribute( 7,1,0 );
numStr[0] = '(';
//转换成ASCII码
numStr[1] = num / 10 + '0'; /*十位数*/
numStr[2] = num % 10 + '0'; /*个位数*/
numStr[3] = ')';
numStr[4] = 0;
display_string( numStr );
/*显示站名*/
display_attribute( 0,2,0 );
display_string(startupMsg[KJ_NULL]);/*清除该行上次显示的站名*/
len = strlen(nam);
if (len > 16)
{
for (i = 0;i < 16;i ++) /*超过8个汉字则保留前8个汉字。*/
{
str[i] = *nam;
nam ++;
}
str[16] = '\0';
display_attribute( 0,2,0 );
display_string(str);
}
else /*将站名显示在偶数列*/
{
row = (16 - len)/2;
str_row = odd_to_even(row);
display_attribute( str_row,2,0 );
display_string(nam);
}
}
}
/*显示线路模式,从get_busInfo()中获取*/
unsigned char menuMainLineMode = 0;
void display_lineMode(char flash)
{
Byte mode;
unsigned char modeStr[2];
get_cur_mode(&mode);
if ((menuMainLineMode != mode) || (flash == FLASH_SCREEN))
{
menuMainLineMode = mode;
display_attribute( 6,3,0 );
display_string(drivingMsg[YX_mode]);
modeStr[0] = menuMainLineMode + '0';
modeStr[1] = 0;
display_attribute( 7,3,0 );
display_string(modeStr);
}
}
/*显示线路,从get_busInfo()中获取*/
unsigned char data menuMainLineNum = 0;
void display_line(char flash)
{
Byte lnNm;
unsigned char name[7];
get_line_num(&lnNm);
if((menuMainLineNum != lnNm) || (flash == FLASH_SCREEN))
{
menuMainLineNum = lnNm;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -