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

📄 manualboard.c

📁 通过车载终端采集GPS数据
💻 C
📖 第 1 页 / 共 2 页
字号:
            }
        }
        else if (SIGAL_DIRECTION == busInfo.lineAttr)
        {
            //单向
            back_to_firststation(busInfo.direction);
        }
        play_stationsound(busInfo.displayCurStation, busInfo.attrStation);
        set_stationdata_changed();
        return OK;
    }
    //其他情况都不处理,播放上下坡信息
	play_notitionsound(6);//6);
	
    return KO;
}

code FUNCTION_STATIONKEY funcStation[7] = 
                      {key_arrive_station,\
                       key_leave_station, \
                       key_repeat_station,\
                       key_last_station, \
                       key_next_station, \
                       key_change_direction,\
                        key_twotime_board};

//到站键处理


/***********与报站相关的按键处理***********/
/*type:按键类型,见pubstruct.h
/*返回OK表示当前站以及当前站模式有变化,返回KO表示没有变化
/********************************/
Byte key_process_station(KEY_TYPE type)
{
    return funcStation[type]();
}


/*手动报站与中心的交互*/
/*action:0 进站、1 出站、2 发车*/
//07-08-15修改,手动报站不修改自动报站的参数
void hand_sound_report(unsigned char action, unsigned char station)
{
    unsigned char tmp;
    //同步界面与通信中的curStation
    if (action == NEXT_STATION)
        busInfo.tranCurStation = get_laststationNum(busInfo.displayCurStation);

    tmp = station & 0x3F;

    if( action == CURRENT_STATION)//0 )
    {/*进站*/
    //    position_sound_record(tmp);//?是否需要///07-08-15
        make_runmode_message(action, station);
    }
    else if( action == NEXT_STATION)//1)
    {/*出站*/
        tmp = position_last_station(tmp);

    //    position_sound_record(tmp|0x40);//07-08-15
        make_runmode_message(action, tmp );
    }
    else if( action == FIRST_STATION)//2)
    {/*发车*/
        if( station < 64 )
            tmp = 0;
        else 
            tmp = 1;

        set_cur_direction(tmp);
   //     position_sound_record(1);//07-08-15

    }

}


/*判断当前站是否为第二站
返回值:OK 是第二站,KO 不是第二站*/
/*curNum:站点序号,值从1开始,dir:方向*/
Byte is_thesecondStation(Byte curNum, Byte dir)
{
    Byte nTmp, i;
//判断本站是否是第二站
    nTmp = OK;
    if (BUS_UPWARD == dir)
    {
        for (i = (busInfo.firstStation[0]); i < (curNum-1); i++)
        {
            if (1 == positionMode[i])
            {
                nTmp = KO;//当前站不是第二站
                break;
            }
        }
    }
    else
    {
        for (i = (busInfo.firstStation[1]); i < (curNum-1); i++)
        {
            if (1 == positionMode[i])
            {
                nTmp = KO;//当前站不是第二站
                break;
            }
        }
    }
    return nTmp;
}

/*主要给自动报站模块来使用*/
void set_cur_direction(unsigned char value)
{
    //同步界面与通信中的curStation
    busInfo.tranCurStation = busInfo.displayCurStation;
    
    busInfo.totalPassenger = 0;
    busInfo.stationState = 0;
    set_position_state(busInfo.direction, 0);
}

void back_to_firststation(Byte direction)
{
    if (BUS_BACKWARD == direction)
    {
        busInfo.direction = BUS_BACKWARD;
        busInfo.displayCurStation = busInfo.firstStation[1];
        busInfo.stationName = stationTone[busInfo.displayCurStation-1].name;
    }
    else
    {
        busInfo.direction = BUS_UPWARD;
        busInfo.displayCurStation = busInfo.firstStation[0];
        busInfo.stationName = stationTone[busInfo.displayCurStation-1].name;
    }
    busInfo.attrStation = FIRST_STATION;
    set_cur_direction(busInfo.direction);
}


