Mission Planner 1.2.21

Antenna Tracker mod from William Bryan
Scaling mods
battery screen mods
failsafe screen pwm checking
remove reverse radio options when we are using a quad
config menu reorganise
add Ateryx stuff
This commit is contained in:
Michael Oborne 2012-11-25 13:42:46 +08:00
parent eaf868a0b6
commit 399e5d97a8
67 changed files with 10536 additions and 1082 deletions

View File

@ -87,13 +87,13 @@
<Compile Include="..\Attributes\PrivateAttribute.cs">
<Link>Linked\PrivateAttribute.cs</Link>
</Compile>
<Compile Include="..\Comms\CommsSerialInterface.cs">
<Link>Linked\CommsSerialInterface.cs</Link>
</Compile>
<Compile Include="..\Comms\CommsSerialPort.cs">
<Link>Linked\CommsSerialPort.cs</Link>
<SubType>Component</SubType>
</Compile>
<Compile Include="..\Comms\ICommsSerial.cs">
<Link>Linked\ICommsSerial.cs</Link>
</Compile>
<Compile Include="..\Controls\BackstageView\BackstageView.cs">
<Link>Linked\BackstageView.cs</Link>
<SubType>UserControl</SubType>

View File

@ -23,6 +23,8 @@ namespace ArdupilotMega.Antenna
public int TiltEndRange { get; set; }
public int PanPWMRange { get; set; }
public int TiltPWMRange { get; set; }
public int PanPWMCenter { get; set; }
public int TiltPWMCenter { get; set; }
public bool PanReverse { get { return _panreverse == 1; } set { _panreverse = value == true ? -1 : 1; } }
public bool TiltReverse { get { return _tiltreverse == 1; } set { _tiltreverse = value == true ? -1 : 1; } }
@ -88,7 +90,7 @@ namespace ArdupilotMega.Antenna
// get relative center based on tracking center
double rangeleft = PanStartRange - TrimPan;
double rangeright = PanEndRange - TrimPan;
double centerpos = 1500;
double centerpos = PanPWMCenter;
// get the output angle the tracker needs to point and constrain the output to the allowed options
short PointAtAngle = Constrain(wrap_180(Angle - TrimPan), PanStartRange, PanEndRange);
@ -109,7 +111,7 @@ namespace ArdupilotMega.Antenna
short PointAtAngle = Constrain((Angle - TrimTilt), TiltStartRange, TiltEndRange);
int target = (int)((((PointAtAngle / range) * 2.0) * (TiltPWMRange / 2) * _tiltreverse + 1500));
int target = (int)((((PointAtAngle / range) * 2.0) * (TiltPWMRange / 2) * _tiltreverse + TiltPWMCenter));
// Console.WriteLine("T " + Angle + " " + target + " " + PointAtAngle);

View File

@ -23,6 +23,8 @@ namespace ArdupilotMega.Antenna
public int TiltEndRange { get; set; }
public int PanPWMRange { get; set; }
public int TiltPWMRange { get; set; }
public int PanPWMCenter { get; set; }
public int TiltPWMCenter { get; set; }
public bool PanReverse { get { return _panreverse == 1; } set { _panreverse = value == true ? -1 : 1; } }
public bool TiltReverse { get { return _tiltreverse == 1; } set { _tiltreverse = value == true ? -1 : 1; } }

View File

@ -18,6 +18,8 @@ namespace ArdupilotMega.Antenna
int TiltEndRange { get; set; }
int PanPWMRange { get; set; }
int TiltPWMRange { get; set; }
int PanPWMCenter { get; set; }
int TiltPWMCenter { get; set; }
bool PanReverse { get; set; }
bool TiltReverse { get; set; }

View File

@ -2,6 +2,7 @@
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace ArdupilotMega.Antenna
{
@ -23,6 +24,8 @@ namespace ArdupilotMega.Antenna
public int TiltEndRange { get; set; }
public int PanPWMRange { get; set; }
public int TiltPWMRange { get; set; }
public int PanPWMCenter { get; set; }
public int TiltPWMCenter { get; set; }
public bool PanReverse { get { return _panreverse == -1; } set { _panreverse = value == true ? -1 : 1; } }
public bool TiltReverse { get { return _tiltreverse == -1; } set { _tiltreverse = value == true ? -1 : 1; } }
@ -33,6 +36,14 @@ namespace ArdupilotMega.Antenna
byte PanAddress = 0;
byte TiltAddress = 1;
private const byte SetTarget = 0x84;
private const byte SetSpeed = 0x87;
private const byte SetAccel = 0x89;
private const byte GetPos = 0x90;
private const byte GetState = 0x93;
private const byte GetErrors = 0xA1;
private const byte GoHome = 0xA2;
public bool Init()
{
@ -56,27 +67,41 @@ namespace ArdupilotMega.Antenna
return true;
}
public bool Setup()
{
int target = 100;
// speed
var buffer = new byte[] { 0x87, PanAddress, (byte)(target & 0x7F), (byte)((target >> 7) & 0x7F) };
ComPort.Write(buffer, 0, buffer.Length);
buffer = new byte[] { 0x87, TiltAddress, (byte)(target & 0x7F), (byte)((target >> 7) & 0x7F) };
ComPort.Write(buffer, 0, buffer.Length);
SendCompactMaestroCommand(SetSpeed, 0, PanAddress, target);
SendCompactMaestroCommand(SetSpeed, 0, TiltAddress, target);
// accel
target = 5;
buffer = new byte[] { 0x89, PanAddress, (byte)(target & 0x7F), (byte)((target >> 7) & 0x7F) };
ComPort.Write(buffer, 0, buffer.Length);
SendCompactMaestroCommand(SetAccel, 0, PanAddress, target);
SendCompactMaestroCommand(SetAccel, 0, TiltAddress, target);
buffer = new byte[] { 0x89, TiltAddress, (byte)(target & 0x7F), (byte)((target >> 7) & 0x7F) };
ComPort.Write(buffer, 0, buffer.Length);
//getCenterPWs();
return true;
}
void getCenterPWs()
{
byte[] buffer;
// set all to home (center)
SendCompactMaestroCommand(GoHome);
while (SendCompactMaestroCommand(GetState, 1)[0] == 0x01) { }
// get center position -- pan
buffer = SendCompactMaestroCommand(GetPos, 2, PanAddress);
this.PanPWMCenter = (int)((buffer[1] >> 8) | buffer[0]);
// get center position -- tilt
buffer = SendCompactMaestroCommand(GetPos, 2, TiltAddress);
this.TiltPWMCenter = (int)((buffer[1] >> 8) | buffer[0]);
}
double wrap_180(double input)
{
if (input > 180)
@ -86,51 +111,29 @@ namespace ArdupilotMega.Antenna
return input;
}
double wrap_range(double input, double range)
{
if (input > range)
return input - 360;
if (input < -range)
return input + 360;
return input;
}
public bool Pan(double Angle)
{
double range = Math.Abs(PanStartRange - PanEndRange);
double angleRange = Math.Abs(this.PanStartRange - this.PanEndRange);
// get relative center based on tracking center
double rangeleft = PanStartRange - TrimPan;
double rangeright = PanEndRange - TrimPan;
double centerpos = 127;
double pulseWidth = ((((double)this.PanPWMRange) / angleRange) * wrap_180(Angle- TrimPan) * _panreverse) + (double)this.PanPWMCenter;
// get the output angle the tracker needs to point and constrain the output to the allowed options
short PointAtAngle = Constrain(wrap_180(Angle - TrimPan), PanStartRange, PanEndRange);
// conver the angle into a 0-255 value
byte target = (byte)((((PointAtAngle / range) * 2.0) * 127 + centerpos) * _panreverse);
// Console.WriteLine("P " + Angle + " " + target + " " + PointAtAngle);
var buffer = new byte[] { 0xff, PanAddress, target };
ComPort.Write(buffer, 0, buffer.Length);
short target = Constrain(pulseWidth, this.PanPWMCenter - (this.PanPWMRange / 2), this.PanPWMCenter + (this.PanPWMRange / 2));
target *= 4;
SendCompactMaestroCommand(SetTarget, 0, PanAddress, target);
return true;
}
public bool Tilt(double Angle)
{
double range = Math.Abs(TiltStartRange - TiltEndRange);
double angleRange = Math.Abs(this.TiltStartRange - this.TiltEndRange);
short PointAtAngle = Constrain((Angle - TrimTilt), TiltStartRange, TiltEndRange);
double pulseWidth = ((((double)this.TiltPWMRange) / angleRange) * (Angle - TrimTilt) * _tiltreverse) + (double)this.TiltPWMCenter;
byte target = (byte)((((PointAtAngle / range) * 2) * 127 + 127) * _tiltreverse);
//Console.WriteLine("T " + Angle + " " + target + " " + PointAtAngle);
var buffer = new byte[] { 0xff, TiltAddress, target };
ComPort.Write(buffer, 0, buffer.Length);
short target = Constrain(pulseWidth, this.TiltPWMCenter - (this.TiltPWMRange / 2), this.TiltPWMCenter + (this.TiltPWMRange / 2));
target *= 4;
SendCompactMaestroCommand(SetTarget, 0, TiltAddress, target);
return true;
}
@ -160,5 +163,25 @@ namespace ArdupilotMega.Antenna
return (short)max;
return (short)input;
}
byte[] SendCompactMaestroCommand(byte cmd, int respByteCount = 0, byte addr = 0xFF, int data = -1)
{
byte[] buffer;
if (addr == 0xFF)
buffer = new byte[] { cmd };
else if (data < 0)
buffer = new byte[] { cmd, addr };
else
buffer = new byte[] { cmd, addr, (byte)(data & 0x7F), (byte)((data >> 7) & 0x7F) };
ComPort.DiscardInBuffer();
ComPort.Write(buffer, 0, buffer.Length);
if (respByteCount > 0)
{
buffer = new byte[respByteCount];
while (ComPort.BytesToRead < respByteCount) { }
ComPort.Read(buffer, 0, respByteCount);
}
return buffer;
}
}
}

View File

@ -56,6 +56,10 @@
this.LBL_pantrim = new System.Windows.Forms.Label();
this.LBL_tilttrim = new System.Windows.Forms.Label();
this.BUT_find = new ArdupilotMega.Controls.MyButton();
this.TXT_centerpan = new System.Windows.Forms.TextBox();
this.TXT_centertilt = new System.Windows.Forms.TextBox();
this.label13 = new System.Windows.Forms.Label();
this.label14 = new System.Windows.Forms.Label();
((System.ComponentModel.ISupportInitialize)(this.TRK_pantrim)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.TRK_tilttrim)).BeginInit();
this.SuspendLayout();
@ -68,6 +72,7 @@
resources.GetString("CMB_interface.Items1")});
resources.ApplyResources(this.CMB_interface, "CMB_interface");
this.CMB_interface.Name = "CMB_interface";
this.CMB_interface.SelectedIndexChanged += new System.EventHandler(this.CMB_interface_SelectedIndexChanged);
//
// label1
//
@ -230,10 +235,36 @@
this.BUT_find.UseVisualStyleBackColor = true;
this.BUT_find.Click += new System.EventHandler(this.BUT_find_Click);
//
// TXT_centerpan
//
resources.ApplyResources(this.TXT_centerpan, "TXT_centerpan");
this.TXT_centerpan.Name = "TXT_centerpan";
this.TXT_centerpan.TextChanged += new System.EventHandler(this.TXT_centerpan_TextChanged);
//
// TXT_centertilt
//
resources.ApplyResources(this.TXT_centertilt, "TXT_centertilt");
this.TXT_centertilt.Name = "TXT_centertilt";
this.TXT_centertilt.TextChanged += new System.EventHandler(this.TXT_centertilt_TextChanged);
//
// label13
//
resources.ApplyResources(this.label13, "label13");
this.label13.Name = "label13";
//
// label14
//
resources.ApplyResources(this.label14, "label14");
this.label14.Name = "label14";
//
// Tracker
//
resources.ApplyResources(this, "$this");
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.Controls.Add(this.label14);
this.Controls.Add(this.label13);
this.Controls.Add(this.TXT_centertilt);
this.Controls.Add(this.TXT_centerpan);
this.Controls.Add(this.BUT_find);
this.Controls.Add(this.LBL_tilttrim);
this.Controls.Add(this.LBL_pantrim);
@ -298,5 +329,9 @@
private System.Windows.Forms.Label LBL_pantrim;
private System.Windows.Forms.Label LBL_tilttrim;
private Controls.MyButton BUT_find;
private System.Windows.Forms.TextBox TXT_centerpan;
private System.Windows.Forms.TextBox TXT_centertilt;
private System.Windows.Forms.Label label13;
private System.Windows.Forms.Label label14;
}
}

View File

@ -99,6 +99,16 @@ namespace ArdupilotMega.Antenna
threadrun = false;
BUT_connect.Text = "Connect";
tracker.Close();
foreach (Control ctl in Controls)
{
if (ctl.Name.StartsWith("TXT_"))
ctl.Enabled = true;
if (ctl.Name.StartsWith("CMB_"))
ctl.Enabled = true;
}
BUT_find.Enabled = true;
//CustomMessageBox.Show("Disconnected!");
return;
}
@ -107,11 +117,11 @@ namespace ArdupilotMega.Antenna
tracker.ComPort.Close();
}
if (CMB_interface.Text == "Maestro")
if (CMB_interface.Text == interfaces.Maestro.ToString())
tracker = new ArdupilotMega.Antenna.Maestro();
if (CMB_interface.Text == "ArduTracker")
if (CMB_interface.Text == interfaces.ArduTracker.ToString())
tracker = new ArdupilotMega.Antenna.ArduTracker();
if (CMB_interface.Text == "DegreeTracker")
if (CMB_interface.Text == interfaces.DegreeTracker.ToString())
tracker = new ArdupilotMega.Antenna.DegreeTracker();
try
@ -140,6 +150,9 @@ namespace ArdupilotMega.Antenna
tracker.PanPWMRange = int.Parse(TXT_pwmrangepan.Text);
tracker.TiltPWMRange = int.Parse(TXT_pwmrangetilt.Text);
tracker.PanPWMCenter = int.Parse(TXT_centerpan.Text);
tracker.TiltPWMCenter = int.Parse(TXT_centertilt.Text);
}
catch (Exception ex) { CustomMessageBox.Show("Bad User input " + ex.Message); return; }
@ -147,8 +160,24 @@ namespace ArdupilotMega.Antenna
{
if (tracker.Setup())
{
if (TXT_centerpan.Text != tracker.PanPWMCenter.ToString())
TXT_centerpan.Text = tracker.PanPWMCenter.ToString();
if (TXT_centertilt.Text != tracker.TiltPWMCenter.ToString())
TXT_centertilt.Text = tracker.TiltPWMCenter.ToString();
tracker.PanAndTilt(0, 0);
foreach (Control ctl in Controls)
{
if(ctl.Name.StartsWith("TXT_"))
ctl.Enabled = false;
if (ctl.Name.StartsWith("CMB_"))
ctl.Enabled = false;
}
//BUT_find.Enabled = false;
t12 = new System.Threading.Thread(new System.Threading.ThreadStart(mainloop))
{
IsBackground = true,
@ -196,8 +225,8 @@ namespace ArdupilotMega.Antenna
int.TryParse(TXT_panrange.Text, out range);
TRK_pantrim.Minimum = range / 1 * -1;
TRK_pantrim.Maximum = range / 1;
TRK_pantrim.Minimum = range / 2 * -1;
TRK_pantrim.Maximum = range / 2;
}
private void TXT_tiltrange_TextChanged(object sender, EventArgs e)
@ -206,8 +235,8 @@ namespace ArdupilotMega.Antenna
int.TryParse(TXT_tiltrange.Text, out range);
TRK_tilttrim.Minimum = range / 1 * -1;
TRK_tilttrim.Maximum = range / 1;
TRK_tilttrim.Minimum = range / 2 * -1;
TRK_tilttrim.Maximum = range / 2;
}
private void CHK_revpan_CheckedChanged(object sender, EventArgs e)
@ -246,7 +275,7 @@ namespace ArdupilotMega.Antenna
});
// scan entire range withing 30 degrees
// scan half range within 30 degrees
float ans = checkpos((pan - float.Parse(TXT_panrange.Text) / 4), (pan + float.Parse(TXT_panrange.Text) / 4) - 1, 30);
// scan new range within 30 - little overlap
@ -257,7 +286,6 @@ namespace ArdupilotMega.Antenna
setpan(ans);
}
void setpan(float no)
@ -300,5 +328,20 @@ namespace ArdupilotMega.Antenna
return best;
}
private void CMB_interface_SelectedIndexChanged(object sender, EventArgs e)
{
}
private void TXT_centerpan_TextChanged(object sender, EventArgs e)
{
}
private void TXT_centertilt_TextChanged(object sender, EventArgs e)
{
}
}
}

View File

@ -147,7 +147,7 @@
<value>$this</value>
</data>
<data name="&gt;&gt;CMB_interface.ZOrder" xml:space="preserve">
<value>26</value>
<value>30</value>
</data>
<data name="label1.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
@ -174,7 +174,7 @@
<value>$this</value>
</data>
<data name="&gt;&gt;label1.ZOrder" xml:space="preserve">
<value>25</value>
<value>29</value>
</data>
<data name="CMB_baudrate.Items" xml:space="preserve">
<value>4800</value>
@ -219,7 +219,7 @@
<value>$this</value>
</data>
<data name="&gt;&gt;CMB_baudrate.ZOrder" xml:space="preserve">
<value>22</value>
<value>26</value>
</data>
<data name="CMB_serialport.Location" type="System.Drawing.Point, System.Drawing">
<value>210, 10</value>
@ -240,10 +240,10 @@
<value>$this</value>
</data>
<data name="&gt;&gt;CMB_serialport.ZOrder" xml:space="preserve">
<value>24</value>
<value>28</value>
</data>
<data name="TRK_pantrim.Location" type="System.Drawing.Point, System.Drawing">
<value>153, 81</value>
<value>153, 96</value>
</data>
<data name="TRK_pantrim.Size" type="System.Drawing.Size, System.Drawing">
<value>375, 45</value>
@ -261,7 +261,7 @@
<value>$this</value>
</data>
<data name="&gt;&gt;TRK_pantrim.ZOrder" xml:space="preserve">
<value>21</value>
<value>25</value>
</data>
<data name="TXT_panrange.Location" type="System.Drawing.Point, System.Drawing">
<value>83, 81</value>
@ -285,13 +285,13 @@
<value>$this</value>
</data>
<data name="&gt;&gt;TXT_panrange.ZOrder" xml:space="preserve">
<value>20</value>
<value>24</value>
</data>
<data name="label3.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="label3.Location" type="System.Drawing.Point, System.Drawing">
<value>326, 65</value>
<value>326, 80</value>
</data>
<data name="label3.Size" type="System.Drawing.Size, System.Drawing">
<value>27, 13</value>
@ -312,7 +312,7 @@
<value>$this</value>
</data>
<data name="&gt;&gt;label3.ZOrder" xml:space="preserve">
<value>19</value>
<value>23</value>
</data>
<data name="label4.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
@ -339,13 +339,13 @@
<value>$this</value>
</data>
<data name="&gt;&gt;label4.ZOrder" xml:space="preserve">
<value>18</value>
<value>22</value>
</data>
<data name="label5.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="label5.Location" type="System.Drawing.Point, System.Drawing">
<value>83, 141</value>
<value>83, 161</value>
</data>
<data name="label5.Size" type="System.Drawing.Size, System.Drawing">
<value>39, 13</value>
@ -366,13 +366,13 @@
<value>$this</value>
</data>
<data name="&gt;&gt;label5.ZOrder" xml:space="preserve">
<value>14</value>
<value>18</value>
</data>
<data name="label6.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="label6.Location" type="System.Drawing.Point, System.Drawing">
<value>326, 141</value>
<value>326, 175</value>
</data>
<data name="label6.Size" type="System.Drawing.Size, System.Drawing">
<value>27, 13</value>
@ -393,10 +393,10 @@
<value>$this</value>
</data>
<data name="&gt;&gt;label6.ZOrder" xml:space="preserve">
<value>15</value>
<value>19</value>
</data>
<data name="TXT_tiltrange.Location" type="System.Drawing.Point, System.Drawing">
<value>83, 157</value>
<value>83, 177</value>
</data>
<data name="TXT_tiltrange.Size" type="System.Drawing.Size, System.Drawing">
<value>64, 20</value>
@ -417,10 +417,10 @@
<value>$this</value>
</data>
<data name="&gt;&gt;TXT_tiltrange.ZOrder" xml:space="preserve">
<value>16</value>
<value>20</value>
</data>
<data name="TRK_tilttrim.Location" type="System.Drawing.Point, System.Drawing">
<value>153, 157</value>
<value>153, 191</value>
</data>
<data name="TRK_tilttrim.Size" type="System.Drawing.Size, System.Drawing">
<value>375, 45</value>
@ -438,7 +438,7 @@
<value>$this</value>
</data>
<data name="&gt;&gt;TRK_tilttrim.ZOrder" xml:space="preserve">
<value>17</value>
<value>21</value>
</data>
<data name="label2.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
@ -465,13 +465,13 @@
<value>$this</value>
</data>
<data name="&gt;&gt;label2.ZOrder" xml:space="preserve">
<value>13</value>
<value>17</value>
</data>
<data name="label7.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="label7.Location" type="System.Drawing.Point, System.Drawing">
<value>12, 141</value>
<value>12, 161</value>
</data>
<data name="label7.Size" type="System.Drawing.Size, System.Drawing">
<value>21, 13</value>
@ -492,13 +492,13 @@
<value>$this</value>
</data>
<data name="&gt;&gt;label7.ZOrder" xml:space="preserve">
<value>12</value>
<value>16</value>
</data>
<data name="CHK_revpan.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="CHK_revpan.Location" type="System.Drawing.Point, System.Drawing">
<value>534, 83</value>
<value>534, 98</value>
</data>
<data name="CHK_revpan.Size" type="System.Drawing.Size, System.Drawing">
<value>46, 17</value>
@ -519,13 +519,13 @@
<value>$this</value>
</data>
<data name="&gt;&gt;CHK_revpan.ZOrder" xml:space="preserve">
<value>11</value>
<value>15</value>
</data>
<data name="CHK_revtilt.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="CHK_revtilt.Location" type="System.Drawing.Point, System.Drawing">
<value>534, 159</value>
<value>534, 193</value>
</data>
<data name="CHK_revtilt.Size" type="System.Drawing.Size, System.Drawing">
<value>46, 17</value>
@ -546,7 +546,7 @@
<value>$this</value>
</data>
<data name="&gt;&gt;CHK_revtilt.ZOrder" xml:space="preserve">
<value>10</value>
<value>14</value>
</data>
<data name="TXT_pwmrangepan.Location" type="System.Drawing.Point, System.Drawing">
<value>83, 107</value>
@ -570,10 +570,10 @@
<value>$this</value>
</data>
<data name="&gt;&gt;TXT_pwmrangepan.ZOrder" xml:space="preserve">
<value>9</value>
<value>13</value>
</data>
<data name="TXT_pwmrangetilt.Location" type="System.Drawing.Point, System.Drawing">
<value>83, 183</value>
<value>83, 203</value>
</data>
<data name="TXT_pwmrangetilt.Size" type="System.Drawing.Size, System.Drawing">
<value>64, 20</value>
@ -594,7 +594,7 @@
<value>$this</value>
</data>
<data name="&gt;&gt;TXT_pwmrangetilt.ZOrder" xml:space="preserve">
<value>8</value>
<value>12</value>
</data>
<data name="label8.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
@ -621,13 +621,13 @@
<value>$this</value>
</data>
<data name="&gt;&gt;label8.ZOrder" xml:space="preserve">
<value>7</value>
<value>11</value>
</data>
<data name="label9.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="label9.Location" type="System.Drawing.Point, System.Drawing">
<value>43, 186</value>
<value>43, 206</value>
</data>
<data name="label9.Size" type="System.Drawing.Size, System.Drawing">
<value>34, 13</value>
@ -648,13 +648,13 @@
<value>$this</value>
</data>
<data name="&gt;&gt;label9.ZOrder" xml:space="preserve">
<value>6</value>
<value>10</value>
</data>
<data name="label10.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="label10.Location" type="System.Drawing.Point, System.Drawing">
<value>45, 160</value>
<value>45, 180</value>
</data>
<data name="label10.Size" type="System.Drawing.Size, System.Drawing">
<value>34, 13</value>
@ -675,7 +675,7 @@
<value>$this</value>
</data>
<data name="&gt;&gt;label10.ZOrder" xml:space="preserve">
<value>4</value>
<value>8</value>
</data>
<data name="label11.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
@ -702,7 +702,7 @@
<value>$this</value>
</data>
<data name="&gt;&gt;label11.ZOrder" xml:space="preserve">
<value>5</value>
<value>9</value>
</data>
<data name="label12.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
@ -732,7 +732,7 @@
<value>$this</value>
</data>
<data name="&gt;&gt;label12.ZOrder" xml:space="preserve">
<value>3</value>
<value>7</value>
</data>
<data name="BUT_connect.Location" type="System.Drawing.Point, System.Drawing">
<value>476, 9</value>
@ -750,19 +750,19 @@
<value>BUT_connect</value>
</data>
<data name="&gt;&gt;BUT_connect.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner10, Version=1.1.4605.34402, Culture=neutral, PublicKeyToken=null</value>
<value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner10, Version=1.1.4711.34225, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;BUT_connect.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;BUT_connect.ZOrder" xml:space="preserve">
<value>23</value>
<value>27</value>
</data>
<data name="LBL_pantrim.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="LBL_pantrim.Location" type="System.Drawing.Point, System.Drawing">
<value>326, 113</value>
<value>326, 128</value>
</data>
<data name="LBL_pantrim.Size" type="System.Drawing.Size, System.Drawing">
<value>34, 13</value>
@ -783,13 +783,13 @@
<value>$this</value>
</data>
<data name="&gt;&gt;LBL_pantrim.ZOrder" xml:space="preserve">
<value>2</value>
<value>6</value>
</data>
<data name="LBL_tilttrim.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="LBL_tilttrim.Location" type="System.Drawing.Point, System.Drawing">
<value>326, 190</value>
<value>326, 224</value>
</data>
<data name="LBL_tilttrim.Size" type="System.Drawing.Size, System.Drawing">
<value>34, 13</value>
@ -810,30 +810,139 @@
<value>$this</value>
</data>
<data name="&gt;&gt;LBL_tilttrim.ZOrder" xml:space="preserve">
<value>1</value>
<value>5</value>
</data>
<data name="BUT_find.Location" type="System.Drawing.Point, System.Drawing">
<value>509, 51</value>
<value>497, 51</value>
</data>
<data name="BUT_find.Size" type="System.Drawing.Size, System.Drawing">
<value>71, 28</value>
<value>83, 28</value>
</data>
<data name="BUT_find.TabIndex" type="System.Int32, mscorlib">
<value>31</value>
</data>
<data name="BUT_find.Text" xml:space="preserve">
<value>Find Trim (3DR Radio)</value>
<value>Find Trim Pan (3DR Radio)</value>
</data>
<data name="&gt;&gt;BUT_find.Name" xml:space="preserve">
<value>BUT_find</value>
</data>
<data name="&gt;&gt;BUT_find.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner10, Version=1.1.4605.34402, Culture=neutral, PublicKeyToken=null</value>
<value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner10, Version=1.1.4711.34225, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;BUT_find.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;BUT_find.ZOrder" xml:space="preserve">
<value>4</value>
</data>
<data name="TXT_centerpan.Location" type="System.Drawing.Point, System.Drawing">
<value>83, 133</value>
</data>
<data name="TXT_centerpan.Size" type="System.Drawing.Size, System.Drawing">
<value>64, 20</value>
</data>
<data name="TXT_centerpan.TabIndex" type="System.Int32, mscorlib">
<value>3</value>
</data>
<data name="TXT_centerpan.Text" xml:space="preserve">
<value>1500</value>
</data>
<data name="&gt;&gt;TXT_centerpan.Name" xml:space="preserve">
<value>TXT_centerpan</value>
</data>
<data name="&gt;&gt;TXT_centerpan.Type" xml:space="preserve">
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;TXT_centerpan.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;TXT_centerpan.ZOrder" xml:space="preserve">
<value>3</value>
</data>
<data name="TXT_centertilt.Location" type="System.Drawing.Point, System.Drawing">
<value>83, 229</value>
</data>
<data name="TXT_centertilt.Size" type="System.Drawing.Size, System.Drawing">
<value>64, 20</value>
</data>
<data name="TXT_centertilt.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="TXT_centertilt.Text" xml:space="preserve">
<value>1500</value>
</data>
<data name="&gt;&gt;TXT_centertilt.Name" xml:space="preserve">
<value>TXT_centertilt</value>
</data>
<data name="&gt;&gt;TXT_centertilt.Type" xml:space="preserve">
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;TXT_centertilt.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;TXT_centertilt.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<data name="label13.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="label13.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="label13.Location" type="System.Drawing.Point, System.Drawing">
<value>9, 136</value>
</data>
<data name="label13.Size" type="System.Drawing.Size, System.Drawing">
<value>68, 13</value>
</data>
<data name="label13.TabIndex" type="System.Int32, mscorlib">
<value>32</value>
</data>
<data name="label13.Text" xml:space="preserve">
<value>Center PWM</value>
</data>
<data name="&gt;&gt;label13.Name" xml:space="preserve">
<value>label13</value>
</data>
<data name="&gt;&gt;label13.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;label13.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;label13.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="label14.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="label14.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="label14.Location" type="System.Drawing.Point, System.Drawing">
<value>9, 232</value>
</data>
<data name="label14.Size" type="System.Drawing.Size, System.Drawing">
<value>68, 13</value>
</data>
<data name="label14.TabIndex" type="System.Int32, mscorlib">
<value>33</value>
</data>
<data name="label14.Text" xml:space="preserve">
<value>Center PWM</value>
</data>
<data name="&gt;&gt;label14.Name" xml:space="preserve">
<value>label14</value>
</data>
<data name="&gt;&gt;label14.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;label14.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;label14.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
@ -843,7 +952,7 @@
<value>6, 13</value>
</data>
<data name="$this.Size" type="System.Drawing.Size, System.Drawing">
<value>587, 212</value>
<value>587, 265</value>
</data>
<data name="&gt;&gt;$this.Name" xml:space="preserve">
<value>Tracker</value>

View File

@ -157,7 +157,7 @@
</Reference>
<Reference Include="Microsoft.DirectX.DirectInput, Version=1.0.2902.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35">
<SpecificVersion>False</SpecificVersion>
<Private>True</Private>
<Private>False</Private>
</Reference>
<Reference Include="Microsoft.Dynamic">
</Reference>
@ -249,7 +249,7 @@
<Compile Include="Attributes\PrivateAttribute.cs" />
<Compile Include="CodeGen.cs" />
<Compile Include="Comms\CommsFile.cs" />
<Compile Include="Comms\CommsSerialInterface.cs" />
<Compile Include="Comms\ICommsSerial.cs" />
<Compile Include="Comms\CommsSerialPort.cs">
<SubType>Component</SubType>
</Compile>
@ -394,8 +394,21 @@
<Compile Include="GCSViews\ConfigurationView\ConfigFailSafe.Designer.cs">
<DependentUpon>ConfigFailSafe.cs</DependentUpon>
</Compile>
<Compile Include="GCSViews\ConfigurationView\ConfigAteryx.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="GCSViews\ConfigurationView\ConfigAteryx.Designer.cs">
<DependentUpon>ConfigAteryx.cs</DependentUpon>
</Compile>
<Compile Include="GCSViews\ConfigurationView\ConfigAteryxSensors.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="GCSViews\ConfigurationView\ConfigAteryxSensors.Designer.cs">
<DependentUpon>ConfigAteryxSensors.cs</DependentUpon>
</Compile>
<Compile Include="HIL\Hil.cs" />
<None Include="HIL\JSBSim.cs" />
<Compile Include="HIL\Wind.cs" />
<Compile Include="HIL\XPlane.cs" />
<Compile Include="OpenGLtest.cs">
<SubType>UserControl</SubType>
@ -828,6 +841,39 @@
<EmbeddedResource Include="GCSViews\ConfigurationView\ConfigTradHeli.de-DE.resx">
<DependentUpon>ConfigTradHeli.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="GCSViews\ConfigurationView\ConfigAteryx.de-DE.resx">
<DependentUpon>ConfigAteryx.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="GCSViews\ConfigurationView\ConfigAteryx.fr.resx">
<DependentUpon>ConfigAteryx.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="GCSViews\ConfigurationView\ConfigAteryx.resx">
<DependentUpon>ConfigAteryx.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="GCSViews\ConfigurationView\ConfigAteryxSensors.de-DE.resx">
<DependentUpon>ConfigAteryxSensors.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="GCSViews\ConfigurationView\ConfigAteryxSensors.es-ES.resx">
<DependentUpon>ConfigAteryxSensors.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="GCSViews\ConfigurationView\ConfigAteryxSensors.fr.resx">
<DependentUpon>ConfigAteryxSensors.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="GCSViews\ConfigurationView\ConfigAteryxSensors.it-IT.resx">
<DependentUpon>ConfigAteryxSensors.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="GCSViews\ConfigurationView\ConfigAteryxSensors.pl.resx">
<DependentUpon>ConfigAteryxSensors.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="GCSViews\ConfigurationView\ConfigAteryxSensors.resx">
<DependentUpon>ConfigAteryxSensors.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="GCSViews\ConfigurationView\ConfigAteryxSensors.zh-Hans.resx">
<DependentUpon>ConfigAteryxSensors.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="GCSViews\ConfigurationView\ConfigAteryxSensors.zh-TW.resx">
<DependentUpon>ConfigAteryxSensors.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="GCSViews\Firmware.de-DE.resx">
<DependentUpon>Firmware.cs</DependentUpon>
</EmbeddedResource>

