📄 predictor.c
字号:
InstallPermnentPort(LEDPARA_WORK);
Status &= ~IS_MACHINE_CLOSE;
return 1;
}
}
void GetStationName(INT8U *name)
{
/*INT8U len;
len = len;
if(IsWorkAuto())
{
len = GetStrlen(StaNames[StaPosiNum_Get.curnum],15);
if(len >=12)
{
len = 12;
}
memcpy(name,&StaNames[StaPosiNum_Get.curnum],len);
}*/
}
BOOLEAN IsManualDeclare(void)
{
if (!(Status & IS_SETDREC_UP) && !(Status & IS_SETDREC_DOWN))
{
return TRUE;
}
else
{
return FALSE;
}
}
//*******************************NEW********************************
INT8U GetStationVoiceID(void)
{
return 1;
}
// 设置为上行
void SetUpLine(void)
{
#if DEBUG_UARTNo_BUSSTATION <=1
PrintFromUART(DEBUG_UARTNo_BUSSTATION , "\n设置为上行");
#endif
if(IsWorkAuto())
{
return;
}
LineDirection = UPSTREAM;
if(StationID_Cur == -1)
{
StationID_Cur = 0;
StationID_Next = 1;
StationID_Last = 0;
}
else
{
StationID_Cur +=1;
StationID_Next +=1;
StationID_Last +=1;
}
}
// 设置为下行
void SetDownLine(void)
{
#if DEBUG_UARTNo_BUSSTATION <=1
PrintFromUART(DEBUG_UARTNo_BUSSTATION , "\n设置为下行");
#endif
if(IsWorkAuto())
{
return;
}
LineDirection = DOWMSTREAM;
if(StationID_Cur == -1)
{
StationID_Cur = Curstation_Tbl.nums_up;
StationID_Next = Curstation_Tbl.nums_up+1;
StationID_Last = Curstation_Tbl.nums_up;
}
else
{
StationID_Cur +=1;
StationID_Next +=1;
StationID_Last +=1;
}
}
// 快进
void HdlSkipUpforStation(void)
{
INT16U index;
#if DEBUG_UARTNo_BUSSTATION <=1
PrintFromUART(DEBUG_UARTNo_BUSSTATION , "\n快进");
#endif
if(IsWorkAuto())
{
return;
}
if(AutoValid)
{
AutoValid = FALSE;
}
StationID_Cur+=2;
if(LineDirection == UPSTREAM)
{
if(StationID_Cur %2)
{
StationID_Cur = 0;
}
else
{
if((Curstation_Tbl.nums_up + Curstation_Tbl.nums_down)%2)
{
if(StationID_Cur > (Curstation_Tbl.nums_up + Curstation_Tbl.nums_down -1))
{
StationID_Cur = 0;
}
}
else
{
if(StationID_Cur > (Curstation_Tbl.nums_up + Curstation_Tbl.nums_down -2))
{
StationID_Cur = 0;
}
}
}
}
else if (LineDirection == DOWMSTREAM)
{
if((StationID_Cur %2)==0)
{
StationID_Cur = 1;
}
else
{
if((Curstation_Tbl.nums_up + Curstation_Tbl.nums_down)%2)
{
if(StationID_Cur > (Curstation_Tbl.nums_up + Curstation_Tbl.nums_down -2))
{
StationID_Cur = 1;
}
}
else
{
if(StationID_Cur > (Curstation_Tbl.nums_up + Curstation_Tbl.nums_down -1))
{
StationID_Cur = 1;
}
}
}
}
else //没有指定上行或下行,则不处理
{
return;
}
StationID_Next = StationID_Cur ;
if(StationID_Cur%2)
{
index = StationID_Cur/2 + Curstation_Tbl.nums_up;
}
else
{
index = StationID_Cur/2;
}
OSQPost(DisplayTaskQ, MSG_DISPLAYTASK_ID, index ,0);
OSQPost(DisplayTaskQ, MSG_DISPLAYTASK_STS, STS_SKIPUP ,0);
#if DEBUG_UARTNo_BUSSTATION >0
OSQPost(SysTaskMsgQue, MSG_DEBUG_NAMEPRINT, GetCurPot(CurLine.cell,StationID_Cur) ,0);
#endif
}
// 快退
void HdlSkipDownforStation(void)
{
INT16U index;
#if DEBUG_UARTNo_BUSSTATION <=1
PrintFromUART(DEBUG_UARTNo_BUSSTATION , "\n快退");
#endif
if(IsWorkAuto())
{
return;
}
if(AutoValid)
{
AutoValid = FALSE;
}
StationID_Cur-=2;
if(LineDirection == UPSTREAM)
{
if(StationID_Cur % 2)
{
if((Curstation_Tbl.nums_up + Curstation_Tbl.nums_down)%2)
{
StationID_Cur = Curstation_Tbl.nums_up + Curstation_Tbl.nums_down -1;
}
else
{
StationID_Cur = Curstation_Tbl.nums_up + Curstation_Tbl.nums_down -2;
}
}
else
{
if(StationID_Cur < 0)
{
if((Curstation_Tbl.nums_up + Curstation_Tbl.nums_down)%2)
{
StationID_Cur = Curstation_Tbl.nums_up + Curstation_Tbl.nums_down -1;
}
else
{
StationID_Cur = Curstation_Tbl.nums_up + Curstation_Tbl.nums_down -2;
}
}
}
}
else if (LineDirection == DOWMSTREAM)
{
if((StationID_Cur % 2)==0)
{
if((Curstation_Tbl.nums_up + Curstation_Tbl.nums_down)%2)
{
StationID_Cur = Curstation_Tbl.nums_up + Curstation_Tbl.nums_down -2;
}
else
{
StationID_Cur = Curstation_Tbl.nums_up + Curstation_Tbl.nums_down -1;
}
}
else
{
if(StationID_Cur < 0)
{
if((Curstation_Tbl.nums_up + Curstation_Tbl.nums_down)%2)
{
StationID_Cur = Curstation_Tbl.nums_up + Curstation_Tbl.nums_down -2;
}
else
{
StationID_Cur = Curstation_Tbl.nums_up + Curstation_Tbl.nums_down -1;
}
}
}
}
else //没有指定上行或下行,则不处理
{
return;
}
StationID_Next = StationID_Cur;
if(StationID_Cur%2)
{
index = StationID_Cur/2 + Curstation_Tbl.nums_up;
}
else
{
index = StationID_Cur/2;
}
OSQPost(DisplayTaskQ, MSG_DISPLAYTASK_ID, index ,0);
OSQPost(DisplayTaskQ, MSG_DISPLAYTASK_STS, STS_SKIPDOWN ,0);
#if DEBUG_UARTNo_BUSSTATION <=1
OSQPost(SysTaskMsgQue, MSG_DEBUG_NAMEPRINT, GetCurPot(CurLine.cell,StationID_Cur) ,0);
#endif
}
//手动进站
void HdlPullInStation(void)
{
INT16U curpot;
INT16U nextpot;
INT16U curindex;
#if DEBUG_UARTNo_BUSSTATION <=1
PrintFromUART(DEBUG_UARTNo_BUSSTATION , "\n手动进站");
#endif
if(IsWorkAuto())
{
return;
}
if(LineDirection == -1)
{
return;
}
curpot = GetCurPot(CurLine.cell,StationID_Next);
nextpot = GetNextPot(CurLine.cell,StationID_Next);
if(StationID_Cur % 2)
{
curindex = StationID_Cur /2 + Curstation_Tbl.nums_up;
}
else
{
curindex = StationID_Cur /2;
}
if( curpot != 0xffff)
{
if((curpot != SpecailStation.start_sta1)&&(curpot != SpecailStation.start_sta2))
{
OSQPost(AlmTaskMsgQue, MSG_BUSSTATION_STATIONARIVED, curpot, nextpot);
OSQPost(DisplayTaskQ, MSG_DISPLAYTASK_ID,curindex,0);
OSQPost(DisplayTaskQ, MSG_DISPLAYTASK_STS, STS_PULLIN ,0);
}
}
StationID_Cur = StationID_Next;
StationID_Next += 2;
if(LineDirection == UPSTREAM)
{
if((Curstation_Tbl.nums_up + Curstation_Tbl.nums_down)%2)
{
if(StationID_Next > (Curstation_Tbl.nums_up + Curstation_Tbl.nums_down -1))
{
StationID_Next = 3;
LineDirection = DOWMSTREAM;
}
}
else
{
if(StationID_Next > (Curstation_Tbl.nums_up + Curstation_Tbl.nums_down -2))
{
StationID_Next = 3;
LineDirection = DOWMSTREAM;
}
}
}
else if (LineDirection == DOWMSTREAM)
{
if((Curstation_Tbl.nums_up + Curstation_Tbl.nums_down)%2)
{
if(StationID_Next > (Curstation_Tbl.nums_up + Curstation_Tbl.nums_down -2))
{
StationID_Next = 2;
LineDirection = UPSTREAM;
}
}
else
{
if(StationID_Next > (Curstation_Tbl.nums_up + Curstation_Tbl.nums_down -1))
{
StationID_Next = 2;
LineDirection = UPSTREAM;
}
}
}
}
//手动出站
void HdlPullOutStation(void)
{
INT16U nextpot;
INT16U endpot;
#if DEBUG_UARTNo_BUSSTATION <=1
PrintFromUART(DEBUG_UARTNo_BUSSTATION , "\n手动出站");
#endif
if(IsWorkAuto())
{
return;
}
if(LineDirection == -1)
{
return;
}
nextpot = GetNextPot(CurLine.cell,StationID_Cur);
if(LineDirection == DOWMSTREAM)
{
endpot = SpecailStation.end_sta2;
}
else if( LineDirection == UPSTREAM)
{
endpot = SpecailStation.end_sta1;
}
if(nextpot != 0xffff)
{
OSQPost(AlmTaskMsgQue, MSG_BUSSTATION_STATIONSTART, nextpot ,endpot);
OSQPost(DisplayTaskQ, MSG_DISPLAYTASK_STS, STS_PULLOUT ,0);
}
StationID_Next = StationID_Cur +2;
StationID_Cur += 2;
if(LineDirection == UPSTREAM)
{
if((Curstation_Tbl.nums_up + Curstation_Tbl.nums_down)%2)
{
if(StationID_Cur > (Curstation_Tbl.nums_up + Curstation_Tbl.nums_down -1))
{
StationID_Cur = 3;
LineDirection = DOWMSTREAM;
}
}
else
{
if(StationID_Cur > (Curstation_Tbl.nums_up + Curstation_Tbl.nums_down -2))
{
StationID_Cur = 3;
LineDirection = DOWMSTREAM;
}
}
}
else if (LineDirection == DOWMSTREAM)
{
if((Curstation_Tbl.nums_up + Curstation_Tbl.nums_down)%2)
{
if(StationID_Cur > (Curstation_Tbl.nums_up + Curstation_Tbl.nums_down -2))
{
StationID_Cur = 2;
LineDirection = UPSTREAM;
}
}
else
{
if(StationID_Cur > (Curstation_Tbl.nums_up + Curstation_Tbl.nums_down -1))
{
StationID_Cur = 2;
LineDirection = UPSTREAM;
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -