コード例 #1
0
        private string GetAllElementsTabCLines(CCOLElemListData data)
        {
            StringBuilder sb = new StringBuilder();

            int pad1 = data.CCOLCodeWidth + 2 + data.DefineMaxWidth;    // 3: [ ]
            int pad2 = data.NameMaxWidth + 6;                           // 6: space = space " " ;
            int pad3 = data.CCOLSettingWidth + 3 + data.DefineMaxWidth; // 3: space [ ]
            int pad4 = data.SettingMaxWidth + 4;                        // 4: space = space ;
            int pad5 = data.CCOLTTypeWidth + 3 + data.DefineMaxWidth;   // 3: space [ ]

            foreach (CCOLElement ce in data.Elements)
            {
                if (!string.IsNullOrWhiteSpace(ce.Naam))
                {
                    sb.Append($"{tabspace}{data.CCOLCode}[{ce.Define}]".PadRight(pad1));
                    sb.Append($" = \"{ce.Naam}\";".PadRight(pad2));
                    if (!string.IsNullOrEmpty(data.CCOLSetting) && !string.IsNullOrEmpty(ce.Instelling))
                    {
                        sb.Append($" {data.CCOLSetting}[{ce.Define}]".PadRight(pad3));
                        sb.Append($" = {ce.Instelling.ToString()};".PadRight(pad4));
                    }
                    if (!string.IsNullOrEmpty(data.CCOLTType) && !string.IsNullOrEmpty(ce.TType))
                    {
                        sb.Append($" {data.CCOLTType}[{ce.Define}]".PadRight(pad5));
                        sb.Append($" = {ce.TType};");
                    }
                    sb.AppendLine();
                }
            }

            return(sb.ToString());
        }
コード例 #2
0
        /// <summary>
        /// Generates all "sys.h" lines for a given instance of CCOLElemListData.
        /// The function loops all elements in the Elements member.
        /// </summary>
        /// <param name="data">The instance of CCOLElemListData to use for generation</param>
        /// <param name="numberdefine">Optional: this string will be used as follows:
        /// - if it is null, lines are generated like this: #define ElemName #
        /// - if it is not null, it goes like this: #define ElemName (numberdefine + #)</param>
        /// <returns></returns>
        private string GetAllElementsSysHLines(CCOLElemListData data, string numberdefine = null)
        {
            StringBuilder sb = new StringBuilder();

            int pad1 = data.DefineMaxWidth + $"{tabspace}#define  ".Length;
            int pad2 = data.Elements.Count.ToString().Length;

            int index = 0;

            foreach (CCOLElement elem in data.Elements)
            {
                sb.Append($"{tabspace}#define {elem.Define} ".PadRight(pad1));
                if (string.IsNullOrWhiteSpace(numberdefine))
                {
                    sb.AppendLine($"{index.ToString()}".PadLeft(pad2));
                }
                else
                {
                    sb.Append($"({numberdefine} + ");
                    sb.Append($"{index.ToString()}".PadLeft(pad2));
                    sb.AppendLine($")");
                }
                ++index;
            }

            return(sb.ToString());
        }
コード例 #3
0
        private CCOLElemListData CollectAllTimers(ControllerModel controller)
        {
            CCOLElemListData data = new CCOLElemListData();

            data.CCOLCode    = "T_code";
            data.CCOLSetting = "T_max";
            data.CCOLTType   = "T_type";

            // Collect Kopmax
            foreach (FaseCyclusModel fcm in controller.Fasen)
            {
                bool HasKopmax = false;
                foreach (DetectorModel dm in fcm.Detectoren)
                {
                    if (dm.Verlengen == Models.Enumerations.DetectorVerlengenTypeEnum.Kopmax)
                    {
                        HasKopmax = true;
                        break;
                    }
                }
                if (HasKopmax)
                {
                    CCOLElement elem = new CCOLElement();
                    elem.Define     = $"tkm{fcm.Naam}";
                    elem.Naam       = $"KM{fcm.Naam}";
                    elem.Instelling = fcm.Kopmax.ToString();
                    elem.TType      = "TE_type";

                    data.Elements.Add(elem);
                }
            }

            if (data.Elements.Count == 0)
            {
                data.Elements.Add(new CCOLElement()
                {
                    Define = "tdummy", Naam = "dummy"
                });
            }

            // Add last, nameless element for maximum #define
            data.Elements.Add(new CCOLElement()
            {
                Define = "TMMAX"
            });

            data.SetMax();
            return(data);
        }