View File

@ -1,4 +1,38 @@
* Mission Planner 1.2.15
* Mission Planner 1.2.20
fix airspeed error scale and min ground speed
modify mount options
add german lang
fix terminal baud rate issue
msi mod- single msi for x86 and x64 and all win os's
* Mission Planner 1.2.19
check for serial port name hang. and disable
add more failsafe screen status items
fix mavlink log graph bug
* Mission Planner 1.2.18
fix mono crash
add rxrssi
fix altitude mis label on mouse over in flight planner
add trigger camera now action.
new win8 msi
* Mission Planner 1.2.17
add nested config page
add friendly comport names
add some exception handlers
add new old firmware hashs
remove more crom.controls stuff
enabled change speed
* Mission Planner 1.2.16
workaround for global_pos_int problem
fix 3dr iv sensor pin selection
add ability to disable dist to home on flight data screen
remove traces of crom.controls (mono)
fix arm/disarm button
* Mission Planner 1.2.15
fix hud battery text overlaying
tweak hud resize
tweak main switcher

View File

@ -0,0 +1,58 @@
using System;
using System.Collections.Generic;
using System.Text;
using System.IO.Ports;
using System.IO;
using System.Reflection;
namespace ArdupilotMega.Comms
{
public interface ICommsSerial
{
// from serialport class
// Methods
void Close();
void DiscardInBuffer();
//void DiscardOutBuffer();
void Open();
int Read(byte[] buffer, int offset, int count);
//int Read(char[] buffer, int offset, int count);
int ReadByte();
int ReadChar();
string ReadExisting();
string ReadLine();
//string ReadTo(string value);
void Write(string text);
void Write(byte[] buffer, int offset, int count);
//void Write(char[] buffer, int offset, int count);
void WriteLine(string text);
void toggleDTR();
// Properties
Stream BaseStream { get; }
int BaudRate { get; set; }
//bool BreakState { get; set; }
int BytesToRead { get; }
int BytesToWrite { get; }
//bool CDHolding { get; }
//bool CtsHolding { get; }
int DataBits { get; set; }
//bool DiscardNull { get; set; }
//bool DsrHolding { get; }
bool DtrEnable { get; set; }
//Encoding Encoding { get; set; }
//Handshake Handshake { get; set; }
bool IsOpen { get; }
//string NewLine { get; set; }
Parity Parity { get; set; }
//byte ParityReplace { get; set; }
string PortName { get; set; }
int ReadBufferSize { get; set; }
int ReadTimeout { get; set; }
bool RtsEnable { get; set; }
StopBits StopBits { get; set; }
int WriteBufferSize { get; set; }
int WriteTimeout { get; set; }
}
}

View File

@ -13,7 +13,7 @@ using ArdupilotMega.Utilities;
namespace ArdupilotMega.Controls
{
public partial class ConfigPanel : UserControl
public partial class ConfigPanel : UserControl, IActivate
{
/// <summary>
/// store temp pending changes
@ -44,10 +44,16 @@ namespace ArdupilotMega.Controls
{
try
{
float numbervalue = (float)MainV2.comPort.param[value];
MAVLink.modifyParamForDisplay(true, value, ref numbervalue);
NumericUpDown thisctl = ((NumericUpDown)ctl);
thisctl.Value = (decimal)(float)MainV2.comPort.param[value];
thisctl.Validated -= thisctl_Validated;
thisctl.ValueChanged -= thisctl_Validated;
thisctl.Value = (decimal)numbervalue;
thisctl.Enabled = true;
thisctl.Validated += new EventHandler(thisctl_Validated);
thisctl.Validated += thisctl_Validated;
thisctl.ValueChanged += thisctl_Validated;
}
catch (Exception ex) { Console.WriteLine(ex.ToString()); }
@ -63,7 +69,9 @@ namespace ArdupilotMega.Controls
foreach (string item in (List<string>)_linkedParams[param])
{
_changed[item] = (float)((NumericUpDown)sender).Value;
float value = (float)((NumericUpDown)sender).Value;
MAVLink.modifyParamForDisplay(false, param, ref value);
_changed[item] = value;
}
}
@ -322,5 +330,10 @@ namespace ArdupilotMega.Controls
{
PopulateData();
}
public void Activate()
{
PopulateData();
}
}
}

View File

