📄 menuprocess.c
字号:
gbMenuInMain = INVALID_DATA;
menuPopUp(&menu5_main[1]);//音量调节
return NOCHANGE_MENU;
break;
case KEY_CODE_MENU:
gbMenuInMain = INVALID_DATA;
return NEXT_MENU;
break;
case KEY_CODE_ENTER:
key_process_station(KEY_TWOTIME);
return NOCHANGE_MENU;
break;
case KEY_CODE_ESC:
stop_board();
return NOCHANGE_MENU;
break;
case KEY_CODE_NO:
return NOKEY_MENU;
break;
/* case KEY_LIGHT_CON:
set_lightstatus();
return NOKEY_MENU;
break;*/
default:
return NOCHANGE_MENU;
break;
}
}
char driving_menu(char FlashLcd)
{
gbMenuInMain = VALID_DATA;
if( FlashLcd == FLASH_SCREEN)
lcd_clear_srceen();
if( get_buslineNum() != 0 )
{
display_stationAttr(FlashLcd);
display_stationNumNam(FlashLcd);
display_drivDirection(FlashLcd);
display_lineMode(FlashLcd);
display_line(FlashLcd);
display_msgIcon(FlashLcd);
display_runmode(FlashLcd);
display_alarmIcon(FlashLcd);
}
display_time(FlashLcd);
display_icon(FlashLcd);
return driveKeyProcess();
}
char mainMenuProcess(char FlashLcd)
{
char key;
if (FlashLcd == FLASH_SCREEN)
comm_menu(runSet[YY_YYSZ],dispatchMsg[DD_DDXX],callFunc[TH_THGN], sysMsg[ XT_XTXX]);
/*add for debug
if (FlashLcd == FLASH_SCREEN)
{
char tmpbuf[20];
unsigned char readbuf[7];
lcd_clear_srceen();
nvram_read(NVRAM_AUTO_SEND, readbuf);
sprintf(tmpbuf, "%02bX:%02bX:%02bX:%02bX", readbuf[0], readbuf[1], readbuf[2], readbuf[3]);
display_attribute( 0,0,0 );
display_string(tmpbuf);
sprintf(tmpbuf, "%02bX:%02bX:%02bX", readbuf[4], readbuf[5], readbuf[6]);
display_attribute( 0,1,0 );
display_string(tmpbuf);
}
//end of debug */
key = get_key();
switch (key)
{
case KEY_CODE_ESC:
case KEY_CODE_ENTER:
return PREVIEW_MENU;
break;
case KEY_CODE_NUM1:/*运营设置*/
return NEXT_MENU1;
break;
case KEY_CODE_NUM2://收发短信
return NEXT_MENU2;
break;
case KEY_CODE_NUM3://通话功能
return NEXT_MENU3;
break;
case KEY_CODE_NUM4:/*系统信息*/
return NEXT_MENU4;
break;
case KEY_CODE_NO:
return NOKEY_MENU;
break;
case KEY_CODE_START:
set_lightstatus();
return NOKEY_MENU;
break;
case KEY_CODE_FUNC:
set_force_board();
return NOCHANGE_MENU;
break;
default:
return NOCHANGE_MENU;
break;
}
}
char menu4Process(char FlashLcd)
{
char key;
if (FlashLcd == FLASH_SCREEN)
comm_menu(sysMsg[1],sysMsg[6],sysMsg[9],sysMsg[19]);
key = get_key();
switch (key)
{
case KEY_CODE_NUM1:/*网络设置*/
return NEXT_MENU1;
break;
case KEY_CODE_NUM2:/*车辆ID号*/
return NEXT_MENU2;
break;
case KEY_CODE_NUM3:/*系统查询*/
return NEXT_MENU3;
break;
case KEY_CODE_NUM4:/*语音/程序更新*/
return NEXT_MENU4;
break;
case KEY_CODE_ESC:
case KEY_CODE_ENTER:
return PREVIEW_MENU;
break;
case KEY_CODE_NO:
return NOKEY_MENU;
break;
default:
return NOCHANGE_MENU;
break;
}
}
char menu43Process(char FlashLcd)
{
char key;
if (FlashLcd == FLASH_SCREEN)
{
lcd_clear_srceen();
display_attribute( 0,0,0 );
display_string(sysMsg[XT_CX]);
display_attribute( 0,1,0 );
display_string(sysMsg[XT_GPS]);//"1-定位查询信息");//sysMsg[3]);
display_attribute( 0,2,0 );
display_string(sysMsg[XT_BBHCX]);
/* display_attribute( 0,3,0 );
display_string(sysMsg[XT_SBHCX]);*///陈剑修改,在新版本中,终端不提供这项功能
}
key = get_key();
switch (key)
{
case KEY_CODE_NUM1:/*GPS数据查询*/
return NEXT_MENU1;
break;
case KEY_CODE_NUM2:/*版本号查询*/
return NEXT_MENU2;
break;
case KEY_CODE_NUM3:/*设备号查询*///陈剑修改,在新版本中,终端不提供这项功能
// return NOCHANGE_MENU;
return NEXT_MENU3;
break;
/**for debug**/
case KEY_CODE_NUM4:/*设备号查询*///陈剑修改,在新版本中,终端不提供这项功能
// return NOCHANGE_MENU;
return NEXT_MENU4;
break;
/**end of debug**/
case KEY_CODE_ESC:
case KEY_CODE_ENTER:
return PREVIEW_MENU;
break;
case KEY_CODE_NO:
return NOKEY_MENU;
break;
default:
return NOCHANGE_MENU;
break;
}
}
/*解析GPS的经、纬度数据,数组元素分别为度,分。再转化为ASCII码*/
void gpsData_to_array(Int32 gps,Byte gps_str[])
{
unsigned char deg_str[5],min,sec_str[4],i,j;
unsigned int degree,sec;
degree = gps / 10000;
min = degree % 60;/*分的整数部分*/
sec = gps % 10000; /*分的小数部分*/
degree = degree / 60;/*度*/
deg_str[0] = degree / 100 + '0';
deg_str[1] = (degree % 100) / 10 + '0';
deg_str[2] = (degree % 100) % 10 + '0';
if (deg_str[0] == '0')
deg_str[0] = ' ';
deg_str[3] = min / 10 + '0';
deg_str[4] = min % 10 + '0';
sec_str[0] = sec / 1000 + '0';
sec_str[1] = (sec % 1000) / 100 + '0';
sec_str[2] = ((sec % 1000) % 100) / 10 + '0';
sec_str[3] = ((sec % 1000) % 100) % 10 + '0';
for (i = 0;i < 5;i ++)
{
gps_str[i] = deg_str[i];
}
gps_str[5] = '.';
j = 0;
for(i = 6;i < 10;i ++)
{
gps_str[i] = sec_str[j];
j ++;
}
gps_str[10] = ' ';
gps_str[11] = 0;
}
/*将速度,方向转换成ASCII码*/
void velDir_to_array(unsigned int value,unsigned char num[],unsigned char flag)
{
unsigned char i;
if (flag == VELOCITY)
value = value / 100;
else
value = value / 10;
num[0] = value / 100;
num[1] = (value % 100) / 10;
num[2] = (value % 100) % 10;
for (i = 0;i < 3;i ++)
num[i] = num[i] + '0';
num[3] = 0;
}
/*仅显示GPS查询项目*/
void display_gpsItem()
{
display_attribute( 0,0,0 );
display_string(sysMsg[XT_DJ]);
display_attribute( 0,1,0 );
display_string(sysMsg[XT_BW]);
display_attribute( 0,2,0 );
display_string(sysMsg[XT_FX]);
display_attribute( 10,2,0 );
display_string(sysMsg[XT_ZT]);
display_attribute( 0,3,0 );
display_string(sysMsg[XT_SD]);
display_attribute( 8,3,0 );
display_string("km/h");
}
/*显示GPS查询数据*/
void display_gpsData(GPS_DATA *gps)
{
long vel;
unsigned char jingdu_str[12],weidu_str[12],spd_num[4],dir_num[4],star_num[3];
vel = (gps->speed*18)/10;
gpsData_to_array(gps->longitude,jingdu_str);
gpsData_to_array(gps->latitude,weidu_str);
velDir_to_array(vel,spd_num,VELOCITY);
velDir_to_array(gps->direction,dir_num,DIRECTION);
//显示经度
display_attribute( 5,0,0 );
display_string(jingdu_str);
//显示纬度
display_attribute( 5,1,0 );
display_string(weidu_str);
//显示方向
display_attribute( 5,2,0 );
display_string(dir_num);
//显示状态
if (gps->valid == 0)
{
display_attribute( 15,2,0 );
display_string("V");
}
else
{
display_attribute( 15,2,0 );
display_string("A");
}
//显示速度
display_attribute( 5,3,0 );
display_string(spd_num);
//显示收星数目
display_attribute( 13,3,0 );
star_num[0] = ((gps->numbers) / 10) + '0';
star_num[1] = ((gps->numbers) % 10) + '0';
if (star_num[0] == '0')
star_num[0] = ' ';
star_num[2] = 0;
display_string(star_num);
}
/*查询GPS数据菜单*/
char search_gpsData(char FlashLcd)
{
char key;
static Byte gps_1s;
GPS_DATA *gps_data;
if (FlashLcd == FLASH_SCREEN)
{
gps_1s = 0;
lcd_clear_srceen();
display_gpsItem();
}
if (0 == gps_1s)
{
//重新获取GPS数据并显示
get_gps_data(&gps_data);
display_gpsData(gps_data);
}
gps_1s++;
if (4 == gps_1s)
gps_1s = 0;
key = get_key();
switch (key)
{
case KEY_CODE_ESC:
case KEY_CODE_ENTER:
gps_1s = 0;
return PREVIEW_MENU;
break;
case KEY_CODE_NO:
return NOKEY_MENU;
break;
default:
return NOCHANGE_MENU;
break;
}
}
//显示版本号
//flag是区分显示主机版本号,终端版本号
void display_versionNum(Uint8 *pBcd,char len)
{
char ascii[8],verNum[14];
bcdArray_to_asciiArray(pBcd,ascii,len);
verNum[0] = ascii[0];
verNum[1] = ascii[1];
verNum[2] = '-';
verNum[3] = ascii[2];
verNum[4] = ascii[3];
verNum[5] = '-';
verNum[6] = ascii[4];
verNum[7] = ascii[5];
verNum[8] = ' ';
verNum[9] = ' ';
verNum[10] = ascii[6];
verNum[11] = '.';
verNum[12] = ascii[7];
verNum[13] = 0;
display_attribute( 0,1,0 );
display_string(verNum);
}
/*版本号查询菜单*/
char search_versionNum(char FlashLcd)
{
char key;
Byte pBuf[4];
if (FlashLcd == FLASH_SCREEN)
{
lcd_clear_srceen();
display_attribute( 0,0,0 );
display_string(sysMsg[25]);
get_device_info(pBuf);
display_versionNum(pBuf,4);
}
key = get_key();
switch (key)
{
case KEY_CODE_ESC:
case KEY_CODE_ENTER:
return PREVIEW_MENU;
break;
case KEY_CODE_NO:
return NOKEY_MENU;
break;
default:
return NOCHANGE_MENU;
break;
}
}
//读取设备号
char get_deviceNum()
{
char key;
key = get_key();
switch (key)
{
case KEY_CODE_ESC:
case KEY_CODE_ENTER:
nMenuIndex = 0;
return PREVIEW_MENU;
break;
case KEY_CODE_NO:
return NOKEY_MENU;
break;
default:
display_attribute( 0,2,0 );
display_string(" ");
nMenuIndex = 1;//触发设置设备号
memset(deviceNum,0,7);//初始化设备号数组
device_time = 0;
return NOCHANGE_MENU;
break;
}
}
//输入设备号
char input_devNum(char disNum)
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -