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

📄 manualboard.c

📁 通过车载终端采集GPS数据
💻 C
📖 第 1 页 / 共 2 页
字号:
#include "typedef.h"
#include "global.h"
#include "manualboard.h"
#include "playsound.h"
#include "systemmanager.h"
#include "position.h"
#include "trans_process.h"
#include "nf_file.h"
#include "menu.h"
#include "16c554.h"
#include <string.h>

extern xdata BUS_INFO busInfo;//线路当前信息
extern xdata STATION_TONE stationTone[128];//上下行车站数据
extern char positionMode[128];

//有关报站按键的处理函数原型定义
//返回OK表示当前站以及当前站模式有变化,返回KO表示没有变化
typedef Byte (*FUNCTION_STATIONKEY)(void);

Byte key_arrive_station(void)
{
    if (FIRST_STATION == busInfo.attrStation)
    {
        hand_sound_report(2, busInfo.displayCurStation);
        //进行报站
        play_stationsound(busInfo.displayCurStation, busInfo.attrStation);
        return KO;
    }
    else if (CURRENT_STATION == busInfo.attrStation)
    {
        //进行报站
        play_stationsound(busInfo.displayCurStation, busInfo.attrStation);
        return KO;
    }
    
    //此时界面上是下一站
    if ((busInfo.displayCurStation == busInfo.firstStation[0]) || (busInfo.displayCurStation == busInfo.firstStation[1]))
    {
        //此时为首站,这种情况不可能出现
        busInfo.attrStation = FIRST_STATION;
    }
    else
        busInfo.attrStation = CURRENT_STATION;
    //发送手动消息
    hand_sound_report(busInfo.attrStation, busInfo.displayCurStation);
    play_stationsound(busInfo.displayCurStation, busInfo.attrStation);
    set_stationdata_changed();
    
    return OK;
}

//离站键处理
Byte key_leave_station(void)
{
    if (NEXT_STATION == busInfo.attrStation)
    {
        //界面上已经是下一站了
        play_stationsound(busInfo.displayCurStation, busInfo.attrStation);
        return KO;
    }
    
    //如果是终点站,这里暂时不作任何变化
    if (busInfo.displayCurStation == busInfo.lastStation[0])
    {
        if ((NORMAL_LINE == busInfo.lineAttr) || (SINGAL_LINE == busInfo.lineAttr))
        {
            //上行最后一站,当前状态肯定为CURRENT_STATION
            back_to_firststation(BUS_BACKWARD);
        }
        else
        {
            //直接回首站
            back_to_firststation(BUS_UPWARD);
        }
    }
    else if (busInfo.displayCurStation == busInfo.lastStation[1])
    {
        if ((NORMAL_LINE == busInfo.lineAttr) || (SINGAL_LINE == busInfo.lineAttr))
        {
            //下行最后一站,当前状态肯定为CURRENT_STATION
            back_to_firststation(BUS_UPWARD);
        }
        else
        {
            //直接回首站
            back_to_firststation(BUS_BACKWARD);
        }
    }
    else 
    {
        busInfo.displayCurStation = get_nextstationNum(busInfo.displayCurStation);
        busInfo.attrStation = NEXT_STATION;
        busInfo.stationName = stationTone[busInfo.displayCurStation-1].name;
    }
    //其他状态都不处理
    if (FIRST_STATION != busInfo.attrStation)
    {
        hand_sound_report(busInfo.attrStation, busInfo.displayCurStation);
    }
    play_stationsound(busInfo.displayCurStation, busInfo.attrStation);
    set_stationdata_changed();    
    
    return OK;
}

Byte key_repeat_station(void)
{
    play_stationsound(busInfo.displayCurStation, busInfo.attrStation);
    return KO;
}