@ -65,7 +65,7 @@
// labelWithPseudoOpacity2
//
this.labelWithPseudoOpacity2.Dock = System.Windows.Forms.DockStyle.Fill;
this.labelWithPseudoOpacity2.DoubleBuffered = true;
this.labelWithPseudoOpacity2.DoubleBuffered = false;
this.labelWithPseudoOpacity2.Font = new System.Drawing.Font("Microsoft Sans Serif", 21.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.labelWithPseudoOpacity2.Location = new System.Drawing.Point(3, 20);
this.labelWithPseudoOpacity2.Name = "labelWithPseudoOpacity2";

View File

@ -18,16 +18,46 @@ namespace ArdupilotMega.Controls
public string DescriptionText { get { return label1.Text; } set { label1.Text = value; } }
public string LabelText { get { return myLabel1.Text; } set { myLabel1.Text = value; } }
public TrackBar TrackBarControl { get { return trackBar1; } set { trackBar1 = value; } }
public int Scaler { get; set; }
public float Increment
{
get
{
return _increment;
}
set
{
_increment = value;
tbscale = (1 / _increment);
trackBar1.TickFrequency = 1;
numericUpDown1.Increment = (decimal)_increment;
numericUpDown1.DecimalPlaces = _increment.ToString(CultureInfo.InvariantCulture).Length - 1;
}
}
public float DisplayScale { get; set; }
public float MinRange { get { return _minrange; } set { _minrange = value; numericUpDown1.Minimum = (decimal)(value / DisplayScale); trackBar1.Minimum = (int)(value / _increment); } }
public float MaxRange { get { return _maxrange; } set { _maxrange = value; numericUpDown1.Maximum = (decimal)(value / DisplayScale); trackBar1.Maximum = (int)(value / _increment); } }
float _minrange = 0;
float _maxrange = 10;
float _increment = 1;
float tbscale = 1;
#region Interface Properties
public string Value
{
get { return numericUpDown1.Value.ToString(CultureInfo.InvariantCulture); }
get { return ((float)numericUpDown1.Value * DisplayScale).ToString(CultureInfo.InvariantCulture); }
set
{
numericUpDown1.Value = decimal.Parse(value);
float back1 = _minrange;
float back2 = _maxrange;
MinRange = (float)Math.Min(MinRange, double.Parse(value));
MaxRange = (float)Math.Max(MaxRange, double.Parse(value));
_minrange = back1;
_maxrange = back2;
numericUpDown1.Value = (decimal)((float)decimal.Parse(value) / DisplayScale);
numericUpDown1_ValueChanged(null, null);
}
}
@ -41,6 +71,22 @@ namespace ArdupilotMega.Controls
public RangeControl()
{
InitializeComponent();
DisplayScale = 1;
}
public RangeControl(string param, String Desc, string Label, float increment, float Displayscale, float minrange, float maxrange, string value)
{
InitializeComponent();
this.DisplayScale = Displayscale;
Name = param;
Increment = increment;
DescriptionText = Desc;
LabelText = Label;
MinRange = minrange;
MaxRange = maxrange;
this.Value = value;
}
#endregion
@ -59,13 +105,21 @@ namespace ArdupilotMega.Controls
protected void numericUpDown1_ValueChanged(object sender, EventArgs e)
{
trackBar1.Value = (Scaler > 0) ? (int)(numericUpDown1.Value * Scaler) : (int)numericUpDown1.Value;
trackBar1.Value = (int)((float)numericUpDown1.Value * DisplayScale * tbscale) ;
numericUpDown1.BackColor = Color.Green;
if ((float)numericUpDown1.Value < (MinRange))
numericUpDown1.BackColor = Color.Orange;
if ((float)numericUpDown1.Value > (MaxRange))
numericUpDown1.BackColor = Color.Orange;
}
protected void trackBar1_ValueChanged(object sender, EventArgs e)
{
numericUpDown1.Value = (Scaler > 0) ? (trackBar1.Value / (decimal)Scaler) : trackBar1.Value;
numericUpDown1.Text = numericUpDown1.Value.ToString();
numericUpDown1.Value = (decimal)((float)trackBar1.Value / DisplayScale / tbscale);
numericUpDown1.Text = ((float)numericUpDown1.Value).ToString();
}
#endregion

View File

@ -346,6 +346,7 @@ namespace ArdupilotMega
private object locker = new object();
bool useLocation = false;
bool gotwind = false;
internal bool batterymonitoring = false;
public CurrentState()
{

View File

@ -66,11 +66,7 @@ namespace ArdupilotMega.GCSViews.ConfigurationView
{
try
{
#if MAVLINK10
MainV2.comPort.doCommand(MAVLink.MAV_CMD.PREFLIGHT_CALIBRATION,1,0,1,0,0,0,0);
#else
MainV2.comPort.doAction(MAVLink.MAV_ACTION.MAV_ACTION_CALIBRATE_ACC);
#endif
BUT_levelplane.Text = "Complete";
}
catch

View File

@ -23,13 +23,8 @@ namespace ArdupilotMega.GCSViews.ConfigurationView
{
try
{
#if MAVLINK10
Log.Info("Sending level command (mavlink 1.0)");
MainV2.comPort.doCommand(MAVLink.MAV_CMD.PREFLIGHT_CALIBRATION,1,0,0,0,1,0,0);
#else
Log.Info("Sending level command (mavlink 0.9)");
MainV2.comPort.doAction(MAVLink.MAV_ACTION.MAV_ACTION_CALIBRATE_ACC);
#endif
BUT_levelac2.Text = "Complete";
}

View File

@ -180,10 +180,14 @@ namespace ArdupilotMega.GCSViews.ConfigurationView
if (ctl.GetType() == typeof(NumericUpDown))
{
float numbervalue = (float)MainV2.comPort.param[value];
MAVLink.modifyParamForDisplay(true, value, ref numbervalue);
NumericUpDown thisctl = ((NumericUpDown)ctl);
thisctl.Maximum = 9000;
thisctl.Minimum = -9000;
thisctl.Value = (decimal)(float)MainV2.comPort.param[value];
thisctl.Value = (decimal)numbervalue;
thisctl.Increment = (decimal)0.001;
if (thisctl.Name.EndsWith("_P") || thisctl.Name.EndsWith("_I") || thisctl.Name.EndsWith("_D")
|| thisctl.Name.EndsWith("_LOW") || thisctl.Name.EndsWith("_HIGH") || thisctl.Value == 0
@ -197,16 +201,14 @@ namespace ArdupilotMega.GCSViews.ConfigurationView
thisctl.DecimalPlaces = 1;
}
if (thisctl.Name.EndsWith("_IMAX"))
{
thisctl.Maximum = 180;
thisctl.Minimum = -180;
}
if (thisctl.Name.ToUpper().EndsWith("THR_RATE_IMAX"))
{
thisctl.Maximum = 1000; // is a pwm
thisctl.Minimum = 0;
} else if (thisctl.Name.EndsWith("_IMAX"))
{
thisctl.Maximum = 180;
thisctl.Minimum = -180;
}
thisctl.Enabled = true;
@ -271,6 +273,7 @@ namespace ArdupilotMega.GCSViews.ConfigurationView
if (sender.GetType() == typeof(NumericUpDown))
{
value = float.Parse(((Control)sender).Text);
MAVLink.modifyParamForDisplay(false, ((Control)sender).Name, ref value);
changes[name] = value;
}
else if (sender.GetType() == typeof(ComboBox))

View File

@ -167,10 +167,14 @@ namespace ArdupilotMega.GCSViews.ConfigurationView
if (ctl.GetType() == typeof(NumericUpDown))
{
float numbervalue = (float)MainV2.comPort.param[value];
MAVLink.modifyParamForDisplay(true, value,ref numbervalue);
NumericUpDown thisctl = ((NumericUpDown)ctl);
thisctl.Maximum = 9000;
thisctl.Minimum = -9000;
thisctl.Value = (decimal)(float)MainV2.comPort.param[value];
thisctl.Value = (decimal)numbervalue;
thisctl.Increment = (decimal)0.001;
if (thisctl.Name.EndsWith("_P") || thisctl.Name.EndsWith("_I") || thisctl.Name.EndsWith("_D")
|| thisctl.Name.EndsWith("_LOW") || thisctl.Name.EndsWith("_HIGH") || thisctl.Value == 0
@ -247,6 +251,7 @@ namespace ArdupilotMega.GCSViews.ConfigurationView
if (sender.GetType() == typeof(NumericUpDown))
{
value = float.Parse(((Control)sender).Text);
MAVLink.modifyParamForDisplay(false, ((Control)sender).Name, ref value);
changes[name] = value;
}
else if (sender.GetType() == typeof(ComboBox))

View File

@ -167,10 +167,14 @@ namespace ArdupilotMega.GCSViews.ConfigurationView
if (ctl.GetType() == typeof(NumericUpDown))
{
float numbervalue = (float)MainV2.comPort.param[value];
MAVLink.modifyParamForDisplay(true, value, ref numbervalue);
NumericUpDown thisctl = ((NumericUpDown)ctl);
thisctl.Maximum = 9000;
thisctl.Minimum = -9000;
thisctl.Value = (decimal)(float)MainV2.comPort.param[value];
thisctl.Value = (decimal)numbervalue;
thisctl.Increment = (decimal)0.001;
if (thisctl.Name.EndsWith("_P") || thisctl.Name.EndsWith("_I") || thisctl.Name.EndsWith("_D")
|| thisctl.Name.EndsWith("_LOW") || thisctl.Name.EndsWith("_HIGH") || thisctl.Value == 0
@ -247,6 +251,7 @@ namespace ArdupilotMega.GCSViews.ConfigurationView
if (sender.GetType() == typeof(NumericUpDown))
{
value = float.Parse(((Control)sender).Text);
MAVLink.modifyParamForDisplay(false, ((Control)sender).Name, ref value);
changes[name] = value;
}
else if (sender.GetType() == typeof(ComboBox))

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,401 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.IO;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using ArdupilotMega.Controls.BackstageView;
using System.Collections;
using log4net;
using ArdupilotMega.Controls;
using ArdupilotMega.Utilities;
namespace ArdupilotMega.GCSViews.ConfigurationView
{
public partial class ConfigAteryx : UserControl, IActivate
{
private static readonly ILog log =
LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
Hashtable changes = new Hashtable();
static Hashtable tooltips = new Hashtable();
internal bool startup = true;
public ConfigAteryx()
{
InitializeComponent();
}
public void Activate()
{
if (!MainV2.comPort.BaseStream.IsOpen)
{
this.Enabled = false;
return;
}
else
{
if (MainV2.cs.firmware == MainV2.Firmwares.Ateryx)
{
this.Enabled = true;
}
else
{
this.Enabled = false;
return;
}
}
startup = true;
changes.Clear();
// read tooltips
if (tooltips.Count == 0)
readToolTips();
processToScreen();
startup = false;
}
public struct paramsettings // hk's
{
public string name;
public float minvalue;
public float maxvalue;
public float normalvalue;
public float scale;
public string desc;
}
void readToolTips()
{
string data = global::ArdupilotMega.Properties.Resources.MAVParam;
string[] tips = data.Split(new char[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries);
foreach (var tip in tips)
{
if (!tip.StartsWith("||"))
continue;
string[] cols = tip.Split(new string[] { "||" }, 9, StringSplitOptions.None);
if (cols.Length >= 8)
{
paramsettings param = new paramsettings();
try
{
param.name = cols[1];
param.desc = AddNewLinesForTooltip(cols[7]);
param.scale = float.Parse(cols[5]);
param.minvalue = float.Parse(cols[2]);
param.maxvalue = float.Parse(cols[3]);
param.normalvalue = float.Parse(cols[4]);
}
catch { }
tooltips[cols[1]] = param;
}
}
}
// from http://stackoverflow.com/questions/2512781/winforms-big-paragraph-tooltip/2512895#2512895
private const int maximumSingleLineTooltipLength = 50;
private static string AddNewLinesForTooltip(string text)
{
if (text.Length < maximumSingleLineTooltipLength)
return text;
int lineLength = (int)Math.Sqrt((double)text.Length) * 2;
StringBuilder sb = new StringBuilder();
int currentLinePosition = 0;
for (int textIndex = 0; textIndex < text.Length; textIndex++)
{
// If we have reached the target line length and the next
// character is whitespace then begin a new line.
if (currentLinePosition >= lineLength &&
char.IsWhiteSpace(text[textIndex]))
{
sb.Append(Environment.NewLine);
currentLinePosition = 0;
}
// If we have just started a new line, skip all the whitespace.
if (currentLinePosition == 0)
while (textIndex < text.Length && char.IsWhiteSpace(text[textIndex]))
textIndex++;
// Append the next character.
if (textIndex < text.Length) sb.Append(text[textIndex]);
currentLinePosition++;
}
return sb.ToString();
}
void disableNumericUpDownControls(Control inctl)
{
foreach (Control ctl in inctl.Controls)
{
if (ctl.Controls.Count > 0)
{
disableNumericUpDownControls(ctl);
}
if (ctl.GetType() == typeof(NumericUpDown))
{
ctl.Enabled = false;
}
}
}
internal void processToScreen()
{
toolTip1.RemoveAll();
disableNumericUpDownControls(this);
// process hashdefines and update display
foreach (string value in MainV2.comPort.param.Keys)
{
if (value == null || value == "")
continue;
string name = value;
Control[] text = this.Controls.Find(name, true);
foreach (Control ctl in text)
{
try
{
if (ctl.GetType() == typeof(NumericUpDown))
{
NumericUpDown thisctl = ((NumericUpDown)ctl);
thisctl.Maximum = 9000;
thisctl.Minimum = -9000;
thisctl.Value = (decimal)(float)MainV2.comPort.param[value];
thisctl.Increment = (decimal)0.001;
if (thisctl.Name.EndsWith("_P") || thisctl.Name.EndsWith("_I") || thisctl.Name.EndsWith("_D")
|| thisctl.Name.EndsWith("_LOW") || thisctl.Name.EndsWith("_HIGH") || thisctl.Value == 0
|| thisctl.Value.ToString("0.###", new System.Globalization.CultureInfo("en-US")).Contains("."))
{
thisctl.DecimalPlaces = 3;
}
else
{
thisctl.Increment = (decimal)1;
thisctl.DecimalPlaces = 1;
}
if (thisctl.Name.EndsWith("_IMAX"))
{
thisctl.Maximum = 180;
thisctl.Minimum = -180;
}
thisctl.Enabled = true;
thisctl.BackColor = Color.FromArgb(0x43, 0x44, 0x45);
thisctl.Validated += null;
if (tooltips[value] != null)
{
try
{
toolTip1.SetToolTip(ctl, ((paramsettings)tooltips[value]).desc);
}
catch { }
}
thisctl.Validated += new EventHandler(EEPROM_View_float_TextChanged);
}
else if (ctl.GetType() == typeof(ComboBox))
{
ComboBox thisctl = ((ComboBox)ctl);
thisctl.SelectedIndex = (int)(float)MainV2.comPort.param[value];
thisctl.Validated += new EventHandler(ComboBox_Validated);
}
}
catch { }
}
if (text.Length == 0)
{
//Console.WriteLine(name + " not found");
}
}
}
void ComboBox_Validated(object sender, EventArgs e)
{
EEPROM_View_float_TextChanged(sender, e);
}
void Configuration_Validating(object sender, CancelEventArgs e)
{
EEPROM_View_float_TextChanged(sender, e);
}
internal void EEPROM_View_float_TextChanged(object sender, EventArgs e)
{
float value = 0;
string name = ((Control)sender).Name;
// do domainupdown state check
try
{
if (sender.GetType() == typeof(NumericUpDown))
{
value = float.Parse(((Control)sender).Text);
changes[name] = value;
}
else if (sender.GetType() == typeof(ComboBox))
{
value = ((ComboBox)sender).SelectedIndex;
changes[name] = value;
}
((Control)sender).BackColor = Color.Green;
}
catch (Exception)
{
((Control)sender).BackColor = Color.Red;
}
}
private void BUT_writePIDS_Click(object sender, EventArgs e)
{
var temp = (Hashtable)changes.Clone();
foreach (string value in temp.Keys)
{
try
{
MainV2.comPort.setParam(value, (float)changes[value]);
try
{
// set control as well
var textControls = this.Controls.Find(value, true);
if (textControls.Length > 0)
{
textControls[0].BackColor = Color.FromArgb(0x43, 0x44, 0x45);
}
}
catch
{
}
}
catch
{
CustomMessageBox.Show("Set " + value + " Failed");
}
}
}
/// <summary>
/// Handles the Click event of the BUT_rerequestparams control.
/// </summary>
/// <param name="sender">The source of the event.</param>
/// <param name="e">The <see cref="System.EventArgs"/> instance containing the event data.</param>
protected void BUT_rerequestparams_Click(object sender, EventArgs e)
{
if (!MainV2.comPort.BaseStream.IsOpen)
return;
((Control)sender).Enabled = false;
try
{
MainV2.comPort.getParamList();
}
catch (Exception ex)
{
CustomMessageBox.Show("Error: getting param list " + ex.ToString());
}
((Control)sender).Enabled = true;
this.Activate();
}
private void groupBox7_Enter(object sender, EventArgs e)
{
}
private void numericUpDown1_ValueChanged(object sender, EventArgs e)
{
}
private void numericUpDown2_ValueChanged(object sender, EventArgs e)
{
}
private void numericUpDown15_ValueChanged(object sender, EventArgs e)
{
}
private void BUT_write_flash_Click(object sender, EventArgs e)
{
try
{
((Button)sender).Enabled = false;
if ((MainV2.cs.airspeed > 7.0) || (MainV2.cs.groundspeed > 10.0))
{
MessageBox.Show("Unable - UAV airborne");
((Button)sender).Enabled = true;
return;
}
#if MAVLINK10
//MainV2.comPort.doCommand((MAVLink.MAV_CMD)Enum.Parse(typeof(MAVLink.MAV_CMD), "MAV_CMD_PREFLIGHT_STORAGE"));
MainV2.comPort.doCommand(MAVLink.MAV_CMD.PREFLIGHT_STORAGE, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f);
#else
MainV2.comPort.doAction((MAVLink.MAV_ACTION)Enum.Parse(typeof(MAVLink.MAV_ACTION), "MAV_ACTION_STORAGE_WRITE"));
#endif
}
catch { MessageBox.Show("The Command failed to execute"); }
((Button)sender).Enabled = true;
}
private void BUT_read_flash_Click(object sender, EventArgs e)
{
try
{
DialogResult dr = MessageBox.Show("Reset Flash to Factory Defaults?", "Continue", MessageBoxButtons.YesNo);
if (dr == System.Windows.Forms.DialogResult.Yes)
{
if ((MainV2.cs.airspeed > 7.0) || (MainV2.cs.groundspeed > 7.0))
{
MessageBox.Show("Unable - UAV airborne");
((Button)sender).Enabled = true;
return;
}
#if MAVLINK10
//MainV2.comPort.doCommand((MAVLink.MAV_CMD)Enum.Parse(typeof(MAVLink.MAV_CMD), "MAV_CMD_PREFLIGHT_STORAGE"));
MainV2.comPort.doCommand(MAVLink.MAV_CMD.PREFLIGHT_STORAGE, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f);
#else
MainV2.comPort.doAction((MAVLink.MAV_ACTION)Enum.Parse(typeof(MAVLink.MAV_ACTION), "MAV_ACTION_STORAGE_WRITE"));
#endif
}
}
catch { MessageBox.Show("The Command failed to execute"); }
((Button)sender).Enabled = true;
}
}
}

View File

@ -0,0 +1,294 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="label49.Text" xml:space="preserve">
<value>INT_MAX</value>
</data>
<data name="label83.Text" xml:space="preserve">
<value>P to T</value>
</data>
<data name="label80.Text" xml:space="preserve">
<value>Gain (cm)</value>
</data>
<data name="label81.Text" xml:space="preserve">
<value>Pitch Comp</value>
</data>
<data name="label56.Text" xml:space="preserve">
<value>P</value>
</data>
<data name="label2.Text" xml:space="preserve">
<value>FBW max</value>
</data>
<data name="label54.Text" xml:space="preserve">
<value>D</value>
</data>
<data name="label3.Text" xml:space="preserve">
<value>FBW min</value>
</data>
<data name="groupBox8.Text" xml:space="preserve">
<value>Servo Roll Pid</value>
</data>
<data name="label57.Text" xml:space="preserve">
<value>INT_MAX</value>
</data>
<data name="groupBox9.Text" xml:space="preserve">
<value>Servo Pitch Pid</value>
</data>
<data name="label52.Text" xml:space="preserve">
<value>P</value>
</data>
<data name="label1.Text" xml:space="preserve">
<value>Ratio</value>
</data>
<data name="label6.Text" xml:space="preserve">
<value>Max</value>
</data>
<data name="label55.Text" xml:space="preserve">
<value>I</value>
</data>
<data name="label50.Text" xml:space="preserve">
<value>D</value>
</data>
<data name="label7.Text" xml:space="preserve">
<value>Min</value>
</data>
<data name="label4.Text" xml:space="preserve">
<value>Cruise</value>
</data>
<data name="label53.Text" xml:space="preserve">
<value>INT_MAX</value>
</data>
<data name="label5.Text" xml:space="preserve">
<value>FS Value</value>
</data>
<data name="groupBox2.Text" xml:space="preserve">
<value>Navigations Winkel</value>
</data>
<data name="label51.Text" xml:space="preserve">
<value>I</value>
</data>
<data name="groupBox3.Text" xml:space="preserve">
<value>Gas 0-100%</value>
</data>
<data name="label8.Text" xml:space="preserve">
<value>Cruise</value>
</data>
<data name="groupBox1.Text" xml:space="preserve">
<value>Geschwindigkeit m/s</value>
</data>
<data name="label58.Text" xml:space="preserve">
<value>D</value>
</data>
<data name="label64.Text" xml:space="preserve">
<value>P</value>
</data>
<data name="label65.Text" xml:space="preserve">
<value>INT_MAX</value>
</data>
<data name="label59.Text" xml:space="preserve">
<value>I</value>
</data>
<data name="label66.Text" xml:space="preserve">
<value>D</value>
</data>
<data name="label67.Text" xml:space="preserve">
<value>I</value>
</data>
<data name="label60.Text" xml:space="preserve">
<value>P</value>
</data>
<data name="label61.Text" xml:space="preserve">
<value>INT_MAX</value>
</data>
<data name="label62.Text" xml:space="preserve">
<value>D</value>
</data>
<data name="label63.Text" xml:space="preserve">
<value>I</value>
</data>
<data name="groupBox16.Text" xml:space="preserve">
<value>Andere Mix's</value>
</data>
<data name="groupBox14.Text" xml:space="preserve">
<value>Energy/Alt Pid</value>
</data>
<data name="groupBox12.Text" xml:space="preserve">
<value>Nav Pitch AS Pid</value>
</data>
<data name="label68.Text" xml:space="preserve">
<value>P</value>
</data>
<data name="groupBox15.Text" xml:space="preserve">
<value>Xtrack Pids</value>
</data>
<data name="label69.Text" xml:space="preserve">
<value>INT_MAX</value>
</data>
<data name="groupBox10.Text" xml:space="preserve">
<value>Servo Yaw Pid</value>
</data>
<data name="groupBox13.Text" xml:space="preserve">
<value>Nav Pitch Alt Pid</value>
</data>
<data name="groupBox11.Text" xml:space="preserve">
<value>Nav Roll Pid</value>
</data>
<data name="label38.Text" xml:space="preserve">
<value>Pitch Max</value>
</data>
<data name="label37.Text" xml:space="preserve">
<value>Bank Max</value>
</data>
<data name="label39.Text" xml:space="preserve">
<value>Pitch Min</value>
</data>
<data name="label74.Text" xml:space="preserve">
<value>D</value>
</data>
<data name="label76.Text" xml:space="preserve">
<value>P</value>
</data>
<data name="label75.Text" xml:space="preserve">
<value>I</value>
</data>
<data name="label70.Text" xml:space="preserve">
<value>D</value>
</data>
<data name="label72.Text" xml:space="preserve">
<value>P</value>
</data>
<data name="label71.Text" xml:space="preserve">
<value>I</value>
</data>
<data name="label73.Text" xml:space="preserve">
<value>INT_MAX</value>
</data>
<data name="BUT_writePIDS.Text" xml:space="preserve">
<value>Parameter speichern</value>
</data>
<data name="label78.Text" xml:space="preserve">
<value>Ruder Mix</value>
</data>
<data name="label79.Text" xml:space="preserve">
<value>eingangs Winkel</value>
</data>
<data name="BUT_rerequestparams.Text" xml:space="preserve">
<value>Parameter aktualisieren</value>
</data>
</root>

View File

@ -0,0 +1,294 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="label49.Text" xml:space="preserve">
<value>INT_MAX</value>
</data>
<data name="label83.Text" xml:space="preserve">
<value>P to T</value>
</data>
<data name="label80.Text" xml:space="preserve">
<value>Gain (cm)</value>
</data>
<data name="label81.Text" xml:space="preserve">
<value>Pitch Comp</value>
</data>
<data name="label56.Text" xml:space="preserve">
<value>P</value>
</data>
<data name="label2.Text" xml:space="preserve">
<value>FBW max</value>
</data>
<data name="label54.Text" xml:space="preserve">
<value>D</value>
</data>
<data name="label3.Text" xml:space="preserve">
<value>FBW min</value>
</data>
<data name="groupBox8.Text" xml:space="preserve">
<value>Servo Roll Pid</value>
</data>
<data name="label57.Text" xml:space="preserve">
<value>INT_MAX</value>
</data>
<data name="groupBox9.Text" xml:space="preserve">
<value>Servo Pitch Pid</value>
</data>
<data name="label52.Text" xml:space="preserve">
<value>P</value>
</data>
<data name="label1.Text" xml:space="preserve">
<value>Ratio</value>
</data>
<data name="label6.Text" xml:space="preserve">
<value>Max</value>
</data>
<data name="label55.Text" xml:space="preserve">
<value>I</value>
</data>
<data name="label50.Text" xml:space="preserve">
<value>D</value>
</data>
<data name="label7.Text" xml:space="preserve">
<value>Min</value>
</data>
<data name="label4.Text" xml:space="preserve">
<value>Cruise</value>
</data>
<data name="label53.Text" xml:space="preserve">
<value>INT_MAX</value>
</data>
<data name="label5.Text" xml:space="preserve">
<value>FS Value</value>
</data>
<data name="groupBox2.Text" xml:space="preserve">
<value>Navigation Angles</value>
</data>
<data name="label51.Text" xml:space="preserve">
<value>I</value>
</data>
<data name="groupBox3.Text" xml:space="preserve">
<value>Throttle 0-100%</value>
</data>
<data name="label8.Text" xml:space="preserve">
<value>Cruise</value>
</data>
<data name="groupBox1.Text" xml:space="preserve">
<value>Airspeed m/s</value>
</data>
<data name="label58.Text" xml:space="preserve">
<value>D</value>
</data>
<data name="label64.Text" xml:space="preserve">
<value>P</value>
</data>
<data name="label65.Text" xml:space="preserve">
<value>INT_MAX</value>
</data>
<data name="label59.Text" xml:space="preserve">
<value>I</value>
</data>
<data name="label66.Text" xml:space="preserve">
<value>D</value>
</data>
<data name="label67.Text" xml:space="preserve">
<value>I</value>
</data>
<data name="label60.Text" xml:space="preserve">
<value>P</value>
</data>
<data name="label61.Text" xml:space="preserve">
<value>INT_MAX</value>
</data>
<data name="label62.Text" xml:space="preserve">
<value>D</value>
</data>
<data name="label63.Text" xml:space="preserve">
<value>I</value>
</data>
<data name="groupBox16.Text" xml:space="preserve">
<value>Other Mix's</value>
</data>
<data name="groupBox14.Text" xml:space="preserve">
<value>Energy/Alt Pid</value>
</data>
<data name="groupBox12.Text" xml:space="preserve">
<value>Nav Pitch AS Pid</value>
</data>
<data name="label68.Text" xml:space="preserve">
<value>P</value>
</data>
<data name="groupBox15.Text" xml:space="preserve">
<value>Xtrack Pids</value>
</data>
<data name="label69.Text" xml:space="preserve">
<value>INT_MAX</value>
</data>
<data name="groupBox10.Text" xml:space="preserve">
<value>Servo Yaw Pid</value>
</data>
<data name="groupBox13.Text" xml:space="preserve">
<value>Nav Pitch Alt Pid</value>
</data>
<data name="groupBox11.Text" xml:space="preserve">
<value>Nav Roll Pid</value>
</data>
<data name="label38.Text" xml:space="preserve">
<value>Pitch Max</value>
</data>
<data name="label37.Text" xml:space="preserve">
<value>Bank Max</value>
</data>
<data name="label39.Text" xml:space="preserve">
<value>Pitch Min</value>
</data>
<data name="label74.Text" xml:space="preserve">
<value>D</value>
</data>
<data name="label76.Text" xml:space="preserve">
<value>P</value>
</data>
<data name="label75.Text" xml:space="preserve">
<value>I</value>
</data>
<data name="label70.Text" xml:space="preserve">
<value>D</value>
</data>
<data name="label72.Text" xml:space="preserve">
<value>P</value>
</data>
<data name="label71.Text" xml:space="preserve">
<value>I</value>
</data>
<data name="label73.Text" xml:space="preserve">
<value>INT_MAX</value>
</data>
<data name="BUT_writePIDS.Text" xml:space="preserve">
<value>Write Params</value>
</data>
<data name="label78.Text" xml:space="preserve">
<value>Rudder Mix</value>
</data>
<data name="label79.Text" xml:space="preserve">
<value>Entry Angle</value>
</data>
<data name="BUT_rerequestparams.Text" xml:space="preserve">
<value>Refresh Params</value>
</data>
</root>

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,153 @@
namespace ArdupilotMega.GCSViews.ConfigurationView
{
partial class ConfigAteryxSensors
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Component Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ConfigAteryxSensors));
this.toolTip1 = new System.Windows.Forms.ToolTip(this.components);
this.BUT_zero_att = new ArdupilotMega.Controls.MyButton();
this.BUT_zero_press = new ArdupilotMega.Controls.MyButton();
this.hud1 = new ArdupilotMega.Controls.HUD();
this.bindingSource1 = new System.Windows.Forms.BindingSource(this.components);
this.timer1 = new System.Windows.Forms.Timer(this.components);
((System.ComponentModel.ISupportInitialize)(this.bindingSource1)).BeginInit();
this.SuspendLayout();
//
// BUT_zero_att
//
resources.ApplyResources(this.BUT_zero_att, "BUT_zero_att");
this.BUT_zero_att.Name = "BUT_zero_att";
this.toolTip1.SetToolTip(this.BUT_zero_att, resources.GetString("BUT_zero_att.ToolTip"));
this.BUT_zero_att.UseVisualStyleBackColor = true;
this.BUT_zero_att.Click += new System.EventHandler(this.BUT_levelplane_Click);
//
// BUT_zero_press
//
resources.ApplyResources(this.BUT_zero_press, "BUT_zero_press");
this.BUT_zero_press.Name = "BUT_zero_press";
this.toolTip1.SetToolTip(this.BUT_zero_press, resources.GetString("BUT_zero_press.ToolTip"));
this.BUT_zero_press.UseVisualStyleBackColor = true;
this.BUT_zero_press.Click += new System.EventHandler(this.BUT_zero_press_Click);
//
// hud1
//
this.hud1.airspeed = 0F;
this.hud1.alt = 0F;
this.hud1.BackColor = System.Drawing.Color.Black;
this.hud1.batterylevel = 0F;
this.hud1.batteryremaining = 0F;
this.hud1.current = 0F;
this.hud1.DataBindings.Add(new System.Windows.Forms.Binding("airspeed", this.bindingSource1, "airspeed", true));
this.hud1.DataBindings.Add(new System.Windows.Forms.Binding("alt", this.bindingSource1, "alt", true));
this.hud1.DataBindings.Add(new System.Windows.Forms.Binding("batterylevel", this.bindingSource1, "battery_voltage", true));
this.hud1.DataBindings.Add(new System.Windows.Forms.Binding("batteryremaining", this.bindingSource1, "battery_remaining", true));
this.hud1.DataBindings.Add(new System.Windows.Forms.Binding("current", this.bindingSource1, "current", true));
this.hud1.DataBindings.Add(new System.Windows.Forms.Binding("datetime", this.bindingSource1, "datetime", true));
this.hud1.DataBindings.Add(new System.Windows.Forms.Binding("disttowp", this.bindingSource1, "wp_dist", true));
this.hud1.DataBindings.Add(new System.Windows.Forms.Binding("gpsfix", this.bindingSource1, "gpsstatus", true));
this.hud1.DataBindings.Add(new System.Windows.Forms.Binding("gpshdop", this.bindingSource1, "gpshdop", true));
this.hud1.DataBindings.Add(new System.Windows.Forms.Binding("groundalt", this.bindingSource1, "HomeAlt", true));
this.hud1.DataBindings.Add(new System.Windows.Forms.Binding("groundcourse", this.bindingSource1, "groundcourse", true));
this.hud1.DataBindings.Add(new System.Windows.Forms.Binding("groundspeed", this.bindingSource1, "groundspeed", true));
this.hud1.DataBindings.Add(new System.Windows.Forms.Binding("heading", this.bindingSource1, "yaw", true));
this.hud1.DataBindings.Add(new System.Windows.Forms.Binding("linkqualitygcs", this.bindingSource1, "linkqualitygcs", true));
this.hud1.DataBindings.Add(new System.Windows.Forms.Binding("mode", this.bindingSource1, "mode", true));
this.hud1.DataBindings.Add(new System.Windows.Forms.Binding("navpitch", this.bindingSource1, "nav_pitch", true));
this.hud1.DataBindings.Add(new System.Windows.Forms.Binding("navroll", this.bindingSource1, "nav_roll", true));
this.hud1.DataBindings.Add(new System.Windows.Forms.Binding("pitch", this.bindingSource1, "pitch", true));
this.hud1.DataBindings.Add(new System.Windows.Forms.Binding("roll", this.bindingSource1, "roll", true));
this.hud1.DataBindings.Add(new System.Windows.Forms.Binding("status", this.bindingSource1, "armed", true));
this.hud1.DataBindings.Add(new System.Windows.Forms.Binding("targetalt", this.bindingSource1, "targetalt", true));
this.hud1.DataBindings.Add(new System.Windows.Forms.Binding("targetheading", this.bindingSource1, "nav_bearing", true));
this.hud1.DataBindings.Add(new System.Windows.Forms.Binding("targetspeed", this.bindingSource1, "targetairspeed", true));
this.hud1.DataBindings.Add(new System.Windows.Forms.Binding("turnrate", this.bindingSource1, "turnrate", true));
this.hud1.DataBindings.Add(new System.Windows.Forms.Binding("verticalspeed", this.bindingSource1, "verticalspeed", true));
this.hud1.DataBindings.Add(new System.Windows.Forms.Binding("wpno", this.bindingSource1, "wpno", true));
this.hud1.DataBindings.Add(new System.Windows.Forms.Binding("xtrack_error", this.bindingSource1, "xtrack_error", true));
this.hud1.datetime = new System.DateTime(((long)(0)));
this.hud1.disttowp = 0F;
this.hud1.gpsfix = 0F;
this.hud1.gpshdop = 0F;
this.hud1.groundalt = 0F;
this.hud1.groundcourse = 0F;
this.hud1.groundspeed = 0F;
this.hud1.heading = 0F;
this.hud1.hudcolor = System.Drawing.Color.White;
this.hud1.linkqualitygcs = 0F;
resources.ApplyResources(this.hud1, "hud1");
this.hud1.mode = "Manual";
this.hud1.Name = "hud1";
this.hud1.navpitch = 0F;
this.hud1.navroll = 0F;
this.hud1.opengl = true;
this.hud1.pitch = 0F;
this.hud1.roll = 0F;
this.hud1.status = false;
this.hud1.streamjpg = ((System.IO.MemoryStream)(resources.GetObject("hud1.streamjpg")));
this.hud1.targetalt = 0F;
this.hud1.targetheading = 0F;
this.hud1.targetspeed = 0F;
this.hud1.turnrate = 0F;
this.hud1.verticalspeed = 0F;
this.hud1.VSync = false;
this.hud1.wpno = 0;
this.hud1.xtrack_error = 0F;
//
// bindingSource1
//
this.bindingSource1.DataSource = typeof(ArdupilotMega.CurrentState);
//
// timer1
//
this.timer1.Enabled = true;
this.timer1.Tick += new System.EventHandler(this.timer1_Tick);
//
// ConfigAteryxSensors
//
resources.ApplyResources(this, "$this");
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.Controls.Add(this.hud1);
this.Controls.Add(this.BUT_zero_press);
this.Controls.Add(this.BUT_zero_att);
this.Name = "ConfigAteryxSensors";
((System.ComponentModel.ISupportInitialize)(this.bindingSource1)).EndInit();
this.ResumeLayout(false);
}
#endregion
private ArdupilotMega.Controls.MyButton BUT_zero_att;
private System.Windows.Forms.ToolTip toolTip1;
private Controls.MyButton BUT_zero_press;
private Controls.HUD hud1;
private System.Windows.Forms.BindingSource bindingSource1;
private System.Windows.Forms.Timer timer1;
}
}

View File

@ -0,0 +1,107 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using ArdupilotMega.Controls.BackstageView;
using ArdupilotMega.Controls;
using ArdupilotMega.Utilities;
using System.Drawing.Drawing2D;
namespace ArdupilotMega.GCSViews.ConfigurationView
{
public partial class ConfigAteryxSensors : UserControl, IActivate, IDeactivate
{
public ConfigAteryxSensors()
{
InitializeComponent();
}
public void Activate()
{
if (!MainV2.comPort.BaseStream.IsOpen)
{
this.Enabled = false;
return;
}
else
{
if (MainV2.cs.firmware == MainV2.Firmwares.Ateryx)
{
this.Enabled = true;
}
else
{
this.Enabled = false;
return;
}
}
timer1.Start();
}
public void Deactivate()
{
timer1.Stop();
}
private void BUT_levelplane_Click(object sender, EventArgs e)
{
try
{
((Button)sender).Enabled = false;
if ((MainV2.cs.airspeed > 7.0) || (MainV2.cs.groundspeed > 10.0))
{
MessageBox.Show("Unable - UAV airborne");
((Button)sender).Enabled = true;
return;
}
#if MAVLINK10
//MainV2.comPort.doCommand((MAVLink.MAV_CMD)Enum.Parse(typeof(MAVLink.MAV_CMD), "MAV_CMD_PREFLIGHT_STORAGE"));
MainV2.comPort.doCommand(MAVLink.MAV_CMD.PREFLIGHT_CALIBRATION, 2.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f);
#else
MainV2.comPort.doAction((MAVLink.MAV_ACTION)Enum.Parse(typeof(MAVLink.MAV_ACTION), "MAV_ACTION_STORAGE_WRITE"));
#endif
}
catch { MessageBox.Show("Failed to Zero Attitude"); }
((Button)sender).Enabled = true;
}
private void BUT_zero_press_Click(object sender, EventArgs e)
{
try
{
((Button)sender).Enabled = false;
if ((MainV2.cs.airspeed > 7.0) || (MainV2.cs.groundspeed > 10.0))
{
MessageBox.Show("Unable - UAV airborne");
((Button)sender).Enabled = true;
return;
}
#if MAVLINK10
//MainV2.comPort.doCommand((MAVLink.MAV_CMD)Enum.Parse(typeof(MAVLink.MAV_CMD), "MAV_CMD_PREFLIGHT_STORAGE"));
MainV2.comPort.doCommand(MAVLink.MAV_CMD.PREFLIGHT_CALIBRATION, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f);
#else
MainV2.comPort.doAction((MAVLink.MAV_ACTION)Enum.Parse(typeof(MAVLink.MAV_ACTION), "MAV_ACTION_STORAGE_WRITE"));
#endif
}
catch { MessageBox.Show("The Command failed to execute"); }
((Button)sender).Enabled = true;
}
private void timer1_Tick(object sender, EventArgs e)
{
MainV2.cs.UpdateCurrentSettings(bindingSource1);
}
}
}

View File

@ -0,0 +1,143 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="label2.Text" xml:space="preserve">
<value>By default your plane will autolevel on every boot.
To disable this action you need to turn on manual
level and preform a level to calibrate the accel offsets.</value>
</data>
<data name="label1.Text" xml:space="preserve">
<value>Nur für fortgeschrittene User</value>
</data>
<data name="label28.Text" xml:space="preserve">
<value>Level your plane to set default accel offsets</value>
</data>
<data name="BUT_levelplane.Text" xml:space="preserve">
<value>Level</value>
</data>
<data name="BUT_levelplane.ToolTip" xml:space="preserve">
<value>Do a accel calibration now.</value>
</data>
<data name="CHK_manuallevel.ToolTip" xml:space="preserve">
<value>Disables autolevel and will keep the last done accel calibration</value>
</data>
<data name="CHK_manuallevel.Text" xml:space="preserve">
<value>Manuelles leveln</value>
</data>
</root>

View File

@ -0,0 +1,315 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="SV3_POS_.Text" xml:space="preserve">
<value>180</value>
</data>
<data name="BUT_HS4save.Text" xml:space="preserve">
<value>Manual</value>
</data>
<data name="label12.Text" xml:space="preserve">
<value>PWM 0 - 1230</value>
</data>
<data name="label10.Text" xml:space="preserve">
<value>PWM 1621 - 1749</value>
</data>
<data name="label13.Text" xml:space="preserve">
<value>Modo actual:</value>
</data>
<data name="CHK_enableoptflow.Text" xml:space="preserve">
<value>Habilitar el flujo óptico</value>
</data>
<data name="label16.Text" xml:space="preserve">
<value>NOTA: Las imágenes son sólo para su presentación</value>
</data>
<data name="CB_simple5.Text" xml:space="preserve">
<value>Modo Simple</value>
</data>
<data name="label11.Text" xml:space="preserve">
<value>PWM 1750 +</value>
</data>
<data name="CHK_elevonch1rev.Text" xml:space="preserve">
<value>Elevons CH1 Rev</value>
</data>
<data name="label14.Text" xml:space="preserve">
<value>PWM Actual:</value>
</data>
<data name="$this.Text" xml:space="preserve">
<value>APMSetup</value>
</data>
<data name="label17.Text" xml:space="preserve">
<value>Swash-Servo posición</value>
</data>
<data name="CHK_enablecompass.Text" xml:space="preserve">
<value>Activar Compas</value>
</data>
<data name="CB_simple4.Text" xml:space="preserve">
<value>Modo Simple</value>
</data>
<data name="tabArducopter.Text" xml:space="preserve">
<value>ArduCopter2</value>
</data>
<data name="CB_simple1.Text" xml:space="preserve">
<value>Modo Simple</value>
</data>
<data name="label15.Text" xml:space="preserve">
<value>Ajuste Chásis (+ or x)</value>
</data>
<data name="SV2_POS_.Text" xml:space="preserve">
<value>60</value>
</data>
<data name="label18.Text" xml:space="preserve">
<value>1</value>
</data>
<data name="CB_simple6.Text" xml:space="preserve">
<value>Modo Simple</value>
</data>
<data name="CB_simple3.Text" xml:space="preserve">
<value>Modo Simple</value>
</data>
<data name="label19.Text" xml:space="preserve">
<value>2</value>
</data>
<data name="tabModes.Text" xml:space="preserve">
<value>Modos</value>
</data>
<data name="CB_simple2.Text" xml:space="preserve">
<value>Modo Simple</value>
</data>
<data name="label20.Text" xml:space="preserve">
<value>3</value>
</data>
<data name="tabReset.Text" xml:space="preserve">
<value>Reset</value>
</data>
<data name="SV1_POS_.Text" xml:space="preserve">
<value>-60</value>
</data>
<data name="label21.Text" xml:space="preserve">
<value>Superior</value>
</data>
<data name="label22.Text" xml:space="preserve">
<value>Swash de Viaje</value>
</data>
<data name="lbl_currentmode.Text" xml:space="preserve">
<value>Manual</value>
</data>
<data name="label23.Text" xml:space="preserve">
<value>Timón de Viaje</value>
</data>
<data name="textBox3.Text" xml:space="preserve">
<value>Calibración del sensor de voltaje:Para calibrar el sensor, use un multímetro para medir la tensión que sale de la CES de la batería-la eliminación del circuito (se trata de cables negro y rojo en el cable de tres hilos que suministra energía a la placa APM).Luego reste 0,3 V de ese valor y entrar en él en el campo # 1 a la izquierda.</value>
</data>
<data name="BUT_Calibrateradio.Text" xml:space="preserve">
<value>Calibrar Radio</value>
</data>
<data name="label24.Text" xml:space="preserve">
<value>Max</value>
</data>
<data name="label2.Text" xml:space="preserve">
<value>Modo de Vuelo 2</value>
</data>
<data name="label25.Text" xml:space="preserve">
<value>Alabeo Max</value>
</data>
<data name="label3.Text" xml:space="preserve">
<value>Modo de Vuelo 3</value>
</data>
<data name="label26.Text" xml:space="preserve">
<value>Cabeceo Max</value>
</data>
<data name="label27.Text" xml:space="preserve">
<value>por ejemplo, en grados 2 ° 3 'W es -2,3</value>
</data>
<data name="label1.Text" xml:space="preserve">
<value>Modo de Vuelo 1</value>
</data>
<data name="label28.Text" xml:space="preserve">
<value>Nivel tu quad para establecer las compensaciones por defecto acel</value>
</data>
<data name="label6.Text" xml:space="preserve">
<value>Modo de Vuelo 6</value>
</data>
<data name="label29.Text" xml:space="preserve">
<value>Capacidad</value>
</data>
<data name="label100.Text" xml:space="preserve">
<value>Declinación</value>
</data>
<data name="CHK_enablesonar.Text" xml:space="preserve">
<value>Activar Sonar</value>
</data>
<data name="label7.Text" xml:space="preserve">
<value>PWM 1231 - 1360</value>
</data>
<data name="tabRadioIn.Text" xml:space="preserve">
<value>Entrada Radio</value>
</data>
<data name="groupBox4.Text" xml:space="preserve">
<value>Calibración</value>
</data>
<data name="HS4_MIN.Text" xml:space="preserve">
<value>1500</value>
</data>
<data name="label4.Text" xml:space="preserve">
<value>Modo de Vuelo 4</value>
</data>
<data name="label5.Text" xml:space="preserve">
<value>Modo de Vuelo 5</value>
</data>
<data name="groupBox3.Text" xml:space="preserve">
<value>Gyro</value>
</data>
<data name="label8.Text" xml:space="preserve">
<value>PWM 1361 - 1490</value>
</data>
<data name="tabHardware.Text" xml:space="preserve">
<value>Hardware</value>
</data>
<data name="label9.Text" xml:space="preserve">
<value>PWM 1491 - 1620</value>
</data>
<data name="linkLabelmagdec.Text" xml:space="preserve">
<value>Sitio Web Declinación</value>
</data>
<data name="HS4_MAX.Text" xml:space="preserve">
<value>1500</value>
</data>
<data name="tabBattery.Text" xml:space="preserve">
<value>Batería</value>
</data>
<data name="BUT_0collective.Text" xml:space="preserve">
<value>Cero</value>
</data>
<data name="CHK_enableairspeed.Text" xml:space="preserve">
<value>Activar Airspeed</value>
</data>
<data name="PIT_MAX_.Text" xml:space="preserve">
<value>4500</value>
</data>
<data name="BUT_reset.Text" xml:space="preserve">
<value>Restablecer los Ajustes de hardware APM</value>
</data>
<data name="GYR_GAIN_.Text" xml:space="preserve">
<value>1000</value>
</data>
<data name="label30.Text" xml:space="preserve">
<value>Monitor</value>
</data>
</root>

View File

@ -0,0 +1,141 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="label2.Text" xml:space="preserve">
<value>Mode de vol 2</value>
</data>
<data name="label1.Text" xml:space="preserve">
<value>Mode de vol 1</value>
</data>
<data name="label28.Text" xml:space="preserve">
<value>Niveler l'apareil pour copensation des accels</value>
</data>
<data name="BUT_levelplane.Text" xml:space="preserve">
<value>Level</value>
</data>
<data name="BUT_levelplane.ToolTip" xml:space="preserve">
<value>Do a accel calibration now.</value>
</data>
<data name="CHK_manuallevel.ToolTip" xml:space="preserve">
<value>Disables autolevel and will keep the last done accel calibration</value>
</data>
<data name="CHK_manuallevel.Text" xml:space="preserve">
<value>Manual level</value>
</data>
</root>

View File

@ -0,0 +1,318 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="SV3_POS_.Text" xml:space="preserve">
<value>180</value>
</data>
<data name="BUT_HS4save.Text" xml:space="preserve">
<value>Manuale</value>
</data>
<data name="label12.Text" xml:space="preserve">
<value>PWM 0 - 1230</value>
</data>
<data name="label10.Text" xml:space="preserve">
<value>PWM 1621 - 1749</value>
</data>
<data name="label13.Text" xml:space="preserve">
<value>Modo Corrente:</value>
</data>
<data name="CHK_enableoptflow.Text" xml:space="preserve">
<value>Abilita Flusso ottico</value>
</data>
<data name="label16.Text" xml:space="preserve">
<value>Nota: le immagini sono sono per presentazione, funzionerà con Hexa, etc.</value>
</data>
<data name="CB_simple5.Text" xml:space="preserve">
<value>Modo Semplice</value>
</data>
<data name="label11.Text" xml:space="preserve">
<value>PWM 1750 +</value>
</data>
<data name="CHK_elevonch1rev.Text" xml:space="preserve">
<value>Elevatore CH1 Rev</value>
</data>
<data name="label14.Text" xml:space="preserve">
<value>PWM Corrente:</value>
</data>
<data name="$this.Text" xml:space="preserve">
<value>Imposta APM</value>
</data>
<data name="label17.Text" xml:space="preserve">
<value>Posizione del servo del piatto</value>
</data>
<data name="CHK_enablecompass.Text" xml:space="preserve">
<value>Abilita Magnetometro</value>
</data>
<data name="CB_simple4.Text" xml:space="preserve">
<value>Modo Semplice</value>
</data>
<data name="tabArducopter.Text" xml:space="preserve">
<value>ArduCopter2</value>
</data>
<data name="CB_simple1.Text" xml:space="preserve">
<value>Modo Semplice</value>
</data>
<data name="label15.Text" xml:space="preserve">
<value>Imposta Frame (+ or x)</value>
</data>
<data name="SV2_POS_.Text" xml:space="preserve">
<value>60</value>
</data>
<data name="label18.Text" xml:space="preserve">
<value>1</value>
</data>
<data name="CB_simple6.Text" xml:space="preserve">
<value>Modo Semplice</value>
</data>
<data name="CB_simple3.Text" xml:space="preserve">
<value>Modo Semplice</value>
</data>
<data name="label19.Text" xml:space="preserve">
<value>2</value>
</data>
<data name="tabModes.Text" xml:space="preserve">
<value>Modi</value>
</data>
<data name="CB_simple2.Text" xml:space="preserve">
<value>Modo Semplice</value>
</data>
<data name="label20.Text" xml:space="preserve">
<value>3</value>
</data>
<data name="tabReset.Text" xml:space="preserve">
<value>Riavvia</value>
</data>
<data name="SV1_POS_.Text" xml:space="preserve">
<value>-60</value>
</data>
<data name="label21.Text" xml:space="preserve">
<value>Alto</value>
</data>
<data name="label22.Text" xml:space="preserve">
<value>Escursione del piatto</value>
</data>
<data name="lbl_currentmode.Text" xml:space="preserve">
<value>Manuale</value>
</data>
<data name="label23.Text" xml:space="preserve">
<value>Escursione Timone</value>
</data>
<data name="textBox3.Text" xml:space="preserve">
<value>Calibarzione del sensore di voltaggio:
1. Misura il valtaggio di ingresso di APM e inseriscilo nel box sotto
2. Misura il voltaggio della batteria e inseriscilo nel box sotto
3. Dalle caratteristiche del sensore di corrente, inserisci il valore degli ampere per volt nel box qui sotto</value>
</data>
<data name="BUT_Calibrateradio.Text" xml:space="preserve">
<value>Calibrazione Radio</value>
</data>
<data name="label24.Text" xml:space="preserve">
<value>Massimo</value>
</data>
<data name="label2.Text" xml:space="preserve">
<value>Modo di volo 2</value>
</data>
<data name="label25.Text" xml:space="preserve">
<value>Rollio massimo</value>
</data>
<data name="label3.Text" xml:space="preserve">
<value>Modo di volo 3</value>
</data>
<data name="label26.Text" xml:space="preserve">
<value>Passo massimo</value>
</data>
<data name="label27.Text" xml:space="preserve">
<value>in gradi es 2° 3' W is -2.3</value>
</data>
<data name="label1.Text" xml:space="preserve">
<value>Modo di volo 1</value>
</data>
<data name="label28.Text" xml:space="preserve">
<value>Livella il quad per impostare gli accelerometri</value>
</data>
<data name="label6.Text" xml:space="preserve">
<value>Modo di volo 6</value>
</data>
<data name="label29.Text" xml:space="preserve">
<value>Capacità</value>
</data>
<data name="label100.Text" xml:space="preserve">
<value>Declinazione</value>
</data>
<data name="CHK_enablesonar.Text" xml:space="preserve">
<value>Attiva Sonar</value>
</data>
<data name="label7.Text" xml:space="preserve">
<value>PWM 1231 - 1360</value>
</data>
<data name="tabRadioIn.Text" xml:space="preserve">
<value>Ingresso Radio</value>
</data>
<data name="groupBox4.Text" xml:space="preserve">
<value>Calibration</value>
</data>
<data name="HS4_MIN.Text" xml:space="preserve">
<value>1500</value>
</data>
<data name="label4.Text" xml:space="preserve">
<value>Modo di volo 4</value>
</data>
<data name="label5.Text" xml:space="preserve">
<value>Modo di volo 5</value>
</data>
<data name="groupBox3.Text" xml:space="preserve">
<value>Giroscopio</value>
</data>
<data name="label8.Text" xml:space="preserve">
<value>PWM 1361 - 1490</value>
</data>
<data name="tabHardware.Text" xml:space="preserve">
<value>Hardware</value>
</data>
<data name="label9.Text" xml:space="preserve">
<value>PWM 1491 - 1620</value>
</data>
<data name="linkLabelmagdec.Text" xml:space="preserve">
<value>Sito Web per la Declinazione</value>
</data>
<data name="HS4_MAX.Text" xml:space="preserve">
<value>1500</value>
</data>
<data name="tabBattery.Text" xml:space="preserve">
<value>Batteria</value>
</data>
<data name="BUT_0collective.Text" xml:space="preserve">
<value>Zero</value>
</data>
<data name="CHK_enableairspeed.Text" xml:space="preserve">
<value>Attiva Sensore Velocità</value>
</data>
<data name="PIT_MAX_.Text" xml:space="preserve">
<value>4500</value>
</data>
<data name="BUT_reset.Text" xml:space="preserve">
<value>Resetta APM ai valori di Default</value>
</data>
<data name="GYR_GAIN_.Text" xml:space="preserve">
<value>1000</value>
</data>
<data name="label30.Text" xml:space="preserve">
<value>Monitor</value>
</data>
</root>

View File

@ -0,0 +1,318 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="SV3_POS_.Text" xml:space="preserve">
<value>180</value>
</data>
<data name="BUT_HS4save.Text" xml:space="preserve">
<value>Ręczne</value>
</data>
<data name="label12.Text" xml:space="preserve">
<value>PWM 0 - 1230</value>
</data>
<data name="label10.Text" xml:space="preserve">
<value>PWM 1621 - 1749</value>
</data>
<data name="label13.Text" xml:space="preserve">
<value>Aktualny tryb:</value>
</data>
<data name="CHK_enableoptflow.Text" xml:space="preserve">
<value>Włącz Optical Flow</value>
</data>
<data name="label16.Text" xml:space="preserve">
<value>UWAGA: Obrazy są wyłącznie do prezentacji, działają jedynie z hexa, itp.</value>
</data>
<data name="CB_simple5.Text" xml:space="preserve">
<value>Tryb prosty</value>
</data>
<data name="label11.Text" xml:space="preserve">
<value>PWM 1750 +</value>
</data>
<data name="CHK_elevonch1rev.Text" xml:space="preserve">
<value>Odwr. Elevon CH1</value>
</data>
<data name="label14.Text" xml:space="preserve">
<value>Aktualny PWM:</value>
</data>
<data name="$this.Text" xml:space="preserve">
<value>Ustawienia APM</value>
</data>
<data name="label17.Text" xml:space="preserve">
<value>Pozycja serwa płyty ster.</value>
</data>
<data name="CHK_enablecompass.Text" xml:space="preserve">
<value>Włącz kompas</value>
</data>
<data name="CB_simple4.Text" xml:space="preserve">
<value>Tryb prosty</value>
</data>
<data name="tabArducopter.Text" xml:space="preserve">
<value>ArduCopter2</value>
</data>
<data name="CB_simple1.Text" xml:space="preserve">
<value>Tryb prosty</value>
</data>
<data name="label15.Text" xml:space="preserve">
<value>Ustawienie ramy (+ lub x)</value>
</data>
<data name="SV2_POS_.Text" xml:space="preserve">
<value>60</value>
</data>
<data name="label18.Text" xml:space="preserve">
<value>1</value>
</data>
<data name="CB_simple6.Text" xml:space="preserve">
<value>Tryb prosty</value>
</data>
<data name="CB_simple3.Text" xml:space="preserve">
<value>Tryb prosty</value>
</data>
<data name="label19.Text" xml:space="preserve">
<value>2</value>
</data>
<data name="tabModes.Text" xml:space="preserve">
<value>Tryby</value>
</data>
<data name="CB_simple2.Text" xml:space="preserve">
<value>Tryb prosty</value>
</data>
<data name="label20.Text" xml:space="preserve">
<value>3</value>
</data>
<data name="tabReset.Text" xml:space="preserve">
<value>Reset</value>
</data>
<data name="SV1_POS_.Text" xml:space="preserve">
<value>-60</value>
</data>
<data name="label21.Text" xml:space="preserve">
<value>Góra</value>
</data>
<data name="label22.Text" xml:space="preserve">
<value>Zakres ruchu płyty sterującej</value>
</data>
<data name="lbl_currentmode.Text" xml:space="preserve">
<value>Ręczne</value>
</data>
<data name="label23.Text" xml:space="preserve">
<value>Zakres steru kierunku</value>
</data>
<data name="textBox3.Text" xml:space="preserve">
<value>Kalibracja czujnika napięcia:
1. Zmierz napięcie wejściowe APM i wpisz poniżej
2. Zmierz napięcie baterii i wpisz poniżej
3. Wpisz poniżej ilość amperów/wolt [A/V] z dokumentacji czujnika prądu</value>
</data>
<data name="BUT_Calibrateradio.Text" xml:space="preserve">
<value>Kalibracja radia</value>
</data>
<data name="label24.Text" xml:space="preserve">
<value>Max</value>
</data>
<data name="label2.Text" xml:space="preserve">
<value>Tryb lotu 2</value>
</data>
<data name="label25.Text" xml:space="preserve">
<value>Max przechylenie</value>
</data>
<data name="label3.Text" xml:space="preserve">
<value>Tryb lotu 3</value>
</data>
<data name="label26.Text" xml:space="preserve">
<value>Max pochylenie</value>
</data>
<data name="label27.Text" xml:space="preserve">
<value>w stopniech np. 2° 3' W to -2.3</value>
</data>
<data name="label1.Text" xml:space="preserve">
<value>Tryb lotu 1</value>
</data>
<data name="label28.Text" xml:space="preserve">
<value>Wypoziomuj quada żeby stawić domyśle offsety przysp.</value>
</data>
<data name="label6.Text" xml:space="preserve">
<value>Tryb lotu 6</value>
</data>
<data name="label29.Text" xml:space="preserve">
<value>Pojemność</value>
</data>
<data name="label100.Text" xml:space="preserve">
<value>Deklinacja</value>
</data>
<data name="CHK_enablesonar.Text" xml:space="preserve">
<value>Włącz sonar</value>
</data>
<data name="label7.Text" xml:space="preserve">
<value>PWM 1231 - 1360</value>
</data>
<data name="tabRadioIn.Text" xml:space="preserve">
<value>Wejścia radia</value>
</data>
<data name="groupBox4.Text" xml:space="preserve">
<value>Calibration</value>
</data>
<data name="HS4_MIN.Text" xml:space="preserve">
<value>1500</value>
</data>
<data name="label4.Text" xml:space="preserve">
<value>Tryb lotu 4</value>
</data>
<data name="label5.Text" xml:space="preserve">
<value>Tryb lotu 5</value>
</data>
<data name="groupBox3.Text" xml:space="preserve">
<value>Żyro</value>
</data>
<data name="label8.Text" xml:space="preserve">
<value>PWM 1361 - 1490</value>
</data>
<data name="tabHardware.Text" xml:space="preserve">
<value>Hardware</value>
</data>
<data name="label9.Text" xml:space="preserve">
<value>PWM 1491 - 1620</value>
</data>
<data name="linkLabelmagdec.Text" xml:space="preserve">
<value>Strona www deklinacji</value>
</data>
<data name="HS4_MAX.Text" xml:space="preserve">
<value>1500</value>
</data>
<data name="tabBattery.Text" xml:space="preserve">
<value>Bateria</value>
</data>
<data name="BUT_0collective.Text" xml:space="preserve">
<value>Zero</value>
</data>
<data name="CHK_enableairspeed.Text" xml:space="preserve">
<value>Włącz prędkość powietrza</value>
</data>
<data name="PIT_MAX_.Text" xml:space="preserve">
<value>4500</value>
</data>
<data name="BUT_reset.Text" xml:space="preserve">
<value>Reset APM do stawień domyślnych</value>
</data>
<data name="GYR_GAIN_.Text" xml:space="preserve">
<value>1000</value>
</data>
<data name="label30.Text" xml:space="preserve">
<value>Monitor</value>
</data>
</root>

View File

@ -0,0 +1,254 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<metadata name="toolTip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 24</value>
</metadata>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="BUT_zero_att.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="BUT_zero_att.Location" type="System.Drawing.Point, System.Drawing">
<value>284, 23</value>
</data>
<data name="BUT_zero_att.Size" type="System.Drawing.Size, System.Drawing">
<value>75, 23</value>
</data>
<assembly alias="mscorlib" name="mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="BUT_zero_att.TabIndex" type="System.Int32, mscorlib">
<value>14</value>
</data>
<data name="BUT_zero_att.Text" xml:space="preserve">
<value>Zero Attitude</value>
</data>
<data name="BUT_zero_att.ToolTip" xml:space="preserve">
<value>Do a accel calibration now.</value>
</data>
<data name="&gt;&gt;BUT_zero_att.Name" xml:space="preserve">
<value>BUT_zero_att</value>
</data>
<data name="&gt;&gt;BUT_zero_att.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner10, Version=1.1.4708.38784, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;BUT_zero_att.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;BUT_zero_att.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<data name="BUT_zero_press.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="BUT_zero_press.Location" type="System.Drawing.Point, System.Drawing">
<value>284, 52</value>
</data>
<data name="BUT_zero_press.Size" type="System.Drawing.Size, System.Drawing">
<value>75, 23</value>
</data>
<data name="BUT_zero_press.TabIndex" type="System.Int32, mscorlib">
<value>15</value>
</data>
<data name="BUT_zero_press.Text" xml:space="preserve">
<value>Zero Pressure</value>
</data>
<data name="BUT_zero_press.ToolTip" xml:space="preserve">
<value>Do a accel calibration now.</value>
</data>
<data name="&gt;&gt;BUT_zero_press.Name" xml:space="preserve">
<value>BUT_zero_press</value>
</data>
<data name="&gt;&gt;BUT_zero_press.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner10, Version=1.1.4708.38784, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;BUT_zero_press.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;BUT_zero_press.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<metadata name="bindingSource1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>140, 22</value>
</metadata>
<data name="hud1.Location" type="System.Drawing.Point, System.Drawing">
<value>13, 12</value>
</data>
<data name="hud1.Size" type="System.Drawing.Size, System.Drawing">
<value>266, 249</value>
</data>
<data name="hud1.streamjpg" mimetype="application/x-microsoft.net.object.binary.base64">
<value>
AAEAAAD/////AQAAAAAAAAAEAQAAABZTeXN0ZW0uSU8uTWVtb3J5U3RyZWFtCgAAAAdfYnVmZmVyB19v
cmlnaW4JX3Bvc2l0aW9uB19sZW5ndGgJX2NhcGFjaXR5C19leHBhbmRhYmxlCV93cml0YWJsZQpfZXhw
b3NhYmxlB19pc09wZW4dTWFyc2hhbEJ5UmVmT2JqZWN0K19faWRlbnRpdHkHAAAAAAAAAAACAggICAgB
AQEBCQIAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQoPAgAAAAAAAAACCw==
</value>
</data>
<data name="hud1.TabIndex" type="System.Int32, mscorlib">
<value>16</value>
</data>
<data name="&gt;&gt;hud1.Name" xml:space="preserve">
<value>hud1</value>
</data>
<data name="&gt;&gt;hud1.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.HUD, ArdupilotMegaPlanner10, Version=1.1.4708.38784, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;hud1.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;hud1.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<metadata name="timer1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>277, 22</value>
</metadata>
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
<value>6, 13</value>
</data>
<data name="$this.Size" type="System.Drawing.Size, System.Drawing">
<value>439, 356</value>
</data>
<data name="&gt;&gt;toolTip1.Name" xml:space="preserve">
<value>toolTip1</value>
</data>
<data name="&gt;&gt;toolTip1.Type" xml:space="preserve">
<value>System.Windows.Forms.ToolTip, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;bindingSource1.Name" xml:space="preserve">
<value>bindingSource1</value>
</data>
<data name="&gt;&gt;bindingSource1.Type" xml:space="preserve">
<value>System.Windows.Forms.BindingSource, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;timer1.Name" xml:space="preserve">
<value>timer1</value>
</data>
<data name="&gt;&gt;timer1.Type" xml:space="preserve">
<value>System.Windows.Forms.Timer, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;$this.Name" xml:space="preserve">
<value>ConfigAteryxSensors</value>
</data>
<data name="&gt;&gt;$this.Type" xml:space="preserve">
<value>System.Windows.Forms.UserControl, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
</root>

View File

@ -0,0 +1,158 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="label28.Size" type="System.Drawing.Size, System.Drawing">
<value>175, 13</value>
</data>
<data name="label28.Text" xml:space="preserve">
<value>设置水平面的默认加速度计偏移</value>
</data>
<data name="BUT_levelplane.Text" xml:space="preserve">
<value>置平</value>
</data>
<data name="BUT_levelplane.ToolTip" xml:space="preserve">
<value>执行加速度计校准</value>
</data>
<data name="CHK_manuallevel.Size" type="System.Drawing.Size, System.Drawing">
<value>74, 17</value>
</data>
<data name="CHK_manuallevel.Text" xml:space="preserve">
<value>手动置平</value>
</data>
<data name="CHK_manuallevel.ToolTip" xml:space="preserve">
<value>禁用自动置平,并将保留最后一次加速度计校准值</value>
</data>
<data name="label1.Size" type="System.Drawing.Size, System.Drawing">
<value>91, 13</value>
</data>
<data name="label1.Text" xml:space="preserve">
<value>仅限于高级用户</value>
</data>
<assembly alias="mscorlib" name="mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="label2.AutoSize" type="System.Boolean, mscorlib">
<value>False</value>
</data>
<data name="label2.Size" type="System.Drawing.Size, System.Drawing">
<value>258, 61</value>
</data>
<data name="label2.Text" xml:space="preserve">
<value>默认情况下飞机将在每次启动时自动置平。要禁用这个动作,你需要开启手动置平,并执行一个置平操作来校准加速度计偏移。</value>
</data>
</root>

View File

@ -0,0 +1,460 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="tabReset.Text" xml:space="preserve">
<value>重置</value>
</data>
<data name="tabRadioIn.Text" xml:space="preserve">
<value>遙控輸入</value>
</data>
<data name="tabModes.Text" xml:space="preserve">
<value>模式</value>
</data>
<data name="tabHardware.Text" xml:space="preserve">
<value>硬件</value>
</data>
<data name="tabBattery.Text" xml:space="preserve">
<value>電池</value>
</data>
<data name="BUT_reset.Text" xml:space="preserve">
<value>重置 APM 為默認設置</value>
</data>
<assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="CHK_revch3.Size" type="System.Drawing.Size, System.Drawing">
<value>50, 17</value>
</data>
<data name="CHK_revch3.Text" xml:space="preserve">
<value>逆轉</value>
</data>
<data name="CHK_revch4.Size" type="System.Drawing.Size, System.Drawing">
<value>50, 17</value>
</data>
<data name="CHK_revch4.Text" xml:space="preserve">
<value>逆轉</value>
</data>
<data name="CHK_revch2.Size" type="System.Drawing.Size, System.Drawing">
<value>50, 17</value>
</data>
<data name="CHK_revch2.Text" xml:space="preserve">
<value>逆轉</value>
</data>
<data name="CHK_revch1.Size" type="System.Drawing.Size, System.Drawing">
<value>50, 17</value>
</data>
<data name="CHK_revch1.Text" xml:space="preserve">
<value>逆轉</value>
</data>
<data name="BUT_Calibrateradio.Text" xml:space="preserve">
<value>校準遙控</value>
</data>
<data name="CB_simple6.Size" type="System.Drawing.Size, System.Drawing">
<value>74, 17</value>
</data>
<data name="CB_simple6.Text" xml:space="preserve">
<value>簡單模式</value>
</data>
<data name="CB_simple5.Size" type="System.Drawing.Size, System.Drawing">
<value>74, 17</value>
</data>
<data name="CB_simple5.Text" xml:space="preserve">
<value>簡單模式</value>
</data>
<data name="CB_simple4.Size" type="System.Drawing.Size, System.Drawing">
<value>74, 17</value>
</data>
<data name="CB_simple4.Text" xml:space="preserve">
<value>簡單模式</value>
</data>
<data name="CB_simple3.Size" type="System.Drawing.Size, System.Drawing">
<value>74, 17</value>
</data>
<data name="CB_simple3.Text" xml:space="preserve">
<value>簡單模式</value>
</data>
<data name="CB_simple2.Size" type="System.Drawing.Size, System.Drawing">
<value>74, 17</value>
</data>
<data name="CB_simple2.Text" xml:space="preserve">
<value>簡單模式</value>
</data>
<data name="CB_simple1.Size" type="System.Drawing.Size, System.Drawing">
<value>74, 17</value>
</data>
<data name="CB_simple1.Text" xml:space="preserve">
<value>簡單模式</value>
</data>
<data name="label14.Size" type="System.Drawing.Size, System.Drawing">
<value>64, 13</value>
</data>
<data name="label14.Text" xml:space="preserve">
<value>當前 PWM:</value>
</data>
<data name="label13.Size" type="System.Drawing.Size, System.Drawing">
<value>58, 13</value>
</data>
<data name="label13.Text" xml:space="preserve">
<value>當前模式:</value>
</data>
<data name="label6.Size" type="System.Drawing.Size, System.Drawing">
<value>64, 13</value>
</data>
<data name="label6.Text" xml:space="preserve">
<value>飛行模式 6</value>
</data>
<data name="label5.Size" type="System.Drawing.Size, System.Drawing">
<value>64, 13</value>
</data>
<data name="label5.Text" xml:space="preserve">
<value>飛行模式 5</value>
</data>
<data name="label4.Size" type="System.Drawing.Size, System.Drawing">
<value>64, 13</value>
</data>
<data name="label4.Text" xml:space="preserve">
<value>飛行模式 4</value>
</data>
<data name="label3.Size" type="System.Drawing.Size, System.Drawing">
<value>64, 13</value>
</data>
<data name="label3.Text" xml:space="preserve">
<value>飛行模式 3</value>
</data>
<data name="label2.Size" type="System.Drawing.Size, System.Drawing">
<value>64, 13</value>
</data>
<data name="label2.Text" xml:space="preserve">
<value>飛行模式 2</value>
</data>
<data name="label1.Size" type="System.Drawing.Size, System.Drawing">
<value>64, 13</value>
</data>
<data name="label1.Text" xml:space="preserve">
<value>飛行模式 1</value>
</data>
<data name="BUT_SaveModes.Text" xml:space="preserve">
<value>保存模式</value>
</data>
<data name="linkLabelmagdec.Size" type="System.Drawing.Size, System.Drawing">
<value>67, 13</value>
</data>
<data name="linkLabelmagdec.Text" xml:space="preserve">
<value>磁偏角網站</value>
</data>
<data name="label100.Text" xml:space="preserve">
<value>磁偏角</value>
</data>
<data name="CHK_enableairspeed.Text" xml:space="preserve">
<value>啟用空速計</value>
</data>
<data name="CHK_enablesonar.Text" xml:space="preserve">
<value>啟用聲納</value>
</data>
<data name="CHK_enablecompass.Text" xml:space="preserve">
<value>啟用羅盤</value>
</data>
<data name="label35.Size" type="System.Drawing.Size, System.Drawing">
<value>63, 13</value>
</data>
<data name="label35.Text" xml:space="preserve">
<value>安培/伏特:</value>
</data>
<data name="label34.Size" type="System.Drawing.Size, System.Drawing">
<value>52, 13</value>
</data>
<data name="label34.Text" xml:space="preserve">
<value>分 壓 比:</value>
</data>
<data name="label33.Size" type="System.Drawing.Size, System.Drawing">
<value>58, 13</value>
</data>
<data name="label33.Text" xml:space="preserve">
<value>電池電壓:</value>
</data>
<data name="label32.Size" type="System.Drawing.Size, System.Drawing">
<value>94, 13</value>
</data>
<data name="label32.Text" xml:space="preserve">
<value>測量的電池電壓:</value>
</data>
<data name="label31.Size" type="System.Drawing.Size, System.Drawing">
<value>58, 13</value>
</data>
<data name="label31.Text" xml:space="preserve">
<value>輸入電壓:</value>
</data>
<data name="textBox3.Text" xml:space="preserve">
<value>電壓傳感器校準:
1. 測量APM輸入電壓輸入到下方的文本框中
2. 測量電池電壓,輸入到下方的文本框中
3. 從當前的傳感器的數據表中找到安培/伏特,輸入到下方的文本框中</value>
</data>
<data name="label29.Size" type="System.Drawing.Size, System.Drawing">
<value>31, 13</value>
</data>
<data name="label29.Text" xml:space="preserve">
<value>容量</value>
</data>
<data name="label30.Size" type="System.Drawing.Size, System.Drawing">
<value>48, 13</value>
</data>
<data name="label30.Text" xml:space="preserve">
<value>監控器</value>
</data>
<data name="label28.Size" type="System.Drawing.Size, System.Drawing">
<value>175, 13</value>
</data>
<data name="label28.Text" xml:space="preserve">
<value>設置水平面的默認加速度計偏移</value>
</data>
<data name="label16.Size" type="System.Drawing.Size, System.Drawing">
<value>261, 13</value>
</data>
<data name="label16.Text" xml:space="preserve">
<value>注: 圖片只是用於展示,設置可以用於六軸等機架</value>
</data>
<data name="label15.Size" type="System.Drawing.Size, System.Drawing">
<value>93, 13</value>
</data>
<data name="label15.Text" xml:space="preserve">
<value>機架設置 (+ 或 x)</value>
</data>
<data name="BUT_levelac2.Text" xml:space="preserve">
<value>找平</value>
</data>
<data name="label46.Size" type="System.Drawing.Size, System.Drawing">
<value>31, 13</value>
</data>
<data name="label46.Text" xml:space="preserve">
<value>感度</value>
</data>
<data name="label45.Size" type="System.Drawing.Size, System.Drawing">
<value>31, 13</value>
</data>
<data name="label45.Text" xml:space="preserve">
<value>啟用</value>
</data>
<data name="label44.Size" type="System.Drawing.Size, System.Drawing">
<value>31, 13</value>
</data>
<data name="label44.Text" xml:space="preserve">
<value>微調</value>
</data>
<data name="label43.Size" type="System.Drawing.Size, System.Drawing">
<value>31, 13</value>
</data>
<data name="label43.Text" xml:space="preserve">
<value>逆轉</value>
</data>
<data name="label42.Size" type="System.Drawing.Size, System.Drawing">
<value>43, 13</value>
</data>
<data name="label42.Text" xml:space="preserve">
<value>方向舵</value>
</data>
<data name="BUT_HS4save.Text" xml:space="preserve">
<value>手動</value>
</data>
<data name="label24.Size" type="System.Drawing.Size, System.Drawing">
<value>31, 13</value>
</data>
<data name="label24.Text" xml:space="preserve">
<value>最大</value>
</data>
<data name="label40.Size" type="System.Drawing.Size, System.Drawing">
<value>31, 13</value>
</data>
<data name="label40.Text" xml:space="preserve">
<value>最小</value>
</data>
<data name="BUT_swash_manual.Text" xml:space="preserve">
<value>手動</value>
</data>
<data name="label41.Size" type="System.Drawing.Size, System.Drawing">
<value>31, 13</value>
</data>
<data name="label41.Text" xml:space="preserve">
<value>最低</value>
</data>
<data name="label21.Size" type="System.Drawing.Size, System.Drawing">
<value>31, 13</value>
</data>
<data name="label21.Text" xml:space="preserve">
<value>最高</value>
</data>
<data name="BUT_0collective.Text" xml:space="preserve">
<value>0度</value>
</data>
<data name="label39.Size" type="System.Drawing.Size, System.Drawing">
<value>31, 13</value>
</data>
<data name="label39.Text" xml:space="preserve">
<value>微調</value>
</data>
<data name="label38.Size" type="System.Drawing.Size, System.Drawing">
<value>31, 13</value>
</data>
<data name="label38.Text" xml:space="preserve">
<value>逆轉</value>
</data>
<data name="label37.Size" type="System.Drawing.Size, System.Drawing">
<value>31, 13</value>
</data>
<data name="label37.Text" xml:space="preserve">
<value>位置</value>
</data>
<data name="label36.Size" type="System.Drawing.Size, System.Drawing">
<value>31, 13</value>
</data>
<data name="label36.Text" xml:space="preserve">
<value>舵機</value>
</data>
<data name="label26.Size" type="System.Drawing.Size, System.Drawing">
<value>55, 13</value>
</data>
<data name="label26.Text" xml:space="preserve">
<value>最大俯仰</value>
</data>
<data name="label25.Size" type="System.Drawing.Size, System.Drawing">
<value>55, 13</value>
</data>
<data name="label25.Text" xml:space="preserve">
<value>最大側傾</value>
</data>
<data name="label23.Size" type="System.Drawing.Size, System.Drawing">
<value>55, 13</value>
</data>
<data name="label23.Text" xml:space="preserve">
<value>舵機行程</value>
</data>
<data name="label22.Size" type="System.Drawing.Size, System.Drawing">
<value>79, 13</value>
</data>
<data name="label22.Text" xml:space="preserve">
<value>斜盤水平微調</value>
</data>
<data name="label17.Size" type="System.Drawing.Size, System.Drawing">
<value>79, 13</value>
</data>
<data name="label17.Text" xml:space="preserve">
<value>斜盤舵機位置</value>
</data>
<data name="$this.Text" xml:space="preserve">
<value>APM設置</value>
</data>
</root>

View File

@ -13,6 +13,7 @@
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
startup = true;
if (disposing && (components != null))
{
components.Dispose();

View File

@ -82,6 +82,8 @@ namespace ArdupilotMega.GCSViews.ConfigurationView
{
CMB_batmonsensortype.Enabled = false;
groupBox4.Enabled = false;
MainV2.comPort.setParam("BATT_VOLT_PIN", -1);
MainV2.comPort.setParam("BATT_CURR_PIN", -1);
}
else if (selection == 4)
{
@ -102,7 +104,7 @@ namespace ArdupilotMega.GCSViews.ConfigurationView
MainV2.comPort.setParam("BATT_MONITOR", selection);
}
}
catch { CustomMessageBox.Show("Set BATT_MONITOR Failed"); }
catch { CustomMessageBox.Show("Set BATT_MONITOR,BATT_VOLT_PIN,BATT_CURR_PIN Failed"); }
}
private void TXT_inputvoltage_Validating(object sender, CancelEventArgs e)
{
@ -289,6 +291,8 @@ namespace ArdupilotMega.GCSViews.ConfigurationView
TXT_measuredvoltage.Enabled = true;
TXT_inputvoltage.Enabled = true;
}
disableinstructionbox();
}
public void Deactivate()
@ -408,24 +412,49 @@ namespace ArdupilotMega.GCSViews.ConfigurationView
int selection = int.Parse(CMB_apmversion.Text.Substring(0, 1));
if (selection == 0)
try
{
// apm1
MainV2.comPort.setParam("BATT_VOLT_PIN", 0);
MainV2.comPort.setParam("BATT_CURR_PIN", 1);
if (selection == 0)
{
// apm1
MainV2.comPort.setParam("BATT_VOLT_PIN", 0);
MainV2.comPort.setParam("BATT_CURR_PIN", 1);
}
else if (selection == 1)
{
// apm2
MainV2.comPort.setParam("BATT_VOLT_PIN", 1);
MainV2.comPort.setParam("BATT_CURR_PIN", 2);
}
else if (selection == 2)
{
//apm2.5
MainV2.comPort.setParam("BATT_VOLT_PIN", 13);
MainV2.comPort.setParam("BATT_CURR_PIN", 12);
}
}
else if (selection == 1)
catch { CustomMessageBox.Show("Set BATT_????_PIN Failed"); }
disableinstructionbox();
}
void disableinstructionbox()
{
try
{
// apm2
MainV2.comPort.setParam("BATT_VOLT_PIN", 1);
MainV2.comPort.setParam("BATT_CURR_PIN", 2);
}
else if (selection == 2)
{
//apm2.5
MainV2.comPort.setParam("BATT_VOLT_PIN", 13);
MainV2.comPort.setParam("BATT_CURR_PIN", 12);
if (int.Parse(CMB_apmversion.Text.Substring(0, 1)) == 2)
{
if (int.Parse(CMB_batmonsensortype.Text.Substring(0, 1)) == 4)
{
textBox3.Visible = false;
}
else
{
textBox3.Visible = true;
}
}
}
catch { }
}
}
}

View File

@ -82,6 +82,7 @@
this.lbl_currentmode.DataBindings.Add(new System.Windows.Forms.Binding("Text", this.currentStateBindingSource, "mode", true));
resources.ApplyResources(this.lbl_currentmode, "lbl_currentmode");
this.lbl_currentmode.Name = "lbl_currentmode";
this.lbl_currentmode.TextChanged += new System.EventHandler(this.lbl_currentmode_TextChanged);
//
// currentStateBindingSource
//

View File

@ -102,5 +102,17 @@ namespace ArdupilotMega.GCSViews.ConfigurationView
lbl_gpslock.Text = gps;
}
private void lbl_currentmode_TextChanged(object sender, EventArgs e)
{
if (MainV2.cs.ch3in < (float)MainV2.comPort.param["THR_FS_VALUE"])
{
lbl_currentmode.ForeColor = Color.Red;
}
else
{
lbl_currentmode.ForeColor = Color.White;
}
}
}
}