コード例 #4
0
        private CCOLElemListData CollectAllUitgangen(ControllerModel controller)
        {
            CCOLElemListData data = new CCOLElemListData();

            data.CCOLCode = "US_code";

            // Collect everything
            data.Elements.Add(new CCOLElement()
            {
                Define = "ussegm1", Naam = "segm1"
            });
            data.Elements.Add(new CCOLElement()
            {
                Define = "ussegm2", Naam = "segm2"
            });
            data.Elements.Add(new CCOLElement()
            {
                Define = "ussegm3", Naam = "segm3"
            });
            data.Elements.Add(new CCOLElement()
            {
                Define = "ussegm4", Naam = "segm4"
            });
            data.Elements.Add(new CCOLElement()
            {
                Define = "ussegm5", Naam = "segm5"
            });
            data.Elements.Add(new CCOLElement()
            {
                Define = "ussegm6", Naam = "segm6"
            });
            data.Elements.Add(new CCOLElement()
            {
                Define = "ussegm7", Naam = "segm7"
            });

            // Add last, nameless element for maximum #define
            data.Elements.Add(new CCOLElement()
            {
                Define = "USMAX"
            });

            data.SetMax();
            return(data);
        }
コード例 #5
0
        private CCOLElemListData CollectAllIngangen(ControllerModel controller)
        {
            CCOLElemListData data = new CCOLElemListData();

            data.CCOLCode = "IS_code";

            // Collect everything
            data.Elements.Add(new CCOLElement()
            {
                Define = "isfix", Naam = "fix"
            });
            // TODO

            // Add last, nameless element for maximum #define
            data.Elements.Add(new CCOLElement()
            {
                Define = "ISMAX"
            });

            data.SetMax();
            return(data);
        }
コード例 #6
0
        private CCOLElemListData CollectAllCounters(ControllerModel controller)
        {
            CCOLElemListData data = new CCOLElemListData();

            data.CCOLCode    = "C_code";
            data.CCOLSetting = "C_max";
            data.CCOLTType   = "C_type";

            // Collect everything
            data.Elements.Add(new CCOLElement()
            {
                Define = "ctdummy", Naam = "dummy"
            });

            // Add last, nameless element for maximum #define
            data.Elements.Add(new CCOLElement()
            {
                Define = "CTMAX"
            });

            data.SetMax();
            return(data);
        }
コード例 #7
0
        private CCOLElemListData CollectAllGeheugenElementen(ControllerModel controller)
        {
            CCOLElemListData data = new CCOLElemListData();

            data.CCOLCode = "MM_code";

            data.Elements.Add(new CCOLElement()
            {
                Define = "mperiod", Naam = "PERIOD"
            });

            // Collect everything
            // TODO

            // Add last, nameless element for maximum #define
            data.Elements.Add(new CCOLElement()
            {
                Define = "MEMAX"
            });

            data.SetMax();
            return(data);
        }
コード例 #8
0
        private CCOLElemListData CollectAllHulpElementen(ControllerModel controller)
        {
            CCOLElemListData data = new CCOLElemListData();

            data.CCOLCode = "H_code";

            // Collect everything
            data.Elements.Add(new CCOLElement()
            {
                Define = "hedummy", Naam = "dummy"
            });

            // TODO

            // Add last, nameless element for maximum #define
            data.Elements.Add(new CCOLElement()
            {
                Define = "HEMAX"
            });

            data.SetMax();
            return(data);
        }
