示例#1
0
        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();
                }));
            }
        }
示例#2
0
        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);
             }
         }
     }
 }
示例#4
0
 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);
     }
 }
示例#5
0
 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);
                     }
                 }
             }
         }
     }
 }
示例#6
0
 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();
                     }));
                 }
             }
         }
     }
 }
示例#7
0
 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();
                 }));
             }
         }
     }
 }
示例#8
0
 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();
                 }));
             }
         }
     }
 }
示例#9
0
        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();
                    }));
                }
            }
        }
示例#10
0
        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();
        }