View File

@ -280,7 +280,7 @@
<value>mavlinkCheckBoxthr_fs</value>
</data>
<data name="&gt;&gt;mavlinkCheckBoxthr_fs.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.MavlinkCheckBox, ArdupilotMegaPlanner10, Version=1.1.4696.32711, Culture=neutral, PublicKeyToken=null</value>
<value>ArdupilotMega.Controls.MavlinkCheckBox, ArdupilotMegaPlanner10, Version=1.1.4708.37166, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;mavlinkCheckBoxthr_fs.Parent" xml:space="preserve">
<value>groupBox1</value>
@ -317,7 +317,7 @@ Arducopter Other: if have gps, RTL, Otherwise Land</value>
<value>mavlinkCheckBoxthr_fs_action</value>
</data>
<data name="&gt;&gt;mavlinkCheckBoxthr_fs_action.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.MavlinkCheckBox, ArdupilotMegaPlanner10, Version=1.1.4696.32711, Culture=neutral, PublicKeyToken=null</value>
<value>ArdupilotMega.Controls.MavlinkCheckBox, ArdupilotMegaPlanner10, Version=1.1.4708.37166, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;mavlinkCheckBoxthr_fs_action.Parent" xml:space="preserve">
<value>groupBox1</value>
@ -344,7 +344,7 @@ Arducopter Other: if have gps, RTL, Otherwise Land</value>
<value>mavlinkNumericUpDownthr_fs_value</value>
</data>
<data name="&gt;&gt;mavlinkNumericUpDownthr_fs_value.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.MavlinkNumericUpDown, ArdupilotMegaPlanner10, Version=1.1.4696.32711, Culture=neutral, PublicKeyToken=null</value>
<value>ArdupilotMega.Controls.MavlinkNumericUpDown, ArdupilotMegaPlanner10, Version=1.1.4708.37166, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;mavlinkNumericUpDownthr_fs_value.Parent" xml:space="preserve">
<value>groupBox1</value>
@ -380,7 +380,7 @@ Arducopter Other: if have gps, RTL, Otherwise Land</value>
<value>mavlinkCheckBoxlong_fs</value>
</data>
<data name="&gt;&gt;mavlinkCheckBoxlong_fs.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.MavlinkCheckBox, ArdupilotMegaPlanner10, Version=1.1.4696.32711, Culture=neutral, PublicKeyToken=null</value>
<value>ArdupilotMega.Controls.MavlinkCheckBox, ArdupilotMegaPlanner10, Version=1.1.4708.37166, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;mavlinkCheckBoxlong_fs.Parent" xml:space="preserve">
<value>groupBox1</value>
@ -416,7 +416,7 @@ Arducopter Other: if have gps, RTL, Otherwise Land</value>
<value>mavlinkCheckBoxgcs_fs</value>
</data>
<data name="&gt;&gt;mavlinkCheckBoxgcs_fs.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.MavlinkCheckBox, ArdupilotMegaPlanner10, Version=1.1.4696.32711, Culture=neutral, PublicKeyToken=null</value>
<value>ArdupilotMega.Controls.MavlinkCheckBox, ArdupilotMegaPlanner10, Version=1.1.4708.37166, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;mavlinkCheckBoxgcs_fs.Parent" xml:space="preserve">
<value>groupBox1</value>
@ -452,7 +452,7 @@ Arducopter Other: if have gps, RTL, Otherwise Land</value>
<value>mavlinkCheckBoxshort_fs</value>
</data>
<data name="&gt;&gt;mavlinkCheckBoxshort_fs.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.MavlinkCheckBox, ArdupilotMegaPlanner10, Version=1.1.4696.32711, Culture=neutral, PublicKeyToken=null</value>
<value>ArdupilotMega.Controls.MavlinkCheckBox, ArdupilotMegaPlanner10, Version=1.1.4708.37166, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;mavlinkCheckBoxshort_fs.Parent" xml:space="preserve">
<value>groupBox1</value>
@ -596,7 +596,7 @@ Arducopter Other: if have gps, RTL, Otherwise Land</value>
<value>horizontalProgressBar9</value>
</data>
<data name="&gt;&gt;horizontalProgressBar9.Type" xml:space="preserve">
<value>ArdupilotMega.HorizontalProgressBar, ArdupilotMegaPlanner10, Version=1.1.4696.32711, Culture=neutral, PublicKeyToken=null</value>
<value>ArdupilotMega.HorizontalProgressBar, ArdupilotMegaPlanner10, Version=1.1.4708.37166, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;horizontalProgressBar9.Parent" xml:space="preserve">
<value>$this</value>
@ -620,7 +620,7 @@ Arducopter Other: if have gps, RTL, Otherwise Land</value>
<value>horizontalProgressBar10</value>
</data>
<data name="&gt;&gt;horizontalProgressBar10.Type" xml:space="preserve">
<value>ArdupilotMega.HorizontalProgressBar, ArdupilotMegaPlanner10, Version=1.1.4696.32711, Culture=neutral, PublicKeyToken=null</value>
<value>ArdupilotMega.HorizontalProgressBar, ArdupilotMegaPlanner10, Version=1.1.4708.37166, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;horizontalProgressBar10.Parent" xml:space="preserve">
<value>$this</value>
@ -644,7 +644,7 @@ Arducopter Other: if have gps, RTL, Otherwise Land</value>
<value>horizontalProgressBar11</value>
</data>
<data name="&gt;&gt;horizontalProgressBar11.Type" xml:space="preserve">
<value>ArdupilotMega.HorizontalProgressBar, ArdupilotMegaPlanner10, Version=1.1.4696.32711, Culture=neutral, PublicKeyToken=null</value>
<value>ArdupilotMega.HorizontalProgressBar, ArdupilotMegaPlanner10, Version=1.1.4708.37166, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;horizontalProgressBar11.Parent" xml:space="preserve">
<value>$this</value>
@ -668,7 +668,7 @@ Arducopter Other: if have gps, RTL, Otherwise Land</value>
<value>horizontalProgressBar12</value>
</data>
<data name="&gt;&gt;horizontalProgressBar12.Type" xml:space="preserve">
<value>ArdupilotMega.HorizontalProgressBar, ArdupilotMegaPlanner10, Version=1.1.4696.32711, Culture=neutral, PublicKeyToken=null</value>
<value>ArdupilotMega.HorizontalProgressBar, ArdupilotMegaPlanner10, Version=1.1.4708.37166, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;horizontalProgressBar12.Parent" xml:space="preserve">
<value>$this</value>
@ -692,7 +692,7 @@ Arducopter Other: if have gps, RTL, Otherwise Land</value>
<value>horizontalProgressBar13</value>
</data>
<data name="&gt;&gt;horizontalProgressBar13.Type" xml:space="preserve">
<value>ArdupilotMega.HorizontalProgressBar, ArdupilotMegaPlanner10, Version=1.1.4696.32711, Culture=neutral, PublicKeyToken=null</value>
<value>ArdupilotMega.HorizontalProgressBar, ArdupilotMegaPlanner10, Version=1.1.4708.37166, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;horizontalProgressBar13.Parent" xml:space="preserve">
<value>$this</value>
@ -716,7 +716,7 @@ Arducopter Other: if have gps, RTL, Otherwise Land</value>
<value>horizontalProgressBar14</value>
</data>
<data name="&gt;&gt;horizontalProgressBar14.Type" xml:space="preserve">
<value>ArdupilotMega.HorizontalProgressBar, ArdupilotMegaPlanner10, Version=1.1.4696.32711, Culture=neutral, PublicKeyToken=null</value>
<value>ArdupilotMega.HorizontalProgressBar, ArdupilotMegaPlanner10, Version=1.1.4708.37166, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;horizontalProgressBar14.Parent" xml:space="preserve">
<value>$this</value>
@ -740,7 +740,7 @@ Arducopter Other: if have gps, RTL, Otherwise Land</value>
<value>horizontalProgressBar15</value>
</data>
<data name="&gt;&gt;horizontalProgressBar15.Type" xml:space="preserve">
<value>ArdupilotMega.HorizontalProgressBar, ArdupilotMegaPlanner10, Version=1.1.4696.32711, Culture=neutral, PublicKeyToken=null</value>
<value>ArdupilotMega.HorizontalProgressBar, ArdupilotMegaPlanner10, Version=1.1.4708.37166, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;horizontalProgressBar15.Parent" xml:space="preserve">
<value>$this</value>
@ -764,7 +764,7 @@ Arducopter Other: if have gps, RTL, Otherwise Land</value>
<value>horizontalProgressBar16</value>
</data>
<data name="&gt;&gt;horizontalProgressBar16.Type" xml:space="preserve">
<value>ArdupilotMega.HorizontalProgressBar, ArdupilotMegaPlanner10, Version=1.1.4696.32711, Culture=neutral, PublicKeyToken=null</value>
<value>ArdupilotMega.HorizontalProgressBar, ArdupilotMegaPlanner10, Version=1.1.4708.37166, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;horizontalProgressBar16.Parent" xml:space="preserve">
<value>$this</value>
@ -788,7 +788,7 @@ Arducopter Other: if have gps, RTL, Otherwise Land</value>
<value>horizontalProgressBar8</value>
</data>
<data name="&gt;&gt;horizontalProgressBar8.Type" xml:space="preserve">
<value>ArdupilotMega.HorizontalProgressBar, ArdupilotMegaPlanner10, Version=1.1.4696.32711, Culture=neutral, PublicKeyToken=null</value>
<value>ArdupilotMega.HorizontalProgressBar, ArdupilotMegaPlanner10, Version=1.1.4708.37166, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;horizontalProgressBar8.Parent" xml:space="preserve">
<value>$this</value>
@ -812,7 +812,7 @@ Arducopter Other: if have gps, RTL, Otherwise Land</value>
<value>horizontalProgressBar7</value>
</data>
<data name="&gt;&gt;horizontalProgressBar7.Type" xml:space="preserve">
<value>ArdupilotMega.HorizontalProgressBar, ArdupilotMegaPlanner10, Version=1.1.4696.32711, Culture=neutral, PublicKeyToken=null</value>
<value>ArdupilotMega.HorizontalProgressBar, ArdupilotMegaPlanner10, Version=1.1.4708.37166, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;horizontalProgressBar7.Parent" xml:space="preserve">
<value>$this</value>
@ -836,7 +836,7 @@ Arducopter Other: if have gps, RTL, Otherwise Land</value>
<value>horizontalProgressBar6</value>
</data>
<data name="&gt;&gt;horizontalProgressBar6.Type" xml:space="preserve">
<value>ArdupilotMega.HorizontalProgressBar, ArdupilotMegaPlanner10, Version=1.1.4696.32711, Culture=neutral, PublicKeyToken=null</value>
<value>ArdupilotMega.HorizontalProgressBar, ArdupilotMegaPlanner10, Version=1.1.4708.37166, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;horizontalProgressBar6.Parent" xml:space="preserve">
<value>$this</value>
@ -860,7 +860,7 @@ Arducopter Other: if have gps, RTL, Otherwise Land</value>
<value>horizontalProgressBar5</value>
</data>
<data name="&gt;&gt;horizontalProgressBar5.Type" xml:space="preserve">
<value>ArdupilotMega.HorizontalProgressBar, ArdupilotMegaPlanner10, Version=1.1.4696.32711, Culture=neutral, PublicKeyToken=null</value>
<value>ArdupilotMega.HorizontalProgressBar, ArdupilotMegaPlanner10, Version=1.1.4708.37166, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;horizontalProgressBar5.Parent" xml:space="preserve">
<value>$this</value>
@ -884,7 +884,7 @@ Arducopter Other: if have gps, RTL, Otherwise Land</value>
<value>horizontalProgressBar4</value>
</data>
<data name="&gt;&gt;horizontalProgressBar4.Type" xml:space="preserve">
<value>ArdupilotMega.HorizontalProgressBar, ArdupilotMegaPlanner10, Version=1.1.4696.32711, Culture=neutral, PublicKeyToken=null</value>
<value>ArdupilotMega.HorizontalProgressBar, ArdupilotMegaPlanner10, Version=1.1.4708.37166, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;horizontalProgressBar4.Parent" xml:space="preserve">
<value>$this</value>
@ -908,7 +908,7 @@ Arducopter Other: if have gps, RTL, Otherwise Land</value>
<value>horizontalProgressBar3</value>
</data>
<data name="&gt;&gt;horizontalProgressBar3.Type" xml:space="preserve">
<value>ArdupilotMega.HorizontalProgressBar, ArdupilotMegaPlanner10, Version=1.1.4696.32711, Culture=neutral, PublicKeyToken=null</value>
<value>ArdupilotMega.HorizontalProgressBar, ArdupilotMegaPlanner10, Version=1.1.4708.37166, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;horizontalProgressBar3.Parent" xml:space="preserve">
<value>$this</value>
@ -932,7 +932,7 @@ Arducopter Other: if have gps, RTL, Otherwise Land</value>
<value>horizontalProgressBar2</value>
</data>
<data name="&gt;&gt;horizontalProgressBar2.Type" xml:space="preserve">
<value>ArdupilotMega.HorizontalProgressBar, ArdupilotMegaPlanner10, Version=1.1.4696.32711, Culture=neutral, PublicKeyToken=null</value>
<value>ArdupilotMega.HorizontalProgressBar, ArdupilotMegaPlanner10, Version=1.1.4708.37166, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;horizontalProgressBar2.Parent" xml:space="preserve">
<value>$this</value>
@ -956,7 +956,7 @@ Arducopter Other: if have gps, RTL, Otherwise Land</value>
<value>horizontalProgressBar1</value>
</data>
<data name="&gt;&gt;horizontalProgressBar1.Type" xml:space="preserve">
<value>ArdupilotMega.HorizontalProgressBar, ArdupilotMegaPlanner10, Version=1.1.4696.32711, Culture=neutral, PublicKeyToken=null</value>
<value>ArdupilotMega.HorizontalProgressBar, ArdupilotMegaPlanner10, Version=1.1.4708.37166, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;horizontalProgressBar1.Parent" xml:space="preserve">
<value>$this</value>

