示例#1
0
        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");
            }
        }