//二次报站
Byte key_twotime_board(void)
{
    Byte bChanged;
    bChanged = 0;
    if ((busInfo.displayCurStation==busInfo.firstStation[0]) || (busInfo.displayCurStation==busInfo.firstStation[1]))
    {
        if (FIRST_STATION != busInfo.attrStation)
        {
            busInfo.attrStation = FIRST_STATION;
            bChanged = 1;
        }
    }
    else
    {
        if (CURRENT_STATION != busInfo.attrStation)
        {
            Byte nTmp;
            nTmp = is_thesecondStation(busInfo.displayCurStation, busInfo.attrStation);
            
            if (OK == nTmp)
            {
                //当前站是第二站
                if (BUS_UPWARD == busInfo.direction)
                {
                    busInfo.displayCurStation = busInfo.firstStation[0];
                }
                else
                {   
                    busInfo.displayCurStation = busInfo.firstStation[1];
                }
                busInfo.attrStation = FIRST_STATION;
            }
            else
            {
                //当前站不是第二站,并且当前模式为NEXT
                busInfo.displayCurStation = get_laststationNum(busInfo.displayCurStation);
                busInfo.attrStation = CURRENT_STATION;
            }
            busInfo.stationName = stationTone[busInfo.displayCurStation-1].name;
            bChanged = 1;
        }
    }
    
    play_stationsound(busInfo.displayCurStation, busInfo.attrStation);
    if (1 == bChanged)
    {
        set_stationdata_changed();
        return OK;
    }
    else
        return KO;
}
//上翻一站,节约执行时间,但是代码空间可能要大
Byte key_last_station(void)
{
    xdata Uint8 nTmp;
    //
    if (FIRST_STATION == busInfo.attrStation)
    {
        //当前为FIRST_STATION,当前不处理(看是否需要按键音?)
        return KO;
    }
    
    //判断本站是否是第二站
    nTmp = is_thesecondStation(busInfo.displayCurStation, busInfo.attrStation);

    if (OK == nTmp)
    {
        //当前站是第二站
        if (BUS_UPWARD == busInfo.direction)
        {
            busInfo.displayCurStation = busInfo.firstStation[0];
        }
        else
        {   
            busInfo.displayCurStation = busInfo.firstStation[1];
        }
        busInfo.attrStation = FIRST_STATION;
        busInfo.stationName = stationTone[busInfo.displayCurStation-1].name;
        set_stationdata_changed();
        return OK;
    }

    busInfo.displayCurStation = get_laststationNum(busInfo.displayCurStation);
    busInfo.stationName = stationTone[busInfo.displayCurStation-1].name;
    set_stationdata_changed();
    return OK;
}

//下翻一站,节约执行时间,但是代码空间可能要大
Byte key_next_station(void)
{
    if ((busInfo.displayCurStation==busInfo.lastStation[0]) || (busInfo.displayCurStation==busInfo.lastStation[1]))
    {
        return KO;
    }
    
    busInfo.displayCurStation = get_nextstationNum(busInfo.displayCurStation);
    if (NEXT_STATION == busInfo.attrStation)
        busInfo.attrStation = NEXT_STATION;
    else
        busInfo.attrStation = CURRENT_STATION;
    busInfo.stationName = stationTone[busInfo.displayCurStation-1].name;
    set_stationdata_changed();
    return OK;
}

Byte key_change_direction(void)
{
    if ((busInfo.displayCurStation == busInfo.lastStation[0]) || (busInfo.displayCurStation == busInfo.firstStation[0]))
    {
        if ((NORMAL_LINE == busInfo.lineAttr) || (SINGAL_LINE == busInfo.lineAttr))
        {
            back_to_firststation(BUS_BACKWARD);                      
        }
        else if (CIRCUIT_LINE == busInfo.lineAttr)
        {
            //环线
            if (FIRST_STATION == busInfo.attrStation)
            {
                //为首站,需要换方向
                back_to_firststation(BUS_BACKWARD);
            }
            else
            {
                //为末站,不换方向
                back_to_firststation(busInfo.direction);
            }
        }
        else if (SIGAL_DIRECTION == busInfo.lineAttr)
        {
            //单向
            back_to_firststation(busInfo.direction);
        }
        play_stationsound(busInfo.displayCurStation, busInfo.attrStation);
        set_stationdata_changed();
        return OK;
    }

    if ((busInfo.displayCurStation == busInfo.lastStation[1]) || (busInfo.displayCurStation == busInfo.firstStation[1]))
    {
        if ((NORMAL_LINE == busInfo.lineAttr) || (SINGAL_LINE == busInfo.lineAttr))
        {
            back_to_firststation(BUS_UPWARD);
        }
        else if (CIRCUIT_LINE == busInfo.lineAttr)
        {
            //环线
            if (FIRST_STATION == busInfo.attrStation)
            {
                //为首站,需要换方向
                back_to_firststation(BUS_UPWARD);
                
            }
            else
            {
                //为末站,不换方向
                back_to_firststation(busInfo.direction);

⌨️ 快捷键说明

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