View File

@ -202,7 +202,15 @@ namespace ArdupilotMega.GCSViews.ConfigurationView
_params.OrderBy(x => x.Key).ForEach(x =>
{
if(!String.IsNullOrEmpty(x.Key))
AddControl(x);
});
this.ResumeLayout();
}
void AddControl(KeyValuePair<string,string> x)
{
if (!String.IsNullOrEmpty(x.Key))
{
try
{
@ -217,48 +225,6 @@ namespace ArdupilotMega.GCSViews.ConfigurationView
string rangeRaw = _parameterMetaDataRepository.GetParameterMetaData(x.Key, ParameterMetaDataConstants.Range);
string incrementRaw = _parameterMetaDataRepository.GetParameterMetaData(x.Key, ParameterMetaDataConstants.Increment);
// modify for scaling
float test = 1;
MAVLink.modifyParamForDisplay(true, x.Key, ref test);
if (test != 1)
{
if (units.ToLower() == "centi-degrees")
{
units = "Degrees";
incrementRaw = "0.1";
string[] rangeParts = rangeRaw.Split(new[] { ' ' });
if (rangeParts.Count() == 2)
{
float lowerRange;
float.TryParse(rangeParts[0], out lowerRange);
float upperRange;
float.TryParse(rangeParts[1], out upperRange);
rangeRaw = (lowerRange / 100) + " " + (upperRange / 100);
}
}
else if (units.ToLower() == "centimeters")
{
units = "Meters";
incrementRaw = "0.1";
string[] rangeParts = rangeRaw.Split(new[] { ' ' });
if (rangeParts.Count() == 2)
{
float lowerRange;
float.TryParse(rangeParts[0], out lowerRange);
float upperRange;
float.TryParse(rangeParts[1], out upperRange);
rangeRaw = (lowerRange / 100) + " " + (upperRange / 100);
}
}
else
{
units += " / " + (int)(1 / test);
}
}
if (!String.IsNullOrEmpty(rangeRaw) && !String.IsNullOrEmpty(incrementRaw))
{
float increment, intValue;
@ -273,33 +239,56 @@ namespace ArdupilotMega.GCSViews.ConfigurationView
float upperRange;
float.TryParse(rangeParts[1], out upperRange);
int scaler = (int)float.Parse((1 / increment).ToString(CultureInfo.InvariantCulture));
int scaledLowerRange = 0, scaledUpperRange = 0;
int scaledIncrement = (int)increment;
if (scaler > 0)
float displayscale = 1;
// var rangeControl = new RangeControl();
if (units.ToLower() == "centi-degrees")
{
scaledLowerRange = (int)(lowerRange * scaler);
scaledUpperRange = (int)(upperRange * scaler);
scaledIncrement = (int)float.Parse((increment * scaler).ToString(CultureInfo.InvariantCulture));
intValue *= scaler;
Console.WriteLine(x.Key + " scale");
displayscale = 100;
units = "Degrees (Scaled)";
increment /= 100;
} else if (units.ToLower() == "centimeters")
{
Console.WriteLine(x.Key + " scale");
displayscale = 100;
units = "Meters (Scaled)";
increment /= 100;
}
var rangeControl = new RangeControl();
var rangeControl = new RangeControl(x.Key, FitDescriptionText(units, description), displayName, increment, displayscale, lowerRange, upperRange, value);
/*
rangeControl.Name = x.Key;
rangeControl.Scaler = scaler;
rangeControl.Increment = increment;
rangeControl.DescriptionText = FitDescriptionText(units, description);
rangeControl.LabelText = displayName;
rangeControl.TrackBarControl.Minimum = Math.Min(scaledLowerRange,(int)intValue);
rangeControl.MinRange = lowerRange;
rangeControl.MaxRange = upperRange;
rangeControl.Value = value;
*/
Console.WriteLine("{0} {1} {2} {3} {4}", x.Key, increment, lowerRange, upperRange, value);
ThemeManager.ApplyThemeTo(rangeControl);
if (intValue < lowerRange)
rangeControl.NumericUpDownControl.BackColor = Color.Orange;
if (intValue > upperRange)
rangeControl.NumericUpDownControl.BackColor = Color.Orange;
/*
rangeControl.TrackBarControl.Minimum = Math.Min(scaledLowerRange, (int)intValue);
rangeControl.TrackBarControl.Maximum = Math.Max(scaledUpperRange, (int)intValue);
rangeControl.TrackBarControl.TickFrequency = scaledIncrement;
rangeControl.TrackBarControl.Value = (int)intValue;
rangeControl.NumericUpDownControl.Increment = (decimal)increment;
rangeControl.NumericUpDownControl.DecimalPlaces = scaler.ToString(CultureInfo.InvariantCulture).Length - 1;
rangeControl.NumericUpDownControl.Minimum = (decimal)Math.Min(lowerRange, ((float)MainV2.comPort.param[x.Key]));
rangeControl.NumericUpDownControl.Maximum = (decimal)Math.Max(upperRange, ((float)MainV2.comPort.param[x.Key]));
rangeControl.NumericUpDownControl.Value = (decimal)((float)MainV2.comPort.param[x.Key]);
rangeControl.NumericUpDownControl.Minimum = (decimal)Math.Min(lowerRange, intValue);
rangeControl.NumericUpDownControl.Maximum = (decimal)Math.Max(upperRange, intValue);
rangeControl.NumericUpDownControl.Value = (decimal)(intValue);
*/
rangeControl.AttachEvents();
tableLayoutPanel1.Controls.Add(rangeControl);
@ -322,13 +311,15 @@ namespace ArdupilotMega.GCSViews.ConfigurationView
valueControl.DescriptionText = FitDescriptionText(units, description);
valueControl.LabelText = displayName;
ThemeManager.ApplyThemeTo(valueControl);
var splitValues = new List<KeyValuePair<string, string>>();
// Add the values to the ddl
availableValues.ForEach(val =>
foreach (string val in availableValues)
{
string[] valParts = val.Split(new[] { ':' });
splitValues.Add(new KeyValuePair<string, string>(valParts[0], (valParts.Length > 1) ? valParts[1] : valParts[0]));
});
splitValues.Add(new KeyValuePair<string, string>(valParts[0].Trim(), (valParts.Length > 1) ? valParts[1].Trim() : valParts[0].Trim()));
};
valueControl.ComboBoxControl.DisplayMember = "Value";
valueControl.ComboBoxControl.ValueMember = "Key";
valueControl.ComboBoxControl.DataSource = splitValues;
@ -341,11 +332,6 @@ namespace ArdupilotMega.GCSViews.ConfigurationView
} // if there is an error simply dont show it, ie bad pde file, bad scale etc
catch (Exception ex) { log.Error(ex); }
}
});
ThemeManager.ApplyThemeTo(this);
this.ResumeLayout();
}
/// <summary>

View File

@ -52,6 +52,9 @@ namespace ArdupilotMega.GCSViews.ConfigurationView
private void BUT_videostart_Click(object sender, EventArgs e)
{
if (MainV2.MONO)
return;
// stop first
BUT_videostop_Click(sender, e);
@ -83,6 +86,9 @@ namespace ArdupilotMega.GCSViews.ConfigurationView
private void CMB_videosources_MouseClick(object sender, MouseEventArgs e)
{
if (MainV2.MONO)
return;
// the reason why i dont populate this list is because on linux/mac this call will fail.
WebCamService.Capture capt = new WebCamService.Capture();
@ -95,6 +101,9 @@ namespace ArdupilotMega.GCSViews.ConfigurationView
private void CMB_videosources_SelectedIndexChanged(object sender, EventArgs e)
{
if (MainV2.MONO)
return;
int hr;
int count;
int size;
@ -463,6 +472,8 @@ namespace ArdupilotMega.GCSViews.ConfigurationView
private void CMB_videosources_Click(object sender, EventArgs e)
{
if (MainV2.MONO)
return;
// the reason why i dont populate this list is because on linux/mac this call will fail.
WebCamService.Capture capt = new WebCamService.Capture();

View File

@ -75,6 +75,14 @@ namespace ArdupilotMega.GCSViews.ConfigurationView
else
{
groupBoxElevons.Visible = false;
if (MainV2.cs.firmware == MainV2.Firmwares.ArduCopter2)
{
CHK_revch1.Visible = false;
CHK_revch2.Visible = false;
CHK_revch3.Visible = false;
CHK_revch4.Visible = false;
}
}
try
{

View File

@ -38,12 +38,11 @@
this.BUT_save = new ArdupilotMega.Controls.MyButton();
this.BUT_load = new ArdupilotMega.Controls.MyButton();
this.Params = new System.Windows.Forms.DataGridView();
this.toolTip1 = new System.Windows.Forms.ToolTip(this.components);
this.label1 = new System.Windows.Forms.Label();
this.Command = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.Value = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.Default = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.mavScale = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.RawValue = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.toolTip1 = new System.Windows.Forms.ToolTip(this.components);
this.Desc = new System.Windows.Forms.DataGridViewTextBoxColumn();
((System.ComponentModel.ISupportInitialize)(this.Params)).BeginInit();
this.SuspendLayout();
//
@ -99,9 +98,7 @@
this.Params.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
this.Command,
this.Value,
this.Default,
this.mavScale,
this.RawValue});
this.Desc});
this.Params.Name = "Params";
dataGridViewCellStyle2.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;
dataGridViewCellStyle2.BackColor = System.Drawing.SystemColors.ActiveCaption;
@ -114,6 +111,17 @@
this.Params.RowHeadersVisible = false;
this.Params.CellValueChanged += new System.Windows.Forms.DataGridViewCellEventHandler(this.Params_CellValueChanged);
//
// toolTip1
//
this.toolTip1.AutoPopDelay = 180000;
this.toolTip1.InitialDelay = 500;
this.toolTip1.ReshowDelay = 100;
//
// label1
//
resources.ApplyResources(this.label1, "label1");
this.label1.Name = "label1";
//
// Command
//
resources.ApplyResources(this.Command, "Command");
@ -125,31 +133,18 @@
resources.ApplyResources(this.Value, "Value");
this.Value.Name = "Value";
//
// Default
// Desc
//
resources.ApplyResources(this.Default, "Default");
this.Default.Name = "Default";
//
// mavScale
//
resources.ApplyResources(this.mavScale, "mavScale");
this.mavScale.Name = "mavScale";
//
// RawValue
//
resources.ApplyResources(this.RawValue, "RawValue");
this.RawValue.Name = "RawValue";
//
// toolTip1
//
this.toolTip1.AutoPopDelay = 20000;
this.toolTip1.InitialDelay = 500;
this.toolTip1.ReshowDelay = 100;
this.Desc.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.AllCells;
resources.ApplyResources(this.Desc, "Desc");
this.Desc.Name = "Desc";
this.Desc.ReadOnly = true;
//
// ConfigRawParams
//
resources.ApplyResources(this, "$this");
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.Controls.Add(this.label1);
this.Controls.Add(this.BUT_compare);
this.Controls.Add(this.BUT_rerequestparams);
this.Controls.Add(this.BUT_writePIDS);
@ -159,6 +154,7 @@
this.Name = "ConfigRawParams";
((System.ComponentModel.ISupportInitialize)(this.Params)).EndInit();
this.ResumeLayout(false);
this.PerformLayout();
}
@ -170,11 +166,10 @@
private ArdupilotMega.Controls.MyButton BUT_save;
private ArdupilotMega.Controls.MyButton BUT_load;
private System.Windows.Forms.DataGridView Params;
private System.Windows.Forms.ToolTip toolTip1;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.DataGridViewTextBoxColumn Command;
private System.Windows.Forms.DataGridViewTextBoxColumn Value;
private System.Windows.Forms.DataGridViewTextBoxColumn Default;
private System.Windows.Forms.DataGridViewTextBoxColumn mavScale;
private System.Windows.Forms.DataGridViewTextBoxColumn RawValue;
private System.Windows.Forms.ToolTip toolTip1;
private System.Windows.Forms.DataGridViewTextBoxColumn Desc;
}
}

View File

@ -73,8 +73,6 @@ namespace ArdupilotMega.GCSViews.ConfigurationView
}
catch (Exception ex) { log.Error(ex); throw new FormatException("Invalid number on param " + name + " : " + items[1].ToString()); }
MAVLink.modifyParamForDisplay(true, name, ref value);
if (name == "SYSID_SW_MREV")
continue;
if (name == "WP_TOTAL")
@ -185,8 +183,6 @@ namespace ArdupilotMega.GCSViews.ConfigurationView
{
float value = float.Parse(row.Cells[1].Value.ToString());
MAVLink.modifyParamForDisplay(false, row.Cells[0].Value.ToString(), ref value);
sw.WriteLine(row.Cells[0].Value.ToString() + "," + value.ToString(new System.Globalization.CultureInfo("en-US")));
}
sw.Close();
@ -402,10 +398,26 @@ namespace ArdupilotMega.GCSViews.ConfigurationView
try
{
string metaDataDescription = _parameterMetaDataRepository.GetParameterMetaData(value, ParameterMetaDataConstants.Description);
if(!String.IsNullOrEmpty(metaDataDescription))
if (!String.IsNullOrEmpty(metaDataDescription))
{
Params.Rows[Params.RowCount - 1].Cells[Command.Index].ToolTipText = metaDataDescription;
Params.Rows[Params.RowCount - 1].Cells[Value.Index].ToolTipText = metaDataDescription;
Params.Rows[Params.RowCount - 1].Cells[Command.Index].ToolTipText = metaDataDescription;
Params.Rows[Params.RowCount - 1].Cells[Value.Index].ToolTipText = metaDataDescription;
string range = _parameterMetaDataRepository.GetParameterMetaData(value, ParameterMetaDataConstants.Range);
string options = _parameterMetaDataRepository.GetParameterMetaData(value, ParameterMetaDataConstants.Values);
if (!string.IsNullOrEmpty(range))
{
range = " Range: " + range;
}
if (!string.IsNullOrEmpty(options))
{
options = " Options: " + options;
}
Params.Rows[Params.RowCount - 1].Cells[Desc.Index].Value = range + options;
}
else if (tooltips[value] != null)
{
@ -413,6 +425,8 @@ namespace ArdupilotMega.GCSViews.ConfigurationView
//Params.Rows[Params.RowCount - 1].Cells[RawValue.Index].ToolTipText = ((paramsettings)tooltips[value]).desc;
Params.Rows[Params.RowCount - 1].Cells[Value.Index].ToolTipText = ((paramsettings)tooltips[value]).desc;
Params.Rows[Params.RowCount - 1].Cells[Desc.Index].Value = "Old: "+((paramsettings)tooltips[value]).desc;
//Params.Rows[Params.RowCount - 1].Cells[Default.Index].Value = ((paramsettings)tooltips[value]).normalvalue;
//Params.Rows[Params.RowCount - 1].Cells[mavScale.Index].Value = ((paramsettings)tooltips[value]).scale;
//Params.Rows[Params.RowCount - 1].Cells[Value.Index].Value = float.Parse(Params.Rows[Params.RowCount - 1].Cells[RawValue.Index].Value.ToString()) / float.Parse(Params.Rows[Params.RowCount - 1].Cells[mavScale.Index].Value.ToString());

View File

@ -126,7 +126,7 @@
</data>
<assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="BUT_compare.Location" type="System.Drawing.Point, System.Drawing">
<value>341, 119</value>
<value>506, 119</value>
</data>
<data name="BUT_compare.Size" type="System.Drawing.Size, System.Drawing">
<value>103, 19</value>
@ -142,13 +142,13 @@
<value>BUT_compare</value>
</data>
<data name="&gt;&gt;BUT_compare.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner10, Version=1.1.4646.35335, Culture=neutral, PublicKeyToken=null</value>
<value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner10, Version=1.1.4711.17948, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;BUT_compare.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;BUT_compare.ZOrder" xml:space="preserve">
<value>0</value>
<value>1</value>
</data>
<data name="BUT_rerequestparams.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Right</value>
@ -157,7 +157,7 @@
<value>NoControl</value>
</data>
<data name="BUT_rerequestparams.Location" type="System.Drawing.Point, System.Drawing">
<value>341, 94</value>
<value>506, 94</value>
</data>
<data name="BUT_rerequestparams.Size" type="System.Drawing.Size, System.Drawing">
<value>103, 19</value>
@ -172,13 +172,13 @@
<value>BUT_rerequestparams</value>
</data>
<data name="&gt;&gt;BUT_rerequestparams.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner10, Version=1.1.4646.35335, Culture=neutral, PublicKeyToken=null</value>
<value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner10, Version=1.1.4711.17948, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;BUT_rerequestparams.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;BUT_rerequestparams.ZOrder" xml:space="preserve">
<value>1</value>
<value>2</value>
</data>
<data name="BUT_writePIDS.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Right</value>
@ -187,7 +187,7 @@
<value>NoControl</value>
</data>
<data name="BUT_writePIDS.Location" type="System.Drawing.Point, System.Drawing">
<value>341, 69</value>
<value>506, 69</value>
</data>
<data name="BUT_writePIDS.Size" type="System.Drawing.Size, System.Drawing">
<value>103, 19</value>
@ -202,13 +202,13 @@
<value>BUT_writePIDS</value>
</data>
<data name="&gt;&gt;BUT_writePIDS.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner10, Version=1.1.4646.35335, Culture=neutral, PublicKeyToken=null</value>
<value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner10, Version=1.1.4711.17948, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;BUT_writePIDS.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;BUT_writePIDS.ZOrder" xml:space="preserve">
<value>2</value>
<value>3</value>
</data>
<data name="BUT_save.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Right</value>
@ -217,7 +217,7 @@
<value>NoControl</value>
</data>
<data name="BUT_save.Location" type="System.Drawing.Point, System.Drawing">
<value>341, 35</value>
<value>506, 35</value>
</data>
<data name="BUT_save.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>0, 0, 0, 0</value>
@ -235,13 +235,13 @@
<value>BUT_save</value>
</data>
<data name="&gt;&gt;BUT_save.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner10, Version=1.1.4646.35335, Culture=neutral, PublicKeyToken=null</value>
<value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner10, Version=1.1.4711.17948, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;BUT_save.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;BUT_save.ZOrder" xml:space="preserve">
<value>3</value>
<value>4</value>
</data>
<data name="BUT_load.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Right</value>
@ -250,7 +250,7 @@
<value>NoControl</value>
</data>
<data name="BUT_load.Location" type="System.Drawing.Point, System.Drawing">
<value>341, 7</value>
<value>506, 7</value>
</data>
<data name="BUT_load.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>0, 0, 0, 0</value>
@ -268,13 +268,13 @@
<value>BUT_load</value>
</data>
<data name="&gt;&gt;BUT_load.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner10, Version=1.1.4646.35335, Culture=neutral, PublicKeyToken=null</value>
<value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner10, Version=1.1.4711.17948, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;BUT_load.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;BUT_load.ZOrder" xml:space="preserve">
<value>4</value>
<value>5</value>
</data>
<data name="Params.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Bottom, Left, Right</value>
@ -297,29 +297,14 @@
<data name="Value.Width" type="System.Int32, mscorlib">
<value>80</value>
</data>
<metadata name="Default.UserAddedColumn" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<metadata name="Desc.UserAddedColumn" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<data name="Default.HeaderText" xml:space="preserve">
<value>Default</value>
<data name="Desc.HeaderText" xml:space="preserve">
<value>Desc</value>
</data>
<data name="Default.Visible" type="System.Boolean, mscorlib">
<value>False</value>
</data>
<data name="mavScale.HeaderText" xml:space="preserve">
<value>mavScale</value>
</data>
<data name="mavScale.Visible" type="System.Boolean, mscorlib">
<value>False</value>
</data>
<metadata name="RawValue.UserAddedColumn" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<data name="RawValue.HeaderText" xml:space="preserve">
<value>RawValue</value>
</data>
<data name="RawValue.Visible" type="System.Boolean, mscorlib">
<value>False</value>
<data name="Desc.Width" type="System.Int32, mscorlib">
<value>57</value>
</data>
<data name="Params.Location" type="System.Drawing.Point, System.Drawing">
<value>14, 3</value>
@ -328,7 +313,7 @@
<value>150</value>
</data>
<data name="Params.Size" type="System.Drawing.Size, System.Drawing">
<value>321, 302</value>
<value>486, 302</value>
</data>
<data name="Params.TabIndex" type="System.Int32, mscorlib">
<value>68</value>
@ -343,11 +328,45 @@
<value>$this</value>
</data>
<data name="&gt;&gt;Params.ZOrder" xml:space="preserve">
<value>5</value>
<value>6</value>
</data>
<metadata name="toolTip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
<data name="label1.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Right</value>
</data>
<data name="label1.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="label1.Location" type="System.Drawing.Point, System.Drawing">
<value>506, 169</value>
</data>
<data name="label1.Size" type="System.Drawing.Size, System.Drawing">
<value>109, 26</value>
</data>
<data name="label1.TabIndex" type="System.Int32, mscorlib">
<value>73</value>
</data>
<data name="label1.Text" xml:space="preserve">
<value>All Units are in raw
format with no scaling</value>
</data>
<data name="label1.TextAlign" type="System.Drawing.ContentAlignment, System.Drawing">
<value>MiddleCenter</value>
</data>
<data name="&gt;&gt;label1.Name" xml:space="preserve">
<value>label1</value>
</data>
<data name="&gt;&gt;label1.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;label1.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;label1.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
@ -355,7 +374,13 @@
<value>6, 13</value>
</data>
<data name="$this.Size" type="System.Drawing.Size, System.Drawing">
<value>460, 305</value>
<value>625, 305</value>
</data>
<data name="&gt;&gt;toolTip1.Name" xml:space="preserve">
<value>toolTip1</value>
</data>
<data name="&gt;&gt;toolTip1.Type" xml:space="preserve">
<value>System.Windows.Forms.ToolTip, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;Command.Name" xml:space="preserve">
<value>Command</value>
@ -369,30 +394,12 @@
<data name="&gt;&gt;Value.Type" xml:space="preserve">
<value>System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;Default.Name" xml:space="preserve">
<value>Default</value>
<data name="&gt;&gt;Desc.Name" xml:space="preserve">
<value>Desc</value>
</data>
<data name="&gt;&gt;Default.Type" xml:space="preserve">
<data name="&gt;&gt;Desc.Type" xml:space="preserve">
<value>System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;mavScale.Name" xml:space="preserve">
<value>mavScale</value>
</data>
<data name="&gt;&gt;mavScale.Type" xml:space="preserve">
<value>System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;RawValue.Name" xml:space="preserve">
<value>RawValue</value>
</data>
<data name="&gt;&gt;RawValue.Type" xml:space="preserve">
<value>System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;toolTip1.Name" xml:space="preserve">
<value>toolTip1</value>
</data>
<data name="&gt;&gt;toolTip1.Type" xml:space="preserve">
<value>System.Windows.Forms.ToolTip, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;$this.Name" xml:space="preserve">
<value>ConfigRawParams</value>
</data>

View File

@ -17,6 +17,8 @@ namespace ArdupilotMega.GCSViews.ConfigurationView
static string lastpagename = "";
BackstageView.BackstageViewPage hardware;
BackstageView.BackstageViewPage standardpage;
BackstageView.BackstageViewPage advancedpage;
public Setup()
{
@ -68,17 +70,21 @@ If you are just setting up 3DR radios, you may continue without connecting.");
{
/****************************** Common **************************/
AddBackstageViewPage(new ConfigRadioInput(), "Radio Calibration");
AddBackstageViewPage(new ConfigFlightModes(), "Flight Modes");
AddBackstageViewPage(new ConfigFailSafe(), "FailSafe");
hardware = AddBackstageViewPage(new ConfigHardwareOptions(), "Hardware Options");
AddBackstageViewPage(new ConfigBatteryMonitoring(), "Battery Monitor", hardware);
if ((MainV2.cs.firmware == MainV2.Firmwares.ArduCopter2) || (MainV2.cs.firmware == MainV2.Firmwares.ArduPlane) || (MainV2.cs.firmware == MainV2.Firmwares.ArduRover))
{
AddBackstageViewPage(new ConfigRadioInput(), "Radio Calibration");
AddBackstageViewPage(new ConfigFlightModes(), "Flight Modes");
AddBackstageViewPage(new ConfigFailSafe(), "FailSafe");
hardware = AddBackstageViewPage(new ConfigHardwareOptions(), "Hardware Options");
AddBackstageViewPage(new ConfigBatteryMonitoring(), "Battery Monitor", hardware);
}
BackstageView.BackstageViewPage tunningpage = AddBackstageViewPage(new ConfigFriendlyParams { ParameterMode = ParameterMetaDataConstants.Standard }, "Standard Params");
AddBackstageViewPage(new ConfigFriendlyParams { ParameterMode = ParameterMetaDataConstants.Advanced }, "Advanced Params", tunningpage);
AddBackstageViewPage(new ConfigRawParams(), "Adv Parameter List", tunningpage);
// AddBackstageViewPage(new ConfigParamParams() { ParameterMode = ParameterMetaDataConstants.Standard }, "Camera Gimbal Adv");
if ((MainV2.cs.firmware == MainV2.Firmwares.ArduCopter2) || (MainV2.cs.firmware == MainV2.Firmwares.ArduPlane) || (MainV2.cs.firmware == MainV2.Firmwares.ArduRover))
{
standardpage = AddBackstageViewPage(new ConfigFriendlyParams { ParameterMode = ParameterMetaDataConstants.Standard }, "Standard Params");
advancedpage = AddBackstageViewPage(new ConfigFriendlyParams { ParameterMode = ParameterMetaDataConstants.Advanced }, "Advanced Params");
}
AddBackstageViewPage(new ConfigRawParams(), "Adv Parameter List", advancedpage);
/******************************HELI **************************/
if (MainV2.comPort.param["H_GYR_ENABLE"] != null) // heli
@ -90,9 +96,9 @@ If you are just setting up 3DR radios, you may continue without connecting.");
AddBackstageViewPage(new ConfigTradHeli(), "Heli Setup");
var configpanel = new Controls.ConfigPanel(Application.StartupPath + System.IO.Path.DirectorySeparatorChar + "ArduCopterConfig.xml");
AddBackstageViewPage(configpanel, "ArduCopter Pids", tunningpage);
AddBackstageViewPage(configpanel, "ArduCopter Pids", standardpage);
AddBackstageViewPage(new ConfigArducopter(), "ArduCopter Config", tunningpage);
AddBackstageViewPage(new ConfigArducopter(), "ArduCopter Config", standardpage);
// AddBackstageViewPage(new ConfigAP_Limits(), "GeoFence");
}
/****************************** ArduCopter **************************/
@ -103,9 +109,9 @@ If you are just setting up 3DR radios, you may continue without connecting.");
AddBackstageViewPage(new ConfigAccelerometerCalibrationQuad(), "ArduCopter Level");
var configpanel = new Controls.ConfigPanel(Application.StartupPath + System.IO.Path.DirectorySeparatorChar + "ArduCopterConfig.xml");
AddBackstageViewPage(configpanel, "ArduCopter Pids", tunningpage);
AddBackstageViewPage(configpanel, "ArduCopter Pids", standardpage);
AddBackstageViewPage(new ConfigArducopter(), "ArduCopter Config", tunningpage);
AddBackstageViewPage(new ConfigArducopter(), "ArduCopter Config", standardpage);
// AddBackstageViewPage(new ConfigAP_Limits(), "GeoFence");
}
/****************************** ArduPlane **************************/
@ -114,15 +120,20 @@ If you are just setting up 3DR radios, you may continue without connecting.");
AddBackstageViewPage(new ConfigMount(), "Camera Gimbal", hardware);
AddBackstageViewPage(new ConfigAccelerometerCalibrationPlane(), "ArduPlane Level");
AddBackstageViewPage(new ConfigArduplane(), "ArduPlane Pids", tunningpage);
AddBackstageViewPage(new ConfigArduplane(), "ArduPlane Pids", standardpage);
}
/****************************** ArduRover **************************/
else if (MainV2.cs.firmware == MainV2.Firmwares.ArduRover)
{
//AddBackstageViewPage(new ConfigAccelerometerCalibrationPlane(), "ArduRover Level"));
AddBackstageViewPage(new ConfigArdurover(), "ArduRover Pids", tunningpage);
AddBackstageViewPage(new ConfigArdurover(), "ArduRover Pids", standardpage);
}
else if (MainV2.cs.firmware == MainV2.Firmwares.Ateryx)
{
AddBackstageViewPage(new ConfigAteryxSensors(), "Ateryx Zero Sensors");
AddBackstageViewPage(new ConfigAteryx(), "Ateryx Pids", standardpage);
}
}
private BackstageView.BackstageViewPage AddBackstageViewPage(UserControl userControl, string headerText, BackstageView.BackstageViewPage Parent = null)

View File

@ -765,7 +765,19 @@ namespace ArdupilotMega.GCSViews
fd.ShowDialog();
if (File.Exists(fd.FileName))
{
UploadFlash(fd.FileName, ArduinoDetect.DetectBoard(MainV2.comPortName));
string boardtype = "";
try
{
boardtype = ArduinoDetect.DetectBoard(MainV2.comPortName);
}
catch
{
CustomMessageBox.Show("Can not connect to com port and detect board type");
return;
}
UploadFlash(fd.FileName, boardtype);
}
}
}

View File

@ -24,7 +24,6 @@
this.stopRecordToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.setMJPEGSourceToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.setAspectRatioToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.displayBatteryInfoToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.userItemsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.bindingSource1 = new System.Windows.Forms.BindingSource(this.components);
this.tabControl1 = new System.Windows.Forms.TabControl();
@ -260,7 +259,6 @@
this.stopRecordToolStripMenuItem,
this.setMJPEGSourceToolStripMenuItem,
this.setAspectRatioToolStripMenuItem,
this.displayBatteryInfoToolStripMenuItem,
this.userItemsToolStripMenuItem});
this.contextMenuStripHud.Name = "contextMenuStrip2";
resources.ApplyResources(this.contextMenuStripHud, "contextMenuStripHud");
@ -289,12 +287,6 @@
resources.ApplyResources(this.setAspectRatioToolStripMenuItem, "setAspectRatioToolStripMenuItem");
this.setAspectRatioToolStripMenuItem.Click += new System.EventHandler(this.setAspectRatioToolStripMenuItem_Click);
//
// displayBatteryInfoToolStripMenuItem
//
this.displayBatteryInfoToolStripMenuItem.Name = "displayBatteryInfoToolStripMenuItem";
resources.ApplyResources(this.displayBatteryInfoToolStripMenuItem, "displayBatteryInfoToolStripMenuItem");
this.displayBatteryInfoToolStripMenuItem.Click += new System.EventHandler(this.displayBatteryInfoToolStripMenuItem_Click);
//
// userItemsToolStripMenuItem
//
this.userItemsToolStripMenuItem.Name = "userItemsToolStripMenuItem";
@ -1433,7 +1425,6 @@
private Controls.MyLabel lbl_playbackspeed;
private System.Windows.Forms.ToolStripMenuItem setMJPEGSourceToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem setAspectRatioToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem displayBatteryInfoToolStripMenuItem;
private System.Windows.Forms.TabPage tabQuick;
private Controls.QuickView quickView3;
private Controls.QuickView quickView2;

View File

@ -100,17 +100,11 @@ namespace ArdupilotMega.GCSViews
{
threadrun = 0;
MainV2.comPort.logreadmode = false;
MainV2.config["FlightSplitter"] = hud1.Width;
if (false || !MainV2.MONO)
try
{
try
{
log.Info("Saving Screen Layout");
//_serializer.Save();
}
catch (Exception ex) { log.Error(ex); }
//SaveWindowLayout();
MainV2.config["FlightSplitter"] = hud1.Width;
}
catch { }
System.Threading.Thread.Sleep(100);
base.Dispose(disposing);
}
@ -349,6 +343,15 @@ namespace ArdupilotMega.GCSViews
hud1.Dock = DockStyle.Fill;
}
if (MainV2.comPort.param.ContainsKey("BATT_MONITOR") && (float)MainV2.comPort.param["BATT_MONITOR"] != 0)
{
hud1.batteryon = true;
}
else
{
hud1.batteryon = false;
}
foreach (Control ctl in splitContainer1.Panel2.Controls)
{
ctl.Visible = true;
@ -595,7 +598,7 @@ namespace ArdupilotMega.GCSViews
MainV2.comPort.logreadmode = false;
}
}
catch { }
catch { MainV2.comPort.logreadmode = false; }
}
else
{
@ -1294,7 +1297,7 @@ namespace ArdupilotMega.GCSViews
marker = new GMapMarkerRect(point);
marker.ToolTip = new GMapToolTip(marker);
marker.ToolTipMode = MarkerTooltipMode.Always;
marker.ToolTipText = "Home: " + ((gMapControl1.Manager.GetDistance(point, MainV2.cs.HomeLocation.Point()) * 1000) * MainV2.cs.multiplierdist).ToString("0");
marker.ToolTipText = "Dist to Home: " + ((gMapControl1.Manager.GetDistance(point, MainV2.cs.HomeLocation.Point()) * 1000) * MainV2.cs.multiplierdist).ToString("0");
routes.Markers.Add(marker);
}
@ -2268,12 +2271,6 @@ print 'Roll complete'
hud1.doResize();
}
private void displayBatteryInfoToolStripMenuItem_Click(object sender, EventArgs e)
{
hud1.batteryon = !hud1.batteryon;
hud1.Refresh();
}
private void quickView_DoubleClick(object sender, EventArgs e)
{
@ -2501,9 +2498,11 @@ print 'Roll complete'
private void modifyandSetAlt_Click(object sender, EventArgs e)
{
int newalt = (int)modifyandSetAlt.Value;
MainV2.comPort.setNewWPAlt(new Locationwp() { alt = newalt });
try
{
MainV2.comPort.setNewWPAlt(new Locationwp() { alt = newalt });
}
catch { CustomMessageBox.Show("Error sending command"); }
//MainV2.comPort.setNextWPTargetAlt((ushort)MainV2.cs.wpno, newalt);
}
@ -2521,18 +2520,30 @@ print 'Roll complete'
// QUAD
if (MainV2.comPort.param.ContainsKey("WP_SPEED_MAX"))
{
MainV2.comPort.setParam("WP_SPEED_MAX", (float)modifyandSetSpeed.Value);
try
{
MainV2.comPort.setParam("WP_SPEED_MAX", (float)modifyandSetSpeed.Value);
}
catch { CustomMessageBox.Show("Error sending command"); }
} // plane with airspeed
else if (MainV2.comPort.param.ContainsKey("TRIM_ARSPD_CM") && MainV2.comPort.param.ContainsKey("ARSPD_ENABLE")
&& MainV2.comPort.param.ContainsKey("ARSPD_USE") && (float)MainV2.comPort.param["ARSPD_ENABLE"] == 1
&& (float)MainV2.comPort.param["ARSPD_USE"] == 1)
{
MainV2.comPort.setParam("TRIM_ARSPD_CM", (float)modifyandSetSpeed.Value);
try
{
MainV2.comPort.setParam("TRIM_ARSPD_CM", (float)modifyandSetSpeed.Value);
}
catch { CustomMessageBox.Show("Error sending command"); }
} // plane without airspeed
else if (MainV2.comPort.param.ContainsKey("TRIM_THROTTLE") && MainV2.comPort.param.ContainsKey("ARSPD_USE")
&& (float)MainV2.comPort.param["ARSPD_USE"] == 0)
{
MainV2.comPort.setParam("TRIM_THROTTLE", (float)modifyandSetSpeed.Value);
try
{
MainV2.comPort.setParam("TRIM_THROTTLE", (float)modifyandSetSpeed.Value);
}
catch { CustomMessageBox.Show("Error sending command"); }
}
}