コード例 #9
0
        private CCOLElemListData CollectAllParameters(ControllerModel controller)
        {
            CCOLElemListData data = new CCOLElemListData();

            data.CCOLCode    = "PRM_code";
            data.CCOLSetting = "PRM";
            data.CCOLTType   = "PRM_type";

            // Collect everything
            data.Elements.Add(new CCOLElement()
            {
                Define = "prmfb", Naam = "FB", Instelling = "240", TType = "TS_type"
            });

            // Detectie aanvraag functie
            foreach (DetectorModel dm in AlleDetectoren)
            {
                if (dm.Aanvraag == Models.Enumerations.DetectorAanvraagTypeEnum.Geen)
                {
                    continue;
                }

                int set = 0;
                switch (dm.Aanvraag)
                {
                case Models.Enumerations.DetectorAanvraagTypeEnum.Uit:
                    set = 0;
                    break;

                case Models.Enumerations.DetectorAanvraagTypeEnum.RnietTRG:
                    set = 1;
                    break;

                case Models.Enumerations.DetectorAanvraagTypeEnum.Rood:
                    set = 2;
                    break;

                case Models.Enumerations.DetectorAanvraagTypeEnum.RoodGeel:
                    set = 3;
                    break;
                }
                data.Elements.Add(new CCOLElement()
                {
                    Define = $"prmd{dm.Naam}", Naam = $"d{dm.Naam}", Instelling = $"{set}", TType = "0"
                });
            }

            // Detectie verlengkriterium
            foreach (DetectorModel dm in AlleDetectoren)
            {
                if (dm.Verlengen == Models.Enumerations.DetectorVerlengenTypeEnum.Geen)
                {
                    continue;
                }

                int set = 0;
                switch (dm.Verlengen)
                {
                case Models.Enumerations.DetectorVerlengenTypeEnum.Uit:
                    set = 0;
                    break;

                case Models.Enumerations.DetectorVerlengenTypeEnum.Kopmax:
                    set = 1;
                    break;

                //case Models.Enumerations.DetectorVerlengenTypeEnum.MK3:
                //    set = 2;
                //    break;
                case Models.Enumerations.DetectorVerlengenTypeEnum.MK2:
                    set = 3;
                    break;
                }
                data.Elements.Add(new CCOLElement()
                {
                    Define = $"prmmkd{dm.Naam}", Naam = $"mkd{dm.Naam}", Instelling = $"{set}", TType = "0"
                });
            }

            // Maxgroentijden
            foreach (GroentijdenSetModel mgset in controller.GroentijdenSets)
            {
                foreach (GroentijdModel mgm in mgset.Groentijden)
                {
                    FaseCyclusModel thisfcm = null;
                    foreach (FaseCyclusModel fcm in controller.Fasen)
                    {
                        if (fcm.Define == mgm.FaseCyclus)
                        {
                            thisfcm = fcm;
                            break;
                        }
                    }
                    if (thisfcm == null)
                    {
                        throw new NotImplementedException($"Maxgroentijd voor niet bestaande fase {mgm.FaseCyclus} opgegeven.");
                    }

                    data.Elements.Add(new CCOLElement()
                    {
                        Define     = $"prm{mgset.Naam.ToLower()}{thisfcm.Naam}",
                        Naam       = $"mk{mgset.Naam.ToLower()}{thisfcm.Naam}",
                        Instelling = $"{mgm.Waarde}", TType = "TE_type"
                    });
                }
            }

            // Vooruit realisaties
            foreach (FaseCyclusModel fcm in controller.Fasen)
            {
                data.Elements.Add(new CCOLElement()
                {
                    Define     = $"prmmlfpr{fcm.Naam}",
                    Naam       = $"mlfpr{fcm.Naam}",
                    Instelling = "1",
                    TType      = "0"
                });
            }

            // Alternatieven
            if (controller.ModuleMolen.LangstWachtendeAlternatief)
            {
                // alternatieve max. groentijd
                foreach (FaseCyclusModel fcm in controller.Fasen)
                {
                    data.Elements.Add(new CCOLElement()
                    {
                        Define     = $"prmaltg{fcm.Naam}",
                        Naam       = $"altg{fcm.Naam}",
                        Instelling = "60",
                        TType      = "TE_type"
                    });
                }
                // alternatieve realisatieruimte
                foreach (FaseCyclusModel fcm in controller.Fasen)
                {
                    data.Elements.Add(new CCOLElement()
                    {
                        Define     = $"prmaltp{fcm.Naam}",
                        Naam       = $"altp{fcm.Naam}",
                        Instelling = "60",
                        TType      = "TE_type"
                    });
                }
            }

            // Add last, nameless element for maximum #define
            data.Elements.Add(new CCOLElement()
            {
                Define = "PRMMAX"
            });


            data.SetMax();
            return(data);
        }
