Esempio n. 1
0
        private void ProcessItem(configitem item)
        {
            try
            {
                if (!MainV2.comPort.MAV.param.ContainsKey(item.paramname))
                {
                    return;
                }

                var value = (float)MainV2.comPort.MAV.param[item.paramname];

                if (value < item.min)
                {
                    item.min = value;
                }
                if (value > item.max)
                {
                    item.max = value;
                }

                var range = ParameterMetaDataRepository.GetParameterMetaData(item.paramname,
                                                                             ParameterMetaDataConstants.Range, MainV2.comPort.MAV.cs.firmware.ToString());
                var increment = ParameterMetaDataRepository.GetParameterMetaData(item.paramname,
                                                                                 ParameterMetaDataConstants.Increment, MainV2.comPort.MAV.cs.firmware.ToString());

                var rangeopt = range.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);

                if (rangeopt.Length > 1)
                {
                    item.min = float.Parse(rangeopt[0], CultureInfo.InvariantCulture);
                    item.max = float.Parse(rangeopt[1], CultureInfo.InvariantCulture);
                }

                var incrementf = 0.01f;
                if (increment.Length > 0)
                {
                    float.TryParse(increment, NumberStyles.Float, CultureInfo.InvariantCulture, out incrementf);
                }

                var RNG = new RangeControl(item.paramname, item.desc, item.title, incrementf, 1, item.min, item.max,
                                           value.ToString());
                RNG.Tag = item;

                RNG.Location = new Point(10, y);

                RNG.AttachEvents();

                RNG.ValueChanged += RNG_ValueChanged;

                ThemeManager.ApplyThemeTo(RNG);

                panel1.Controls.Add(RNG);

                y += RNG.Height;
            }
            catch (Exception ex)
            {
                CustomMessageBox.Show("Failed to process " + item.paramname + "\n" + ex);
            }
        }
Esempio n. 2
0
        void ProcessItem(configitem item)
        {
            try
            {
                float value = (float)MainV2.comPort.param[item.paramname];

                if (value < item.min)
                {
                    item.min = value;
                }
                if (value > item.max)
                {
                    item.max = value;
                }

                ParameterMetaDataRepository _parameterMetaDataRepository = new ParameterMetaDataRepository();

                string range     = _parameterMetaDataRepository.GetParameterMetaData(item.paramname, ParameterMetaDataConstants.Range);
                string increment = _parameterMetaDataRepository.GetParameterMetaData(item.paramname, ParameterMetaDataConstants.Increment);

                string[] rangeopt = range.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);

                if (rangeopt.Length > 1)
                {
                    item.min = float.Parse(rangeopt[0], System.Globalization.CultureInfo.InvariantCulture);
                    item.max = float.Parse(rangeopt[1], System.Globalization.CultureInfo.InvariantCulture);
                }

                float incrementf = 0.01f;
                if (increment.Length > 0)
                {
                    float.TryParse(increment, out incrementf);
                }

                ArdupilotMega.Controls.RangeControl RNG = new ArdupilotMega.Controls.RangeControl(item.paramname, item.desc, item.title, incrementf, 1, item.min, item.max, value.ToString());
                RNG.Tag = item;

                RNG.Location = new Point(10, y);

                RNG.AttachEvents();

                RNG.ValueChanged += RNG_ValueChanged;

                ThemeManager.ApplyThemeTo(RNG);

                panel1.Controls.Add(RNG);

                y += RNG.Height;
            }
            catch (Exception ex) { CustomMessageBox.Show("Failed to process " + item.paramname + "\n" + ex.ToString()); }
        }