View File

@ -152,7 +152,7 @@
<value>Flight Planner</value>
</data>
<data name="contextMenuStripMap.Size" type="System.Drawing.Size, System.Drawing">
<value>189, 136</value>
<value>189, 114</value>
</data>
<data name="&gt;&gt;contextMenuStripMap.Name" xml:space="preserve">
<value>contextMenuStripMap</value>
@ -186,43 +186,37 @@
<value>542, 17</value>
</metadata>
<data name="recordHudToAVIToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>176, 22</value>
<value>172, 22</value>
</data>
<data name="recordHudToAVIToolStripMenuItem.Text" xml:space="preserve">
<value>Record Hud to AVI</value>
</data>
<data name="stopRecordToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>176, 22</value>
<value>172, 22</value>
</data>
<data name="stopRecordToolStripMenuItem.Text" xml:space="preserve">
<value>Stop Record</value>
</data>
<data name="setMJPEGSourceToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>176, 22</value>
<value>172, 22</value>
</data>
<data name="setMJPEGSourceToolStripMenuItem.Text" xml:space="preserve">
<value>Set MJPEG source</value>
</data>
<data name="setAspectRatioToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>176, 22</value>
<value>172, 22</value>
</data>
<data name="setAspectRatioToolStripMenuItem.Text" xml:space="preserve">
<value>Set Aspect Ratio</value>
</data>
<data name="displayBatteryInfoToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>176, 22</value>
</data>
<data name="displayBatteryInfoToolStripMenuItem.Text" xml:space="preserve">
<value>Display Battery Info</value>
</data>
<data name="userItemsToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>176, 22</value>
<value>172, 22</value>
</data>
<data name="userItemsToolStripMenuItem.Text" xml:space="preserve">
<value>User Items</value>
</data>
<data name="contextMenuStripHud.Size" type="System.Drawing.Size, System.Drawing">
<value>177, 136</value>
<value>173, 136</value>
</data>
<data name="&gt;&gt;contextMenuStripHud.Name" xml:space="preserve">
<value>contextMenuStripHud</value>
@ -250,7 +244,7 @@
<value>hud1</value>
</data>
<data name="&gt;&gt;hud1.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.HUD, ArdupilotMegaPlanner10, Version=1.1.4695.13950, Culture=neutral, PublicKeyToken=null</value>
<value>ArdupilotMega.Controls.HUD, ArdupilotMegaPlanner10, Version=1.1.4708.37963, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;hud1.Parent" xml:space="preserve">
<value>SubMainLeft.Panel1</value>
@ -289,7 +283,7 @@
<value>quickView6</value>
</data>
<data name="&gt;&gt;quickView6.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.QuickView, ArdupilotMegaPlanner10, Version=1.1.4695.13950, Culture=neutral, PublicKeyToken=null</value>
<value>ArdupilotMega.Controls.QuickView, ArdupilotMegaPlanner10, Version=1.1.4708.37963, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;quickView6.Parent" xml:space="preserve">
<value>tabQuick</value>
@ -313,7 +307,7 @@
<value>quickView5</value>
</data>
<data name="&gt;&gt;quickView5.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.QuickView, ArdupilotMegaPlanner10, Version=1.1.4695.13950, Culture=neutral, PublicKeyToken=null</value>
<value>ArdupilotMega.Controls.QuickView, ArdupilotMegaPlanner10, Version=1.1.4708.37963, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;quickView5.Parent" xml:space="preserve">
<value>tabQuick</value>
@ -337,7 +331,7 @@
<value>quickView4</value>
</data>
<data name="&gt;&gt;quickView4.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.QuickView, ArdupilotMegaPlanner10, Version=1.1.4695.13950, Culture=neutral, PublicKeyToken=null</value>
<value>ArdupilotMega.Controls.QuickView, ArdupilotMegaPlanner10, Version=1.1.4708.37963, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;quickView4.Parent" xml:space="preserve">
<value>tabQuick</value>
@ -361,7 +355,7 @@
<value>quickView3</value>
</data>
<data name="&gt;&gt;quickView3.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.QuickView, ArdupilotMegaPlanner10, Version=1.1.4695.13950, Culture=neutral, PublicKeyToken=null</value>
<value>ArdupilotMega.Controls.QuickView, ArdupilotMegaPlanner10, Version=1.1.4708.37963, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;quickView3.Parent" xml:space="preserve">
<value>tabQuick</value>
@ -385,7 +379,7 @@
<value>quickView2</value>
</data>
<data name="&gt;&gt;quickView2.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.QuickView, ArdupilotMegaPlanner10, Version=1.1.4695.13950, Culture=neutral, PublicKeyToken=null</value>
<value>ArdupilotMega.Controls.QuickView, ArdupilotMegaPlanner10, Version=1.1.4708.37963, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;quickView2.Parent" xml:space="preserve">
<value>tabQuick</value>
@ -415,7 +409,7 @@
<value>quickView1</value>
</data>
<data name="&gt;&gt;quickView1.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.QuickView, ArdupilotMegaPlanner10, Version=1.1.4695.13950, Culture=neutral, PublicKeyToken=null</value>
<value>ArdupilotMega.Controls.QuickView, ArdupilotMegaPlanner10, Version=1.1.4708.37963, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;quickView1.Parent" xml:space="preserve">
<value>tabQuick</value>
@ -463,7 +457,7 @@
<value>modifyandSetSpeed</value>
</data>
<data name="&gt;&gt;modifyandSetSpeed.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.ModifyandSet, ArdupilotMegaPlanner10, Version=1.1.4695.13950, Culture=neutral, PublicKeyToken=null</value>
<value>ArdupilotMega.Controls.ModifyandSet, ArdupilotMegaPlanner10, Version=1.1.4708.37963, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;modifyandSetSpeed.Parent" xml:space="preserve">
<value>tabActions</value>
@ -484,7 +478,7 @@
<value>modifyandSetAlt</value>
</data>
<data name="&gt;&gt;modifyandSetAlt.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.ModifyandSet, ArdupilotMegaPlanner10, Version=1.1.4695.13950, Culture=neutral, PublicKeyToken=null</value>
<value>ArdupilotMega.Controls.ModifyandSet, ArdupilotMegaPlanner10, Version=1.1.4708.37963, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;modifyandSetAlt.Parent" xml:space="preserve">
<value>tabActions</value>
@ -517,7 +511,7 @@
<value>BUT_ARM</value>
</data>
<data name="&gt;&gt;BUT_ARM.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner10, Version=1.1.4695.13950, Culture=neutral, PublicKeyToken=null</value>
<value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner10, Version=1.1.4708.37963, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;BUT_ARM.Parent" xml:space="preserve">
<value>tabActions</value>
@ -544,7 +538,7 @@
<value>BUT_script</value>
</data>
<data name="&gt;&gt;BUT_script.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner10, Version=1.1.4695.13950, Culture=neutral, PublicKeyToken=null</value>
<value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner10, Version=1.1.4708.37963, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;BUT_script.Parent" xml:space="preserve">
<value>tabActions</value>
@ -574,7 +568,7 @@
<value>BUT_joystick</value>
</data>
<data name="&gt;&gt;BUT_joystick.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner10, Version=1.1.4695.13950, Culture=neutral, PublicKeyToken=null</value>
<value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner10, Version=1.1.4708.37963, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;BUT_joystick.Parent" xml:space="preserve">
<value>tabActions</value>
@ -604,7 +598,7 @@
<value>BUT_quickmanual</value>
</data>
<data name="&gt;&gt;BUT_quickmanual.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner10, Version=1.1.4695.13950, Culture=neutral, PublicKeyToken=null</value>
<value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner10, Version=1.1.4708.37963, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;BUT_quickmanual.Parent" xml:space="preserve">
<value>tabActions</value>
@ -634,7 +628,7 @@
<value>BUT_quickrtl</value>
</data>
<data name="&gt;&gt;BUT_quickrtl.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner10, Version=1.1.4695.13950, Culture=neutral, PublicKeyToken=null</value>
<value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner10, Version=1.1.4708.37963, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;BUT_quickrtl.Parent" xml:space="preserve">
<value>tabActions</value>
@ -664,7 +658,7 @@
<value>BUT_quickauto</value>
</data>
<data name="&gt;&gt;BUT_quickauto.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner10, Version=1.1.4695.13950, Culture=neutral, PublicKeyToken=null</value>
<value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner10, Version=1.1.4708.37963, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;BUT_quickauto.Parent" xml:space="preserve">
<value>tabActions</value>
@ -718,7 +712,7 @@
<value>BUT_setwp</value>
</data>
<data name="&gt;&gt;BUT_setwp.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner10, Version=1.1.4695.13950, Culture=neutral, PublicKeyToken=null</value>
<value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner10, Version=1.1.4708.37963, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;BUT_setwp.Parent" xml:space="preserve">
<value>tabActions</value>
@ -769,7 +763,7 @@
<value>BUT_setmode</value>
</data>
<data name="&gt;&gt;BUT_setmode.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner10, Version=1.1.4695.13950, Culture=neutral, PublicKeyToken=null</value>
<value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner10, Version=1.1.4708.37963, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;BUT_setmode.Parent" xml:space="preserve">
<value>tabActions</value>
@ -799,7 +793,7 @@
<value>BUT_clear_track</value>
</data>
<data name="&gt;&gt;BUT_clear_track.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner10, Version=1.1.4695.13950, Culture=neutral, PublicKeyToken=null</value>
<value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner10, Version=1.1.4708.37963, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;BUT_clear_track.Parent" xml:space="preserve">
<value>tabActions</value>
@ -850,7 +844,7 @@
<value>BUT_Homealt</value>
</data>
<data name="&gt;&gt;BUT_Homealt.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner10, Version=1.1.4695.13950, Culture=neutral, PublicKeyToken=null</value>
<value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner10, Version=1.1.4708.37963, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;BUT_Homealt.Parent" xml:space="preserve">
<value>tabActions</value>
@ -880,7 +874,7 @@
<value>BUT_RAWSensor</value>
</data>
<data name="&gt;&gt;BUT_RAWSensor.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner10, Version=1.1.4695.13950, Culture=neutral, PublicKeyToken=null</value>
<value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner10, Version=1.1.4708.37963, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;BUT_RAWSensor.Parent" xml:space="preserve">
<value>tabActions</value>
@ -910,7 +904,7 @@
<value>BUTrestartmission</value>
</data>
<data name="&gt;&gt;BUTrestartmission.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner10, Version=1.1.4695.13950, Culture=neutral, PublicKeyToken=null</value>
<value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner10, Version=1.1.4708.37963, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;BUTrestartmission.Parent" xml:space="preserve">
<value>tabActions</value>
@ -940,7 +934,7 @@
<value>BUTactiondo</value>
</data>
<data name="&gt;&gt;BUTactiondo.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner10, Version=1.1.4695.13950, Culture=neutral, PublicKeyToken=null</value>
<value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner10, Version=1.1.4708.37963, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;BUTactiondo.Parent" xml:space="preserve">
<value>tabActions</value>
@ -994,7 +988,7 @@
<value>Gvspeed</value>
</data>
<data name="&gt;&gt;Gvspeed.Type" xml:space="preserve">
<value>AGaugeApp.AGauge, ArdupilotMegaPlanner10, Version=1.1.4695.13950, Culture=neutral, PublicKeyToken=null</value>
<value>AGaugeApp.AGauge, ArdupilotMegaPlanner10, Version=1.1.4708.37963, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;Gvspeed.Parent" xml:space="preserve">
<value>tabGauges</value>
@ -1024,7 +1018,7 @@
<value>Gheading</value>
</data>
<data name="&gt;&gt;Gheading.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.HSI, ArdupilotMegaPlanner10, Version=1.1.4695.13950, Culture=neutral, PublicKeyToken=null</value>
<value>ArdupilotMega.Controls.HSI, ArdupilotMegaPlanner10, Version=1.1.4708.37963, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;Gheading.Parent" xml:space="preserve">
<value>tabGauges</value>
@ -1054,7 +1048,7 @@
<value>Galt</value>
</data>
<data name="&gt;&gt;Galt.Type" xml:space="preserve">
<value>AGaugeApp.AGauge, ArdupilotMegaPlanner10, Version=1.1.4695.13950, Culture=neutral, PublicKeyToken=null</value>
<value>AGaugeApp.AGauge, ArdupilotMegaPlanner10, Version=1.1.4708.37963, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;Galt.Parent" xml:space="preserve">
<value>tabGauges</value>
@ -1087,7 +1081,7 @@
<value>Gspeed</value>
</data>
<data name="&gt;&gt;Gspeed.Type" xml:space="preserve">
<value>AGaugeApp.AGauge, ArdupilotMegaPlanner10, Version=1.1.4695.13950, Culture=neutral, PublicKeyToken=null</value>
<value>AGaugeApp.AGauge, ArdupilotMegaPlanner10, Version=1.1.4708.37963, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;Gspeed.Parent" xml:space="preserve">
<value>tabGauges</value>
@ -1171,7 +1165,7 @@
<value>lbl_playbackspeed</value>
</data>
<data name="&gt;&gt;lbl_playbackspeed.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.MyLabel, ArdupilotMegaPlanner10, Version=1.1.4695.13950, Culture=neutral, PublicKeyToken=null</value>
<value>ArdupilotMega.Controls.MyLabel, ArdupilotMegaPlanner10, Version=1.1.4708.37963, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;lbl_playbackspeed.Parent" xml:space="preserve">
<value>tabTLogs</value>
@ -1198,7 +1192,7 @@
<value>lbl_logpercent</value>
</data>
<data name="&gt;&gt;lbl_logpercent.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.MyLabel, ArdupilotMegaPlanner10, Version=1.1.4695.13950, Culture=neutral, PublicKeyToken=null</value>
<value>ArdupilotMega.Controls.MyLabel, ArdupilotMegaPlanner10, Version=1.1.4708.37963, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;lbl_logpercent.Parent" xml:space="preserve">
<value>tabTLogs</value>
@ -1225,7 +1219,7 @@
<value>NUM_playbackspeed</value>
</data>
<data name="&gt;&gt;NUM_playbackspeed.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.MyTrackBar, ArdupilotMegaPlanner10, Version=1.1.4695.13950, Culture=neutral, PublicKeyToken=null</value>
<value>ArdupilotMega.Controls.MyTrackBar, ArdupilotMegaPlanner10, Version=1.1.4708.37963, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;NUM_playbackspeed.Parent" xml:space="preserve">
<value>tabTLogs</value>
@ -1252,7 +1246,7 @@
<value>BUT_log2kml</value>
</data>
<data name="&gt;&gt;BUT_log2kml.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner10, Version=1.1.4695.13950, Culture=neutral, PublicKeyToken=null</value>
<value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner10, Version=1.1.4708.37963, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;BUT_log2kml.Parent" xml:space="preserve">
<value>tabTLogs</value>
@ -1306,7 +1300,7 @@
<value>BUT_playlog</value>
</data>
<data name="&gt;&gt;BUT_playlog.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner10, Version=1.1.4695.13950, Culture=neutral, PublicKeyToken=null</value>
<value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner10, Version=1.1.4708.37963, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;BUT_playlog.Parent" xml:space="preserve">
<value>tabTLogs</value>
@ -1333,7 +1327,7 @@
<value>BUT_loadtelem</value>
</data>
<data name="&gt;&gt;BUT_loadtelem.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner10, Version=1.1.4695.13950, Culture=neutral, PublicKeyToken=null</value>
<value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner10, Version=1.1.4708.37963, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;BUT_loadtelem.Parent" xml:space="preserve">
<value>tabTLogs</value>
@ -1519,7 +1513,7 @@
<value>lbl_winddir</value>
</data>
<data name="&gt;&gt;lbl_winddir.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.MyLabel, ArdupilotMegaPlanner10, Version=1.1.4695.13950, Culture=neutral, PublicKeyToken=null</value>
<value>ArdupilotMega.Controls.MyLabel, ArdupilotMegaPlanner10, Version=1.1.4708.37963, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;lbl_winddir.Parent" xml:space="preserve">
<value>splitContainer1.Panel2</value>
@ -1549,7 +1543,7 @@
<value>lbl_windvel</value>
</data>
<data name="&gt;&gt;lbl_windvel.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.MyLabel, ArdupilotMegaPlanner10, Version=1.1.4695.13950, Culture=neutral, PublicKeyToken=null</value>
<value>ArdupilotMega.Controls.MyLabel, ArdupilotMegaPlanner10, Version=1.1.4708.37963, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;lbl_windvel.Parent" xml:space="preserve">
<value>splitContainer1.Panel2</value>
@ -1582,7 +1576,7 @@
<value>lbl_hdop</value>
</data>
<data name="&gt;&gt;lbl_hdop.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.MyLabel, ArdupilotMegaPlanner10, Version=1.1.4695.13950, Culture=neutral, PublicKeyToken=null</value>
<value>ArdupilotMega.Controls.MyLabel, ArdupilotMegaPlanner10, Version=1.1.4708.37963, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;lbl_hdop.Parent" xml:space="preserve">
<value>splitContainer1.Panel2</value>
@ -1615,7 +1609,7 @@
<value>lbl_sats</value>
</data>
<data name="&gt;&gt;lbl_sats.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.MyLabel, ArdupilotMegaPlanner10, Version=1.1.4695.13950, Culture=neutral, PublicKeyToken=null</value>
<value>ArdupilotMega.Controls.MyLabel, ArdupilotMegaPlanner10, Version=1.1.4708.37963, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;lbl_sats.Parent" xml:space="preserve">
<value>splitContainer1.Panel2</value>
@ -1787,7 +1781,7 @@
<value>gMapControl1</value>
</data>
<data name="&gt;&gt;gMapControl1.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.myGMAP, ArdupilotMegaPlanner10, Version=1.1.4695.13950, Culture=neutral, PublicKeyToken=null</value>
<value>ArdupilotMega.Controls.myGMAP, ArdupilotMegaPlanner10, Version=1.1.4708.37963, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;gMapControl1.Parent" xml:space="preserve">
<value>splitContainer1.Panel2</value>
@ -1850,7 +1844,7 @@
<value>TXT_lat</value>
</data>
<data name="&gt;&gt;TXT_lat.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.MyLabel, ArdupilotMegaPlanner10, Version=1.1.4695.13950, Culture=neutral, PublicKeyToken=null</value>
<value>ArdupilotMega.Controls.MyLabel, ArdupilotMegaPlanner10, Version=1.1.4708.37963, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;TXT_lat.Parent" xml:space="preserve">
<value>panel1</value>
@ -1907,7 +1901,7 @@
<value>label1</value>
</data>
<data name="&gt;&gt;label1.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.MyLabel, ArdupilotMegaPlanner10, Version=1.1.4695.13950, Culture=neutral, PublicKeyToken=null</value>
<value>ArdupilotMega.Controls.MyLabel, ArdupilotMegaPlanner10, Version=1.1.4708.37963, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;label1.Parent" xml:space="preserve">
<value>panel1</value>
@ -1937,7 +1931,7 @@
<value>TXT_long</value>
</data>
<data name="&gt;&gt;TXT_long.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.MyLabel, ArdupilotMegaPlanner10, Version=1.1.4695.13950, Culture=neutral, PublicKeyToken=null</value>
<value>ArdupilotMega.Controls.MyLabel, ArdupilotMegaPlanner10, Version=1.1.4708.37963, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;TXT_long.Parent" xml:space="preserve">
<value>panel1</value>
@ -1967,7 +1961,7 @@
<value>TXT_alt</value>
</data>
<data name="&gt;&gt;TXT_alt.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.MyLabel, ArdupilotMegaPlanner10, Version=1.1.4695.13950, Culture=neutral, PublicKeyToken=null</value>
<value>ArdupilotMega.Controls.MyLabel, ArdupilotMegaPlanner10, Version=1.1.4708.37963, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;TXT_alt.Parent" xml:space="preserve">
<value>panel1</value>
@ -2236,12 +2230,6 @@
<data name="&gt;&gt;setAspectRatioToolStripMenuItem.Type" xml:space="preserve">
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;displayBatteryInfoToolStripMenuItem.Name" xml:space="preserve">
<value>displayBatteryInfoToolStripMenuItem</value>
</data>
<data name="&gt;&gt;displayBatteryInfoToolStripMenuItem.Type" xml:space="preserve">
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;userItemsToolStripMenuItem.Name" xml:space="preserve">
<value>userItemsToolStripMenuItem</value>
</data>
@ -2288,6 +2276,6 @@
<value>FlightData</value>
</data>
<data name="&gt;&gt;$this.Type" xml:space="preserve">
<value>System.Windows.Forms.MyUserControl, ArdupilotMegaPlanner10, Version=1.1.4695.13950, Culture=neutral, PublicKeyToken=null</value>
<value>System.Windows.Forms.MyUserControl, ArdupilotMegaPlanner10, Version=1.1.4708.37963, Culture=neutral, PublicKeyToken=null</value>
</data>
</root>

View File

@ -31,14 +31,14 @@
{
this.components = new System.ComponentModel.Container();
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FlightPlanner));
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle9 = new System.Windows.Forms.DataGridViewCellStyle();
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle13 = new System.Windows.Forms.DataGridViewCellStyle();
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle14 = new System.Windows.Forms.DataGridViewCellStyle();
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle10 = new System.Windows.Forms.DataGridViewCellStyle();
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle11 = new System.Windows.Forms.DataGridViewCellStyle();
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle12 = new System.Windows.Forms.DataGridViewCellStyle();
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle15 = new System.Windows.Forms.DataGridViewCellStyle();
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle16 = new System.Windows.Forms.DataGridViewCellStyle();
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle();
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle5 = new System.Windows.Forms.DataGridViewCellStyle();
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle6 = new System.Windows.Forms.DataGridViewCellStyle();
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle2 = new System.Windows.Forms.DataGridViewCellStyle();
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle3 = new System.Windows.Forms.DataGridViewCellStyle();
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle4 = new System.Windows.Forms.DataGridViewCellStyle();
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle7 = new System.Windows.Forms.DataGridViewCellStyle();
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle8 = new System.Windows.Forms.DataGridViewCellStyle();
this.CHK_altmode = new System.Windows.Forms.CheckBox();
this.CHK_holdalt = new System.Windows.Forms.CheckBox();
this.Commands = new System.Windows.Forms.DataGridView();
@ -111,6 +111,8 @@
this.polygonToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.addPolygonPointToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.clearPolygonToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.savePolygonToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.loadPolygonToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.geoFenceToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.toolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem();
this.toolStripSeparator4 = new System.Windows.Forms.ToolStripSeparator();
@ -143,8 +145,6 @@
this.panelBASE = new System.Windows.Forms.Panel();
this.toolTip1 = new System.Windows.Forms.ToolTip(this.components);
this.timer1 = new System.Windows.Forms.Timer(this.components);
this.savePolygonToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.loadPolygonToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
((System.ComponentModel.ISupportInitialize)(this.Commands)).BeginInit();
this.panel5.SuspendLayout();
this.panel1.SuspendLayout();
@ -176,14 +176,14 @@
//
this.Commands.AllowUserToAddRows = false;
resources.ApplyResources(this.Commands, "Commands");
dataGridViewCellStyle9.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;
dataGridViewCellStyle9.BackColor = System.Drawing.SystemColors.Control;
dataGridViewCellStyle9.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
dataGridViewCellStyle9.ForeColor = System.Drawing.SystemColors.WindowText;
dataGridViewCellStyle9.SelectionBackColor = System.Drawing.SystemColors.Highlight;
dataGridViewCellStyle9.SelectionForeColor = System.Drawing.SystemColors.HighlightText;
dataGridViewCellStyle9.WrapMode = System.Windows.Forms.DataGridViewTriState.True;
this.Commands.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle9;
dataGridViewCellStyle1.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;
dataGridViewCellStyle1.BackColor = System.Drawing.SystemColors.Control;
dataGridViewCellStyle1.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
dataGridViewCellStyle1.ForeColor = System.Drawing.SystemColors.WindowText;
dataGridViewCellStyle1.SelectionBackColor = System.Drawing.SystemColors.Highlight;
dataGridViewCellStyle1.SelectionForeColor = System.Drawing.SystemColors.HighlightText;
dataGridViewCellStyle1.WrapMode = System.Windows.Forms.DataGridViewTriState.True;
this.Commands.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle1;
this.Commands.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
this.Command,
this.Param1,
@ -197,17 +197,17 @@
this.Up,
this.Down});
this.Commands.Name = "Commands";
dataGridViewCellStyle13.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;
dataGridViewCellStyle13.BackColor = System.Drawing.SystemColors.Control;
dataGridViewCellStyle13.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
dataGridViewCellStyle13.ForeColor = System.Drawing.SystemColors.WindowText;
dataGridViewCellStyle13.Format = "N0";
dataGridViewCellStyle13.NullValue = "0";
dataGridViewCellStyle13.SelectionBackColor = System.Drawing.SystemColors.Highlight;
dataGridViewCellStyle13.SelectionForeColor = System.Drawing.SystemColors.HighlightText;
this.Commands.RowHeadersDefaultCellStyle = dataGridViewCellStyle13;
dataGridViewCellStyle14.ForeColor = System.Drawing.Color.Black;
this.Commands.RowsDefaultCellStyle = dataGridViewCellStyle14;
dataGridViewCellStyle5.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;
dataGridViewCellStyle5.BackColor = System.Drawing.SystemColors.Control;
dataGridViewCellStyle5.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
dataGridViewCellStyle5.ForeColor = System.Drawing.SystemColors.WindowText;
dataGridViewCellStyle5.Format = "N0";
dataGridViewCellStyle5.NullValue = "0";
dataGridViewCellStyle5.SelectionBackColor = System.Drawing.SystemColors.Highlight;
dataGridViewCellStyle5.SelectionForeColor = System.Drawing.SystemColors.HighlightText;
this.Commands.RowHeadersDefaultCellStyle = dataGridViewCellStyle5;
dataGridViewCellStyle6.ForeColor = System.Drawing.Color.Black;
this.Commands.RowsDefaultCellStyle = dataGridViewCellStyle6;
this.Commands.CellContentClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.Commands_CellContentClick);
this.Commands.CellEndEdit += new System.Windows.Forms.DataGridViewCellEventHandler(this.Commands_CellEndEdit);
this.Commands.DataError += new System.Windows.Forms.DataGridViewDataErrorEventHandler(this.Commands_DataError);
@ -219,9 +219,9 @@
//
// Command
//
dataGridViewCellStyle10.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(67)))), ((int)(((byte)(68)))), ((int)(((byte)(69)))));
dataGridViewCellStyle10.ForeColor = System.Drawing.Color.White;
this.Command.DefaultCellStyle = dataGridViewCellStyle10;
dataGridViewCellStyle2.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(67)))), ((int)(((byte)(68)))), ((int)(((byte)(69)))));
dataGridViewCellStyle2.ForeColor = System.Drawing.Color.White;
this.Command.DefaultCellStyle = dataGridViewCellStyle2;
this.Command.DisplayStyle = System.Windows.Forms.DataGridViewComboBoxDisplayStyle.ComboBox;
resources.ApplyResources(this.Command, "Command");
this.Command.Name = "Command";
@ -287,7 +287,7 @@
//
// Up
//
this.Up.DefaultCellStyle = dataGridViewCellStyle11;
this.Up.DefaultCellStyle = dataGridViewCellStyle3;
resources.ApplyResources(this.Up, "Up");
this.Up.Image = global::ArdupilotMega.Properties.Resources.up;
this.Up.ImageLayout = System.Windows.Forms.DataGridViewImageCellLayout.Stretch;
@ -295,8 +295,8 @@
//
// Down
//
dataGridViewCellStyle12.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter;
this.Down.DefaultCellStyle = dataGridViewCellStyle12;
dataGridViewCellStyle4.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter;
this.Down.DefaultCellStyle = dataGridViewCellStyle4;
resources.ApplyResources(this.Down, "Down");
this.Down.Image = global::ArdupilotMega.Properties.Resources.down;
this.Down.ImageLayout = System.Windows.Forms.DataGridViewImageCellLayout.Stretch;
@ -420,8 +420,8 @@
//
// dataGridViewImageColumn1
//
dataGridViewCellStyle15.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter;
this.dataGridViewImageColumn1.DefaultCellStyle = dataGridViewCellStyle15;
dataGridViewCellStyle7.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter;
this.dataGridViewImageColumn1.DefaultCellStyle = dataGridViewCellStyle7;
resources.ApplyResources(this.dataGridViewImageColumn1, "dataGridViewImageColumn1");
this.dataGridViewImageColumn1.Image = global::ArdupilotMega.Properties.Resources.up;
this.dataGridViewImageColumn1.ImageLayout = System.Windows.Forms.DataGridViewImageCellLayout.Stretch;
@ -429,8 +429,8 @@
//
// dataGridViewImageColumn2
//
dataGridViewCellStyle16.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter;
this.dataGridViewImageColumn2.DefaultCellStyle = dataGridViewCellStyle16;
dataGridViewCellStyle8.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter;
this.dataGridViewImageColumn2.DefaultCellStyle = dataGridViewCellStyle8;
resources.ApplyResources(this.dataGridViewImageColumn2, "dataGridViewImageColumn2");
this.dataGridViewImageColumn2.Image = global::ArdupilotMega.Properties.Resources.down;
this.dataGridViewImageColumn2.ImageLayout = System.Windows.Forms.DataGridViewImageCellLayout.Stretch;
@ -674,6 +674,7 @@
this.flyToHereToolStripMenuItem});
this.contextMenuStrip1.Name = "contextMenuStrip1";
resources.ApplyResources(this.contextMenuStrip1, "contextMenuStrip1");
this.contextMenuStrip1.Opening += new System.ComponentModel.CancelEventHandler(this.contextMenuStrip1_Opening);
//
// deleteWPToolStripMenuItem
//
@ -785,6 +786,18 @@
resources.ApplyResources(this.clearPolygonToolStripMenuItem, "clearPolygonToolStripMenuItem");
this.clearPolygonToolStripMenuItem.Click += new System.EventHandler(this.clearPolygonToolStripMenuItem_Click);
//
// savePolygonToolStripMenuItem
//
this.savePolygonToolStripMenuItem.Name = "savePolygonToolStripMenuItem";
resources.ApplyResources(this.savePolygonToolStripMenuItem, "savePolygonToolStripMenuItem");
this.savePolygonToolStripMenuItem.Click += new System.EventHandler(this.savePolygonToolStripMenuItem_Click);
//
// loadPolygonToolStripMenuItem
//
this.loadPolygonToolStripMenuItem.Name = "loadPolygonToolStripMenuItem";
resources.ApplyResources(this.loadPolygonToolStripMenuItem, "loadPolygonToolStripMenuItem");
this.loadPolygonToolStripMenuItem.Click += new System.EventHandler(this.loadPolygonToolStripMenuItem_Click);
//
// geoFenceToolStripMenuItem
//
this.geoFenceToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
@ -1000,18 +1013,6 @@
this.timer1.Interval = 1000;
this.timer1.Tick += new System.EventHandler(this.timer1_Tick);
//
// savePolygonToolStripMenuItem
//
this.savePolygonToolStripMenuItem.Name = "savePolygonToolStripMenuItem";
resources.ApplyResources(this.savePolygonToolStripMenuItem, "savePolygonToolStripMenuItem");
this.savePolygonToolStripMenuItem.Click += new System.EventHandler(this.savePolygonToolStripMenuItem_Click);
//
// loadPolygonToolStripMenuItem
//
this.loadPolygonToolStripMenuItem.Name = "loadPolygonToolStripMenuItem";
resources.ApplyResources(this.loadPolygonToolStripMenuItem, "loadPolygonToolStripMenuItem");
this.loadPolygonToolStripMenuItem.Click += new System.EventHandler(this.loadPolygonToolStripMenuItem_Click);
//
// FlightPlanner
//
resources.ApplyResources(this, "$this");

