ardupilot/Tools/ArdupilotMegaPlanner/Controls/MavlinkNumericUpDown.cs

81 lines
2.2 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Collections;
namespace ArdupilotMega.Controls
{
public class MavlinkNumericUpDown : NumericUpDown
{
[System.ComponentModel.Browsable(true)]
public float Min { get; set; }
[System.ComponentModel.Browsable(true)]
public float Max { get; set; }
[System.ComponentModel.Browsable(true)]
public string ParamName { get; set; }
[System.ComponentModel.Browsable(true)]
public Hashtable param { get; set; }
float _scale = 1;
public MavlinkNumericUpDown()
{
Min = 0;
Max = 1;
this.Enabled = false;
}
public void setup(float Min, float Max, float Scale, float Increment, string paramname, Hashtable paramlist)
{
this.ValueChanged -= MavlinkNumericUpDown_ValueChanged;
_scale = Scale;
this.Minimum = (decimal)(Min);
this.Maximum = (decimal)(Max);
this.Increment = (decimal)(Increment);
this.ParamName = paramname;
this.param = paramlist;
if (paramlist.ContainsKey(paramname))
{
this.Enabled = true;
decimal value = (decimal)((float)paramlist[paramname] / _scale);
if (value < this.Minimum)
this.Minimum = value;
if (value > this.Maximum)
this.Maximum = value;
this.Value = value;
}
else
{
this.Enabled = false;
}
this.ValueChanged += new EventHandler(MavlinkNumericUpDown_ValueChanged);
}
void MavlinkNumericUpDown_ValueChanged(object sender, EventArgs e)
{
try
{
bool ans = MainV2.comPort.setParam(ParamName, (float)this.Value * _scale);
if (ans == false)
CustomMessageBox.Show("Set " + ParamName + " Failed 1!");
}
catch { CustomMessageBox.Show("Set " + ParamName + " Failed 2!"); }
}
}
}