public static ControllerModel GetsimpleController1() { // Signalgroups var sg02 = new SignalGroupModel("02", 40, 50, 250, 30, 20, 30, 60); sg02.Detectors.Add(new DetectorModel("021", DetectorRequestTypeEnum.RedNonGuaranteed, DetectorExtendingTypeEnum.HeadMax, 0, 0, 10, 360)); sg02.Detectors.Add(new DetectorModel("022", DetectorRequestTypeEnum.Red, DetectorExtendingTypeEnum.Measure, 0, 0, 10, 360)); sg02.Detectors.Add(new DetectorModel("023", DetectorRequestTypeEnum.None, DetectorExtendingTypeEnum.Measure, 0, 0, 10, 360)); var sg05 = new SignalGroupModel("05", 40, 50, 250, 30, 20, 30, 60); sg05.Detectors.Add(new DetectorModel("051", DetectorRequestTypeEnum.RedNonGuaranteed, DetectorExtendingTypeEnum.HeadMax, 0, 0, 10, 360)); sg05.Detectors.Add(new DetectorModel("052", DetectorRequestTypeEnum.Red, DetectorExtendingTypeEnum.Measure, 0, 0, 10, 360)); var sg12 = new SignalGroupModel("12", 40, 50, 250, 30, 20, 30, 60); sg12.Detectors.Add(new DetectorModel("121", DetectorRequestTypeEnum.RedNonGuaranteed, DetectorExtendingTypeEnum.HeadMax, 0, 0, 10, 360)); sg12.Detectors.Add(new DetectorModel("122", DetectorRequestTypeEnum.RedNonGuaranteed, DetectorExtendingTypeEnum.None, 0, 0, 10, 360)); var c = new ControllerModel(); c.Data.MaximumWaitingTime = 240; c.SignalGroups.Add(sg02); c.SignalGroups.Add(sg05); c.SignalGroups.Add(sg12); sg02.InterGreenTimes.Add(new InterGreenTimeModel("02", "05", 45)); sg02.InterGreenTimes.Add(new InterGreenTimeModel("02", "12", 35)); sg05.InterGreenTimes.Add(new InterGreenTimeModel("05", "02", 55)); sg05.InterGreenTimes.Add(new InterGreenTimeModel("05", "12", 25)); sg12.InterGreenTimes.Add(new InterGreenTimeModel("12", "02", 15)); sg12.InterGreenTimes.Add(new InterGreenTimeModel("12", "05", 65)); var b1 = new BlockModel("B1"); b1.AddSignalGroup("02"); var b2 = new BlockModel("B2"); b2.AddSignalGroup("05"); var b3 = new BlockModel("B3"); b3.AddSignalGroup("12"); c.BlockStructure.WaitingBlockName = "B1"; c.BlockStructure.Blocks.Add(b1); c.BlockStructure.Blocks.Add(b2); c.BlockStructure.Blocks.Add(b3); return(c); }
public static void GenerateXml(TLCGen.Models.ControllerModel model, string pathname) { try { var newmodel = new ControllerModel(); newmodel.Data.Name = model.Data.Naam; newmodel.Data.MaximumWaitingTime = model.Data.Fasebewaking; foreach (var sg in model.Fasen) { var nsg = new SignalGroupModel(sg.Naam, sg.TGG, sg.TFG, 250, sg.TGL, sg.TRG, sg.TRG, sg.Kopmax); nsg.ExtendGreenFree = sg.Meeverlengen == NooitAltijdAanUitEnum.Altijd || sg.Meeverlengen == NooitAltijdAanUitEnum.SchAan; nsg.WaitGreen = sg.Wachtgroen == NooitAltijdAanUitEnum.Altijd || sg.Wachtgroen == NooitAltijdAanUitEnum.SchAan; nsg.FixedRequest = (sg.VasteAanvraag == NooitAltijdAanUitEnum.Altijd || sg.VasteAanvraag == NooitAltijdAanUitEnum.SchAan) ? FixedRequestTypeEnum.Red : FixedRequestTypeEnum.None; var coor = sg.BitmapCoordinaten.FirstOrDefault(); if (coor != null) { nsg.Coordinates = new System.Drawing.Point(coor.X, coor.Y); } foreach (var d in sg.Detectoren) { var nd = new DetectorModel(d.Naam, ConvertRequestType(d.Aanvraag), ConvertExtendingType(d.Verlengen), d.TDB ?? 0, d.TDH ?? 0, d.TBG ?? 0, d.TDH ?? 0) { Type = ConvertDetectorType(d.Type) }; var dcoor = d.BitmapCoordinaten.FirstOrDefault(); if (dcoor != null) { nd.Coordinates = new System.Drawing.Point(dcoor.X, dcoor.Y); } nsg.Detectors.Add(nd); } newmodel.SignalGroups.Add(nsg); } foreach (var c in model.InterSignaalGroep.Conflicten) { var sgf = newmodel.SignalGroups.First(x => x.Name == c.FaseVan); sgf.InterGreenTimes.Add(new InterGreenTimeModel(sgf.Name, c.FaseNaar, c.Waarde)); } foreach (var ml in model.ModuleMolen.Modules) { var nml = new BlockModel(ml.Naam); foreach (var mlsg in ml.Fasen) { nml.AddSignalGroup(mlsg.FaseCyclus); } newmodel.BlockStructure.Blocks.Add(nml); } foreach (var msg in model.ModuleMolen.FasenModuleData) { var newmsg = newmodel.BlockStructure.Blocks.SelectMany(x => x.SignalGroups).First(x => x.SignalGroupName == msg.FaseCyclus); if (newmsg != null) { newmsg.BlocksAheadAllowed = msg.ModulenVooruit; newmsg.AlternativeSpace = msg.AlternatieveRuimte * 100; } } newmodel.BlockStructure.WaitingBlockName = model.ModuleMolen.WachtModule; var filename = Path.Combine(pathname, model.Data.Naam + "_tlcprof.xml"); var xmlWriterSettings = new XmlWriterSettings { Indent = true, NewLineHandling = NewLineHandling.Entitize }; var ser = new DataContractSerializer(typeof(ControllerModel), new DataContractSerializerSettings() { SerializeReadOnlyTypes = true }); using (var fs = new FileStream(filename, FileMode.Create)) using (var xmlWriter = XmlWriter.Create(fs, xmlWriterSettings)) { ser.WriteObject(xmlWriter, newmodel); xmlWriter.Close(); } } catch (Exception e) { MessageBox.Show(e.ToString(), "TLCProFCodeGenerator: Error occured"); } }