Пример #1
0
        private void UpdateValue(UAVCommons.UAVSingleParameter param)
        {
            if (param != null)
            {
                double             min = 0;
                double             max = 0;
                UAVSingleParameter p   = selectedParameter;
                // Check if is Servo
                if ((selectedParameter is UAVStructure) && (((UAVStructure)selectedParameter).values.ContainsKey("Value")))
                {
                    p = ((UAVStructure)selectedParameter)["Value"];
                }

                if ((p is UAVStructure) && (((UAVStructure)p)["Min"] != null))
                {
                    min = Convert.ToDouble(((UAVStructure)p)["Min"].Value.ToString());
                }
                else
                {
                    min = Convert.ToDouble(p.Min.ToString());
                }


                if ((p is UAVStructure) && (((UAVStructure)p)["Max"] != null))
                {
                    max = Convert.ToDouble(((UAVStructure)p)["Max"].Value);
                }
                else
                {
                    max = Convert.ToDouble(p.Max.ToString());
                }



                double result = 0;
                if (Double.TryParse(Convert.ToString(param.Value), out result))
                {
                    if (output)
                    {
                        if (ValueBar.InvokeRequired)
                        {
                            ValueBar.Invoke((MethodInvoker) delegate
                            {
                                ValueBar.Minimum = Convert.ToDecimal(min);
                                ValueBar.Maximum = Convert.ToDecimal(max);
                                if ((Convert.ToDouble(param.Value) > min) && (Convert.ToDouble(param.Value) < max))
                                {
                                    ValueBar.Value = Convert.ToDecimal(Convert.ToDouble(param.Value));
                                }
                                ValueBar.Refresh();
                            });
                        }
                        else
                        {
                            ValueBar.Minimum = Convert.ToDecimal(min);
                            ValueBar.Maximum = Convert.ToDecimal(max);
                            if ((Convert.ToDouble(param.Value) > min) && (Convert.ToDouble(param.Value) < max))
                            {
                                ValueBar.Value = Convert.ToDecimal(Convert.ToDouble(param.Value));
                            }

                            ValueBar.Invalidate();
                        }
                    }
                    else
                    {
                        if (valueTracker.InvokeRequired)
                        {
                            valueTracker.Invoke((MethodInvoker) delegate
                            {
                                valueTracker.Maximum = Convert.ToDecimal(max);
                                valueTracker.Minimum = Convert.ToDecimal(min);
                                if ((Convert.ToDouble(param.Value) > min) && (Convert.ToDouble(param.Value) < max))
                                {
                                    valueTracker.Value = Convert.ToDecimal(Convert.ToDouble(param.Value));
                                }
                                valueTracker.TickFrequency = 10;
                                valueTracker.TickStyle     = TickStyle.Both;
                            });



                            valueTracker.Invalidate();
                        }
                        else
                        {
                            // valueTracker.Value = Convert.ToDecimal(param.Value);
                            valueTracker.TickFrequency = 10;
                            valueTracker.TickStyle     = TickStyle.Both;
                            valueTracker.Maximum       = Convert.ToDecimal(max);
                            valueTracker.Minimum       = Convert.ToDecimal(min);
                            if ((param.DoubleValue > min) && (param.DoubleValue < max))
                            {
                                valueTracker.Value = Convert.ToDecimal(param.Value);
                            }
                            valueTracker.Invalidate();
                        }
                    }
                    if (lbl_value.InvokeRequired)
                    {
                        //    lbl_value.Invoke((MethodInvoker)(() => lbl_value.Text = param.Value.ToString()));
                        tb_max.Invoke((MethodInvoker)(() => tb_max.Text = max.ToString()));
                        tb_min.Invoke((MethodInvoker)(() => tb_min.Text = min.ToString()));
                        //  lbl_value.Invalidate();
                    }
                    else
                    {
                        tb_max.Text = max.ToString();
                        tb_min.Text = min.ToString();

                        lbl_value.Text = param.Value.ToString();
                        lbl_value.Invalidate();
                    }
                }
            }
        }