mirror of https://github.com/ArduPilot/ardupilot
81 lines
2.2 KiB
C#
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!"); }
|
|
}
|
|
|
|
}
|
|
}
|