public UpdateInfo(HandleVOBCData Handle, byte[] Data) { this.Data = Data; this.VOBCInfo = Handle; CancelPreTrainPosition(); UpDataTrainOccupy(); UpdataLine(); UpdatePrePosition(); }
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)); }
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)); }
public VOBCData(byte[] data, HandleVOBCData handle) { this.Data = data; this.Handle = handle; SetInfoToVOBC(); }