コード例 #10
0
        private CCOLElemListData CollectAllSchakelaars(ControllerModel controller)
        {
            CCOLElemListData data = new CCOLElemListData();

            data.CCOLCode    = "SCH_code";
            data.CCOLSetting = "SCH";

            data.Elements.Add(new CCOLElement()
            {
                Define = "schbmfix", Naam = "bmfix", Instelling = "1"
            });

            // Collect schwg
            foreach (FaseCyclusModel fcm in controller.Fasen)
            {
                if (fcm.VasteAanvraag != Models.Enumerations.NooitAltijdAanUitEnum.Nooit &&
                    fcm.VasteAanvraag != Models.Enumerations.NooitAltijdAanUitEnum.Altijd)
                {
                    data.Elements.Add(new CCOLElement()
                    {
                        Define     = $"schca{fcm.Naam}",
                        Naam       = $"CA{fcm.Naam}",
                        Instelling = fcm.VasteAanvraag == Models.Enumerations.NooitAltijdAanUitEnum.SchAan ? "1" : "0"
                    });
                }
            }
            foreach (FaseCyclusModel fcm in controller.Fasen)
            {
                if (fcm.Wachtgroen != Models.Enumerations.NooitAltijdAanUitEnum.Nooit &&
                    fcm.Wachtgroen != Models.Enumerations.NooitAltijdAanUitEnum.Altijd)
                {
                    data.Elements.Add(new CCOLElement()
                    {
                        Define     = $"schwg{fcm.Naam}",
                        Naam       = $"WG{fcm.Naam}",
                        Instelling = fcm.Wachtgroen == Models.Enumerations.NooitAltijdAanUitEnum.SchAan ? "1" : "0"
                    });
                }
            }
            foreach (FaseCyclusModel fcm in controller.Fasen)
            {
                if (fcm.Meeverlengen != Models.Enumerations.NooitAltijdAanUitEnum.Nooit &&
                    fcm.Meeverlengen != Models.Enumerations.NooitAltijdAanUitEnum.Altijd)
                {
                    data.Elements.Add(new CCOLElement()
                    {
                        Define     = $"schmv{fcm.Naam}",
                        Naam       = $"MV{fcm.Naam}",
                        Instelling = fcm.Meeverlengen == Models.Enumerations.NooitAltijdAanUitEnum.SchAan ? "1" : "0"
                    });
                }
            }

            // Alternatieven
            if (controller.ModuleMolen.LangstWachtendeAlternatief)
            {
                // alternatieven wel/niet toestaan
                foreach (FaseCyclusModel fcm in controller.Fasen)
                {
                    data.Elements.Add(new CCOLElement()
                    {
                        Define     = $"schaltg{fcm.Naam}",
                        Naam       = $"altg{fcm.Naam}",
                        Instelling = "1"
                    });
                }
            }

            // Add last, nameless element for maximum #define
            data.Elements.Add(new CCOLElement()
            {
                Define = "SCHMAX"
            });

            data.SetMax();
            return(data);
        }