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

📄 menuprocess.c

📁 通过车载终端采集GPS数据
💻 C
📖 第 1 页 / 共 5 页
字号:
            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 + -