View File

@ -346,7 +346,7 @@ namespace ArdupilotMega.GCSViews
// creating a WP
selectedrow = Commands.Rows.Add();
// Commands.CurrentCell = Commands.Rows[selectedrow].Cells[Param1.Index];
// Commands.CurrentCell = Commands.Rows[selectedrow].Cells[Param1.Index];
ChangeColumnHeader(MAVLink.MAV_CMD.WAYPOINT.ToString());
@ -498,7 +498,8 @@ namespace ArdupilotMega.GCSViews
if (MainV2.cs.firmware == MainV2.Firmwares.ArduPlane)
{
reader.ReadToFollowing("APM");
} else if (MainV2.cs.firmware == MainV2.Firmwares.ArduRover)
}
else if (MainV2.cs.firmware == MainV2.Firmwares.ArduRover)
{
reader.ReadToFollowing("APRover");
}
@ -993,7 +994,7 @@ namespace ArdupilotMega.GCSViews
if (command == (byte)MAVLink.MAV_CMD.ROI)
{
pointlist.Add(new PointLatLngAlt(double.Parse(cell3), double.Parse(cell4), (int)double.Parse(cell2) + homealt,"ROI"+(a+1).ToString()) { color = Color.Red });
pointlist.Add(new PointLatLngAlt(double.Parse(cell3), double.Parse(cell4), (int)double.Parse(cell2) + homealt, "ROI" + (a + 1).ToString()) { color = Color.Red });
GMapMarkerGoogleRed m = new GMapMarkerGoogleRed(new PointLatLng(double.Parse(cell3), double.Parse(cell4)));
m.ToolTipMode = MarkerTooltipMode.Always;
m.ToolTipText = (a + 1).ToString();
@ -1010,7 +1011,7 @@ namespace ArdupilotMega.GCSViews
}
else if (command == (byte)MAVLink.MAV_CMD.LOITER_TIME || command == (byte)MAVLink.MAV_CMD.LOITER_TURNS || command == (byte)MAVLink.MAV_CMD.LOITER_UNLIM)
{
pointlist.Add(new PointLatLngAlt(double.Parse(cell3), double.Parse(cell4), (int)double.Parse(cell2) + homealt, (a + 1).ToString()){ color = Color.LightBlue });
pointlist.Add(new PointLatLngAlt(double.Parse(cell3), double.Parse(cell4), (int)double.Parse(cell2) + homealt, (a + 1).ToString()) { color = Color.LightBlue });
addpolygonmarker((a + 1).ToString(), double.Parse(cell4), double.Parse(cell3), (int)double.Parse(cell2), Color.LightBlue);
}
else
@ -1378,7 +1379,7 @@ namespace ArdupilotMega.GCSViews
if (CHK_holdalt.Checked)
{
port.setParam("ALT_HOLD_RTL", int.Parse(TXT_DefaultAlt.Text) / MainV2.cs.multiplierdist);
port.setParam("ALT_HOLD_RTL", int.Parse(TXT_DefaultAlt.Text) / MainV2.cs.multiplierdist * 100);
}
else
{
@ -1433,7 +1434,7 @@ namespace ArdupilotMega.GCSViews
selectedrow = Commands.Rows.Add();
}
//if (i == 0 && temp.alt == 0) // skip 0 home
// continue;
// continue;
DataGridViewTextBoxCell cell;
DataGridViewComboBoxCell cellcmd;
cellcmd = Commands.Rows[i].Cells[Command.Index] as DataGridViewComboBoxCell;
@ -1483,7 +1484,7 @@ namespace ArdupilotMega.GCSViews
{
log.Info("Setting wp params");
string hold_alt = ((int)((float)param["ALT_HOLD_RTL"] * MainV2.cs.multiplierdist)).ToString();
string hold_alt = ((int)((float)param["ALT_HOLD_RTL"] * MainV2.cs.multiplierdist / 100.0)).ToString();
log.Info("param ALT_HOLD_RTL " + hold_alt);
@ -1516,7 +1517,8 @@ namespace ArdupilotMega.GCSViews
}
catch (Exception ex) { log.Error(ex); }
try {
try
{
DataGridViewTextBoxCell cellhome;
cellhome = Commands.Rows[0].Cells[Lat.Index] as DataGridViewTextBoxCell;
@ -1646,8 +1648,8 @@ namespace ArdupilotMega.GCSViews
}
if (isNumber > 127)
{
CustomMessageBox.Show("The value can only be between 0 and 127");
TXT_loiterrad.Text = "127";
// CustomMessageBox.Show("The value can only be between 0 and 127");
// TXT_loiterrad.Text = "127";
}
}
@ -1977,7 +1979,7 @@ namespace ArdupilotMega.GCSViews
{
end = MainMap.FromLocalToLatLng(e.X, e.Y);
// Console.WriteLine("MainMap MU");
// Console.WriteLine("MainMap MU");
if (e.Button == MouseButtons.Right) // ignore right clicks
{
@ -2031,7 +2033,7 @@ namespace ArdupilotMega.GCSViews
{
start = MainMap.FromLocalToLatLng(e.X, e.Y);
// Console.WriteLine("MainMap MD");
// Console.WriteLine("MainMap MD");
if (e.Button == MouseButtons.Left && Control.ModifierKeys != Keys.Alt)
{
@ -2053,7 +2055,7 @@ namespace ArdupilotMega.GCSViews
if (start == point)
return;
// Console.WriteLine("MainMap MM " + point);
// Console.WriteLine("MainMap MM " + point);
currentMarker.Position = point;
@ -2677,7 +2679,8 @@ namespace ArdupilotMega.GCSViews
MainMap.Invalidate();
}
catch {
catch
{
CustomMessageBox.Show("Remove point Failed. Please try again.");
}
}
@ -3173,7 +3176,7 @@ namespace ArdupilotMega.GCSViews
return;
}
if (!int.TryParse(Directionin, out Direction) )
if (!int.TryParse(Directionin, out Direction))
{
CustomMessageBox.Show("Bad Direction value");
return;
@ -3367,7 +3370,7 @@ namespace ArdupilotMega.GCSViews
while (lines * double.Parse(distance) < diagdist * 1.5) //x < topright.Lat && y < topright.Lng)
{
// callMe(y, x, 0);
// callMe(y, x, 0);
double nx = x;
double ny = y;
newpos(ref ny, ref nx, double.Parse(angle), diagdist * 1.5);
@ -3385,13 +3388,13 @@ namespace ArdupilotMega.GCSViews
lines++;
}
// callMe(x, y, 0);
// callMe(x, y, 0);
quickadd = false;
// writeKML();
// writeKML();
// return;
// return;
// find intersections
List<linelatlng> remove = new List<linelatlng>();
@ -3495,25 +3498,25 @@ namespace ArdupilotMega.GCSViews
}
}
// return;
// return;
foreach (linelatlng line in remove)
{
grid.Remove(line);
grid.Remove(line);
}
// int fixme;
// int fixme;
// foreach (PointLatLng pnt in PathFind.FindPath(MainV2.cs.HomeLocation.Point(),grid))
// {
// callMe(pnt.Lat, pnt.Lng, altitude);
// }
// foreach (PointLatLng pnt in PathFind.FindPath(MainV2.cs.HomeLocation.Point(),grid))
// {
// callMe(pnt.Lat, pnt.Lng, altitude);
// }
// return;
// return;
quickadd = true;
linelatlng closest = findClosestLine(MainV2.cs.HomeLocation.Point(),grid);
linelatlng closest = findClosestLine(MainV2.cs.HomeLocation.Point(), grid);
PointLatLng lastpnt;
@ -3582,8 +3585,8 @@ namespace ArdupilotMega.GCSViews
foreach (linelatlng line in grid)
{
// callMe(line.p1.Lat, line.p1.Lng, 0);
// callMe(line.p2.Lat, line.p2.Lng, 0);
// callMe(line.p1.Lat, line.p1.Lng, 0);
// callMe(line.p2.Lat, line.p2.Lng, 0);
}
quickadd = false;
@ -4204,14 +4207,14 @@ namespace ArdupilotMega.GCSViews
for (int a = count; a > 0; a--)
{
DataGridViewRow row = Commands.Rows[a-1];
DataGridViewRow row = Commands.Rows[a - 1];
Commands.Rows.Remove(row);
Commands.Rows.Add(row);
}
quickadd = false;
writeKML();
writeKML();
}
private void loadAndAppendToolStripMenuItem_Click(object sender, EventArgs e)
@ -4290,8 +4293,8 @@ namespace ArdupilotMega.GCSViews
{
string[] items = line.Split(new char[] { ' ', '\t' }, StringSplitOptions.RemoveEmptyEntries);
drawnpolygon.Points.Add(new PointLatLng(double.Parse(items[0]), double.Parse(items[1])));
addpolygonmarkergrid(drawnpolygon.Points.Count.ToString(), double.Parse(items[1]), double.Parse(items[0]), 0);
drawnpolygon.Points.Add(new PointLatLng(double.Parse(items[0]), double.Parse(items[1])));
addpolygonmarkergrid(drawnpolygon.Points.Count.ToString(), double.Parse(items[1]), double.Parse(items[0]), 0);
a++;
}
@ -4310,5 +4313,17 @@ namespace ArdupilotMega.GCSViews
MainMap.Invalidate();
}
}
private void contextMenuStrip1_Opening(object sender, CancelEventArgs e)
{
if (MainV2.cs.firmware != MainV2.Firmwares.ArduPlane)
{
geoFenceToolStripMenuItem.Enabled = false;
}
else
{
geoFenceToolStripMenuItem.Enabled = true;
}
}
}
}

View File

@ -537,11 +537,26 @@
<data name="panel5.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Right</value>
</data>
<data name="BUT_write.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="BUT_write.Location" type="System.Drawing.Point, System.Drawing">
<value>7, 32</value>
</data>
<data name="BUT_write.Size" type="System.Drawing.Size, System.Drawing">
<value>107, 23</value>
</data>
<data name="BUT_write.TabIndex" type="System.Int32, mscorlib">
<value>8</value>
</data>
<data name="BUT_write.Text" xml:space="preserve">
<value>Write WPs</value>
</data>
<data name="&gt;&gt;BUT_write.Name" xml:space="preserve">
<value>BUT_write</value>
</data>
<data name="&gt;&gt;BUT_write.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner10, Version=1.1.4637.40284, Culture=neutral, PublicKeyToken=null</value>
<value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner10, Version=1.1.4708.38701, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;BUT_write.Parent" xml:space="preserve">
<value>panel5</value>
@ -549,11 +564,26 @@
<data name="&gt;&gt;BUT_write.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="BUT_read.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="BUT_read.Location" type="System.Drawing.Point, System.Drawing">
<value>6, 4</value>
</data>
<data name="BUT_read.Size" type="System.Drawing.Size, System.Drawing">
<value>107, 23</value>
</data>
<data name="BUT_read.TabIndex" type="System.Int32, mscorlib">
<value>7</value>
</data>
<data name="BUT_read.Text" xml:space="preserve">
<value>Read WPs</value>
</data>
<data name="&gt;&gt;BUT_read.Name" xml:space="preserve">
<value>BUT_read</value>
</data>
<data name="&gt;&gt;BUT_read.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner10, Version=1.1.4637.40284, Culture=neutral, PublicKeyToken=null</value>
<value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner10, Version=1.1.4708.38701, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;BUT_read.Parent" xml:space="preserve">
<value>panel5</value>
@ -582,168 +612,9 @@
<data name="&gt;&gt;panel5.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="BUT_write.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="BUT_write.Location" type="System.Drawing.Point, System.Drawing">
<value>7, 32</value>
</data>
<data name="BUT_write.Size" type="System.Drawing.Size, System.Drawing">
<value>107, 23</value>
</data>
<data name="BUT_write.TabIndex" type="System.Int32, mscorlib">
<value>8</value>
</data>
<data name="BUT_write.Text" xml:space="preserve">
<value>Write WPs</value>
</data>
<data name="&gt;&gt;BUT_write.Name" xml:space="preserve">
<value>BUT_write</value>
</data>
<data name="&gt;&gt;BUT_write.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner10, Version=1.1.4637.40284, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;BUT_write.Parent" xml:space="preserve">
<value>panel5</value>
</data>
<data name="&gt;&gt;BUT_write.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="BUT_read.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="BUT_read.Location" type="System.Drawing.Point, System.Drawing">
<value>6, 4</value>
</data>
<data name="BUT_read.Size" type="System.Drawing.Size, System.Drawing">
<value>107, 23</value>
</data>
<data name="BUT_read.TabIndex" type="System.Int32, mscorlib">
<value>7</value>
</data>
<data name="BUT_read.Text" xml:space="preserve">
<value>Read WPs</value>
</data>
<data name="&gt;&gt;BUT_read.Name" xml:space="preserve">
<value>BUT_read</value>
</data>
<data name="&gt;&gt;BUT_read.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner10, Version=1.1.4637.40284, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;BUT_read.Parent" xml:space="preserve">
<value>panel5</value>
</data>
<data name="&gt;&gt;BUT_read.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="panel1.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Right</value>
</data>
<data name="&gt;&gt;label4.Name" xml:space="preserve">
<value>label4</value>
</data>
<data name="&gt;&gt;label4.Type" xml:space="preserve">
<value>System.Windows.Forms.LinkLabel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;label4.Parent" xml:space="preserve">
<value>panel1</value>
</data>
<data name="&gt;&gt;label4.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="&gt;&gt;label3.Name" xml:space="preserve">
<value>label3</value>
</data>
<data name="&gt;&gt;label3.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;label3.Parent" xml:space="preserve">
<value>panel1</value>
</data>
<data name="&gt;&gt;label3.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="&gt;&gt;label2.Name" xml:space="preserve">
<value>label2</value>
</data>
<data name="&gt;&gt;label2.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;label2.Parent" xml:space="preserve">
<value>panel1</value>
</data>
<data name="&gt;&gt;label2.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<data name="&gt;&gt;Label1.Name" xml:space="preserve">
<value>Label1</value>
</data>
<data name="&gt;&gt;Label1.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;Label1.Parent" xml:space="preserve">
<value>panel1</value>
</data>
<data name="&gt;&gt;Label1.ZOrder" xml:space="preserve">
<value>3</value>
</data>
<data name="&gt;&gt;TXT_homealt.Name" xml:space="preserve">
<value>TXT_homealt</value>
</data>
<data name="&gt;&gt;TXT_homealt.Type" xml:space="preserve">
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;TXT_homealt.Parent" xml:space="preserve">
<value>panel1</value>
</data>
<data name="&gt;&gt;TXT_homealt.ZOrder" xml:space="preserve">
<value>4</value>
</data>
<data name="&gt;&gt;TXT_homelng.Name" xml:space="preserve">
<value>TXT_homelng</value>
</data>
<data name="&gt;&gt;TXT_homelng.Type" xml:space="preserve">
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;TXT_homelng.Parent" xml:space="preserve">
<value>panel1</value>
</data>
<data name="&gt;&gt;TXT_homelng.ZOrder" xml:space="preserve">
<value>5</value>
</data>
<data name="&gt;&gt;TXT_homelat.Name" xml:space="preserve">
<value>TXT_homelat</value>
</data>
<data name="&gt;&gt;TXT_homelat.Type" xml:space="preserve">
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;TXT_homelat.Parent" xml:space="preserve">
<value>panel1</value>
</data>
<data name="&gt;&gt;TXT_homelat.ZOrder" xml:space="preserve">
<value>6</value>
</data>
<data name="panel1.Location" type="System.Drawing.Point, System.Drawing">
<value>8, 365</value>
</data>
<data name="panel1.Size" type="System.Drawing.Size, System.Drawing">
<value>117, 89</value>
</data>
<data name="panel1.TabIndex" type="System.Int32, mscorlib">
<value>31</value>
</data>
<data name="&gt;&gt;panel1.Name" xml:space="preserve">
<value>panel1</value>
</data>
<data name="&gt;&gt;panel1.Type" xml:space="preserve">
<value>System.Windows.Forms.Panel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;panel1.Parent" xml:space="preserve">
<value>panelAction</value>
</data>
<data name="&gt;&gt;panel1.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="label4.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
@ -927,6 +798,27 @@
<data name="&gt;&gt;TXT_homelat.ZOrder" xml:space="preserve">
<value>6</value>
</data>
<data name="panel1.Location" type="System.Drawing.Point, System.Drawing">
<value>8, 365</value>
</data>
<data name="panel1.Size" type="System.Drawing.Size, System.Drawing">
<value>117, 89</value>
</data>
<data name="panel1.TabIndex" type="System.Int32, mscorlib">
<value>31</value>
</data>
<data name="&gt;&gt;panel1.Name" xml:space="preserve">
<value>panel1</value>
</data>
<data name="&gt;&gt;panel1.Type" xml:space="preserve">
<value>System.Windows.Forms.Panel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;panel1.Parent" xml:space="preserve">
<value>panelAction</value>
</data>
<data name="&gt;&gt;panel1.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="dataGridViewImageColumn1.HeaderText" xml:space="preserve">
<value>Up</value>
</data>
@ -966,111 +858,6 @@
<data name="panel2.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Right</value>
</data>
<data name="&gt;&gt;label7.Name" xml:space="preserve">
<value>label7</value>
</data>
<data name="&gt;&gt;label7.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;label7.Parent" xml:space="preserve">
<value>panel2</value>
</data>
<data name="&gt;&gt;label7.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="&gt;&gt;label8.Name" xml:space="preserve">
<value>label8</value>
</data>
<data name="&gt;&gt;label8.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;label8.Parent" xml:space="preserve">
<value>panel2</value>
</data>
<data name="&gt;&gt;label8.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="&gt;&gt;label9.Name" xml:space="preserve">
<value>label9</value>
</data>
<data name="&gt;&gt;label9.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;label9.Parent" xml:space="preserve">
<value>panel2</value>
</data>
<data name="&gt;&gt;label9.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<data name="&gt;&gt;label10.Name" xml:space="preserve">
<value>label10</value>
</data>
<data name="&gt;&gt;label10.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;label10.Parent" xml:space="preserve">
<value>panel2</value>
</data>
<data name="&gt;&gt;label10.ZOrder" xml:space="preserve">
<value>3</value>
</data>
<data name="&gt;&gt;TXT_mousealt.Name" xml:space="preserve">
<value>TXT_mousealt</value>
</data>
<data name="&gt;&gt;TXT_mousealt.Type" xml:space="preserve">
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;TXT_mousealt.Parent" xml:space="preserve">
<value>panel2</value>
</data>
<data name="&gt;&gt;TXT_mousealt.ZOrder" xml:space="preserve">
<value>4</value>
</data>
<data name="&gt;&gt;TXT_mouselong.Name" xml:space="preserve">
<value>TXT_mouselong</value>
</data>
<data name="&gt;&gt;TXT_mouselong.Type" xml:space="preserve">
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;TXT_mouselong.Parent" xml:space="preserve">
<value>panel2</value>
</data>
<data name="&gt;&gt;TXT_mouselong.ZOrder" xml:space="preserve">
<value>5</value>
</data>
<data name="&gt;&gt;TXT_mouselat.Name" xml:space="preserve">
<value>TXT_mouselat</value>
</data>
<data name="&gt;&gt;TXT_mouselat.Type" xml:space="preserve">
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;TXT_mouselat.Parent" xml:space="preserve">
<value>panel2</value>
</data>
<data name="&gt;&gt;TXT_mouselat.ZOrder" xml:space="preserve">
<value>6</value>
</data>
<data name="panel2.Location" type="System.Drawing.Point, System.Drawing">
<value>8, 177</value>
</data>
<data name="panel2.Size" type="System.Drawing.Size, System.Drawing">
<value>114, 79</value>
</data>
<data name="panel2.TabIndex" type="System.Int32, mscorlib">
<value>38</value>
</data>
<data name="&gt;&gt;panel2.Name" xml:space="preserve">
<value>panel2</value>
</data>
<data name="&gt;&gt;panel2.Type" xml:space="preserve">
<value>System.Windows.Forms.Panel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;panel2.Parent" xml:space="preserve">
<value>panelAction</value>
</data>
<data name="&gt;&gt;panel2.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<data name="label7.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
@ -1254,6 +1041,27 @@
<data name="&gt;&gt;TXT_mouselat.ZOrder" xml:space="preserve">
<value>6</value>
</data>
<data name="panel2.Location" type="System.Drawing.Point, System.Drawing">
<value>8, 177</value>
</data>
<data name="panel2.Size" type="System.Drawing.Size, System.Drawing">
<value>114, 79</value>
</data>
<data name="panel2.TabIndex" type="System.Int32, mscorlib">
<value>38</value>
</data>
<data name="&gt;&gt;panel2.Name" xml:space="preserve">
<value>panel2</value>
</data>
<data name="&gt;&gt;panel2.Type" xml:space="preserve">
<value>System.Windows.Forms.Panel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;panel2.Parent" xml:space="preserve">
<value>panelAction</value>
</data>
<data name="&gt;&gt;panel2.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<data name="lbl_status.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Right</value>
</data>
@ -1314,9 +1122,6 @@
<data name="&gt;&gt;splitter1.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<metadata name="toolTip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>172, 17</value>
</metadata>
<data name="BUT_Add.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
@ -1332,6 +1137,9 @@
<data name="BUT_Add.Text" xml:space="preserve">
<value>Add Below</value>
</data>
<metadata name="toolTip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>172, 17</value>
</metadata>
<data name="BUT_Add.ToolTip" xml:space="preserve">
<value>Add a line to the grid bellow</value>
</data>
@ -1339,7 +1147,7 @@
<value>BUT_Add</value>
</data>
<data name="&gt;&gt;BUT_Add.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner10, Version=1.1.4637.40284, Culture=neutral, PublicKeyToken=null</value>
<value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner10, Version=1.1.4708.38701, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;BUT_Add.Parent" xml:space="preserve">
<value>panelWaypoints</value>
@ -1530,12 +1338,42 @@
<data name="deleteWPToolStripMenuItem.Text" xml:space="preserve">
<value>Delete WP</value>
</data>
<data name="loiterForeverToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>113, 22</value>
</data>
<data name="loiterForeverToolStripMenuItem.Text" xml:space="preserve">
<value>Forever</value>
</data>
<data name="loitertimeToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>113, 22</value>
</data>
<data name="loitertimeToolStripMenuItem.Text" xml:space="preserve">
<value>Time</value>
</data>
<data name="loitercirclesToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>113, 22</value>
</data>
<data name="loitercirclesToolStripMenuItem.Text" xml:space="preserve">
<value>Circles</value>
</data>
<data name="loiterToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>152, 22</value>
</data>
<data name="loiterToolStripMenuItem.Text" xml:space="preserve">
<value>Loiter</value>
</data>
<data name="jumpstartToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>102, 22</value>
</data>
<data name="jumpstartToolStripMenuItem.Text" xml:space="preserve">
<value>Start</value>
</data>
<data name="jumpwPToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>102, 22</value>
</data>
<data name="jumpwPToolStripMenuItem.Text" xml:space="preserve">
<value>WP #</value>
</data>
<data name="jumpToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>152, 22</value>
</data>
@ -1605,24 +1443,147 @@
<data name="polygonToolStripMenuItem.Text" xml:space="preserve">
<value>Draw Polygon</value>
</data>
<data name="toolStripMenuItem1.Size" type="System.Drawing.Size, System.Drawing">
<value>177, 22</value>
</data>
<data name="toolStripMenuItem1.Text" xml:space="preserve">
<value>Complex</value>
</data>
<data name="toolStripSeparator4.Size" type="System.Drawing.Size, System.Drawing">
<value>174, 6</value>
</data>
<data name="GeoFenceuploadToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>177, 22</value>
</data>
<data name="GeoFenceuploadToolStripMenuItem.Text" xml:space="preserve">
<value>Upload</value>
</data>
<data name="GeoFencedownloadToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>177, 22</value>
</data>
<data name="GeoFencedownloadToolStripMenuItem.Text" xml:space="preserve">
<value>Download</value>
</data>
<data name="setReturnLocationToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>177, 22</value>
</data>
<data name="setReturnLocationToolStripMenuItem.Text" xml:space="preserve">
<value>Set Return Location</value>
</data>
<data name="loadFromFileToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>177, 22</value>
</data>
<data name="loadFromFileToolStripMenuItem.Text" xml:space="preserve">
<value>Load from File</value>
</data>
<data name="saveToFileToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>177, 22</value>
</data>
<data name="saveToFileToolStripMenuItem.Text" xml:space="preserve">
<value>Save to File</value>
</data>
<data name="geoFenceToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>152, 22</value>
</data>
<data name="geoFenceToolStripMenuItem.Text" xml:space="preserve">
<value>Geo-Fence</value>
</data>
<data name="createWpCircleToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>162, 22</value>
</data>
<data name="createWpCircleToolStripMenuItem.Text" xml:space="preserve">
<value>Create Wp Circle</value>
</data>
<data name="gridToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>162, 22</value>
</data>
<data name="gridToolStripMenuItem.Text" xml:space="preserve">
<value>Grid</value>
</data>
<data name="gridV2ToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>162, 22</value>
</data>
<data name="gridV2ToolStripMenuItem.Text" xml:space="preserve">
<value>GridV2</value>
</data>
<data name="autoWPToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>152, 22</value>
</data>
<data name="autoWPToolStripMenuItem.Text" xml:space="preserve">
<value>Auto WP</value>
</data>
<data name="ContextMeasure.Size" type="System.Drawing.Size, System.Drawing">
<value>167, 22</value>
</data>
<data name="ContextMeasure.Text" xml:space="preserve">
<value>Measure Distance</value>
</data>
<data name="rotateMapToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>167, 22</value>
</data>
<data name="rotateMapToolStripMenuItem.Text" xml:space="preserve">
<value>Rotate Map</value>
</data>
<data name="zoomToToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>167, 22</value>
</data>
<data name="zoomToToolStripMenuItem.Text" xml:space="preserve">
<value>Zoom To</value>
</data>
<data name="prefetchToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>167, 22</value>
</data>
<data name="prefetchToolStripMenuItem.Text" xml:space="preserve">
<value>Prefetch</value>
</data>
<data name="kMLOverlayToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>167, 22</value>
</data>
<data name="kMLOverlayToolStripMenuItem.Text" xml:space="preserve">
<value>KML Overlay</value>
</data>
<data name="elevationGraphToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>167, 22</value>
</data>
<data name="elevationGraphToolStripMenuItem.Text" xml:space="preserve">
<value>Elevation Graph</value>
</data>
<data name="cameraToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>167, 22</value>
</data>
<data name="cameraToolStripMenuItem.Text" xml:space="preserve">
<value>Camera</value>
</data>
<data name="reverseWPsToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>167, 22</value>
</data>
<data name="reverseWPsToolStripMenuItem.Text" xml:space="preserve">
<value>Reverse WPs</value>
</data>
<data name="mapToolToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>152, 22</value>
</data>
<data name="mapToolToolStripMenuItem.Text" xml:space="preserve">
<value>Map Tool</value>
</data>
<data name="loadWPFileToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>168, 22</value>
</data>
<data name="loadWPFileToolStripMenuItem.Text" xml:space="preserve">
<value>Load WP File</value>
</data>
<data name="loadAndAppendToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>168, 22</value>
</data>
<data name="loadAndAppendToolStripMenuItem.Text" xml:space="preserve">
<value>Load and Append</value>
</data>
<data name="saveWPFileToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>168, 22</value>
</data>
<data name="saveWPFileToolStripMenuItem.Text" xml:space="preserve">
<value>Save WP File</value>
</data>
<data name="fileLoadSaveToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>152, 22</value>
</data>
@ -1811,7 +1772,7 @@
<value>MainMap</value>
</data>
<data name="&gt;&gt;MainMap.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.myGMAP, ArdupilotMegaPlanner10, Version=1.1.4637.40284, Culture=neutral, PublicKeyToken=null</value>
<value>ArdupilotMega.Controls.myGMAP, ArdupilotMegaPlanner10, Version=1.1.4708.38701, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;MainMap.Parent" xml:space="preserve">
<value>panelMap</value>
@ -1841,7 +1802,7 @@
<value>trackBar1</value>
</data>
<data name="&gt;&gt;trackBar1.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.MyTrackBar, ArdupilotMegaPlanner10, Version=1.1.4637.40284, Culture=neutral, PublicKeyToken=null</value>
<value>ArdupilotMega.Controls.MyTrackBar, ArdupilotMegaPlanner10, Version=1.1.4708.38701, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;trackBar1.Parent" xml:space="preserve">
<value>panelMap</value>
@ -1909,159 +1870,6 @@
<data name="&gt;&gt;panelMap.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="loiterForeverToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>113, 22</value>
</data>
<data name="loiterForeverToolStripMenuItem.Text" xml:space="preserve">
<value>Forever</value>
</data>
<data name="loitertimeToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>113, 22</value>
</data>
<data name="loitertimeToolStripMenuItem.Text" xml:space="preserve">
<value>Time</value>
</data>
<data name="loitercirclesToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>113, 22</value>
</data>
<data name="loitercirclesToolStripMenuItem.Text" xml:space="preserve">
<value>Circles</value>
</data>
<data name="jumpstartToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>102, 22</value>
</data>
<data name="jumpstartToolStripMenuItem.Text" xml:space="preserve">
<value>Start</value>
</data>
<data name="jumpwPToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>102, 22</value>
</data>
<data name="jumpwPToolStripMenuItem.Text" xml:space="preserve">
<value>WP #</value>
</data>
<data name="toolStripMenuItem1.Size" type="System.Drawing.Size, System.Drawing">
<value>177, 22</value>
</data>
<data name="toolStripMenuItem1.Text" xml:space="preserve">
<value>Complex</value>
</data>
<data name="toolStripSeparator4.Size" type="System.Drawing.Size, System.Drawing">
<value>174, 6</value>
</data>
<data name="GeoFenceuploadToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>177, 22</value>
</data>
<data name="GeoFenceuploadToolStripMenuItem.Text" xml:space="preserve">
<value>Upload</value>
</data>
<data name="GeoFencedownloadToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>177, 22</value>
</data>
<data name="GeoFencedownloadToolStripMenuItem.Text" xml:space="preserve">
<value>Download</value>
</data>
<data name="setReturnLocationToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>177, 22</value>
</data>
<data name="setReturnLocationToolStripMenuItem.Text" xml:space="preserve">
<value>Set Return Location</value>
</data>
<data name="loadFromFileToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>177, 22</value>
</data>
<data name="loadFromFileToolStripMenuItem.Text" xml:space="preserve">
<value>Load from File</value>
</data>
<data name="saveToFileToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>177, 22</value>
</data>
<data name="saveToFileToolStripMenuItem.Text" xml:space="preserve">
<value>Save to File</value>
</data>
<data name="createWpCircleToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>162, 22</value>
</data>
<data name="createWpCircleToolStripMenuItem.Text" xml:space="preserve">
<value>Create Wp Circle</value>
</data>
<data name="gridToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>162, 22</value>
</data>
<data name="gridToolStripMenuItem.Text" xml:space="preserve">
<value>Grid</value>
</data>
<data name="gridV2ToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>162, 22</value>
</data>
<data name="gridV2ToolStripMenuItem.Text" xml:space="preserve">
<value>GridV2</value>
</data>
<data name="ContextMeasure.Size" type="System.Drawing.Size, System.Drawing">
<value>167, 22</value>
</data>
<data name="ContextMeasure.Text" xml:space="preserve">
<value>Measure Distance</value>
</data>
<data name="rotateMapToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>167, 22</value>
</data>
<data name="rotateMapToolStripMenuItem.Text" xml:space="preserve">
<value>Rotate Map</value>
</data>
<data name="zoomToToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>167, 22</value>
</data>
<data name="zoomToToolStripMenuItem.Text" xml:space="preserve">
<value>Zoom To</value>
</data>
<data name="prefetchToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>167, 22</value>
</data>
<data name="prefetchToolStripMenuItem.Text" xml:space="preserve">
<value>Prefetch</value>
</data>
<data name="kMLOverlayToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>167, 22</value>
</data>
<data name="kMLOverlayToolStripMenuItem.Text" xml:space="preserve">
<value>KML Overlay</value>
</data>
<data name="elevationGraphToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>167, 22</value>
</data>
<data name="elevationGraphToolStripMenuItem.Text" xml:space="preserve">
<value>Elevation Graph</value>
</data>
<data name="cameraToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>167, 22</value>
</data>
<data name="cameraToolStripMenuItem.Text" xml:space="preserve">
<value>Camera</value>
</data>
<data name="reverseWPsToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>167, 22</value>
</data>
<data name="reverseWPsToolStripMenuItem.Text" xml:space="preserve">
<value>Reverse WPs</value>
</data>
<data name="loadWPFileToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>168, 22</value>
</data>
<data name="loadWPFileToolStripMenuItem.Text" xml:space="preserve">
<value>Load WP File</value>
</data>
<data name="loadAndAppendToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>168, 22</value>
</data>
<data name="loadAndAppendToolStripMenuItem.Text" xml:space="preserve">
<value>Load and Append</value>
</data>
<data name="saveWPFileToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>168, 22</value>
</data>
<data name="saveWPFileToolStripMenuItem.Text" xml:space="preserve">
<value>Save WP File</value>
</data>
<data name="panelBASE.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
@ -2086,9 +1894,6 @@
<data name="&gt;&gt;panelBASE.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<metadata name="toolTip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>172, 17</value>
</metadata>
<metadata name="timer1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>269, 17</value>
</metadata>
@ -2284,6 +2089,18 @@
<data name="&gt;&gt;clearPolygonToolStripMenuItem.Type" xml:space="preserve">
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;savePolygonToolStripMenuItem.Name" xml:space="preserve">
<value>savePolygonToolStripMenuItem</value>
</data>
<data name="&gt;&gt;savePolygonToolStripMenuItem.Type" xml:space="preserve">
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;loadPolygonToolStripMenuItem.Name" xml:space="preserve">
<value>loadPolygonToolStripMenuItem</value>
</data>
<data name="&gt;&gt;loadPolygonToolStripMenuItem.Type" xml:space="preserve">
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;geoFenceToolStripMenuItem.Name" xml:space="preserve">
<value>geoFenceToolStripMenuItem</value>
</data>
@ -2458,22 +2275,10 @@
<data name="&gt;&gt;timer1.Type" xml:space="preserve">
<value>System.Windows.Forms.Timer, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;savePolygonToolStripMenuItem.Name" xml:space="preserve">
<value>savePolygonToolStripMenuItem</value>
</data>
<data name="&gt;&gt;savePolygonToolStripMenuItem.Type" xml:space="preserve">
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;loadPolygonToolStripMenuItem.Name" xml:space="preserve">
<value>loadPolygonToolStripMenuItem</value>
</data>
<data name="&gt;&gt;loadPolygonToolStripMenuItem.Type" xml:space="preserve">
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;$this.Name" xml:space="preserve">
<value>FlightPlanner</value>
</data>
<data name="&gt;&gt;$this.Type" xml:space="preserve">
<value>System.Windows.Forms.MyUserControl, ArdupilotMegaPlanner10, Version=1.1.4637.40284, Culture=neutral, PublicKeyToken=null</value>
<value>System.Windows.Forms.MyUserControl, ArdupilotMegaPlanner10, Version=1.1.4708.38701, Culture=neutral, PublicKeyToken=null</value>
</data>
</root>