#define DIRECTION_CHANGED 1
#define DIRECTION_NOCHANGE 0
#define NORMAL_CHANGE_TIMEOUT 60//1min
#define QUICK_CHANGE_TIMEOUT 30//30sec
#define CIRCUIT_CHANGE_TIMEOUT 60
bit directionFlag=0;
Byte dirChangeTimout;

void start_change_timeout()
{
    directionFlag = 1;
    if (SINGAL_LINE == busInfo.lineAttr)
        dirChangeTimout = QUICK_CHANGE_TIMEOUT;
    else if (CIRCUIT_LINE == busInfo.lineAttr)
        dirChangeTimout = CIRCUIT_CHANGE_TIMEOUT;
    else 
        dirChangeTimout = NORMAL_CHANGE_TIMEOUT;
}


//由主函数调用。每1s调用一次
void direction_change_timeout()
{
    if (directionFlag == 1)
    {
        if (CURRENT_STATION == busInfo.attrStation)
        {
            dirChangeTimout--;
            if (0 == dirChangeTimout)
            {
                //换方向
                directionFlag = 0;
                
                if ((NORMAL_LINE == busInfo.lineAttr) || (SINGAL_LINE == busInfo.lineAttr))
                {
                    //常规线路以及单终点线路需要换方向
                    inform_station(133, 0);
                }
                else
                {
                    ////如果为环线以及单方向车则不换方向,直接回首站
                    back_to_firststation(busInfo.direction);
                }
                set_stationdata_changed();
            }
        }
        else
            directionFlag = 0;
    }
}

/************处理到站信息************/
/*curStation:1-64:上行车站号
              65-128:下行车站号
              129:上坡  130:下坡  131:拐弯,133:最后一站换方向
/*attrStation:0:本站
              1:下一站
/********************************/
void inform_station(Uint8 curStation/*站点序号*/, Byte attrStation)
{
    if (133 == curStation)
    {
        if (BUS_BACKWARD == busInfo.direction)
        {
            back_to_firststation(BUS_UPWARD);
        }
        else
        {
            back_to_firststation(BUS_BACKWARD);
        }
        set_stationdata_changed();
        return;
    }
    if (130 == curStation)
    {
        //播放下坡,第6段服务短语
        if (OK == is_playconner())
            play_notitionsound(10);//6);
        
        return;
    }
    if (131 == curStation)
    {
        //播放拐弯,第4段服务短语
        if (OK == is_playconner())
            play_notitionsound(9);//5);
        else
            add_play_queue(9);
        return;
    }
    if (curStation >= 65)
    {
        if ((curStation > busInfo.lastStation[1]) || (curStation < busInfo.firstStation[1]))
        {
            //是不是应该发送一下线路状态改变报文?
            return;
        }
    }
    else
    {
        if ((curStation > busInfo.lastStation[0]) || (curStation < busInfo.firstStation[0]))
        {
            //是不是应该发送一下线路状态改变报文?
            return;
        }
    }
    if ((curStation == busInfo.firstStation[1]) || (curStation == busInfo.firstStation[0]))
        busInfo.attrStation = FIRST_STATION;
    else
        busInfo.attrStation = attrStation;
    busInfo.displayCurStation = curStation;
    busInfo.stationName = stationTone[busInfo.displayCurStation-1].name;
    if (CURRENT_STATION == busInfo.attrStation)
    {
        if ((busInfo.displayCurStation == busInfo.lastStation[0]) || (busInfo.displayCurStation == busInfo.lastStation[1]))
        {
            //需要换方向
//            if (CIRCUIT_LINE != busInfo.lineAttr)
            start_change_timeout();//8月10日改,换不换方向由timeout函数来确定
        }
    }
    //语音报站 
    play_stationsound(busInfo.displayCurStation, busInfo.attrStation);
    set_stationdata_changed();
    if (attrStation != NEXT_STATION)
        openLight();
}

⌨️ 快捷键说明

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