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