Esempio n. 3
0
        /// <summary>
        /// Sets the value of a single configuration item
        /// </summary>
        /// <param name="configItem"></param>
        /// <returns></returns>
        public ConfigItem Set(ConfigItem configItem)
        {
            ConfigItem retval = configItem;

            //  If we have a brand new item, add it:
            if (configItem.Id == 0)
            {
                var newItem = new configitem
                {
                    application = configItem.Application,
                    machine     = configItem.Machine ?? "",
                    name        = configItem.Name,
                    value       = configItem.Value,
                    updated     = DateTime.Now
                };

                _context.configitems.Add(newItem);
                _context.SaveChanges();

                retval.Id = newItem.id;
            }
            else
            {
                //  Otherwise, find the existing item and update it:
                var query = from item in _context.configitems
                            where item.id == configItem.Id
                            select item;

                if (query.Any())
                {
                    var item = query.FirstOrDefault();

                    item.application = configItem.Application;
                    item.name        = configItem.Name;
                    item.value       = configItem.Value;
                    item.machine     = configItem.Machine ?? "";
                    item.updated     = DateTime.Now;

                    _context.SaveChanges();
                }
            }

            return(retval);
        }
        /// <summary>
        /// The template xml for the screen
        /// </summary>
        /// <param name="FileName"></param>
        public void LoadXML(string FileName)
        {
            using (XmlReader reader = XmlReader.Create(FileName))
            {
                reader.Read();
                reader.ReadStartElement("simple");

                while (!reader.EOF)
                {
                    reader.ReadToFollowing("ac");

                    if (reader.Name == "")
                        break;

                    XmlReader acinner = reader.ReadSubtree();

                    while (acinner.ReadToFollowing("param"))
                    {
                        XmlReader inner = acinner.ReadSubtree();

                        configitem item = new configitem();

                        while (inner.Read())
                        {
                            inner.MoveToElement();
                            if (inner.IsStartElement())
                            {
                                switch (inner.Name.ToLower())
                                {
                                    case "title":
                                        item.title = inner.ReadString();
                                        break;
                                    case "desc":
                                        item.desc = inner.ReadString();
                                        break;
                                    case "name":
                                        item.paramname = inner.ReadString();
                                        break;
                                    case "value":
                                        item.paramvalue = float.Parse(inner.ReadString(), System.Globalization.NumberFormatInfo.InvariantInfo);
                                        break;
                                    case "min":
                                        item.min = float.Parse(inner.ReadString(), System.Globalization.NumberFormatInfo.InvariantInfo);
                                        break;
                                    case "max":
                                        item.max = float.Parse(inner.ReadString(), System.Globalization.NumberFormatInfo.InvariantInfo);
                                        break;
                                    case "relation":
                                        XmlReader relation = reader.ReadSubtree();
                                        relationitem relitem = new relationitem();
                                        while (relation.Read())
                                        {
                                            relation.MoveToElement();
                                            if (relation.Name == "param")
                                            {
                                                relitem.paramaname = inner.ReadString();
                                            }
                                            else if (relation.Name == "multiplier")
                                            {
                                                relitem.multiplier = float.Parse(inner.ReadString(), System.Globalization.NumberFormatInfo.InvariantInfo);
                                            }
                                        }

                                        item.relations.Add(relitem);
                                        break;
                                }
                            }
                        }
                        // process item to screen
                        ProcessItem(item);
                    }
                }
            }
        }
        void ProcessItem(configitem item)
        {
            try
            {
                float value = (float)MainV2.comPort.MAV.param[item.paramname];

                if (value < item.min)
                    item.min = value;
                if (value > item.max)
                    item.max = value;

                string range = ParameterMetaDataRepository.GetParameterMetaData(item.paramname, ParameterMetaDataConstants.Range);
                string increment = ParameterMetaDataRepository.GetParameterMetaData(item.paramname, ParameterMetaDataConstants.Increment);

                string[] rangeopt = range.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);

                if (rangeopt.Length > 1)
                {
                    item.min = float.Parse(rangeopt[0], System.Globalization.CultureInfo.InvariantCulture);
                    item.max = float.Parse(rangeopt[1], System.Globalization.CultureInfo.InvariantCulture);
                }

                float incrementf = 0.01f;
                if (increment.Length > 0)
                    float.TryParse(increment,NumberStyles.Float, CultureInfo.InvariantCulture, out incrementf);

                Controls.RangeControl RNG = new Controls.RangeControl(item.paramname, item.desc, item.title, incrementf, 1, item.min, item.max, value.ToString());
                RNG.Tag = item;

                RNG.Location = new Point(10, y);

                RNG.AttachEvents();

                RNG.ValueChanged += RNG_ValueChanged;

                ThemeManager.ApplyThemeTo(RNG);

                panel1.Controls.Add(RNG);

                y += RNG.Height;
            }
            catch (Exception ex) { CustomMessageBox.Show("Failed to process " + item.paramname + "\n" + ex.ToString()); }
        }
Esempio n. 6
0
        /// <summary>
        ///     The template xml for the screen
        /// </summary>
        /// <param name="FileName"></param>
        public void LoadXML(string FileName)
        {
            using (var reader = XmlReader.Create(FileName))
            {
                reader.Read();
                reader.ReadStartElement("simple");

                while (!reader.EOF)
                {
                    reader.ReadToFollowing("ac");

                    if (reader.Name == "")
                    {
                        break;
                    }

                    var acinner = reader.ReadSubtree();

                    while (acinner.ReadToFollowing("param"))
                    {
                        var inner = acinner.ReadSubtree();

                        var item = new configitem();

                        while (inner.Read())
                        {
                            inner.MoveToElement();
                            if (inner.IsStartElement())
                            {
                                switch (inner.Name.ToLower())
                                {
                                case "title":
                                    item.title = inner.ReadString();
                                    break;

                                case "desc":
                                    item.desc = inner.ReadString();
                                    break;

                                case "name":
                                    item.paramname = inner.ReadString();
                                    break;

                                case "value":
                                    item.paramvalue = float.Parse(inner.ReadString(), NumberFormatInfo.InvariantInfo);
                                    break;

                                case "min":
                                    item.min = float.Parse(inner.ReadString(), NumberFormatInfo.InvariantInfo);
                                    break;

                                case "max":
                                    item.max = float.Parse(inner.ReadString(), NumberFormatInfo.InvariantInfo);
                                    break;

                                case "relation":
                                    var relation = reader.ReadSubtree();
                                    var relitem  = new relationitem();
                                    while (relation.Read())
                                    {
                                        relation.MoveToElement();
                                        if (relation.Name == "param")
                                        {
                                            relitem.paramaname = inner.ReadString();
                                        }
                                        else if (relation.Name == "multiplier")
                                        {
                                            relitem.multiplier = float.Parse(inner.ReadString(),
                                                                             NumberFormatInfo.InvariantInfo);
                                        }
                                    }

                                    item.relations.Add(relitem);
                                    break;
                                }
                            }
                        }
                        // process item to screen
                        ProcessItem(item);
                    }
                }
            }
        }