Exemplo n.º 1
0
 public UpdateInfo(HandleVOBCData Handle, byte[] Data)
 {
     this.Data     = Data;
     this.VOBCInfo = Handle;
     CancelPreTrainPosition();
     UpDataTrainOccupy();
     UpdataLine();
     UpdatePrePosition();
 }
Exemplo n.º 2
0
 public void HandleVOBC(int DataType, byte[] DATA)
 {
     int num = VOBCNonCom.IndexOf(DATA[8]);
     if (num == -1)
     {
         VOBCNonCom.Add(DATA[8]);
     }
     HandleVOBCData HandleVOBCData = new HandleVOBCData(DATA);
     VOBCData VOBCData = new VOBCData(DATA, HandleVOBCData);
     UpdateInfo UpdateInfo = new UpdateInfo(HandleVOBCData,DATA);
     byte[] DataToVOBC = new byte[8 + VOBCData.InfoSendToVOBC.Obstacle.Length + 36];
     WriteVOBCHead(DataType).CopyTo(DataToVOBC,0);
     VOBCData.InfoSendToVOBC.ReplyMessageToZC.CopyTo(DataToVOBC, 8);
     VOBCData.InfoSendToVOBC.Obstacle.CopyTo(DataToVOBC, 8 + VOBCData.InfoSendToVOBC.ReplyMessageToZC.Length);
     Send(DataToVOBC, GetIPByDataType(DataType), GetPortByDataType(DataType));
 }
Exemplo n.º 3
0
        public byte[] DetermineMA(HandleVOBCData Handle)
        {
            int    TrainSectionInt    = Convert.ToInt16(HandleVOBCData.TrainPosition[Handle.NID_Train][1]) * 256 + Convert.ToInt16(HandleVOBCData.TrainPosition[Handle.NID_Train][0]);//纯数字
            int    RailSwitchInt      = Convert.ToInt16(HandleVOBCData.TrainPosition[Handle.NID_Train][2]);
            string RailSwitchString   = RailSwitchInt.ToString();
            string TrainSectionString = TrainSectionInt.ToString();
            int    TrainDir           = Handle.Q_TrainRealDirection;

            foreach (var item in MainWindow.stationElements_.Elements)
            {
                try
                {
                    if (item is Section)
                    {
                        if (item.Name.Substring(0, 3) == TrainSectionString)
                        {
                            FindCurTrainIn(TrainSectionString + "-0", TrainDir);
                        }
                    }
                    if (item is RailSwitch)
                    {
                        if ((item as RailSwitch).SectionName.Substring(0, 3) == TrainSectionString)
                        {
                            FindCurTrainIn(TrainSectionString + "-" + RailSwitchString, TrainDir);
                        }
                    }
                }
                catch (Exception e)
                {
                }
            }
            CItable NextAccess = null;

            if (CurTrainIn.Count != 0)
            {
                foreach (var item in CurTrainIn)
                {
                    int num = item.Section.IndexOf(TrainSectionString + "-" + RailSwitchString);
                    for (int i = num; i < item.Section.Count; i++)
                    {
                        if (!Route.Contains(item.Section[i]))
                        {
                            Route.Add(item.Section[i]);
                        }
                        byte[] a = SectionAxleOccpy(item.Section[i], TrainDir);
                        if (a != null)
                        {
                            return(a);
                        }
                        if (IsApproachSection(item.Section[i], TrainDir) != null)
                        {
                            NextAccess = IsApproachSection(item.Section[i], TrainDir);
                        }
                    }
                }
            }
            if (NextAccess != null)
            {
                bool HasNextAccessOpen = true;
                while (HasNextAccessOpen)
                {
                    CItable Next = null;
                    for (int i = 0; i < NextAccess.Section.Count; i++)
                    {
                        if (NextAccess.Section[i] == TrainSectionString + "-" + RailSwitchString)
                        {
                        }
                        else
                        {
                            if (!Route.Contains(NextAccess.Section[i]))
                            {
                                Route.Add(NextAccess.Section[i]);
                            }
                            byte[] a = SectionOccpy(NextAccess.Section[i], TrainDir);
                            if (a != null)
                            {
                                return(a);
                            }
                            Next = IsApproachSection(NextAccess.Section[i], TrainDir);
                        }
                    }
                    if (Next != null)
                    {
                        NextAccess = Next;
                    }
                    else
                    {
                        HasNextAccessOpen = false;
                    }
                }
            }
            else
            {
                NextAccess = CurTrainIn[CurTrainIn.Count - 1];
            }

            MASection = NextAccess.EndSection;
            foreach (var item in MainWindow.stationTopoloty_.Nodes)
            {
                try
                {
                    if (item.NodeDevice is Section)
                    {
                        if ((item.NodeDevice as Section).Name.Substring(0, 3) == MASection.Substring(0, 3))
                        {
                            MAOffset = 100;
                            MADir    = TrainDir;
                        }
                    }
                    else if (item.NodeDevice is RailSwitch)
                    {
                        if ((item.NodeDevice as RailSwitch).SectionName.Substring(0, 3) == MASection.Substring(0, 3) &&
                            (item.NodeDevice as RailSwitch).Name == MASection.Substring(4))
                        {
                            MAOffset = SetMAOffset(item.NodeDevice);
                            MADir    = TrainDir;
                        }
                    }
                }
                catch (Exception e)
                {
                }
            }
            foreach (var item in MainWindow.stationTopoloty_1_.Nodes)
            {
                try
                {
                    if (item.NodeDevice is Section)
                    {
                        if ((item.NodeDevice as Section).Name.Substring(0, 3) == MASection.Substring(0, 3))
                        {
                            MAOffset = 100;
                            MADir    = TrainDir;
                        }
                    }
                    else if (item.NodeDevice is RailSwitch)
                    {
                        if ((item.NodeDevice as RailSwitch).SectionName.Substring(0, 3) == MASection.Substring(0, 3) &&
                            (item.NodeDevice as RailSwitch).Name == MASection.Substring(4))
                        {
                            MAOffset = SetMAOffset(item.NodeDevice);
                            MADir    = TrainDir;
                        }
                    }
                }
                catch (Exception e)
                {
                }
            }
            return(ConvertToByte(MASection, MAOffset, MADir));
        }
Exemplo n.º 4
0
 public VOBCData(byte[] data, HandleVOBCData handle)
 {
     this.Data   = data;
     this.Handle = handle;
     SetInfoToVOBC();
 }