View File

@ -27,7 +27,6 @@ namespace ArdupilotMega.HIL
public Vector3 velocity = new Vector3(0, 0, 0); //# m/s, North, East, Up
public Vector3 position = new Vector3(0, 0, 0); //# m North, East, Up
public Vector3 accel = new Vector3(0, 0, 0); //# m/s/s North, East, Up
public double mass = 0.0;
public double update_frequency = 50;//# in Hz
public double gravity = 9.80665;//# m/s/s
@ -37,6 +36,8 @@ namespace ArdupilotMega.HIL
public double pitch = 0;
public double yaw = 0;
public Wind wind = new Wind("0,0,0");
public Aircraft()
{
self = this;

View File

@ -130,13 +130,13 @@ namespace ArdupilotMega.HIL
self = this;
motors = Motor.build_motors(frame);
motor_speed = new double[motors.Length];
mass = 1.0;// # Kg
frame_height = 0.1;
motor_speed = new double[motors.Length];
hover_throttle = 0.37;
terminal_velocity = 30.0;
terminal_rotation_rate = 4 * 360.0 * deg2rad;
terminal_rotation_rate = 4 * (360.0 * deg2rad);
thrust_scale = (mass * gravity) / (motors.Length * hover_throttle);
@ -220,8 +220,9 @@ namespace ArdupilotMega.HIL
Vector3 accel_earth = self.dcm * accel_body;
accel_earth += new Vector3(0, 0, self.gravity);
accel_earth += air_resistance;
// add in some wind
// accel_earth += self.wind.accel(self.velocity);
// add in some wind (turn force into accel by dividing by mass).
accel_earth += self.wind.drag(self.velocity) / self.mass;
// if we're on the ground, then our vertical acceleration is limited
// to zero. This effectively adds the force of the ground on the aircraft

View File

@ -20,6 +20,10 @@ namespace ArdupilotMega.HIL
{
return System.Math.Cos(val);
}
public static double acos(double val)
{
return System.Math.Acos(val);
}
public static double asin(double val)
{
return System.Math.Asin(val);
@ -61,6 +65,11 @@ namespace ArdupilotMega.HIL
return System.Math.Tan(val);
}
public static int len(object[] data)
{
return data.Length;
}
public static Tuple<double, double, double> EarthRatesToBodyRates(double roll, double pitch, double yaw,
double rollRate, double pitchRate, double yawRate)

View File

@ -88,10 +88,10 @@ namespace ArdupilotMega.HIL
self.x = self.y = self.z = 0;
}
// public double angle (Vector3 self, Vector3 v) {
//public double angle (Vector3 self, Vector3 v) {
// '''return the angle between this vector and another vector'''
// return Math.Acos(self * v) / (self.length() * v.length());
// }
// return Math.Acos(self * v) / (self.length() * v.length());
//}
public Vector3 normalized(){
return self / self.length();

View File

@ -0,0 +1,216 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ArdupilotMega.HIL
{
public class Wind : Utils
{
Wind self;
public float speed;
public float direction;
public float turbulance;
public double cross_section;
public double turbulance_time_constant;
public DateTime tlast;
public double turbulance_mul;
//'''a wind generation object//'''
public Wind (string windstring, double cross_section=0.1) {
self = this;
string[] a = windstring.Split(',');
if (Utils.len(a) != 3)
{
return;
//raise RuntimeError("Expected wind in speed,direction,turbulance form, not %s" % windstring);
}
self.speed = float.Parse(a[0]); //# m/s
self.direction = float.Parse(a[1]); //# direction the wind is going in
self.turbulance= float.Parse(a[2]); //# turbulance factor (standard deviation)
//# the cross-section of the aircraft to wind. This is multiplied by the
//# difference in the wind and the velocity of the aircraft to give the acceleration
self.cross_section = cross_section;
//# the time constant for the turbulance - the average period of the
//# changes over time
self.turbulance_time_constant = 5.0;
//# wind time record
self.tlast = DateTime.Now;
//# initial turbulance multiplier
self.turbulance_mul = 1.0;
}
public void current(double deltat, out double speed, out double direction) {
//'''return current wind speed and direction as a tuple
//speed is in m/s, direction in degrees
//'''
if (deltat == 0) {
DateTime tnow = DateTime.Now;
deltat = (tnow - self.tlast).TotalSeconds;
self.tlast = tnow;
}
//# update turbulance random walk
double w_delta = Utils.sqrt(deltat) * (1.0 - new GaussianRandom().NextGaussian(1.0, self.turbulance));
w_delta -= (self.turbulance_mul-1.0)*(deltat/self.turbulance_time_constant);
self.turbulance_mul += w_delta;
speed = self.speed * (float)Utils.fabs(self.turbulance_mul);
direction = self.direction;
}
//# Calculate drag.
public Vector3 drag(Vector3 velocity, double deltat = 0)//, testing=None)
{
//'''return current wind force in Earth frame. The velocity parameter is
// a Vector3 of the current velocity of the aircraft in earth frame, m/s//'''
//# (m/s, degrees) : wind vector as a magnitude and angle.
double speed, direction;
self.current(deltat,out speed,out direction);
//# speed = self.speed
//# direction = self.direction
//# Get the wind vector.
Vector3 w = toVec(speed, Utils.radians(direction));
double obj_speed = velocity.length();
//# Compute the angle between the object vector and wind vector by taking
//# the dot product and dividing by the magnitudes.
double alpha = 0;
double d = w.length() * obj_speed;
if (d == 0) {
alpha = 0;
}else{
int checkme;
alpha = Utils.acos(((w * velocity).length() / d));
}
//# Get the relative wind speed and angle from the object. Note that the
//# relative wind speed includes the velocity of the object; i.e., there
//# is a headwind equivalent to the object's speed even if there is no
//# absolute wind.
double rel_speed, beta;
apparent_wind(speed, obj_speed, alpha,out rel_speed,out beta);
//# Return the vector of the relative wind, relative to the coordinate
//# system.
Vector3 relWindVec = toVec(rel_speed, beta + Utils.atan2(velocity.y, velocity.x));
//# Combine them to get the acceleration vector.
return new Vector3( acc(relWindVec.x, drag_force(self, relWindVec.x))
, acc(relWindVec.y, drag_force(self, relWindVec.y))
, 0 );
}
//# http://en.wikipedia.org/wiki/Apparent_wind
//#
//# Returns apparent wind speed and angle of apparent wind. Alpha is the angle
//# between the object and the true wind. alpha of 0 rads is a headwind; pi a
//# tailwind. Speeds should always be positive.
public void apparent_wind(double wind_sp, double obj_speed, double alpha, out double rel_speed, out double beta)
{
double delta = wind_sp * Utils.cos(alpha);
double x = Math.Pow(wind_sp, 2) + Math.Pow(obj_speed, 2) + 2 * obj_speed * delta;
rel_speed = Utils.sqrt(x);
if (rel_speed == 0)
{
beta = Math.PI;
}
else
{
beta = acos((delta + obj_speed) / rel_speed);
}
}
//# See http://en.wikipedia.org/wiki/Drag_equation
//#
//# Drag equation is F(a) = cl * p/2 * v^2 * a, where cl : drag coefficient
//# (let's assume it's low, .e.g., 0.2), p : density of air (assume about 1
//# kg/m^3, the density just over 1500m elevation), v : relative speed of wind
//# (to the body), a : area acted on (this is captured by the cross_section
//# paramter).
//#
//# So then we have
//# F(a) = 0.2 * 1/2 * v^2 * cross_section = 0.1 * v^2 * cross_section
public double drag_force(Wind wind, double sp){
return (Math.Pow(sp,2.0)) * 0.1 * wind.cross_section;
}
//# Function to make the force vector. relWindVec is the direction the apparent
//# wind comes *from*. We want to compute the accleration vector in the direction
//# the wind blows to.
public double acc(double val,double mag){
if (val == 0) {
return mag;
}else{
return (val / Utils.fabs(val)) * (0 - mag);
}
}
//# Converts a magnitude and angle (radians) to a vector in the xy plane.
public Vector3 toVec(double magnitude, double angle)
{
Vector3 v = new Vector3(magnitude, 0, 0);
Matrix3 m = new Matrix3();
m.from_euler(0, 0, angle);
return m.transposed() * v;
}
}
public sealed class GaussianRandom
{
private bool _hasDeviate;
private double _storedDeviate;
private readonly Random _random;
public GaussianRandom(Random random = null)
{
_random = random ?? new Random();
}
/// <summary>
/// Obtains normally (Gaussian) distributed random numbers, using the Box-Muller
/// transformation. This transformation takes two uniformly distributed deviates
/// within the unit circle, and transforms them into two independently
/// distributed normal deviates.
/// </summary>
/// <param name="mu">The mean of the distribution. Default is zero.</param>
/// <param name="sigma">The standard deviation of the distribution. Default is one.</param>
/// <returns></returns>
public double NextGaussian(double mu = 0, double sigma = 1)
{
if (sigma <= 0)
throw new ArgumentOutOfRangeException("sigma", "Must be greater than zero.");
if (_hasDeviate)
{
_hasDeviate = false;
return _storedDeviate * sigma + mu;
}
double v1, v2, rSquared;
do
{
// two random values between -1.0 and 1.0
v1 = 2 * _random.NextDouble() - 1;
v2 = 2 * _random.NextDouble() - 1;
rSquared = v1 * v1 + v2 * v2;
// ensure within the unit circle
} while (rSquared >= 1 || rSquared == 0);
// calculate polar tranformation for each deviate
var polar = Math.Sqrt(-2 * Math.Log(rSquared) / rSquared);
// store first deviate
_storedDeviate = v2 * polar;
_hasDeviate = true;
// return second deviate
return v1 * polar * sigma + mu;
}
}
}

View File

@ -122,7 +122,8 @@ namespace ArdupilotMega
{
ArduPlane,
ArduCopter2,
ArduRover
ArduRover,
Ateryx
}
DateTime connectButtonUpdate = DateTime.Now;
@ -151,7 +152,7 @@ namespace ArdupilotMega
{
log.Info("Mainv2 ctor");
Form splash = new Splash();
Form splash = Program.Splash;
splash.Show();
string strVersion = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString();
@ -1588,6 +1589,40 @@ namespace ArdupilotMega
GCSViews.FlightData.myhud.streamjpgenable = false;
stream.Close();
}
else if (url.Contains("guided?"))
{
//http://127.0.0.1:56781/guided?lat=-34&lng=117.8&alt=30
Regex rex = new Regex(@"lat=([\-\.0-9]+)&lng=([\-\.0-9]+)&alt=([\.0-9]+)",RegexOptions.IgnoreCase);
Match match = rex.Match(url);
if (match.Success)
{
Locationwp gwp = new Locationwp()
{
lat = float.Parse(match.Groups[1].Value),
lng = float.Parse(match.Groups[2].Value),
alt = float.Parse(match.Groups[3].Value)
};
try
{
comPort.setGuidedModeWP(gwp);
}
catch { }
string header = "HTTP/1.1 200 OK\r\n\r\nSent Guide Mode Wp";
byte[] temp = asciiEncoding.GetBytes(header);
stream.Write(temp, 0, temp.Length);
}
else
{
string header = "HTTP/1.1 200 OK\r\n\r\nFailed Guide Mode Wp";
byte[] temp = asciiEncoding.GetBytes(header);
stream.Write(temp, 0, temp.Length);
}
}
stream.Close();
}

View File

@ -109,6 +109,7 @@ namespace ArdupilotMega
/// mavlink ap type
/// </summary>
public MAV_TYPE aptype { get; set; }
public MAV_AUTOPILOT apname { get; set; }
/// <summary>
/// used as a snapshot of what is loaded on the ap atm. - derived from the stream
/// </summary>
@ -161,6 +162,7 @@ namespace ArdupilotMega
this.oldlogformat = false;
this.mavlinkversion = 0;
this.aptype = 0;
this.apname = 0;
this.debugmavlink = false;
this.logreadmode = false;
this.lastlogread = DateTime.MinValue;
@ -369,6 +371,7 @@ namespace ArdupilotMega
mavlinkversion = hb.mavlink_version;
aptype = (MAV_TYPE)hb.type;
apname = (MAV_AUTOPILOT)hb.autopilot;
setAPType();
@ -595,7 +598,6 @@ namespace ArdupilotMega
byte[] temp = Encoding.ASCII.GetBytes(paramname);
modifyParamForDisplay(false, paramname, ref value);
#if MAVLINK10
Array.Resize(ref temp, 16);
#else
@ -649,8 +651,6 @@ namespace ArdupilotMega
continue;
}
modifyParamForDisplay(true, st, ref par.param_value);
param[st] = (par.param_value);
MainV2.giveComport = false;
@ -806,7 +806,6 @@ namespace ArdupilotMega
//Console.WriteLine(DateTime.Now.Millisecond + " gp2a ");
modifyParamForDisplay(true, paramID, ref par.param_value);
param[paramID] = (par.param_value);
//Console.WriteLine(DateTime.Now.Millisecond + " gp2b ");
@ -912,6 +911,7 @@ namespace ArdupilotMega
public static void modifyParamForDisplay(bool fromapm, string paramname, ref float value)
{
if (paramname.ToUpper().EndsWith("_IMAX") || paramname.ToUpper().EndsWith("ALT_HOLD_RTL") || paramname.ToUpper().EndsWith("APPROACH_ALT") || paramname.ToUpper().EndsWith("TRIM_ARSPD_CM") || paramname.ToUpper().EndsWith("MIN_GNDSPD_CM")
|| paramname.ToUpper().EndsWith("XTRK_ANGLE_CD") || paramname.ToUpper().EndsWith("LIM_PITCH_MAX") || paramname.ToUpper().EndsWith("LIM_PITCH_MIN")
|| paramname.ToUpper().EndsWith("LIM_ROLL_CD") || paramname.ToUpper().EndsWith("PITCH_MAX") || paramname.ToUpper().EndsWith("WP_SPEED_MAX"))
@ -2063,7 +2063,7 @@ namespace ArdupilotMega
if (ans != MAV_MISSION_RESULT.MAV_MISSION_ACCEPTED)
throw new Exception("Alt Change Failed");
}
catch (Exception ex) { log.Error(ex); }
catch (Exception ex) { MainV2.giveComport = false; log.Error(ex); throw; }
MainV2.giveComport = false;
}
@ -2545,7 +2545,14 @@ namespace ArdupilotMega
}
catch { }
lastvalidpacket = DateTime.Now;
if (buffer[3] == '3' && buffer[4] == 'D')
{
// dont update last packet time for 3dr radio packets
}
else
{
lastvalidpacket = DateTime.Now;
}
// Console.Write((DateTime.Now - start).TotalMilliseconds.ToString("00.000") + "\t" + temp.Length + " \r");
@ -2768,6 +2775,7 @@ namespace ArdupilotMega
mavlinkversion = hb.mavlink_version;
aptype = (MAV_TYPE)hb.type;
apname = (MAV_AUTOPILOT)hb.autopilot;
setAPType();
}
@ -2831,18 +2839,26 @@ namespace ArdupilotMega
public void setAPType()
{
switch (aptype)
switch (apname)
{
case MAVLink.MAV_TYPE.FIXED_WING:
MainV2.cs.firmware = MainV2.Firmwares.ArduPlane;
case MAV_AUTOPILOT.ARDUPILOTMEGA:
switch (aptype)
{
case MAVLink.MAV_TYPE.FIXED_WING:
MainV2.cs.firmware = MainV2.Firmwares.ArduPlane;
break;
case MAVLink.MAV_TYPE.QUADROTOR:
MainV2.cs.firmware = MainV2.Firmwares.ArduCopter2;
break;
case MAVLink.MAV_TYPE.GROUND_ROVER:
MainV2.cs.firmware = MainV2.Firmwares.ArduRover;
break;
default:
break;
}
break;
case MAVLink.MAV_TYPE.QUADROTOR:
MainV2.cs.firmware = MainV2.Firmwares.ArduCopter2;
break;
case MAVLink.MAV_TYPE.GROUND_ROVER:
MainV2.cs.firmware = MainV2.Firmwares.ArduRover;
break;
default:
case MAV_AUTOPILOT.UDB:
break;
}
}

View File

@ -31,7 +31,7 @@
<Permission User="Everyone" GenericAll="yes" />
</CreateFolder>
</Component>
<Component Id="_comp1" Guid="01d030d2-3524-4ac5-be69-a60093fe5d2e">
<Component Id="_comp1" Guid="d911f6e2-f253-439c-8dd9-5e5831b601aa">
<File Id="_2" Source="..\bin\release\.gdbinit" />
<File Id="_3" Source="..\bin\release\.gitignore" />
<File Id="_4" Source="..\bin\release\aerosim3.91.txt" />
@ -108,11 +108,11 @@
<File Id="_75" Source="..\bin\release\ZedGraph.dll" />
</Component>
<Directory Id="aircraft75" Name="aircraft">
<Component Id="_comp76" Guid="ace3c51a-1868-4f4c-86a8-67ab067f8ecc">
<Component Id="_comp76" Guid="4c44492f-eb3d-4339-99b8-a1296f60bc6b">
<File Id="_77" Source="..\bin\release\aircraft\placeholder.txt" />
</Component>
<Directory Id="arducopter77" Name="arducopter">
<Component Id="_comp78" Guid="dcd19545-2515-4c27-b823-ad347a5b0c3d">
<Component Id="_comp78" Guid="2f5c005a-1dc5-4c19-833f-b7dfc2c2b46a">
<File Id="_79" Source="..\bin\release\aircraft\arducopter\arducopter-set.xml" />
<File Id="_80" Source="..\bin\release\aircraft\arducopter\arducopter.jpg" />
<File Id="_81" Source="..\bin\release\aircraft\arducopter\arducopter.xml" />
@ -123,20 +123,20 @@
<File Id="_86" Source="..\bin\release\aircraft\arducopter\README" />
</Component>
<Directory Id="data86" Name="data">
<Component Id="_comp87" Guid="87dacbb4-37ba-4677-8e8d-dd52e0d665c2">
<Component Id="_comp87" Guid="1aeed201-06b7-4cad-901b-23e8b437f683">
<File Id="_88" Source="..\bin\release\aircraft\arducopter\data\arducopter_half_step.txt" />
<File Id="_89" Source="..\bin\release\aircraft\arducopter\data\arducopter_step.txt" />
<File Id="_90" Source="..\bin\release\aircraft\arducopter\data\rw_generic_pylon.ac" />
</Component>
</Directory>
<Directory Id="Engines90" Name="Engines">
<Component Id="_comp91" Guid="4b6709f3-e0a4-4fa4-bb95-35b1beb94da3">
<Component Id="_comp91" Guid="6af94f2c-2da6-4991-8e26-d7d467a64883">
<File Id="_92" Source="..\bin\release\aircraft\arducopter\Engines\a2830-12.xml" />
<File Id="_93" Source="..\bin\release\aircraft\arducopter\Engines\prop10x4.5.xml" />
</Component>
</Directory>
<Directory Id="Models93" Name="Models">
<Component Id="_comp94" Guid="0ebea17a-c625-48ce-be24-a05d01e0af67">
<Component Id="_comp94" Guid="2cab236e-d8b5-418b-8f36-cdc18c02211b">
<File Id="_95" Source="..\bin\release\aircraft\arducopter\Models\arducopter.ac" />
<File Id="_96" Source="..\bin\release\aircraft\arducopter\Models\arducopter.xml" />
<File Id="_97" Source="..\bin\release\aircraft\arducopter\Models\plus_quad.ac" />
@ -150,7 +150,7 @@
</Directory>
</Directory>
<Directory Id="Rascal103" Name="Rascal">
<Component Id="_comp104" Guid="9907d7a9-52b0-46ee-9149-b1c8c72c0289">
<Component Id="_comp104" Guid="bb7432d3-b239-43c2-803f-82e83a167d5a">
<File Id="_105" Source="..\bin\release\aircraft\Rascal\Rascal-keyboard.xml" />
<File Id="_106" Source="..\bin\release\aircraft\Rascal\Rascal-submodels.xml" />
<File Id="_107" Source="..\bin\release\aircraft\Rascal\Rascal.xml" />
@ -162,13 +162,13 @@
<File Id="_113" Source="..\bin\release\aircraft\Rascal\thumbnail.jpg" />
</Component>
<Directory Id="Engines113" Name="Engines">
<Component Id="_comp114" Guid="4eb6d2e8-fab7-460a-b70f-225633c57376">
<Component Id="_comp114" Guid="163c4bdb-3f66-49d0-972d-6939c80d7521">
<File Id="_115" Source="..\bin\release\aircraft\Rascal\Engines\18x8.xml" />
<File Id="_116" Source="..\bin\release\aircraft\Rascal\Engines\Zenoah_G-26A.xml" />
</Component>
</Directory>
<Directory Id="Models116" Name="Models">
<Component Id="_comp117" Guid="38222506-6c83-4efb-9f64-5dee03b74105">
<Component Id="_comp117" Guid="1ccc0310-315e-4b54-864b-0ba60d8b168b">
<File Id="_118" Source="..\bin\release\aircraft\Rascal\Models\Rascal.rgb" />
<File Id="_119" Source="..\bin\release\aircraft\Rascal\Models\Rascal110-000-013.ac" />
<File Id="_120" Source="..\bin\release\aircraft\Rascal\Models\Rascal110.xml" />
@ -179,7 +179,7 @@
</Component>
</Directory>
<Directory Id="Systems124" Name="Systems">
<Component Id="_comp125" Guid="e3eadb19-9352-42e7-a7b7-37273fa44c63">
<Component Id="_comp125" Guid="9cc1c97a-0fa5-40c4-a9fd-3d1fcf6af125">
<File Id="_126" Source="..\bin\release\aircraft\Rascal\Systems\110-autopilot.xml" />
<File Id="_127" Source="..\bin\release\aircraft\Rascal\Systems\airdata.nas" />
<File Id="_128" Source="..\bin\release\aircraft\Rascal\Systems\electrical.xml" />
@ -190,36 +190,36 @@
</Directory>
</Directory>
<Directory Id="de_DE130" Name="de-DE">
<Component Id="_comp131" Guid="17ea79e5-42f7-4bf7-b1c6-915679f2ff78">
<Component Id="_comp131" Guid="fe2a53b7-109f-4754-91c2-f30d17dcf033">
<File Id="_132" Source="..\bin\release\de-DE\ArdupilotMegaPlanner10.resources.dll" />
</Component>
</Directory>
<Directory Id="es_ES132" Name="es-ES">
<Component Id="_comp133" Guid="49f825e0-39b4-4ea2-9ba0-e5ee3a36ee8f">
<Component Id="_comp133" Guid="4530dab9-2588-4650-8803-d2bdb44bd3b9">
<File Id="_134" Source="..\bin\release\es-ES\ArdupilotMegaPlanner.resources.dll" />
<File Id="_135" Source="..\bin\release\es-ES\ArdupilotMegaPlanner10.resources.dll" />
</Component>
</Directory>
<Directory Id="fr135" Name="fr">
<Component Id="_comp136" Guid="4bf192e4-96b4-49e9-af6b-bc3a08f067f4">
<Component Id="_comp136" Guid="5f3ed7e7-02d0-4db7-b6af-0e5f393770b1">
<File Id="_137" Source="..\bin\release\fr\ArdupilotMegaPlanner.resources.dll" />
<File Id="_138" Source="..\bin\release\fr\ArdupilotMegaPlanner10.resources.dll" />
</Component>
</Directory>
<Directory Id="it_IT138" Name="it-IT">
<Component Id="_comp139" Guid="63035886-e1a4-4b85-98cd-0f9195c51406">
<Component Id="_comp139" Guid="b597bcf2-1616-48ee-911d-16b08abf2545">
<File Id="_140" Source="..\bin\release\it-IT\ArdupilotMegaPlanner.resources.dll" />
<File Id="_141" Source="..\bin\release\it-IT\ArdupilotMegaPlanner10.resources.dll" />
</Component>
</Directory>
<Directory Id="jsbsim141" Name="jsbsim">
<Component Id="_comp142" Guid="cfdac9c2-f03c-4a1b-95a0-9d236a10558f">
<Component Id="_comp142" Guid="5d050855-4f5c-481a-a614-256caa3292e0">
<File Id="_143" Source="..\bin\release\jsbsim\fgout.xml" />
<File Id="_144" Source="..\bin\release\jsbsim\rascal_test.xml" />
</Component>
</Directory>
<Directory Id="m3u144" Name="m3u">
<Component Id="_comp145" Guid="1434c6d9-5363-4f22-ac1b-64ff0a62b2bb">
<Component Id="_comp145" Guid="f71074d9-4e75-4e8a-af4d-a08137185fa6">
<File Id="_146" Source="..\bin\release\m3u\both.m3u" />
<File Id="_147" Source="..\bin\release\m3u\GeoRefnetworklink.kml" />
<File Id="_148" Source="..\bin\release\m3u\hud.m3u" />
@ -228,31 +228,31 @@
</Component>
</Directory>
<Directory Id="pl150" Name="pl">
<Component Id="_comp151" Guid="2b98a6bd-32ad-4c43-bb0e-3402ef3bbaa4">
<Component Id="_comp151" Guid="d05e244f-9dbf-42cb-b241-fd0f0c6bdc49">
<File Id="_152" Source="..\bin\release\pl\ArdupilotMegaPlanner.resources.dll" />
<File Id="_153" Source="..\bin\release\pl\ArdupilotMegaPlanner10.resources.dll" />
</Component>
</Directory>
<Directory Id="Resources153" Name="Resources">
<Component Id="_comp154" Guid="a6396763-d00a-4a18-a3f1-c6151de3f07e">
<Component Id="_comp154" Guid="c2fafcf2-c67d-4334-9f97-51a8cc613146">
<File Id="_155" Source="..\bin\release\Resources\MAVCmd.txt" />
<File Id="_156" Source="..\bin\release\Resources\Welcome_to_Michael_Oborne.rtf" />
</Component>
</Directory>
<Directory Id="ru_RU156" Name="ru-RU">
<Component Id="_comp157" Guid="261e8c9f-8b7f-4aed-b08b-d026f60f5ff4">
<Component Id="_comp157" Guid="d8eb7708-ee5f-4e12-90e6-3019478107fa">
<File Id="_158" Source="..\bin\release\ru-RU\ArdupilotMegaPlanner.resources.dll" />
<File Id="_159" Source="..\bin\release\ru-RU\ArdupilotMegaPlanner10.resources.dll" />
</Component>
</Directory>
<Directory Id="zh_Hans159" Name="zh-Hans">
<Component Id="_comp160" Guid="b0c0df4d-3519-4c1d-987b-cabd76310861">
<Component Id="_comp160" Guid="319a3e9e-8b55-44ce-97c4-df60ad19c446">
<File Id="_161" Source="..\bin\release\zh-Hans\ArdupilotMegaPlanner.resources.dll" />
<File Id="_162" Source="..\bin\release\zh-Hans\ArdupilotMegaPlanner10.resources.dll" />
</Component>
</Directory>
<Directory Id="zh_TW162" Name="zh-TW">
<Component Id="_comp163" Guid="59ef3445-29fd-45a4-b997-4ee81c60dff5">
<Component Id="_comp163" Guid="271b6ad8-7763-4bfe-aaa7-51fe7063caf5">
<File Id="_164" Source="..\bin\release\zh-TW\ArdupilotMegaPlanner.resources.dll" />
<File Id="_165" Source="..\bin\release\zh-TW\ArdupilotMegaPlanner10.resources.dll" />
</Component>

View File

@ -14,6 +14,7 @@ namespace ArdupilotMega
{
private static readonly ILog log = LogManager.GetLogger("Program");
public static Splash Splash;
/// <summary>
/// The main entry point for the application.
/// </summary>
@ -38,7 +39,7 @@ namespace ArdupilotMega
//Common.linearRegression();
Console.WriteLine(srtm.getAltitude(-35.115676879882812, 117.94178754638671,20));
//Console.WriteLine(srtm.getAltitude(-35.115676879882812, 117.94178754638671,20));
// Console.ReadLine();
// return;
@ -119,6 +120,9 @@ namespace ArdupilotMega
}
*/
Splash = new ArdupilotMega.Splash();
Splash.Show();
try
{
Thread.CurrentThread.Name = "Base Thread";

View File

@ -34,5 +34,5 @@ using System.Resources;
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.1.*")]
[assembly: AssemblyFileVersion("1.2.20")]
[assembly: AssemblyFileVersion("1.2.21")]
[assembly: NeutralResourcesLanguageAttribute("")]

View File

@ -666,46 +666,48 @@ namespace ArdupilotMega
public bool doConnect(ArdupilotMega.Comms.ICommsSerial comPort)
{
// clear buffer
comPort.DiscardInBuffer();
// setup a known enviroment
comPort.Write("\r\n");
// wait
Sleep(1100);
// send config string
comPort.Write("+++");
// wait
Sleep(1100);
// check for config responce "OK"
log.Info("Connect btr " + comPort.BytesToRead + " baud " + comPort.BaudRate);
string conn = comPort.ReadExisting();
log.Info("Connect first responce " + conn.Replace('\0', ' ') + " " + conn.Length);
if (conn.Contains("OK"))
try
{
//return true;
}
else
{
// cleanup incase we are already in cmd mode
// clear buffer
comPort.DiscardInBuffer();
// setup a known enviroment
comPort.Write("\r\n");
// wait
Sleep(1100);
// send config string
comPort.Write("+++");
// wait
Sleep(1100);
// check for config responce "OK"
log.Info("Connect btr " + comPort.BytesToRead + " baud " + comPort.BaudRate);
string conn = comPort.ReadExisting();
log.Info("Connect first responce " + conn.Replace('\0', ' ') + " " + conn.Length);
if (conn.Contains("OK"))
{
//return true;
}
else
{
// cleanup incase we are already in cmd mode
comPort.Write("\r\n");
}
doCommand(comPort, "AT&T");
string version = doCommand(comPort, "ATI");
log.Info("Connect Version: " + version.Trim() + "\n");
Regex regex = new Regex(@"SiK\s+(.*)\s+on\s+(.*)");
if (regex.IsMatch(version))
{
return true;
}
return false;
}
doCommand(comPort, "AT&T");
string version = doCommand(comPort, "ATI");
log.Info("Connect Version: " + version.Trim() + "\n");
Regex regex = new Regex(@"SiK\s+(.*)\s+on\s+(.*)");
if (regex.IsMatch(version))
{
return true;
}
return false;
catch { return false; }
}
private void BUT_Syncoptions_Click(object sender, EventArgs e)

View File

@ -4,6 +4,8 @@ using System.IO;
using System.Windows.Forms;
using System.Xml.Linq;
using System.Linq;
using System.Collections;
using System.Collections.Generic;
namespace ArdupilotMega.Utilities
{

View File

@ -48,11 +48,13 @@
<F10>Thr iInt</F10>
</CTUN>
<PM>
<F1>Gyro Saturation</F1>
<F2>ADC Constraints</F2>
<F3>DCM renorms</F3>
<F4>DCM Blowups</F4>
<F5>GPS Fix Count</F5>
<F1>Not used</F1>
<F2>DCM renorms</F2>
<F3>DCM Blowups</F3>
<F4>GPS Fix Count</F4>
<F5>Num SlowLoops</F5>
<F6>Tot Num Loops</F6>
<F7>Slowest Loop</F7>
</PM>
<RAW>
<F1>Gyro X</F1>
@ -108,6 +110,26 @@
<F11>Thr</F11>
<F12>Thr Cruise</F12>
</ITERM>
<INAV>
<F1>Baro Alt</F1>
<F2>INS Alt</F2>
<F3>Climb Rate</F3>
<F4>INS Climb Rate</F4>
<F5>AccCorr X</F5>
<F6>AccCorr Y</F6>
<F7>AccCorr Z</F7>
<F8>AccCorrEF Z</F8>
<F9>AccelEF X</F9>
<F10>AccelEF Y</F10>
<F11>AccelEF Z</F11>
<F12>Dt</F12>
<F13>GPS Lat</F13>
<F14>GPS Lon</F14>
<F15>INS Lat</F15>
<F16>INS Lon</F16>
<F17>INS Lat Vel</F17>
<F18>INS Lon Vel</F18>
</INAV>
<PID-1>
<F1>Err</F1>
<F2>P</F2>