public static void CancelNonComTrain(byte TrainID) { string PreNonComTrainHeadPosition; string PreNonComTrainHeadPositionSectionName; string PreNonComTrainTailPosition; string PreNonComTrainTailPositionSectionName; lock (NonCommunicationTrain.LoseTrain) { PreNonComTrainHeadPosition = (Convert.ToInt16(NonCommunicationTrain.LoseTrain[TrainID][1]) * 256 + Convert.ToInt16(NonCommunicationTrain.LoseTrain[TrainID][0])).ToString(); PreNonComTrainHeadPositionSectionName = (Convert.ToInt16(NonCommunicationTrain.LoseTrain[TrainID][2])).ToString(); PreNonComTrainTailPosition = (Convert.ToInt16(NonCommunicationTrain.LoseTrain[TrainID][7]) * 256 + Convert.ToInt16(NonCommunicationTrain.LoseTrain[TrainID][6])).ToString(); PreNonComTrainTailPositionSectionName = (Convert.ToInt16(NonCommunicationTrain.LoseTrain[TrainID][8])).ToString(); NonCommunicationTrain.LoseTrain.Remove(TrainID); } if (UpdateInfo.TraverseSection(PreNonComTrainHeadPosition) != null) { Section section = UpdateInfo.TraverseSection(PreNonComTrainHeadPosition); section.HasNonComTrain.Remove(TrainID); System.Windows.Application.Current.Dispatcher.Invoke( new Action( delegate { section.InvalidateVisual(); })); } else if (UpdateInfo.TraverseRailSwitch(PreNonComTrainHeadPosition, PreNonComTrainHeadPositionSectionName) != null) { RailSwitch railswitch = UpdateInfo.TraverseRailSwitch(PreNonComTrainHeadPosition, PreNonComTrainHeadPositionSectionName); railswitch.HasNonComTrain.Remove(TrainID); System.Windows.Application.Current.Dispatcher.Invoke(new Action(delegate { railswitch.InvalidateVisual(); })); } if (UpdateInfo.TraverseSection(PreNonComTrainTailPosition) != null) { Section section = UpdateInfo.TraverseSection(PreNonComTrainTailPosition); section.HasNonComTrain.Remove(TrainID); System.Windows.Application.Current.Dispatcher.Invoke( new Action( delegate { section.InvalidateVisual(); })); } else if (UpdateInfo.TraverseRailSwitch(PreNonComTrainTailPosition, PreNonComTrainTailPositionSectionName) != null) { RailSwitch railswitch = UpdateInfo.TraverseRailSwitch(PreNonComTrainTailPosition, PreNonComTrainTailPositionSectionName); railswitch.HasNonComTrain.Remove(TrainID); System.Windows.Application.Current.Dispatcher.Invoke(new Action(delegate { railswitch.InvalidateVisual(); })); } }
private void CheckSectionSwitches(RailSwitch rs_1, RailSwitch rs_2) { if (rs_1.IsLeft != rs_2.IsLeft) { if (rs_1.IsLeft) { rs_1.InsuLine = null; rs_1.InvalidateVisual(); } if (rs_2.IsLeft) { rs_2.InsuLine = null; rs_2.InvalidateVisual(); } } }
private void UpdateAccessOfTrain() { foreach (var item in LoseTrain.Keys) { if (VOBCData.PreAccess.Keys.Contains(item)) { foreach (var Route in VOBCData.PreAccess[item]) { Section TraverseSection = UpdateInfo.TraverseSection(Route.Substring(0, 3)); if (TraverseSection != null) { if (TraverseSection.IsAccess.Contains(item)) { TraverseSection.IsAccess.Remove(item); } System.Windows.Application.Current.Dispatcher.Invoke( new Action( delegate { TraverseSection.InvalidateVisual(); })); } else { RailSwitch TraverseRailSwitch = UpdateInfo.TraverseRailSwitch(Route.Substring(0, 3), Route.Substring(4)); if (TraverseRailSwitch.IsAccess.Contains(item)) { TraverseRailSwitch.IsAccess.Remove(item); } System.Windows.Application.Current.Dispatcher.Invoke( new Action( delegate { TraverseRailSwitch.InvalidateVisual(); })); } } lock (VOBCData.PreAccess) { VOBCData.PreAccess.Remove(item); } } } }
private int SetMAOffset(RailSwitch RailSwitch) { if (RailSwitch.SectionName.Substring(0, 3) == "110" || RailSwitch.SectionName.Substring(0, 3) == "111" || RailSwitch.SectionName.Substring(0, 3) == "118" || RailSwitch.SectionName.Substring(0, 3) == "119") { if (RailSwitch.IsPositionNormal == true && RailSwitch.IsPositionReverse == false) { return(60); } else { return(35); } } else { return(35); } }
internal void CheckSectionSwitches() { for (int i = 0; i < Elements.Count; i++) { if (Elements[i] is RailSwitch) { RailSwitch rs_1 = Elements[i] as RailSwitch; for (int j = i + 1; j < Elements.Count; j++) { if (Elements[j] is RailSwitch) { RailSwitch rs_2 = Elements[j] as RailSwitch; if (rs_1.StationID == rs_2.StationID && rs_1.SectionID == rs_2.SectionID) { CheckSectionSwitches(rs_1, rs_2); } } } } } }
private void CancelPreAccess() { if (PreAccess.Keys.Contains(Handle.NID_Train)) { foreach (var item in PreAccess[Handle.NID_Train]) { if (!Determine.Route.Contains(item)) { Section TraverseSection = UpdateInfo.TraverseSection(item.Substring(0, 3)); if (TraverseSection != null) { if (TraverseSection.IsAccess.Contains(Handle.NID_Train)) { TraverseSection.IsAccess.Remove(Handle.NID_Train); } System.Windows.Application.Current.Dispatcher.Invoke( new Action(delegate { TraverseSection.InvalidateVisual(); })); } else { RailSwitch TraverseRailSwitch = UpdateInfo.TraverseRailSwitch(item.Substring(0, 3), item.Substring(4)); if (TraverseRailSwitch.IsAccess.Contains(Handle.NID_Train)) { TraverseRailSwitch.IsAccess.Remove(Handle.NID_Train); } System.Windows.Application.Current.Dispatcher.Invoke( new Action( delegate { TraverseRailSwitch.InvalidateVisual(); })); } } } } }
private void CancelPreAccess(byte trainID, Dictionary <byte, List <string> > preAccess) { if (VOBCData.PreAccess.Keys.Contains(trainID)) { foreach (var Route in VOBCData.PreAccess[trainID]) { Section TraverseSection = UpdateInfo.TraverseSection(Route.Substring(0, 3)); if (TraverseSection != null) { if (TraverseSection.IsAccess.Contains(trainID)) { TraverseSection.IsAccess.Remove(trainID); } System.Windows.Application.Current.Dispatcher.Invoke( new Action( delegate { TraverseSection.InvalidateVisual(); })); } else { RailSwitch TraverseRailSwitch = UpdateInfo.TraverseRailSwitch(Route.Substring(0, 3), Route.Substring(4)); if (TraverseRailSwitch.IsAccess.Contains(trainID)) { TraverseRailSwitch.IsAccess.Remove(trainID); } System.Windows.Application.Current.Dispatcher.Invoke( new Action( delegate { TraverseRailSwitch.InvalidateVisual(); })); } } } }
private void UpdateAccess() { if (Determine.Route.Count > 0) { if (Determine.Route[0].Substring(4) == "0") { int CurTrainHeadOffset = Convert.ToInt16(HandleVOBCData.TrainPosition[Handle.NID_Train][4]); Section TraverseSection = UpdateInfo.TraverseSection(Determine.Route[0].Substring(0, 3)); if (TraverseSection != null) { if (CurTrainHeadOffset < 60) { if (!TraverseSection.IsAccess.Contains(Handle.NID_Train)) { TraverseSection.IsAccess.Add(Handle.NID_Train); } System.Windows.Application.Current.Dispatcher.Invoke( new Action( delegate { TraverseSection.InvalidateVisual(); })); } else { if (TraverseSection.IsAccess.Contains(Handle.NID_Train)) { TraverseSection.IsAccess.Remove(Handle.NID_Train); } System.Windows.Application.Current.Dispatcher.Invoke( new Action( delegate { TraverseSection.InvalidateVisual(); })); } } } else { RailSwitch TraverseRailSwitch = UpdateInfo.TraverseRailSwitch(Determine.Route[0].Substring(0, 3), Determine.Route[0].Substring(4)); if (!TraverseRailSwitch.IsAccess.Contains(Handle.NID_Train)) { TraverseRailSwitch.IsAccess.Add(Handle.NID_Train); } System.Windows.Application.Current.Dispatcher.Invoke( new Action( delegate { TraverseRailSwitch.InvalidateVisual(); })); } for (int i = 1; i < Determine.Route.Count; i++) { Section TraverseSection = UpdateInfo.TraverseSection(Determine.Route[i].Substring(0, 3)); if (TraverseSection != null) { if (!TraverseSection.IsAccess.Contains(Handle.NID_Train)) { TraverseSection.IsAccess.Add(Handle.NID_Train); } System.Windows.Application.Current.Dispatcher.Invoke( new Action( delegate { TraverseSection.InvalidateVisual(); })); } else { RailSwitch TraverseRailSwitch = UpdateInfo.TraverseRailSwitch(Determine.Route[i].Substring(0, 3), Determine.Route[i].Substring(4)); if (!TraverseRailSwitch.IsAccess.Contains(Handle.NID_Train)) { TraverseRailSwitch.IsAccess.Add(Handle.NID_Train); } System.Windows.Application.Current.Dispatcher.Invoke( new Action( delegate { TraverseRailSwitch.InvalidateVisual(); })); } } } }
private void CancelOccupy(byte trainID, Dictionary <byte, byte[]> TrainPosition) { string TrainHeadSection = (Convert.ToInt16(TrainPosition[trainID][1]) * 256 + Convert.ToInt16(TrainPosition[trainID][0])).ToString(); string RailHeadSwitch = (Convert.ToInt16(TrainPosition[trainID][2])).ToString(); Section section = NonCommunicationTrain.TraverseSection(TrainHeadSection); if (section != null) { section.TrainOccupy.Remove(trainID); if (section.IsFrontLogicOccupy.Contains(trainID)) { section.IsFrontLogicOccupy.Remove(trainID); } if (section.IsLastLogicOccupy.Contains(trainID)) { section.IsLastLogicOccupy.Remove(trainID); } System.Windows.Application.Current.Dispatcher.Invoke( new Action( delegate { section.InvalidateVisual(); })); } else { RailSwitch railSwitch = NonCommunicationTrain.TraverseRailSwitch(TrainHeadSection, RailHeadSwitch); if (railSwitch != null) { railSwitch.TrainOccupy.Remove(trainID); System.Windows.Application.Current.Dispatcher.Invoke(new Action(delegate { railSwitch.InvalidateVisual(); })); } } string TrainTailSection = (Convert.ToInt16(TrainPosition[trainID][7]) * 256 + Convert.ToInt16(TrainPosition[trainID][6])).ToString(); string RailTailSwitch = (Convert.ToInt16(TrainPosition[trainID][8])).ToString(); Section sectionTail = NonCommunicationTrain.TraverseSection(TrainTailSection); if (sectionTail != null) { sectionTail.TrainOccupy.Remove(trainID); if (sectionTail.IsFrontLogicOccupy.Contains(trainID)) { sectionTail.IsFrontLogicOccupy.Remove(trainID); } if (sectionTail.IsLastLogicOccupy.Contains(trainID)) { sectionTail.IsLastLogicOccupy.Remove(trainID); } System.Windows.Application.Current.Dispatcher.Invoke( new Action( delegate { sectionTail.InvalidateVisual(); })); } else { RailSwitch railSwitchTail = NonCommunicationTrain.TraverseRailSwitch(TrainTailSection, RailTailSwitch); if (railSwitchTail != null) { railSwitchTail.TrainOccupy.Remove(trainID); System.Windows.Application.Current.Dispatcher.Invoke(new Action(delegate { railSwitchTail.InvalidateVisual(); })); } } }
private void UpdateLostTrain() { foreach (var item in LoseTrain.Keys) { string TrainHeadSection = (Convert.ToInt16(LoseTrain[item][1]) * 256 + Convert.ToInt16(LoseTrain[item][0])).ToString(); string RailHeadSwitch = (Convert.ToInt16(LoseTrain[item][2])).ToString(); if (TraverseSection(TrainHeadSection) != null) { Section section = TraverseSection(TrainHeadSection); if (!section.HasNonComTrain.Contains(item)) { section.HasNonComTrain.Add(item); } System.Windows.Application.Current.Dispatcher.Invoke( new Action( delegate { section.InvalidateVisual(); })); } else if (TraverseRailSwitch(TrainHeadSection, RailHeadSwitch) != null) { RailSwitch railswitch = TraverseRailSwitch(TrainHeadSection, RailHeadSwitch); if (!railswitch.HasNonComTrain.Contains(item)) { railswitch.HasNonComTrain.Add(item); } System.Windows.Application.Current.Dispatcher.Invoke(new Action(delegate { railswitch.InvalidateVisual(); })); } string TrainTailSection = (Convert.ToInt16(LoseTrain[item][7]) * 256 + Convert.ToInt16(LoseTrain[item][6])).ToString(); string RailTailSwitch = (Convert.ToInt16(LoseTrain[item][8])).ToString(); if (TraverseSection(TrainTailSection) != null) { Section section = TraverseSection(TrainTailSection); if (!section.HasNonComTrain.Contains(item)) { section.HasNonComTrain.Add(item); } System.Windows.Application.Current.Dispatcher.Invoke( new Action( delegate { section.InvalidateVisual(); })); } else if (TraverseRailSwitch(TrainTailSection, RailTailSwitch) != null) { RailSwitch railswitch = TraverseRailSwitch(TrainTailSection, RailTailSwitch); if (!railswitch.HasNonComTrain.Contains(item)) { railswitch.HasNonComTrain.Add(item); } System.Windows.Application.Current.Dispatcher.Invoke(new Action(delegate { railswitch.InvalidateVisual(); })); } } UpdateAccessOfTrain(); }