📄 manualboard.c
字号:
}
}
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 + -