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(); } } } }