Mission Planner 1.2.12

add arduino chip detect
fix apm2,2.5 dialog test
add write timeout. this will stop planner hangs on bad serial devices.
change quickview decimal places to 0.00
fix map clicking issue.
fix wind direction wrapping
add airspeed use
modify firmware screen from Marooned
major flightdata tab change.
add save/load polygon from file
add some error handling dialogs
This commit is contained in:
Michael Oborne 2012-09-20 07:37:36 +08:00
parent 3f9bd65d2f
commit 25bcfdd1e7
64 changed files with 10704 additions and 5410 deletions

View File

@ -1,38 +1,112 @@
using System;
using System.Collections.Generic;
using System.Collections;
using System.Text;
using System.IO.Ports;
using System.IO;
namespace ArdupilotMega.Arduino
{
public delegate void ProgressEventHandler(int progress,string status);
public delegate void ProgressEventHandler(int progress, string status);
/// <summary>
/// Arduino STK interface
/// </summary>
interface ArduinoComms
public interface ArduinoComms
{
bool connectAP();
bool keepalive();
bool sync();
byte[] download(short length);
byte[] downloadflash(short length);
bool setaddress(int address);
bool upload(byte[] data, short startfrom, short length, short startaddress);
bool uploadflash(byte[] data, int startfrom, int length, int startaddress);
bool connectAP();
bool keepalive();
bool sync();
byte[] download(short length);
byte[] downloadflash(short length);
bool setaddress(int address);
bool upload(byte[] data, short startfrom, short length, short startaddress);
bool uploadflash(byte[] data, int startfrom, int length, int startaddress);
event ProgressEventHandler Progress;
Chip getChipType();
event ProgressEventHandler Progress;
// from serialport class
int BaudRate { get; set; }
bool DtrEnable { get; set; }
string PortName { get; set; }
StopBits StopBits { get; set; }
Parity Parity { get; set; }
bool IsOpen { get; }
void Open();
void Close();
int DataBits { get; set; }
int BaudRate { get; set; }
bool DtrEnable { get; set; }
string PortName { get; set; }
StopBits StopBits { get; set; }
Parity Parity { get; set; }
bool IsOpen { get; }
void Open();
void Close();
int DataBits { get; set; }
}
public class Chip
{
public string name = "";
public byte sig1 = 0;
public byte sig2 = 0;
public byte sig3 = 0;
public uint size = 0;
static bool creating = true;
public static List<Chip> chips = new List<Chip>();
public static void Populate()
{
creating = false;
chips.Clear();
chips.Add(new Chip("ATmega2561", 0x1e, 0x98, 0x02, 0x100U)); //128 words
chips.Add(new Chip("ATmega2560", 0x1e, 0x98, 0x01, 0x100U)); //128 words
chips.Add(new Chip("ATmega1280", 0x1e, 0x97, 0x03, 0x80U)); //128 words
chips.Add(new Chip("ATmega1281", 0x1e, 0x97, 0x04, 0x80U)); //128 words
chips.Add(new Chip("ATmega128", 0x1e, 0x97, 0x02, 0x80U)); //128 words
chips.Add(new Chip("ATmega64", 0x1e, 0x96, 0x02, 0x80U)); //128 words
chips.Add(new Chip("ATmega32", 0x1e, 0x95, 0x02, 0x40U)); //64 words
chips.Add(new Chip("ATmega16", 0x1e, 0x94, 0x03, 0x40U)); //64 words
chips.Add(new Chip("ATmega8", 0x1e, 0x93, 0x07, 0x20U)); //32 words
chips.Add(new Chip("ATmega88", 0x1e, 0x93, 0x0a, 0x20U)); //32 words
chips.Add(new Chip("ATmega168", 0x1e, 0x94, 0x06, 0x40U)); //64 words
chips.Add(new Chip("ATmega328P", 0x1e, 0x95, 0x0F, 0x40U)); //64 words
chips.Add(new Chip("ATmega162", 0x1e, 0x94, 0x04, 0x40U)); //64 words
chips.Add(new Chip("ATmega163", 0x1e, 0x94, 0x02, 0x40U)); //64 words
chips.Add(new Chip("ATmega169", 0x1e, 0x94, 0x05, 0x40U)); //64 words
chips.Add(new Chip("ATmega8515", 0x1e, 0x93, 0x06, 0x20U)); //32 words
chips.Add(new Chip("ATmega8535", 0x1e, 0x93, 0x08, 0x20U));//32 words
foreach (Chip item in chips)
{
// Console.WriteLine(item);
}
}
public Chip(string nm, byte s1, byte s2, byte s3, uint size)
{
if (chips.Count == 0 && creating)
Populate();
name = nm;
sig1 = s1;
sig2 = s2;
sig3 = s3;
this.size = size;
}
public override string ToString()
{
return "Chip(" + name + ", " + sig1.ToString("X") + ", " + sig2.ToString("X") + ", " + sig3.ToString("X") + ", " + size + ")";
}
public override bool Equals(object obj)
{
Chip item = obj as Chip;
return (item.sig1 == this.sig1 && item.sig2 == this.sig2 && item.sig3 == this.sig3);
}
public override int GetHashCode()
{
return base.GetHashCode();
}
}
}

View File

@ -10,7 +10,7 @@ using ArdupilotMega.Utilities;
namespace ArdupilotMega.Arduino
{
class ArduinoDetect
public class ArduinoDetect
{
private static readonly ILog log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
/// <summary>
@ -203,7 +203,7 @@ namespace ArdupilotMega.Arduino
}
else
{
if (DialogResult.Yes == CustomMessageBox.Show("Is this a APM 2?", "APM 2", MessageBoxButtons.YesNo))
if (DialogResult.Yes == CustomMessageBox.Show("Is this a APM 2+?", "APM 2+", MessageBoxButtons.YesNo))
{
return "2560-2";
}

View File

@ -11,7 +11,7 @@ using ArdupilotMega.Comms;
namespace ArdupilotMega.Arduino
{
class ArduinoSTK : SerialPort, ArduinoComms
public class ArduinoSTK : SerialPort, ArduinoComms
{
private static readonly ILog log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
public event ProgressEventHandler Progress;
@ -45,14 +45,14 @@ namespace ArdupilotMega.Arduino
return false;
}
int a = 0;
while (a < 50)
while (a < 50) // 50 tries at 50 ms = 2.5sec
{
this.DiscardInBuffer();
this.Write(new byte[] { (byte)'0', (byte)' ' }, 0, 2);
a++;
Thread.Sleep(50);
log.InfoFormat("btr {0}", this.BytesToRead);
log.InfoFormat("connectap btr {0}", this.BytesToRead);
if (this.BytesToRead >= 2)
{
byte b1 = (byte)this.ReadByte();
@ -315,30 +315,39 @@ namespace ArdupilotMega.Arduino
return true;
}
public byte getChipType(byte part = 0)
public Chip getChipType()
{
byte answer = 0x00;
byte sig1 = 0x00;
byte sig2 = 0x00;
byte sig3 = 0x00;
byte[] command = new byte[] { (byte)'V', 0x30, 0x01, part, 0x01, (byte)' ' };
byte[] command = new byte[] { (byte)'u', (byte)' ' };
this.Write(command, 0, command.Length);
byte[] chr = new byte[1];
System.Threading.Thread.Sleep(20);
this.Read(chr, 0, 1);
byte[] chr = new byte[5];
if (chr[0] == 0x14)
int count = this.Read(chr, 0, 5);
log.Debug("getChipType read " + count);
if (chr[0] == 0x14 && chr[4] == 0x10)
{
this.Read(chr, 0, 1);
answer = (byte)chr[0];
sig1 = (byte)chr[1];
sig2 = (byte)chr[2];
sig3 = (byte)chr[3];
}
this.Read(chr, 0, 1);
if (chr[0] == 0x10)
foreach (Chip item in Arduino.Chip.chips)
{
if (item.Equals(new Chip("", sig1, sig2, sig3, 0)))
{
return answer;
log.Debug("Match "+item.ToString());
return item;
}
}
return answer;
return null;
}
public new bool Close()

View File

@ -10,7 +10,7 @@ using log4net;
namespace ArdupilotMega.Arduino
{
class ArduinoSTKv2 : SerialPort,ArduinoComms
public class ArduinoSTKv2 : SerialPort,ArduinoComms
{
private static readonly ILog log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
public event ProgressEventHandler Progress;
@ -368,6 +368,39 @@ namespace ArdupilotMega.Arduino
return true;
}
public Chip getChipType()
{
byte sig1 = 0x00;
byte sig2 = 0x00;
byte sig3 = 0x00;
byte[] command = new byte[] { (byte)0x1b, 0, 0, 0, 0 };
command = this.genstkv2packet(command);
sig1 = command[2];
command = new byte[] { (byte)0x1b, 0, 0, 0, 1 };
command = this.genstkv2packet(command);
sig2 = command[2];
command = new byte[] { (byte)0x1b, 0, 0, 0, 2 };
command = this.genstkv2packet(command);
sig3 = command[2];
foreach (Chip item in Arduino.Chip.chips)
{
if (item.Equals(new Chip("", sig1, sig2, sig3, 0)))
{
log.Debug("Match " + item.ToString());
return item;
}
}
return null;
}
public new bool Close() {
try

View File

@ -133,6 +133,10 @@
</Reference>
<Reference Include="Core">
</Reference>
<Reference Include="Crom.Controls, Version=2.0.5.21, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\..\..\Desktop\DIYDrones\crom.controls.dock\src\Crom.Controls\bin\Debug\Crom.Controls.dll</HintPath>
</Reference>
<Reference Include="DirectShowLib-2005">
</Reference>
<Reference Include="GMap.NET.Core">
@ -160,7 +164,7 @@
</Reference>
<Reference Include="Microsoft.DirectX.DirectInput, Version=1.0.2902.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35">
<SpecificVersion>False</SpecificVersion>
<Private>False</Private>
<Private>True</Private>
</Reference>
<Reference Include="Microsoft.Dynamic">
</Reference>
@ -240,15 +244,83 @@
<Compile Include="Antenna\Tracker.Designer.cs">
<DependentUpon>Tracker.cs</DependentUpon>
</Compile>
<Compile Include="Arduino\ArduinoComms.cs" />
<Compile Include="Arduino\ArduinoDetect.cs" />
<Compile Include="Arduino\ArduinoSTK.cs">
<SubType>Component</SubType>
</Compile>
<Compile Include="Arduino\ArduinoSTKv2.cs">
<SubType>Component</SubType>
</Compile>
<Compile Include="Attributes\DisplayTextAttribute.cs" />
<Compile Include="Attributes\PrivateAttribute.cs" />
<Compile Include="CodeGen.cs" />
<Compile Include="Comms\CommsFile.cs" />
<Compile Include="Comms\CommsSerialInterface.cs" />
<Compile Include="Comms\CommsSerialPort.cs">
<SubType>Component</SubType>
</Compile>
<Compile Include="Comms\CommsTCPSerial.cs" />
<Compile Include="Comms\CommsUdpSerial.cs" />
<Compile Include="Controls\AGauge.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="Controls\BackstageView\BackstageView.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="Controls\BackstageView\BackstageView.Designer.cs">
<DependentUpon>BackstageView.cs</DependentUpon>
</Compile>
<Compile Include="Controls\BackstageView\BackstageViewButton.cs">
<SubType>Component</SubType>
</Compile>
<Compile Include="Controls\BackstageView\BackStageViewContentPanel.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="Controls\BackstageView\BackStageViewMenuPanel.cs">
<SubType>Component</SubType>
</Compile>
<Compile Include="Controls\ConfigPanel.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="Controls\ConfigPanel.Designer.cs">
<DependentUpon>ConfigPanel.cs</DependentUpon>
</Compile>
<Compile Include="Controls\ConnectionControl.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="Controls\ConnectionControl.Designer.cs">
<DependentUpon>ConnectionControl.cs</DependentUpon>
</Compile>
<Compile Include="Controls\ConnectionStats.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="Controls\ConnectionStats.Designer.cs">
<DependentUpon>ConnectionStats.cs</DependentUpon>
</Compile>
<Compile Include="Controls\CustomMessageBox.cs" />
<Compile Include="Controls\HSI.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="Controls\HSI.Designer.cs">
<DependentUpon>HSI.cs</DependentUpon>
</Compile>
<Compile Include="Controls\HUD.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="Controls\IDynamicParameterControl.cs" />
<Compile Include="Controls\ImageLabel.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="Controls\ImageLabel.Designer.cs">
<DependentUpon>ImageLabel.cs</DependentUpon>
</Compile>
<Compile Include="Controls\LabelWithPseudoOpacity.cs">
<SubType>Component</SubType>
</Compile>
<Compile Include="Controls\LineSeparator.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="Controls\MainSwitcher.cs">
<SubType>UserControl</SubType>
</Compile>
@ -264,12 +336,74 @@
<Compile Include="Controls\MavlinkNumericUpDown.cs">
<SubType>Component</SubType>
</Compile>
<Compile Include="Controls\MyButton.cs">
<SubType>Component</SubType>
</Compile>
<Compile Include="Controls\myGMAP.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="Controls\MyLabel.cs">
<SubType>Component</SubType>
</Compile>
<Compile Include="Controls\MyTrackBar.cs">
<SubType>Component</SubType>
</Compile>
<Compile Include="Controls\MyUserControl.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="Controls\PictureBoxWithPseudoOpacity.cs">
<SubType>Component</SubType>
</Compile>
<Compile Include="Controls\ProgressReporterDialogue.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Controls\ProgressReporterDialogue.designer.cs">
<DependentUpon>ProgressReporterDialogue.cs</DependentUpon>
</Compile>
<Compile Include="Controls\PseudoOpacityHelper.cs" />
<Compile Include="Controls\QuickView.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="Controls\QuickView.Designer.cs">
<DependentUpon>QuickView.cs</DependentUpon>
</Compile>
<Compile Include="Controls\RangeControl.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="Controls\RangeControl.Designer.cs">
<DependentUpon>RangeControl.cs</DependentUpon>
</Compile>
<Compile Include="Controls\ToolStripConnectionControl.cs">
<SubType>Component</SubType>
</Compile>
<Compile Include="Controls\ValuesControl.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="Controls\ValuesControl.Designer.cs">
<DependentUpon>ValuesControl.cs</DependentUpon>
</Compile>
<None Include="HIL\AeroSimRC.cs">
<SubType>Code</SubType>
</None>
<None Include="HIL\FlightGear.cs" />
<Compile Include="GCSViews\ConfigurationView\ConfigFailSafe.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="GCSViews\ConfigurationView\ConfigFailSafe.Designer.cs">
<DependentUpon>ConfigFailSafe.cs</DependentUpon>
</Compile>
<Compile Include="GCSViews\ConfigurationView\SetupFresh.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="GCSViews\ConfigurationView\SetupFresh.Designer.cs">
<DependentUpon>SetupFresh.cs</DependentUpon>
</Compile>
<Compile Include="HIL\Hil.cs" />
<None Include="HIL\JSBSim.cs" />
<Compile Include="HIL\XPlane.cs" />
<Compile Include="OpenGLtest.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="SerialOutput2.cs">
<SubType>Form</SubType>
</Compile>
@ -292,23 +426,6 @@
<Compile Include="HIL\Matrix3.cs" />
<Compile Include="HIL\Vector3.cs" />
<Compile Include="Presenter\ConfigCameraStabPresenter.cs" />
<Compile Include="Controls\HSI.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="Controls\HSI.Designer.cs">
<DependentUpon>HSI.cs</DependentUpon>
</Compile>
<Compile Include="Controls\IDynamicParameterControl.cs" />
<Compile Include="Controls\LabelWithPseudoOpacity.cs">
<SubType>Component</SubType>
</Compile>
<Compile Include="Controls\OpenGLtest.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="Controls\PictureBoxWithPseudoOpacity.cs">
<SubType>Component</SubType>
</Compile>
<Compile Include="Controls\PseudoOpacityHelper.cs" />
<Compile Include="Presenter\DelegateCommand.cs" />
<Compile Include="GCSViews\ConfigurationView\ConfigCameraStab.cs">
<SubType>UserControl</SubType>
@ -322,18 +439,6 @@
<Compile Include="GCSViews\ConfigurationView\ConfigFriendlyParams.Designer.cs">
<DependentUpon>ConfigFriendlyParams.cs</DependentUpon>
</Compile>
<Compile Include="Controls\RangeControl.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="Controls\RangeControl.Designer.cs">
<DependentUpon>RangeControl.cs</DependentUpon>
</Compile>
<Compile Include="Controls\ValuesControl.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="Controls\ValuesControl.Designer.cs">
<DependentUpon>ValuesControl.cs</DependentUpon>
</Compile>
<Compile Include="GCSViews\ConfigurationView\ConfigArdurover.cs">
<SubType>UserControl</SubType>
</Compile>
@ -344,52 +449,6 @@
<Compile Include="Utilities\CaptureMJPEG.cs" />
<Compile Include="Utilities\CollectionExtensions.cs" />
<Compile Include="Utilities\ParameterMetaDataConstants.cs" />
<Compile Include="Controls\BackstageView\BackstageView.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="Controls\BackstageView\BackstageView.designer.cs">
<DependentUpon>BackstageView.cs</DependentUpon>
</Compile>
<Compile Include="Controls\BackstageView\BackstageViewButton.cs">
<SubType>Component</SubType>
</Compile>
<Compile Include="Controls\BackstageView\BackStageViewContentPanel.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="Controls\BackstageView\BackStageViewMenuPanel.cs">
<SubType>Component</SubType>
</Compile>
<Compile Include="Controls\ConnectionControl.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="Controls\ConnectionControl.Designer.cs">
<DependentUpon>ConnectionControl.cs</DependentUpon>
</Compile>
<Compile Include="Controls\ConfigPanel.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="Controls\ConfigPanel.Designer.cs">
<DependentUpon>ConfigPanel.cs</DependentUpon>
</Compile>
<Compile Include="Controls\ConnectionStats.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="Controls\ConnectionStats.designer.cs">
<DependentUpon>ConnectionStats.cs</DependentUpon>
</Compile>
<Compile Include="Controls\CustomMessageBox.cs" />
<Compile Include="Controls\LineSeparator.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="Controls\ProgressReporterDialogue.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Controls\ProgressReporterDialogue.designer.cs">
<DependentUpon>ProgressReporterDialogue.cs</DependentUpon>
</Compile>
<Compile Include="Controls\ToolStripConnectionControl.cs">
<SubType>Component</SubType>
</Compile>
<Compile Include="GCSViews\ConfigurationView\ConfigAccelerometerCalibrationQuad.cs">
<SubType>UserControl</SubType>
</Compile>
@ -471,10 +530,6 @@
<Compile Include="Radio\3DRradio.Designer.cs">
<DependentUpon>3DRradio.cs</DependentUpon>
</Compile>
<Compile Include="Controls\AGauge.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="Arduino\ArduinoDetect.cs" />
<Compile Include="Utilities\AviWriter.cs" />
<Compile Include="Camera.cs">
<SubType>Form</SubType>
@ -483,15 +538,6 @@
<DependentUpon>Camera.cs</DependentUpon>
</Compile>
<Compile Include="Utilities\Capture.cs" />
<Compile Include="Controls\ImageLabel.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="Controls\ImageLabel.Designer.cs">
<DependentUpon>ImageLabel.cs</DependentUpon>
</Compile>
<Compile Include="Controls\myGMAP.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="Radio\IHex.cs" />
<Compile Include="Mavlink\MavlinkCRC.cs" />
<Compile Include="Mavlink\MavlinkUtil.cs" />
@ -540,22 +586,9 @@
<DependentUpon>JoystickSetup.cs</DependentUpon>
</Compile>
<Compile Include="Mavlink\MAVLinkTypes.cs" />
<Compile Include="Controls\MyButton.cs">
<SubType>Component</SubType>
</Compile>
<Compile Include="Common.cs">
<SubType>Component</SubType>
</Compile>
<Compile Include="Arduino\ArduinoComms.cs" />
<Compile Include="Controls\MyLabel.cs">
<SubType>Component</SubType>
</Compile>
<Compile Include="Controls\MyUserControl.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="Arduino\ArduinoSTKv2.cs">
<SubType>Component</SubType>
</Compile>
<Compile Include="paramcompare.cs">
<SubType>Form</SubType>
</Compile>
@ -580,9 +613,6 @@
<Compile Include="GCSViews\Terminal.Designer.cs">
<DependentUpon>Terminal.cs</DependentUpon>
</Compile>
<Compile Include="Controls\HUD.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="MainV2.cs">
<SubType>Form</SubType>
</Compile>
@ -604,9 +634,6 @@
<Compile Include="GCSViews\Simulation.Designer.cs">
<DependentUpon>Simulation.cs</DependentUpon>
</Compile>
<Compile Include="Controls\MyTrackBar.cs">
<SubType>Component</SubType>
</Compile>
<Compile Include="CurrentState.cs" />
<Compile Include="Mavlink\MAVLinkTypes0.9.cs" />
<Compile Include="ElevationProfile.cs">
@ -616,9 +643,6 @@
<DependentUpon>ElevationProfile.cs</DependentUpon>
</Compile>
<Compile Include="Mavlink\MAVLink.cs" />
<Compile Include="Arduino\ArduinoSTK.cs">
<SubType>Component</SubType>
</Compile>
<Compile Include="Log.cs">
<SubType>Form</SubType>
</Compile>
@ -671,33 +695,72 @@
<EmbeddedResource Include="Camera.zh-Hans.resx">
<DependentUpon>Camera.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Controls\AGauge.resx">
<DependentUpon>AGauge.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Controls\BackstageView\BackstageView.resx">
<DependentUpon>BackstageView.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Controls\ConnectionControl.resx">
<DependentUpon>ConnectionControl.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Controls\ConfigPanel.resx">
<DependentUpon>ConfigPanel.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Controls\ConnectionControl.resx">
<DependentUpon>ConnectionControl.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Controls\ConnectionStats.resx">
<DependentUpon>ConnectionStats.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Controls\HSI.resx">
<DependentUpon>HSI.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Controls\ImageLabel.resx">
<DependentUpon>ImageLabel.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Controls\MainSwitcher.resx">
<DependentUpon>MainSwitcher.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Controls\ProgressReporterDialogue.resx">
<DependentUpon>ProgressReporterDialogue.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Controls\OpenGLtest.resx">
<DependentUpon>OpenGLtest.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Controls\QuickView.resx">
<DependentUpon>QuickView.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Controls\RangeControl.resx">
<DependentUpon>RangeControl.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Controls\ValuesControl.resx">
<DependentUpon>ValuesControl.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="GCSViews\ConfigurationView\ConfigMount.zh-Hans.resx">
<DependentUpon>ConfigMount.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="GCSViews\ConfigurationView\ConfigFailSafe.es-ES.resx">
<DependentUpon>ConfigFailSafe.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="GCSViews\ConfigurationView\ConfigFailSafe.fr.resx">
<DependentUpon>ConfigFailSafe.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="GCSViews\ConfigurationView\ConfigFailSafe.it-IT.resx">
<DependentUpon>ConfigFailSafe.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="GCSViews\ConfigurationView\ConfigFailSafe.pl.resx">
<DependentUpon>ConfigFailSafe.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="GCSViews\ConfigurationView\ConfigFailSafe.resx">
<DependentUpon>ConfigFailSafe.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="GCSViews\ConfigurationView\ConfigFailSafe.zh-Hans.resx">
<DependentUpon>ConfigFailSafe.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="GCSViews\ConfigurationView\ConfigFailSafe.zh-TW.resx">
<DependentUpon>ConfigFailSafe.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="GCSViews\ConfigurationView\SetupFresh.resx">
<DependentUpon>SetupFresh.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="OpenGLtest.resx">
<DependentUpon>OpenGLtest.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="SerialOutput2.resx">
<DependentUpon>SerialOutput2.cs</DependentUpon>
</EmbeddedResource>
@ -869,12 +932,6 @@
<EmbeddedResource Include="GCSViews\ConfigurationView\ConfigAccelerometerCalibrationPlane.zh-TW.resx">
<DependentUpon>ConfigAccelerometerCalibrationPlane.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Controls\RangeControl.resx">
<DependentUpon>RangeControl.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Controls\ValuesControl.resx">
<DependentUpon>ValuesControl.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="GCSViews\ConfigurationView\ConfigArdurover.resx">
<DependentUpon>ConfigArdurover.cs</DependentUpon>
</EmbeddedResource>
@ -890,16 +947,9 @@
<EmbeddedResource Include="Radio\3DRradio.resx">
<DependentUpon>3DRradio.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Controls\AGauge.resx">
<DependentUpon>AGauge.cs</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="Camera.resx">
<DependentUpon>Camera.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Controls\ImageLabel.resx">
<DependentUpon>ImageLabel.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="GCSViews\Firmware.es-ES.resx">
<DependentUpon>Firmware.cs</DependentUpon>
</EmbeddedResource>
@ -1330,7 +1380,6 @@
<Install>true</Install>
</BootstrapperPackage>
</ItemGroup>
<ItemGroup />
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<PropertyGroup>
<PostBuildEvent>"$(TargetDir)version.exe" "$(TargetPath)" &gt; "$(TargetDir)version.txt"</PostBuildEvent>

View File

@ -1112,6 +1112,7 @@ System.ComponentModel.Description("Text under Bar")]
int _min = 0;
int _max = 0;
int _value = 0;
bool ctladded = false;
System.Windows.Forms.Label lbl1 = new System.Windows.Forms.Label();
System.Windows.Forms.Label lbl = new System.Windows.Forms.Label();
@ -1144,6 +1145,13 @@ System.ComponentModel.Description("Text under Bar")]
drawlbl();
base.Value = ans;
drawlbl();
if (this.Parent != null && ctladded == false)
{
this.Parent.Controls.Add(lbl);
this.Parent.Controls.Add(lbl1);
ctladded = true;
}
}
}
@ -1164,10 +1172,11 @@ System.ComponentModel.Description("Text under Bar")]
if (this.DesignMode) return;
if (this.Parent != null)
if (this.Parent != null && ctladded == false)
{
this.Parent.Controls.Add(lbl);
this.Parent.Controls.Add(lbl1);
ctladded = true;
}
}
}

View File

@ -0,0 +1,56 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO.Ports;
using System.IO;
namespace ArdupilotMega.Comms
{
public class CommsFile : ICommsSerial
{
// Methods
public void Close() { BaseStream.Close(); }
public void DiscardInBuffer() { }
//void DiscardOutBuffer();
public void Open()
{
BaseStream = File.OpenRead(PortName);
}
public int Read(byte[] buffer, int offset, int count)
{
return BaseStream.Read(buffer, offset, count);
}
//int Read(char[] buffer, int offset, int count);
public int ReadByte() { return BaseStream.ReadByte(); }
public int ReadChar() { return BaseStream.ReadByte(); }
public string ReadExisting() { return ""; }
public string ReadLine() { return ""; }
//string ReadTo(string value);
public void Write(string text) { }
public void Write(byte[] buffer, int offset, int count) { }
//void Write(char[] buffer, int offset, int count);
public void WriteLine(string text) { }
public void toggleDTR() { }
// Properties
public Stream BaseStream { get; private set; }
public int BaudRate { get; set; }
public int BytesToRead { get { return (int)(BaseStream.Length - BaseStream.Position); } }
public int BytesToWrite { get; set; }
public int DataBits { get; set; }
public bool DtrEnable { get; set; }
public bool IsOpen { get { return (BaseStream != null); } }
public Parity Parity { get; set; }
public string PortName { get; set; }
public int ReadBufferSize { get; set; }
public int ReadTimeout { get; set; }
public bool RtsEnable { get; set; }
public StopBits StopBits { get; set; }
public int WriteBufferSize { get; set; }
public int WriteTimeout { get; set; }
}
}

View File

@ -11,6 +11,9 @@ namespace ArdupilotMega.Comms
{
public new void Open()
{
// 500ms write timeout - win32 api default
this.WriteTimeout = 500;
if (base.IsOpen)
return;

View File

@ -145,9 +145,9 @@ namespace ArdupilotMega.Controls.BackstageView
/// <summary>
/// Add a page (tab) to this backstage view. Will be added at the end/bottom
/// </summary>
public void AddPage(UserControl userControl, string headerText)
public BackstageViewPage AddPage(UserControl userControl, string headerText, BackstageViewPage Parent)
{
var page = new BackstageViewPage(userControl, headerText)
var page = new BackstageViewPage(userControl, headerText, Parent)
{
Page =
{
@ -171,6 +171,8 @@ namespace ArdupilotMega.Controls.BackstageView
ActivatePage(page);
}
return page;
}
/// <summary>
@ -196,7 +198,8 @@ namespace ArdupilotMega.Controls.BackstageView
SelectedTextColor = _selectedTextColor,
UnSelectedTextColor = _unSelectedTextColor,
HighlightColor1 = _highlightColor1,
HighlightColor2 = _highlightColor2
HighlightColor2 = _highlightColor2,
// Dock = DockStyle.Bottom
};
pnlMenu.Controls.Add(lnkButton);
@ -322,6 +325,9 @@ namespace ArdupilotMega.Controls.BackstageView
if (popoutPage != null && popoutPage == page)
continue;
if (page is BackstageViewSpacer)
continue;
if (((BackstageViewPage)page).Page is IDeactivate)
{
((IDeactivate)((BackstageViewPage)(page)).Page).Deactivate();
@ -335,7 +341,7 @@ namespace ArdupilotMega.Controls.BackstageView
public abstract class BackstageViewItem
{
public abstract int Spacing { get; }
public abstract int Spacing { get; set; }
}
/// <summary>
@ -355,6 +361,7 @@ namespace ArdupilotMega.Controls.BackstageView
public override int Spacing
{
get { return _spacing; }
set { _spacing = value; }
}
}
@ -363,11 +370,12 @@ namespace ArdupilotMega.Controls.BackstageView
/// Data structure to hold information about a 'tab' in the <see cref="BackstageView"/>
/// </summary>
public class BackstageViewPage : BackstageViewItem
{
public BackstageViewPage(UserControl page, string linkText)
{
public BackstageViewPage(UserControl page, string linkText, BackstageViewPage parent)
{
Page = page;
LinkText = linkText;
Parent = parent;
}
/// <summary>
@ -380,9 +388,14 @@ namespace ArdupilotMega.Controls.BackstageView
/// </summary>
public string LinkText { get; set; }
public BackstageViewPage Parent { get; internal set; }
private int _spaceoverride = -1;
public override int Spacing
{
get { return ButtonSpacing; }
get { if (_spaceoverride != -1) return _spaceoverride; return ButtonSpacing; }
set { _spaceoverride = value; }
}
}
}

View File

@ -36,6 +36,8 @@ namespace ArdupilotMega.Controls
/// </summary>
public new void Invalidate()
{
if (Disposing)
return;
if (!ThisReallyVisible())
{
return;
@ -50,8 +52,8 @@ namespace ArdupilotMega.Controls
/// <returns></returns>
public bool ThisReallyVisible()
{
Control ctl = Control.FromHandle(this.Handle);
return ctl.Visible;
//Control ctl = Control.FromHandle(this.Handle);
return this.Visible;
}
public HSI()

View File

@ -56,6 +56,8 @@ namespace ArdupilotMega.Controls
//return;
}
this.Name = "Hud";
//InitializeComponent();
graphicsObject = this;
@ -367,8 +369,8 @@ namespace ArdupilotMega.Controls
{
countdate = DateTime.Now;
Console.WriteLine("HUD " + count + " hz drawtime " + (huddrawtime / count) + " gl " + opengl);
// if ((huddrawtime / count) > 1000)
// opengl = false;
if ((huddrawtime / count) > 1000)
opengl = false;
count = 0;
huddrawtime = 0;
@ -1754,12 +1756,16 @@ namespace ArdupilotMega.Controls
if (SixteenXNine)
{
this.Height = (int)(this.Width / 1.777f);
int ht = (int)(this.Width / 1.777f);
if (ht != this.Height)
this.Height = ht;
}
else
{
// 4x3
this.Height = (int)(this.Width / 1.333f);
int ht = (int)(this.Width / 1.333f);
if (ht != this.Height)
this.Height = ht;
}
base.OnResize(e);
@ -1799,7 +1805,8 @@ namespace ArdupilotMega.Controls
}
}
catch { }
Refresh();
}
}
}

View File

@ -44,5 +44,17 @@ namespace ArdupilotMega.Controls
base.OnPaint(pe);
this.CoverWithRect(pe.Graphics, Opacity);
}
public new bool DoubleBuffered
{
get
{
return base.DoubleBuffered;
}
set
{
base.DoubleBuffered = value;
}
}
}
}

View File

@ -14,7 +14,7 @@ namespace ArdupilotMega.Controls
public partial class MainSwitcher : UserControl
{
public List<Screen> screens = new List<Screen>();
Screen current;
public Screen current;
public MainSwitcher()
{

View File

@ -29,8 +29,8 @@
private void InitializeComponent()
{
this.labelWithPseudoOpacity1 = new ArdupilotMega.Controls.LabelWithPseudoOpacity();
this.labelWithPseudoOpacity2 = new ArdupilotMega.Controls.LabelWithPseudoOpacity();
this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
this.labelWithPseudoOpacity2 = new ArdupilotMega.Controls.LabelWithPseudoOpacity();
this.tableLayoutPanel1.SuspendLayout();
this.SuspendLayout();
//
@ -38,49 +38,49 @@
//
this.labelWithPseudoOpacity1.AutoSize = true;
this.labelWithPseudoOpacity1.Dock = System.Windows.Forms.DockStyle.Fill;
this.labelWithPseudoOpacity1.Font = new System.Drawing.Font("Microsoft Sans Serif", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.labelWithPseudoOpacity1.DoubleBuffered = true;
this.labelWithPseudoOpacity1.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.labelWithPseudoOpacity1.Location = new System.Drawing.Point(3, 0);
this.labelWithPseudoOpacity1.Name = "labelWithPseudoOpacity1";
this.labelWithPseudoOpacity1.Size = new System.Drawing.Size(161, 50);
this.labelWithPseudoOpacity1.Size = new System.Drawing.Size(118, 20);
this.labelWithPseudoOpacity1.TabIndex = 0;
this.labelWithPseudoOpacity1.Text = "Altitude:";
this.labelWithPseudoOpacity1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
//
// labelWithPseudoOpacity2
//
this.labelWithPseudoOpacity2.AutoSize = true;
this.labelWithPseudoOpacity2.Dock = System.Windows.Forms.DockStyle.Fill;
this.labelWithPseudoOpacity2.Font = new System.Drawing.Font("Microsoft Sans Serif", 36F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.labelWithPseudoOpacity2.Location = new System.Drawing.Point(170, 0);
this.labelWithPseudoOpacity2.Name = "labelWithPseudoOpacity2";
this.labelWithPseudoOpacity2.Size = new System.Drawing.Size(162, 50);
this.labelWithPseudoOpacity2.TabIndex = 1;
this.labelWithPseudoOpacity2.Text = "0.0";
this.labelWithPseudoOpacity2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
//
// tableLayoutPanel1
//
this.tableLayoutPanel1.ColumnCount = 2;
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
this.tableLayoutPanel1.Controls.Add(this.labelWithPseudoOpacity2, 1, 0);
this.tableLayoutPanel1.ColumnCount = 1;
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
this.tableLayoutPanel1.Controls.Add(this.labelWithPseudoOpacity2, 0, 1);
this.tableLayoutPanel1.Controls.Add(this.labelWithPseudoOpacity1, 0, 0);
this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill;
this.tableLayoutPanel1.Location = new System.Drawing.Point(0, 0);
this.tableLayoutPanel1.Name = "tableLayoutPanel1";
this.tableLayoutPanel1.RowCount = 1;
this.tableLayoutPanel1.RowCount = 2;
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F));
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
this.tableLayoutPanel1.Size = new System.Drawing.Size(335, 50);
this.tableLayoutPanel1.Size = new System.Drawing.Size(122, 72);
this.tableLayoutPanel1.TabIndex = 2;
//
// labelWithPseudoOpacity2
//
this.labelWithPseudoOpacity2.Dock = System.Windows.Forms.DockStyle.Fill;
this.labelWithPseudoOpacity2.DoubleBuffered = true;
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";
this.labelWithPseudoOpacity2.Size = new System.Drawing.Size(118, 52);
this.labelWithPseudoOpacity2.TabIndex = 2;
this.labelWithPseudoOpacity2.Text = "000.00";
this.labelWithPseudoOpacity2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
//
// QuickView
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.Controls.Add(this.tableLayoutPanel1);
this.MinimumSize = new System.Drawing.Size(100, 27);
this.Name = "QuickView";
this.Size = new System.Drawing.Size(335, 50);
this.Size = new System.Drawing.Size(122, 72);
this.tableLayoutPanel1.ResumeLayout(false);
this.tableLayoutPanel1.PerformLayout();
this.ResumeLayout(false);
@ -90,7 +90,7 @@
#endregion
private LabelWithPseudoOpacity labelWithPseudoOpacity1;
private LabelWithPseudoOpacity labelWithPseudoOpacity2;
private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1;
private LabelWithPseudoOpacity labelWithPseudoOpacity2;
}
}

View File

@ -14,7 +14,15 @@ namespace ArdupilotMega.Controls
[System.ComponentModel.Browsable(true)]
public string desc { get { return labelWithPseudoOpacity1.Text; } set { if (labelWithPseudoOpacity1.Text == value) return; labelWithPseudoOpacity1.Text = value; } }
[System.ComponentModel.Browsable(true)]
public string number { get { return labelWithPseudoOpacity2.Text; } set { if (labelWithPseudoOpacity2.Text == value) return; labelWithPseudoOpacity2.Text = value; } }
public double number { get { return double.Parse(labelWithPseudoOpacity2.Text); }
set {
string ans = (value).ToString("0.00");
if (labelWithPseudoOpacity2.Text == ans)
return;
labelWithPseudoOpacity2.Text = ans;
GetFontSize();
}
}
[System.ComponentModel.Browsable(true)]
public Color numberColor { get { return labelWithPseudoOpacity2.ForeColor; } set { if (labelWithPseudoOpacity2.ForeColor == value) return; labelWithPseudoOpacity2.ForeColor = value; } }
@ -24,6 +32,8 @@ namespace ArdupilotMega.Controls
labelWithPseudoOpacity1.DoubleClick += new EventHandler(labelWithPseudoOpacity1_DoubleClick);
labelWithPseudoOpacity2.DoubleClick += new EventHandler(labelWithPseudoOpacity2_DoubleClick);
labelWithPseudoOpacity2.DoubleBuffered = true;
}
void labelWithPseudoOpacity2_DoubleClick(object sender, EventArgs e)
@ -54,10 +64,32 @@ namespace ArdupilotMega.Controls
base.OnPaint(e);
}
void GetFontSize()
{
Size extent = TextRenderer.MeasureText(labelWithPseudoOpacity2.Text, this.Font);
float hRatio = (this.Height) / (float)extent.Height;
float wRatio = this.Width / (float)extent.Width;
float ratio = (hRatio < wRatio) ? hRatio : wRatio;
float newSize = this.Font.Size * ratio;
if (newSize < 8)
newSize = 8;
//return newSize;
labelWithPseudoOpacity2.Font = new Font(labelWithPseudoOpacity2.Font.FontFamily, newSize - 2, labelWithPseudoOpacity2.Font.Style);
extent = TextRenderer.MeasureText(labelWithPseudoOpacity2.Text, labelWithPseudoOpacity2.Font);
}
protected override void OnResize(EventArgs e)
{
if (this.Height > 20)
labelWithPseudoOpacity2.Font = new Font(labelWithPseudoOpacity2.Font.FontFamily, this.Height * 0.7f);
this.ResizeRedraw = true;
GetFontSize();
base.OnResize(e);
}

View File

@ -12,6 +12,14 @@ namespace ArdupilotMega.Controls
{
public bool inOnPaint = false;
string otherthread = "";
int lastx = 0;
int lasty = 0;
public myGMAP()
: base()
{
this.Text = "Map";
}
protected override void OnPaint(System.Windows.Forms.PaintEventArgs e)
{
@ -38,6 +46,12 @@ namespace ArdupilotMega.Controls
{
try
{
if (e.X == lastx && e.Y == lasty)
return;
lastx = e.X;
lasty = e.Y;
base.OnMouseMove(e);
}
catch (Exception ex) { Console.WriteLine(ex.ToString()); }

View File

@ -480,7 +480,7 @@ namespace ArdupilotMega
gotwind = true;
wind_dir = wind.direction;
wind_dir = (wind.direction + 360) % 360;
wind_vel = wind.speed;
//MAVLink.packets[ArdupilotMega.MAVLink.MAVLINK_MSG_ID_SYS_STATUS] = null;

View File

@ -0,0 +1,380 @@
namespace ArdupilotMega.GCSViews.ConfigurationView
{
partial class ConfigFailSafe
{
/// <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(ConfigFailSafe));
this.currentStateBindingSource = new System.Windows.Forms.BindingSource(this.components);
this.label2 = new System.Windows.Forms.Label();
this.label1 = new System.Windows.Forms.Label();
this.horizontalProgressBar9 = new ArdupilotMega.HorizontalProgressBar();
this.horizontalProgressBar10 = new ArdupilotMega.HorizontalProgressBar();
this.horizontalProgressBar11 = new ArdupilotMega.HorizontalProgressBar();
this.horizontalProgressBar12 = new ArdupilotMega.HorizontalProgressBar();
this.horizontalProgressBar13 = new ArdupilotMega.HorizontalProgressBar();
this.horizontalProgressBar14 = new ArdupilotMega.HorizontalProgressBar();
this.horizontalProgressBar15 = new ArdupilotMega.HorizontalProgressBar();
this.horizontalProgressBar16 = new ArdupilotMega.HorizontalProgressBar();
this.horizontalProgressBar8 = new ArdupilotMega.HorizontalProgressBar();
this.horizontalProgressBar7 = new ArdupilotMega.HorizontalProgressBar();
this.horizontalProgressBar6 = new ArdupilotMega.HorizontalProgressBar();
this.horizontalProgressBar5 = new ArdupilotMega.HorizontalProgressBar();
this.horizontalProgressBar4 = new ArdupilotMega.HorizontalProgressBar();
this.horizontalProgressBar3 = new ArdupilotMega.HorizontalProgressBar();
this.horizontalProgressBar2 = new ArdupilotMega.HorizontalProgressBar();
this.horizontalProgressBar1 = new ArdupilotMega.HorizontalProgressBar();
this.lbl_currentmode = new System.Windows.Forms.Label();
this.mavlinkCheckBox1 = new ArdupilotMega.Controls.MavlinkCheckBox();
this.mavlinkNumericUpDown1 = new ArdupilotMega.Controls.MavlinkNumericUpDown();
((System.ComponentModel.ISupportInitialize)(this.currentStateBindingSource)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.mavlinkNumericUpDown1)).BeginInit();
this.SuspendLayout();
//
// currentStateBindingSource
//
this.currentStateBindingSource.DataSource = typeof(ArdupilotMega.CurrentState);
//
// label2
//
resources.ApplyResources(this.label2, "label2");
this.label2.Name = "label2";
//
// label1
//
resources.ApplyResources(this.label1, "label1");
this.label1.Name = "label1";
//
// horizontalProgressBar9
//
this.horizontalProgressBar9.DataBindings.Add(new System.Windows.Forms.Binding("Value", this.currentStateBindingSource, "ch8out", true));
resources.ApplyResources(this.horizontalProgressBar9, "horizontalProgressBar9");
this.horizontalProgressBar9.Label = "Radio 8";
this.horizontalProgressBar9.MarqueeAnimationSpeed = 1;
this.horizontalProgressBar9.Maximum = 2000;
this.horizontalProgressBar9.maxline = 0;
this.horizontalProgressBar9.Minimum = 1000;
this.horizontalProgressBar9.minline = 0;
this.horizontalProgressBar9.Name = "horizontalProgressBar9";
this.horizontalProgressBar9.Step = 1;
this.horizontalProgressBar9.Style = System.Windows.Forms.ProgressBarStyle.Continuous;
//
// horizontalProgressBar10
//
this.horizontalProgressBar10.DataBindings.Add(new System.Windows.Forms.Binding("Value", this.currentStateBindingSource, "ch7out", true));
resources.ApplyResources(this.horizontalProgressBar10, "horizontalProgressBar10");
this.horizontalProgressBar10.Label = "Radio 7";
this.horizontalProgressBar10.MarqueeAnimationSpeed = 1;
this.horizontalProgressBar10.Maximum = 2000;
this.horizontalProgressBar10.maxline = 0;
this.horizontalProgressBar10.Minimum = 1000;
this.horizontalProgressBar10.minline = 0;
this.horizontalProgressBar10.Name = "horizontalProgressBar10";
this.horizontalProgressBar10.Step = 1;
this.horizontalProgressBar10.Style = System.Windows.Forms.ProgressBarStyle.Continuous;
//
// horizontalProgressBar11
//
this.horizontalProgressBar11.DataBindings.Add(new System.Windows.Forms.Binding("Value", this.currentStateBindingSource, "ch6out", true));
resources.ApplyResources(this.horizontalProgressBar11, "horizontalProgressBar11");
this.horizontalProgressBar11.Label = "Radio 6";
this.horizontalProgressBar11.MarqueeAnimationSpeed = 1;
this.horizontalProgressBar11.Maximum = 2000;
this.horizontalProgressBar11.maxline = 0;
this.horizontalProgressBar11.Minimum = 1000;
this.horizontalProgressBar11.minline = 0;
this.horizontalProgressBar11.Name = "horizontalProgressBar11";
this.horizontalProgressBar11.Step = 1;
this.horizontalProgressBar11.Style = System.Windows.Forms.ProgressBarStyle.Continuous;
//
// horizontalProgressBar12
//
this.horizontalProgressBar12.DataBindings.Add(new System.Windows.Forms.Binding("Value", this.currentStateBindingSource, "ch5out", true));
resources.ApplyResources(this.horizontalProgressBar12, "horizontalProgressBar12");
this.horizontalProgressBar12.Label = "Radio 5";
this.horizontalProgressBar12.MarqueeAnimationSpeed = 1;
this.horizontalProgressBar12.Maximum = 2000;
this.horizontalProgressBar12.maxline = 0;
this.horizontalProgressBar12.Minimum = 1000;
this.horizontalProgressBar12.minline = 0;
this.horizontalProgressBar12.Name = "horizontalProgressBar12";
this.horizontalProgressBar12.Step = 1;
this.horizontalProgressBar12.Style = System.Windows.Forms.ProgressBarStyle.Continuous;
//
// horizontalProgressBar13
//
this.horizontalProgressBar13.DataBindings.Add(new System.Windows.Forms.Binding("Value", this.currentStateBindingSource, "ch4out", true));
resources.ApplyResources(this.horizontalProgressBar13, "horizontalProgressBar13");
this.horizontalProgressBar13.Label = "Radio 4";
this.horizontalProgressBar13.MarqueeAnimationSpeed = 1;
this.horizontalProgressBar13.Maximum = 2000;
this.horizontalProgressBar13.maxline = 0;
this.horizontalProgressBar13.Minimum = 1000;
this.horizontalProgressBar13.minline = 0;
this.horizontalProgressBar13.Name = "horizontalProgressBar13";
this.horizontalProgressBar13.Step = 1;
this.horizontalProgressBar13.Style = System.Windows.Forms.ProgressBarStyle.Continuous;
//
// horizontalProgressBar14
//
this.horizontalProgressBar14.DataBindings.Add(new System.Windows.Forms.Binding("Value", this.currentStateBindingSource, "ch3out", true));
resources.ApplyResources(this.horizontalProgressBar14, "horizontalProgressBar14");
this.horizontalProgressBar14.Label = "Radio 3";
this.horizontalProgressBar14.MarqueeAnimationSpeed = 1;
this.horizontalProgressBar14.Maximum = 2000;
this.horizontalProgressBar14.maxline = 0;
this.horizontalProgressBar14.Minimum = 1000;
this.horizontalProgressBar14.minline = 0;
this.horizontalProgressBar14.Name = "horizontalProgressBar14";
this.horizontalProgressBar14.Step = 1;
this.horizontalProgressBar14.Style = System.Windows.Forms.ProgressBarStyle.Continuous;
//
// horizontalProgressBar15
//
this.horizontalProgressBar15.DataBindings.Add(new System.Windows.Forms.Binding("Value", this.currentStateBindingSource, "ch1out", true));
resources.ApplyResources(this.horizontalProgressBar15, "horizontalProgressBar15");
this.horizontalProgressBar15.Label = "Radio 1";
this.horizontalProgressBar15.MarqueeAnimationSpeed = 1;
this.horizontalProgressBar15.Maximum = 2000;
this.horizontalProgressBar15.maxline = 0;
this.horizontalProgressBar15.Minimum = 1000;
this.horizontalProgressBar15.minline = 0;
this.horizontalProgressBar15.Name = "horizontalProgressBar15";
this.horizontalProgressBar15.Step = 1;
this.horizontalProgressBar15.Style = System.Windows.Forms.ProgressBarStyle.Continuous;
//
// horizontalProgressBar16
//
this.horizontalProgressBar16.DataBindings.Add(new System.Windows.Forms.Binding("Value", this.currentStateBindingSource, "ch2out", true));
resources.ApplyResources(this.horizontalProgressBar16, "horizontalProgressBar16");
this.horizontalProgressBar16.Label = "Radio 2";
this.horizontalProgressBar16.MarqueeAnimationSpeed = 1;
this.horizontalProgressBar16.Maximum = 2000;
this.horizontalProgressBar16.maxline = 0;
this.horizontalProgressBar16.Minimum = 1000;
this.horizontalProgressBar16.minline = 0;
this.horizontalProgressBar16.Name = "horizontalProgressBar16";
this.horizontalProgressBar16.Step = 1;
this.horizontalProgressBar16.Style = System.Windows.Forms.ProgressBarStyle.Continuous;
//
// horizontalProgressBar8
//
this.horizontalProgressBar8.DataBindings.Add(new System.Windows.Forms.Binding("Value", this.currentStateBindingSource, "ch8in", true));
resources.ApplyResources(this.horizontalProgressBar8, "horizontalProgressBar8");
this.horizontalProgressBar8.Label = "Radio 8";
this.horizontalProgressBar8.MarqueeAnimationSpeed = 1;
this.horizontalProgressBar8.Maximum = 2000;
this.horizontalProgressBar8.maxline = 0;
this.horizontalProgressBar8.Minimum = 1000;
this.horizontalProgressBar8.minline = 0;
this.horizontalProgressBar8.Name = "horizontalProgressBar8";
this.horizontalProgressBar8.Step = 1;
this.horizontalProgressBar8.Style = System.Windows.Forms.ProgressBarStyle.Continuous;
//
// horizontalProgressBar7
//
this.horizontalProgressBar7.DataBindings.Add(new System.Windows.Forms.Binding("Value", this.currentStateBindingSource, "ch7in", true));
resources.ApplyResources(this.horizontalProgressBar7, "horizontalProgressBar7");
this.horizontalProgressBar7.Label = "Radio 7";
this.horizontalProgressBar7.MarqueeAnimationSpeed = 1;
this.horizontalProgressBar7.Maximum = 2000;
this.horizontalProgressBar7.maxline = 0;
this.horizontalProgressBar7.Minimum = 1000;
this.horizontalProgressBar7.minline = 0;
this.horizontalProgressBar7.Name = "horizontalProgressBar7";
this.horizontalProgressBar7.Step = 1;
this.horizontalProgressBar7.Style = System.Windows.Forms.ProgressBarStyle.Continuous;
//
// horizontalProgressBar6
//
this.horizontalProgressBar6.DataBindings.Add(new System.Windows.Forms.Binding("Value", this.currentStateBindingSource, "ch6in", true));
resources.ApplyResources(this.horizontalProgressBar6, "horizontalProgressBar6");
this.horizontalProgressBar6.Label = "Radio 6";
this.horizontalProgressBar6.MarqueeAnimationSpeed = 1;
this.horizontalProgressBar6.Maximum = 2000;
this.horizontalProgressBar6.maxline = 0;
this.horizontalProgressBar6.Minimum = 1000;
this.horizontalProgressBar6.minline = 0;
this.horizontalProgressBar6.Name = "horizontalProgressBar6";
this.horizontalProgressBar6.Step = 1;
this.horizontalProgressBar6.Style = System.Windows.Forms.ProgressBarStyle.Continuous;
//
// horizontalProgressBar5
//
this.horizontalProgressBar5.DataBindings.Add(new System.Windows.Forms.Binding("Value", this.currentStateBindingSource, "ch5in", true));
resources.ApplyResources(this.horizontalProgressBar5, "horizontalProgressBar5");
this.horizontalProgressBar5.Label = "Radio 5";
this.horizontalProgressBar5.MarqueeAnimationSpeed = 1;
this.horizontalProgressBar5.Maximum = 2000;
this.horizontalProgressBar5.maxline = 0;
this.horizontalProgressBar5.Minimum = 1000;
this.horizontalProgressBar5.minline = 0;
this.horizontalProgressBar5.Name = "horizontalProgressBar5";
this.horizontalProgressBar5.Step = 1;
this.horizontalProgressBar5.Style = System.Windows.Forms.ProgressBarStyle.Continuous;
//
// horizontalProgressBar4
//
this.horizontalProgressBar4.DataBindings.Add(new System.Windows.Forms.Binding("Value", this.currentStateBindingSource, "ch4in", true));
resources.ApplyResources(this.horizontalProgressBar4, "horizontalProgressBar4");
this.horizontalProgressBar4.Label = "Radio 4";
this.horizontalProgressBar4.MarqueeAnimationSpeed = 1;
this.horizontalProgressBar4.Maximum = 2000;
this.horizontalProgressBar4.maxline = 0;
this.horizontalProgressBar4.Minimum = 1000;
this.horizontalProgressBar4.minline = 0;
this.horizontalProgressBar4.Name = "horizontalProgressBar4";
this.horizontalProgressBar4.Step = 1;
this.horizontalProgressBar4.Style = System.Windows.Forms.ProgressBarStyle.Continuous;
//
// horizontalProgressBar3
//
this.horizontalProgressBar3.DataBindings.Add(new System.Windows.Forms.Binding("Value", this.currentStateBindingSource, "ch3in", true));
resources.ApplyResources(this.horizontalProgressBar3, "horizontalProgressBar3");
this.horizontalProgressBar3.Label = "Radio 3";
this.horizontalProgressBar3.MarqueeAnimationSpeed = 1;
this.horizontalProgressBar3.Maximum = 2000;
this.horizontalProgressBar3.maxline = 0;
this.horizontalProgressBar3.Minimum = 1000;
this.horizontalProgressBar3.minline = 0;
this.horizontalProgressBar3.Name = "horizontalProgressBar3";
this.horizontalProgressBar3.Step = 1;
this.horizontalProgressBar3.Style = System.Windows.Forms.ProgressBarStyle.Continuous;
//
// horizontalProgressBar2
//
this.horizontalProgressBar2.DataBindings.Add(new System.Windows.Forms.Binding("Value", this.currentStateBindingSource, "ch1in", true));
resources.ApplyResources(this.horizontalProgressBar2, "horizontalProgressBar2");
this.horizontalProgressBar2.Label = "Radio 1";
this.horizontalProgressBar2.MarqueeAnimationSpeed = 1;
this.horizontalProgressBar2.Maximum = 2000;
this.horizontalProgressBar2.maxline = 0;
this.horizontalProgressBar2.Minimum = 1000;
this.horizontalProgressBar2.minline = 0;
this.horizontalProgressBar2.Name = "horizontalProgressBar2";
this.horizontalProgressBar2.Step = 1;
this.horizontalProgressBar2.Style = System.Windows.Forms.ProgressBarStyle.Continuous;
//
// horizontalProgressBar1
//
this.horizontalProgressBar1.DataBindings.Add(new System.Windows.Forms.Binding("Value", this.currentStateBindingSource, "ch2in", true));
resources.ApplyResources(this.horizontalProgressBar1, "horizontalProgressBar1");
this.horizontalProgressBar1.Label = "Radio 2";
this.horizontalProgressBar1.MarqueeAnimationSpeed = 1;
this.horizontalProgressBar1.Maximum = 2000;
this.horizontalProgressBar1.maxline = 0;
this.horizontalProgressBar1.Minimum = 1000;
this.horizontalProgressBar1.minline = 0;
this.horizontalProgressBar1.Name = "horizontalProgressBar1";
this.horizontalProgressBar1.Step = 1;
this.horizontalProgressBar1.Style = System.Windows.Forms.ProgressBarStyle.Continuous;
//
// lbl_currentmode
//
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";
//
// mavlinkCheckBox1
//
resources.ApplyResources(this.mavlinkCheckBox1, "mavlinkCheckBox1");
this.mavlinkCheckBox1.Name = "mavlinkCheckBox1";
this.mavlinkCheckBox1.OffValue = 0F;
this.mavlinkCheckBox1.OnValue = 1F;
this.mavlinkCheckBox1.param = null;
this.mavlinkCheckBox1.ParamName = null;
this.mavlinkCheckBox1.UseVisualStyleBackColor = true;
//
// mavlinkNumericUpDown1
//
resources.ApplyResources(this.mavlinkNumericUpDown1, "mavlinkNumericUpDown1");
this.mavlinkNumericUpDown1.Max = 1F;
this.mavlinkNumericUpDown1.Min = 0F;
this.mavlinkNumericUpDown1.Name = "mavlinkNumericUpDown1";
this.mavlinkNumericUpDown1.param = null;
this.mavlinkNumericUpDown1.ParamName = null;
//
// ConfigFailSafe
//
resources.ApplyResources(this, "$this");
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.Controls.Add(this.mavlinkNumericUpDown1);
this.Controls.Add(this.mavlinkCheckBox1);
this.Controls.Add(this.lbl_currentmode);
this.Controls.Add(this.label2);
this.Controls.Add(this.label1);
this.Controls.Add(this.horizontalProgressBar9);
this.Controls.Add(this.horizontalProgressBar10);
this.Controls.Add(this.horizontalProgressBar11);
this.Controls.Add(this.horizontalProgressBar12);
this.Controls.Add(this.horizontalProgressBar13);
this.Controls.Add(this.horizontalProgressBar14);
this.Controls.Add(this.horizontalProgressBar15);
this.Controls.Add(this.horizontalProgressBar16);
this.Controls.Add(this.horizontalProgressBar8);
this.Controls.Add(this.horizontalProgressBar7);
this.Controls.Add(this.horizontalProgressBar6);
this.Controls.Add(this.horizontalProgressBar5);
this.Controls.Add(this.horizontalProgressBar4);
this.Controls.Add(this.horizontalProgressBar3);
this.Controls.Add(this.horizontalProgressBar2);
this.Controls.Add(this.horizontalProgressBar1);
this.Name = "ConfigFailSafe";
((System.ComponentModel.ISupportInitialize)(this.currentStateBindingSource)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.mavlinkNumericUpDown1)).EndInit();
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.BindingSource currentStateBindingSource;
private System.Windows.Forms.Label label2;
private System.Windows.Forms.Label label1;
private HorizontalProgressBar horizontalProgressBar9;
private HorizontalProgressBar horizontalProgressBar10;
private HorizontalProgressBar horizontalProgressBar11;
private HorizontalProgressBar horizontalProgressBar12;
private HorizontalProgressBar horizontalProgressBar13;
private HorizontalProgressBar horizontalProgressBar14;
private HorizontalProgressBar horizontalProgressBar15;
private HorizontalProgressBar horizontalProgressBar16;
private HorizontalProgressBar horizontalProgressBar8;
private HorizontalProgressBar horizontalProgressBar7;
private HorizontalProgressBar horizontalProgressBar6;
private HorizontalProgressBar horizontalProgressBar5;
private HorizontalProgressBar horizontalProgressBar4;
private HorizontalProgressBar horizontalProgressBar3;
private HorizontalProgressBar horizontalProgressBar2;
private HorizontalProgressBar horizontalProgressBar1;
private System.Windows.Forms.Label lbl_currentmode;
private Controls.MavlinkCheckBox mavlinkCheckBox1;
private Controls.MavlinkNumericUpDown mavlinkNumericUpDown1;
}
}

View File

@ -0,0 +1,53 @@
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;
namespace ArdupilotMega.GCSViews.ConfigurationView
{
public partial class ConfigFailSafe : UserControl, IActivate, IDeactivate
{
Timer timer = new Timer();
public ConfigFailSafe()
{
InitializeComponent();
mavlinkCheckBox1.setup(1, 0, "THR_FAILSAFE", MainV2.comPort.param);
mavlinkNumericUpDown1.setup(800, 1200, 1, 1, "THR_FS_VALUE", MainV2.comPort.param);
// setup rc update
timer.Tick += new EventHandler(timer_Tick);
}
public void Deactivate()
{
timer.Stop();
}
void timer_Tick(object sender, EventArgs e)
{
// update all linked controls - 10hz
try
{
MainV2.cs.UpdateCurrentSettings(currentStateBindingSource);
}
catch { }
}
public void Activate()
{
timer.Enabled = true;
timer.Interval = 100;
timer.Start();
CustomMessageBox.Show("Ensure your props are not on the Plane/Quad","FailSafe",MessageBoxButtons.OK,MessageBoxIcon.Exclamation);
}
}
}

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,312 @@
<?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>Manuel</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>Mode Courant:</value>
</data>
<data name="CHK_enableoptflow.Text" xml:space="preserve">
<value>Activ. capteur optique</value>
</data>
<data name="label16.Text" xml:space="preserve">
<value>NOTE: images pou presentation uniquement. Fonctionnel pour Hex, Octo etc...</value>
</data>
<data name="CB_simple5.Text" xml:space="preserve">
<value>Mode 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 Actuel:</value>
</data>
<data name="$this.Text" xml:space="preserve">
<value>APMSetup</value>
</data>
<data name="label17.Text" xml:space="preserve">
<value>Swash-Servo position</value>
</data>
<data name="CHK_enablecompass.Text" xml:space="preserve">
<value>Activ. Boussole</value>
</data>
<data name="CB_simple4.Text" xml:space="preserve">
<value>Mode Simple</value>
</data>
<data name="tabArducopter.Text" xml:space="preserve">
<value>ArduCopter2</value>
</data>
<data name="CB_simple1.Text" xml:space="preserve">
<value>Mode Simple</value>
</data>
<data name="label15.Text" xml:space="preserve">
<value>type de châssis (+ ou 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>Mode Simple</value>
</data>
<data name="CB_simple3.Text" xml:space="preserve">
<value>Mode Simple</value>
</data>
<data name="label19.Text" xml:space="preserve">
<value>2</value>
</data>
<data name="tabModes.Text" xml:space="preserve">
<value>Modes</value>
</data>
<data name="CB_simple2.Text" xml:space="preserve">
<value>Mode Simple</value>
</data>
<data name="label20.Text" xml:space="preserve">
<value>3</value>
</data>
<data name="tabReset.Text" xml:space="preserve">
<value>Réinit.</value>
</data>
<data name="SV1_POS_.Text" xml:space="preserve">
<value>-60</value>
</data>
<data name="label21.Text" xml:space="preserve">
<value>Haut</value>
</data>
<data name="label22.Text" xml:space="preserve">
<value>Mouvement Swash</value>
</data>
<data name="lbl_currentmode.Text" xml:space="preserve">
<value>Manuel</value>
</data>
<data name="label23.Text" xml:space="preserve">
<value>Deplac. du Gouvernail</value>
</data>
<data name="textBox3.Text" xml:space="preserve">
<value>Calibration du capteur de Voltage.1. Mesurer le voltage sur APM et inscrivez-le dans la boite ci-bas.2. Mesurer le voltage de la batterie et inscrivez-le dans la boite ci-bas.3. Inscrire les ampères par volt de la documentation du capteur de courant ci-bas</value>
</data>
<data name="BUT_Calibrateradio.Text" xml:space="preserve">
<value>Calibrer Radio</value>
</data>
<data name="label24.Text" xml:space="preserve">
<value>Max</value>
</data>
<data name="label2.Text" xml:space="preserve">
<value>Mode de vol 2</value>
</data>
<data name="label25.Text" xml:space="preserve">
<value>Roulis Max</value>
</data>
<data name="label3.Text" xml:space="preserve">
<value>Mode de vol 2</value>
</data>
<data name="label26.Text" xml:space="preserve">
<value>Tangage Max</value>
</data>
<data name="label27.Text" xml:space="preserve">
<value>en degrés eg 2° 3' W est -2.3</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="label6.Text" xml:space="preserve">
<value>Mode de vol 6</value>
</data>
<data name="label29.Text" xml:space="preserve">
<value>Capacité</value>
</data>
<data name="label100.Text" xml:space="preserve">
<value>Déclination</value>
</data>
<data name="CHK_enablesonar.Text" xml:space="preserve">
<value>Activer Sonar</value>
</data>
<data name="label7.Text" xml:space="preserve">
<value>PWM 1231 - 1360</value>
</data>
<data name="tabRadioIn.Text" xml:space="preserve">
<value>Entrée Radio</value>
</data>
<data name="HS4_MIN.Text" xml:space="preserve">
<value>1500</value>
</data>
<data name="label4.Text" xml:space="preserve">
<value>Mode de vol 4</value>
</data>
<data name="label5.Text" xml:space="preserve">
<value>Mode de vol 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>Matériel</value>
</data>
<data name="label9.Text" xml:space="preserve">
<value>PWM 1491 - 1620</value>
</data>
<data name="linkLabelmagdec.Text" xml:space="preserve">
<value>Site Web Déclination</value>
</data>
<data name="HS4_MAX.Text" xml:space="preserve">
<value>1500</value>
</data>
<data name="tabBattery.Text" xml:space="preserve">
<value>Batterie</value>
</data>
<data name="BUT_0collective.Text" xml:space="preserve">
<value>Zéro</value>
</data>
<data name="CHK_enableairspeed.Text" xml:space="preserve">
<value>Activ. Airspeed</value>
</data>
<data name="PIT_MAX_.Text" xml:space="preserve">
<value>4500</value>
</data>
<data name="BUT_reset.Text" xml:space="preserve">
<value>RàZ tout parametres du APM</value>
</data>
<data name="GYR_GAIN_.Text" xml:space="preserve">
<value>1000</value>
</data>
<data name="label30.Text" xml:space="preserve">
<value>Moniteur</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,678 @@
<?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="currentStateBindingSource.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
<assembly alias="mscorlib" name="mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="label2.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="label2.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="label2.Location" type="System.Drawing.Point, System.Drawing">
<value>342, 5</value>
</data>
<data name="label2.Size" type="System.Drawing.Size, System.Drawing">
<value>93, 13</value>
</data>
<data name="label2.TabIndex" type="System.Int32, mscorlib">
<value>104</value>
</data>
<data name="label2.Text" xml:space="preserve">
<value>Servo/Motor OUT</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>$this</value>
</data>
<data name="&gt;&gt;label2.ZOrder" xml:space="preserve">
<value>3</value>
</data>
<data name="label1.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="label1.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="label1.Location" type="System.Drawing.Point, System.Drawing">
<value>84, 5</value>
</data>
<data name="label1.Size" type="System.Drawing.Size, System.Drawing">
<value>49, 13</value>
</data>
<data name="label1.TabIndex" type="System.Int32, mscorlib">
<value>103</value>
</data>
<data name="label1.Text" xml:space="preserve">
<value>Radio IN</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>4</value>
</data>
<data name="horizontalProgressBar9.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="horizontalProgressBar9.Location" type="System.Drawing.Point, System.Drawing">
<value>297, 406</value>
</data>
<data name="horizontalProgressBar9.Size" type="System.Drawing.Size, System.Drawing">
<value>170, 25</value>
</data>
<data name="horizontalProgressBar9.TabIndex" type="System.Int32, mscorlib">
<value>102</value>
</data>
<data name="&gt;&gt;horizontalProgressBar9.Name" xml:space="preserve">
<value>horizontalProgressBar9</value>
</data>
<data name="&gt;&gt;horizontalProgressBar9.Type" xml:space="preserve">
<value>ArdupilotMega.HorizontalProgressBar, ArdupilotMegaPlanner10, Version=1.1.4640.13049, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;horizontalProgressBar9.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;horizontalProgressBar9.ZOrder" xml:space="preserve">
<value>5</value>
</data>
<data name="horizontalProgressBar10.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="horizontalProgressBar10.Location" type="System.Drawing.Point, System.Drawing">
<value>297, 351</value>
</data>
<data name="horizontalProgressBar10.Size" type="System.Drawing.Size, System.Drawing">
<value>170, 25</value>
</data>
<data name="horizontalProgressBar10.TabIndex" type="System.Int32, mscorlib">
<value>101</value>
</data>
<data name="&gt;&gt;horizontalProgressBar10.Name" xml:space="preserve">
<value>horizontalProgressBar10</value>
</data>
<data name="&gt;&gt;horizontalProgressBar10.Type" xml:space="preserve">
<value>ArdupilotMega.HorizontalProgressBar, ArdupilotMegaPlanner10, Version=1.1.4640.13049, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;horizontalProgressBar10.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;horizontalProgressBar10.ZOrder" xml:space="preserve">
<value>6</value>
</data>
<data name="horizontalProgressBar11.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="horizontalProgressBar11.Location" type="System.Drawing.Point, System.Drawing">
<value>297, 296</value>
</data>
<data name="horizontalProgressBar11.Size" type="System.Drawing.Size, System.Drawing">
<value>170, 25</value>
</data>
<data name="horizontalProgressBar11.TabIndex" type="System.Int32, mscorlib">
<value>100</value>
</data>
<data name="&gt;&gt;horizontalProgressBar11.Name" xml:space="preserve">
<value>horizontalProgressBar11</value>
</data>
<data name="&gt;&gt;horizontalProgressBar11.Type" xml:space="preserve">
<value>ArdupilotMega.HorizontalProgressBar, ArdupilotMegaPlanner10, Version=1.1.4640.13049, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;horizontalProgressBar11.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;horizontalProgressBar11.ZOrder" xml:space="preserve">
<value>7</value>
</data>
<data name="horizontalProgressBar12.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="horizontalProgressBar12.Location" type="System.Drawing.Point, System.Drawing">
<value>297, 241</value>
</data>
<data name="horizontalProgressBar12.Size" type="System.Drawing.Size, System.Drawing">
<value>170, 25</value>
</data>
<data name="horizontalProgressBar12.TabIndex" type="System.Int32, mscorlib">
<value>99</value>
</data>
<data name="&gt;&gt;horizontalProgressBar12.Name" xml:space="preserve">
<value>horizontalProgressBar12</value>
</data>
<data name="&gt;&gt;horizontalProgressBar12.Type" xml:space="preserve">
<value>ArdupilotMega.HorizontalProgressBar, ArdupilotMegaPlanner10, Version=1.1.4640.13049, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;horizontalProgressBar12.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;horizontalProgressBar12.ZOrder" xml:space="preserve">
<value>8</value>
</data>
<data name="horizontalProgressBar13.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="horizontalProgressBar13.Location" type="System.Drawing.Point, System.Drawing">
<value>297, 186</value>
</data>
<data name="horizontalProgressBar13.Size" type="System.Drawing.Size, System.Drawing">
<value>170, 25</value>
</data>
<data name="horizontalProgressBar13.TabIndex" type="System.Int32, mscorlib">
<value>98</value>
</data>
<data name="&gt;&gt;horizontalProgressBar13.Name" xml:space="preserve">
<value>horizontalProgressBar13</value>
</data>
<data name="&gt;&gt;horizontalProgressBar13.Type" xml:space="preserve">
<value>ArdupilotMega.HorizontalProgressBar, ArdupilotMegaPlanner10, Version=1.1.4640.13049, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;horizontalProgressBar13.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;horizontalProgressBar13.ZOrder" xml:space="preserve">
<value>9</value>
</data>
<data name="horizontalProgressBar14.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="horizontalProgressBar14.Location" type="System.Drawing.Point, System.Drawing">
<value>297, 131</value>
</data>
<data name="horizontalProgressBar14.Size" type="System.Drawing.Size, System.Drawing">
<value>170, 25</value>
</data>
<data name="horizontalProgressBar14.TabIndex" type="System.Int32, mscorlib">
<value>97</value>
</data>
<data name="&gt;&gt;horizontalProgressBar14.Name" xml:space="preserve">
<value>horizontalProgressBar14</value>
</data>
<data name="&gt;&gt;horizontalProgressBar14.Type" xml:space="preserve">
<value>ArdupilotMega.HorizontalProgressBar, ArdupilotMegaPlanner10, Version=1.1.4640.13049, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;horizontalProgressBar14.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;horizontalProgressBar14.ZOrder" xml:space="preserve">
<value>10</value>
</data>
<data name="horizontalProgressBar15.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="horizontalProgressBar15.Location" type="System.Drawing.Point, System.Drawing">
<value>297, 21</value>
</data>
<data name="horizontalProgressBar15.Size" type="System.Drawing.Size, System.Drawing">
<value>170, 25</value>
</data>
<data name="horizontalProgressBar15.TabIndex" type="System.Int32, mscorlib">
<value>96</value>
</data>
<data name="&gt;&gt;horizontalProgressBar15.Name" xml:space="preserve">
<value>horizontalProgressBar15</value>
</data>
<data name="&gt;&gt;horizontalProgressBar15.Type" xml:space="preserve">
<value>ArdupilotMega.HorizontalProgressBar, ArdupilotMegaPlanner10, Version=1.1.4640.13049, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;horizontalProgressBar15.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;horizontalProgressBar15.ZOrder" xml:space="preserve">
<value>11</value>
</data>
<data name="horizontalProgressBar16.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="horizontalProgressBar16.Location" type="System.Drawing.Point, System.Drawing">
<value>297, 76</value>
</data>
<data name="horizontalProgressBar16.Size" type="System.Drawing.Size, System.Drawing">
<value>170, 25</value>
</data>
<data name="horizontalProgressBar16.TabIndex" type="System.Int32, mscorlib">
<value>95</value>
</data>
<data name="&gt;&gt;horizontalProgressBar16.Name" xml:space="preserve">
<value>horizontalProgressBar16</value>
</data>
<data name="&gt;&gt;horizontalProgressBar16.Type" xml:space="preserve">
<value>ArdupilotMega.HorizontalProgressBar, ArdupilotMegaPlanner10, Version=1.1.4640.13049, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;horizontalProgressBar16.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;horizontalProgressBar16.ZOrder" xml:space="preserve">
<value>12</value>
</data>
<data name="horizontalProgressBar8.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="horizontalProgressBar8.Location" type="System.Drawing.Point, System.Drawing">
<value>15, 406</value>
</data>
<data name="horizontalProgressBar8.Size" type="System.Drawing.Size, System.Drawing">
<value>170, 25</value>
</data>
<data name="horizontalProgressBar8.TabIndex" type="System.Int32, mscorlib">
<value>94</value>
</data>
<data name="&gt;&gt;horizontalProgressBar8.Name" xml:space="preserve">
<value>horizontalProgressBar8</value>
</data>
<data name="&gt;&gt;horizontalProgressBar8.Type" xml:space="preserve">
<value>ArdupilotMega.HorizontalProgressBar, ArdupilotMegaPlanner10, Version=1.1.4640.13049, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;horizontalProgressBar8.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;horizontalProgressBar8.ZOrder" xml:space="preserve">
<value>13</value>
</data>
<data name="horizontalProgressBar7.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="horizontalProgressBar7.Location" type="System.Drawing.Point, System.Drawing">
<value>15, 351</value>
</data>
<data name="horizontalProgressBar7.Size" type="System.Drawing.Size, System.Drawing">
<value>170, 25</value>
</data>
<data name="horizontalProgressBar7.TabIndex" type="System.Int32, mscorlib">
<value>93</value>
</data>
<data name="&gt;&gt;horizontalProgressBar7.Name" xml:space="preserve">
<value>horizontalProgressBar7</value>
</data>
<data name="&gt;&gt;horizontalProgressBar7.Type" xml:space="preserve">
<value>ArdupilotMega.HorizontalProgressBar, ArdupilotMegaPlanner10, Version=1.1.4640.13049, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;horizontalProgressBar7.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;horizontalProgressBar7.ZOrder" xml:space="preserve">
<value>14</value>
</data>
<data name="horizontalProgressBar6.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="horizontalProgressBar6.Location" type="System.Drawing.Point, System.Drawing">
<value>15, 296</value>
</data>
<data name="horizontalProgressBar6.Size" type="System.Drawing.Size, System.Drawing">
<value>170, 25</value>
</data>
<data name="horizontalProgressBar6.TabIndex" type="System.Int32, mscorlib">
<value>92</value>
</data>
<data name="&gt;&gt;horizontalProgressBar6.Name" xml:space="preserve">
<value>horizontalProgressBar6</value>
</data>
<data name="&gt;&gt;horizontalProgressBar6.Type" xml:space="preserve">
<value>ArdupilotMega.HorizontalProgressBar, ArdupilotMegaPlanner10, Version=1.1.4640.13049, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;horizontalProgressBar6.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;horizontalProgressBar6.ZOrder" xml:space="preserve">
<value>15</value>
</data>
<data name="horizontalProgressBar5.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="horizontalProgressBar5.Location" type="System.Drawing.Point, System.Drawing">
<value>15, 241</value>
</data>
<data name="horizontalProgressBar5.Size" type="System.Drawing.Size, System.Drawing">
<value>170, 25</value>
</data>
<data name="horizontalProgressBar5.TabIndex" type="System.Int32, mscorlib">
<value>91</value>
</data>
<data name="&gt;&gt;horizontalProgressBar5.Name" xml:space="preserve">
<value>horizontalProgressBar5</value>
</data>
<data name="&gt;&gt;horizontalProgressBar5.Type" xml:space="preserve">
<value>ArdupilotMega.HorizontalProgressBar, ArdupilotMegaPlanner10, Version=1.1.4640.13049, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;horizontalProgressBar5.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;horizontalProgressBar5.ZOrder" xml:space="preserve">
<value>16</value>
</data>
<data name="horizontalProgressBar4.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="horizontalProgressBar4.Location" type="System.Drawing.Point, System.Drawing">
<value>15, 186</value>
</data>
<data name="horizontalProgressBar4.Size" type="System.Drawing.Size, System.Drawing">
<value>170, 25</value>
</data>
<data name="horizontalProgressBar4.TabIndex" type="System.Int32, mscorlib">
<value>90</value>
</data>
<data name="&gt;&gt;horizontalProgressBar4.Name" xml:space="preserve">
<value>horizontalProgressBar4</value>
</data>
<data name="&gt;&gt;horizontalProgressBar4.Type" xml:space="preserve">
<value>ArdupilotMega.HorizontalProgressBar, ArdupilotMegaPlanner10, Version=1.1.4640.13049, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;horizontalProgressBar4.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;horizontalProgressBar4.ZOrder" xml:space="preserve">
<value>17</value>
</data>
<data name="horizontalProgressBar3.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="horizontalProgressBar3.Location" type="System.Drawing.Point, System.Drawing">
<value>15, 131</value>
</data>
<data name="horizontalProgressBar3.Size" type="System.Drawing.Size, System.Drawing">
<value>170, 25</value>
</data>
<data name="horizontalProgressBar3.TabIndex" type="System.Int32, mscorlib">
<value>89</value>
</data>
<data name="&gt;&gt;horizontalProgressBar3.Name" xml:space="preserve">
<value>horizontalProgressBar3</value>
</data>
<data name="&gt;&gt;horizontalProgressBar3.Type" xml:space="preserve">
<value>ArdupilotMega.HorizontalProgressBar, ArdupilotMegaPlanner10, Version=1.1.4640.13049, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;horizontalProgressBar3.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;horizontalProgressBar3.ZOrder" xml:space="preserve">
<value>18</value>
</data>
<data name="horizontalProgressBar2.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="horizontalProgressBar2.Location" type="System.Drawing.Point, System.Drawing">
<value>15, 21</value>
</data>
<data name="horizontalProgressBar2.Size" type="System.Drawing.Size, System.Drawing">
<value>170, 25</value>
</data>
<data name="horizontalProgressBar2.TabIndex" type="System.Int32, mscorlib">
<value>88</value>
</data>
<data name="&gt;&gt;horizontalProgressBar2.Name" xml:space="preserve">
<value>horizontalProgressBar2</value>
</data>
<data name="&gt;&gt;horizontalProgressBar2.Type" xml:space="preserve">
<value>ArdupilotMega.HorizontalProgressBar, ArdupilotMegaPlanner10, Version=1.1.4640.13049, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;horizontalProgressBar2.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;horizontalProgressBar2.ZOrder" xml:space="preserve">
<value>19</value>
</data>
<data name="horizontalProgressBar1.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="horizontalProgressBar1.Location" type="System.Drawing.Point, System.Drawing">
<value>15, 76</value>
</data>
<data name="horizontalProgressBar1.Size" type="System.Drawing.Size, System.Drawing">
<value>170, 25</value>
</data>
<data name="horizontalProgressBar1.TabIndex" type="System.Int32, mscorlib">
<value>87</value>
</data>
<data name="&gt;&gt;horizontalProgressBar1.Name" xml:space="preserve">
<value>horizontalProgressBar1</value>
</data>
<data name="&gt;&gt;horizontalProgressBar1.Type" xml:space="preserve">
<value>ArdupilotMega.HorizontalProgressBar, ArdupilotMegaPlanner10, Version=1.1.4640.13049, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;horizontalProgressBar1.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;horizontalProgressBar1.ZOrder" xml:space="preserve">
<value>20</value>
</data>
<data name="lbl_currentmode.Font" type="System.Drawing.Font, System.Drawing">
<value>Microsoft Sans Serif, 26.25pt</value>
</data>
<data name="lbl_currentmode.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="lbl_currentmode.Location" type="System.Drawing.Point, System.Drawing">
<value>473, 21</value>
</data>
<data name="lbl_currentmode.Size" type="System.Drawing.Size, System.Drawing">
<value>275, 50</value>
</data>
<data name="lbl_currentmode.TabIndex" type="System.Int32, mscorlib">
<value>140</value>
</data>
<data name="lbl_currentmode.Text" xml:space="preserve">
<value>Manual</value>
</data>
<data name="lbl_currentmode.TextAlign" type="System.Drawing.ContentAlignment, System.Drawing">
<value>MiddleCenter</value>
</data>
<data name="&gt;&gt;lbl_currentmode.Name" xml:space="preserve">
<value>lbl_currentmode</value>
</data>
<data name="&gt;&gt;lbl_currentmode.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;lbl_currentmode.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;lbl_currentmode.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<data name="mavlinkCheckBox1.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="mavlinkCheckBox1.Enabled" type="System.Boolean, mscorlib">
<value>False</value>
</data>
<data name="mavlinkCheckBox1.Location" type="System.Drawing.Point, System.Drawing">
<value>556, 94</value>
</data>
<data name="mavlinkCheckBox1.Size" type="System.Drawing.Size, System.Drawing">
<value>103, 17</value>
</data>
<data name="mavlinkCheckBox1.TabIndex" type="System.Int32, mscorlib">
<value>141</value>
</data>
<data name="mavlinkCheckBox1.Text" xml:space="preserve">
<value>Throttle FailSafe</value>
</data>
<data name="&gt;&gt;mavlinkCheckBox1.Name" xml:space="preserve">
<value>mavlinkCheckBox1</value>
</data>
<data name="&gt;&gt;mavlinkCheckBox1.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.MavlinkCheckBox, ArdupilotMegaPlanner10, Version=1.1.4640.13049, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;mavlinkCheckBox1.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;mavlinkCheckBox1.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="mavlinkNumericUpDown1.Enabled" type="System.Boolean, mscorlib">
<value>False</value>
</data>
<data name="mavlinkNumericUpDown1.Location" type="System.Drawing.Point, System.Drawing">
<value>556, 118</value>
</data>
<data name="mavlinkNumericUpDown1.Size" type="System.Drawing.Size, System.Drawing">
<value>120, 20</value>
</data>
<data name="mavlinkNumericUpDown1.TabIndex" type="System.Int32, mscorlib">
<value>142</value>
</data>
<data name="&gt;&gt;mavlinkNumericUpDown1.Name" xml:space="preserve">
<value>mavlinkNumericUpDown1</value>
</data>
<data name="&gt;&gt;mavlinkNumericUpDown1.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.MavlinkNumericUpDown, ArdupilotMegaPlanner10, Version=1.1.4640.13049, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;mavlinkNumericUpDown1.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;mavlinkNumericUpDown1.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>
<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>751, 478</value>
</data>
<data name="&gt;&gt;currentStateBindingSource.Name" xml:space="preserve">
<value>currentStateBindingSource</value>
</data>
<data name="&gt;&gt;currentStateBindingSource.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;$this.Name" xml:space="preserve">
<value>ConfigFailSafe</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,169 @@
<?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="CHK_elevonch2rev.Size" type="System.Drawing.Size, System.Drawing">
<value>115, 17</value>
</data>
<data name="CHK_elevonch2rev.Text" xml:space="preserve">
<value>Elevons CH2 逆转</value>
</data>
<data name="CHK_elevonrev.Size" type="System.Drawing.Size, System.Drawing">
<value>91, 17</value>
</data>
<data name="CHK_elevonrev.Text" xml:space="preserve">
<value>Elevons 逆转</value>
</data>
<data name="CHK_elevonch1rev.Size" type="System.Drawing.Size, System.Drawing">
<value>115, 17</value>
</data>
<data name="CHK_elevonch1rev.Text" xml:space="preserve">
<value>Elevons CH1 逆转</value>
</data>
<data name="groupBoxElevons.Text" xml:space="preserve">
<value>升降副翼 (Elevon) 配置</value>
</data>
<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>
</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

@ -32,14 +32,14 @@
this.BUT_MagCalibrationLive = new ArdupilotMega.Controls.MyButton();
this.label27 = new System.Windows.Forms.Label();
this.CMB_sonartype = new System.Windows.Forms.ComboBox();
this.CHK_enableoptflow = new System.Windows.Forms.CheckBox();
this.CHK_enableoptflow = new ArdupilotMega.Controls.MavlinkCheckBox();
this.pictureBox2 = new System.Windows.Forms.PictureBox();
this.linkLabelmagdec = new System.Windows.Forms.LinkLabel();
this.label100 = new System.Windows.Forms.Label();
this.TXT_declination = new System.Windows.Forms.TextBox();
this.CHK_enableairspeed = new System.Windows.Forms.CheckBox();
this.CHK_enablesonar = new System.Windows.Forms.CheckBox();
this.CHK_enablecompass = new System.Windows.Forms.CheckBox();
this.CHK_enableairspeed = new ArdupilotMega.Controls.MavlinkCheckBox();
this.CHK_enablesonar = new ArdupilotMega.Controls.MavlinkCheckBox();
this.CHK_enablecompass = new ArdupilotMega.Controls.MavlinkCheckBox();
this.pictureBox4 = new System.Windows.Forms.PictureBox();
this.pictureBox3 = new System.Windows.Forms.PictureBox();
this.pictureBox1 = new System.Windows.Forms.PictureBox();
@ -53,6 +53,7 @@
this.groupBox3 = new System.Windows.Forms.GroupBox();
this.label3 = new System.Windows.Forms.Label();
this.groupBox4 = new System.Windows.Forms.GroupBox();
this.CHK_airspeeduse = new ArdupilotMega.Controls.MavlinkCheckBox();
((System.ComponentModel.ISupportInitialize)(this.pictureBox2)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.pictureBox4)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.pictureBox3)).BeginInit();
@ -87,6 +88,10 @@
//
resources.ApplyResources(this.CHK_enableoptflow, "CHK_enableoptflow");
this.CHK_enableoptflow.Name = "CHK_enableoptflow";
this.CHK_enableoptflow.OffValue = 0F;
this.CHK_enableoptflow.OnValue = 1F;
this.CHK_enableoptflow.param = null;
this.CHK_enableoptflow.ParamName = null;
this.CHK_enableoptflow.UseVisualStyleBackColor = true;
this.CHK_enableoptflow.CheckedChanged += new System.EventHandler(this.CHK_enableoptflow_CheckedChanged);
//
@ -121,6 +126,10 @@
//
resources.ApplyResources(this.CHK_enableairspeed, "CHK_enableairspeed");
this.CHK_enableairspeed.Name = "CHK_enableairspeed";
this.CHK_enableairspeed.OffValue = 0F;
this.CHK_enableairspeed.OnValue = 1F;
this.CHK_enableairspeed.param = null;
this.CHK_enableairspeed.ParamName = null;
this.CHK_enableairspeed.UseVisualStyleBackColor = true;
this.CHK_enableairspeed.CheckedChanged += new System.EventHandler(this.CHK_enableairspeed_CheckedChanged);
//
@ -128,6 +137,10 @@
//
resources.ApplyResources(this.CHK_enablesonar, "CHK_enablesonar");
this.CHK_enablesonar.Name = "CHK_enablesonar";
this.CHK_enablesonar.OffValue = 0F;
this.CHK_enablesonar.OnValue = 1F;
this.CHK_enablesonar.param = null;
this.CHK_enablesonar.ParamName = null;
this.CHK_enablesonar.UseVisualStyleBackColor = true;
this.CHK_enablesonar.CheckedChanged += new System.EventHandler(this.CHK_enablesonar_CheckedChanged);
//
@ -135,6 +148,10 @@
//
resources.ApplyResources(this.CHK_enablecompass, "CHK_enablecompass");
this.CHK_enablecompass.Name = "CHK_enablecompass";
this.CHK_enablecompass.OffValue = 0F;
this.CHK_enablecompass.OnValue = 1F;
this.CHK_enablecompass.param = null;
this.CHK_enablecompass.ParamName = null;
this.CHK_enablecompass.UseVisualStyleBackColor = true;
this.CHK_enablecompass.CheckedChanged += new System.EventHandler(this.CHK_enablecompass_CheckedChanged);
//
@ -222,10 +239,21 @@
this.groupBox4.Name = "groupBox4";
this.groupBox4.TabStop = false;
//
// CHK_airspeeduse
//
resources.ApplyResources(this.CHK_airspeeduse, "CHK_airspeeduse");
this.CHK_airspeeduse.Name = "CHK_airspeeduse";
this.CHK_airspeeduse.OffValue = 0F;
this.CHK_airspeeduse.OnValue = 1F;
this.CHK_airspeeduse.param = null;
this.CHK_airspeeduse.ParamName = null;
this.CHK_airspeeduse.UseVisualStyleBackColor = true;
//
// ConfigHardwareOptions
//
resources.ApplyResources(this, "$this");
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.Controls.Add(this.CHK_airspeeduse);
this.Controls.Add(this.CHK_enableoptflow);
this.Controls.Add(this.label3);
this.Controls.Add(this.groupBox4);
@ -265,14 +293,14 @@
private ArdupilotMega.Controls.MyButton BUT_MagCalibrationLive;
private System.Windows.Forms.Label label27;
private System.Windows.Forms.ComboBox CMB_sonartype;
private System.Windows.Forms.CheckBox CHK_enableoptflow;
private ArdupilotMega.Controls.MavlinkCheckBox CHK_enableoptflow;
private System.Windows.Forms.PictureBox pictureBox2;
private System.Windows.Forms.LinkLabel linkLabelmagdec;
private System.Windows.Forms.Label label100;
private System.Windows.Forms.TextBox TXT_declination;
private System.Windows.Forms.CheckBox CHK_enableairspeed;
private System.Windows.Forms.CheckBox CHK_enablesonar;
private System.Windows.Forms.CheckBox CHK_enablecompass;
private ArdupilotMega.Controls.MavlinkCheckBox CHK_enableairspeed;
private ArdupilotMega.Controls.MavlinkCheckBox CHK_enablesonar;
private ArdupilotMega.Controls.MavlinkCheckBox CHK_enablecompass;
private System.Windows.Forms.PictureBox pictureBox4;
private System.Windows.Forms.PictureBox pictureBox3;
private System.Windows.Forms.PictureBox pictureBox1;
@ -286,5 +314,6 @@
private System.Windows.Forms.GroupBox groupBox3;
private System.Windows.Forms.Label label3;
private System.Windows.Forms.GroupBox groupBox4;
private Controls.MavlinkCheckBox CHK_airspeeduse;
}
}

View File

@ -247,21 +247,12 @@ namespace ArdupilotMega.GCSViews.ConfigurationView
startup = true;
if (MainV2.comPort.param["ARSPD_ENABLE"] != null)
{
CHK_enableairspeed.Checked = MainV2.comPort.param["ARSPD_ENABLE"].ToString() == "1" ? true : false;
CHK_enableairspeed.Enabled = true;
}
if (MainV2.comPort.param["SONAR_ENABLE"] != null)
{
CHK_enablesonar.Checked = MainV2.comPort.param["SONAR_ENABLE"].ToString() == "1" ? true : false;
CHK_enablesonar.Enabled = true;
}
if (MainV2.comPort.param["MAG_ENABLE"] != null)
{
CHK_enablecompass.Checked = MainV2.comPort.param["MAG_ENABLE"].ToString() == "1" ? true : false;
CHK_enablecompass.Enabled = true;
}
CHK_airspeeduse.setup(1, 0, "ARSPD_USE", MainV2.comPort.param);
CHK_enableairspeed.setup(1, 0, "ARSPD_ENABLE", MainV2.comPort.param);
CHK_enablecompass.setup(1, 0, "MAG_ENABLE", MainV2.comPort.param, TXT_declination);
CHK_enableoptflow.setup(1,0,"FLOW_ENABLE", MainV2.comPort.param);
CHK_enablesonar.setup(1, 0, "SONAR_ENABLE", MainV2.comPort.param, CMB_sonartype);
if (MainV2.comPort.param["COMPASS_DEC"] != null)
{
TXT_declination.Text = (float.Parse(MainV2.comPort.param["COMPASS_DEC"].ToString()) * rad2deg).ToString();
@ -270,11 +261,6 @@ namespace ArdupilotMega.GCSViews.ConfigurationView
{
CMB_sonartype.SelectedIndex = int.Parse(MainV2.comPort.param["SONAR_TYPE"].ToString());
}
if (MainV2.comPort.param["FLOW_ENABLE"] != null)
{
CHK_enableoptflow.Checked = MainV2.comPort.param["FLOW_ENABLE"].ToString() == "1" ? true : false;
CHK_enableoptflow.Enabled = true;
}
if (MainV2.comPort.param["COMPASS_AUTODEC"] != null)
{
CHK_autodec.Checked = MainV2.comPort.param["COMPASS_AUTODEC"].ToString() == "1" ? true : false;

View File

@ -139,13 +139,13 @@
<value>BUT_MagCalibrationLive</value>
</data>
<data name="&gt;&gt;BUT_MagCalibrationLive.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner10, Version=1.1.4592.29704, Culture=neutral, PublicKeyToken=null</value>
<value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner10, Version=1.1.4645.30967, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;BUT_MagCalibrationLive.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;BUT_MagCalibrationLive.ZOrder" xml:space="preserve">
<value>14</value>
<value>15</value>
</data>
<data name="label27.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
@ -172,7 +172,7 @@
<value>$this</value>
</data>
<data name="&gt;&gt;label27.ZOrder" xml:space="preserve">
<value>15</value>
<value>16</value>
</data>
<data name="CMB_sonartype.Items" xml:space="preserve">
<value>XL-EZ0</value>
@ -205,7 +205,7 @@
<value>$this</value>
</data>
<data name="&gt;&gt;CMB_sonartype.ZOrder" xml:space="preserve">
<value>16</value>
<value>17</value>
</data>
<data name="CHK_enableoptflow.Enabled" type="System.Boolean, mscorlib">
<value>False</value>
@ -229,13 +229,13 @@
<value>CHK_enableoptflow</value>
</data>
<data name="&gt;&gt;CHK_enableoptflow.Type" xml:space="preserve">
<value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<value>ArdupilotMega.Controls.MavlinkCheckBox, ArdupilotMegaPlanner10, Version=1.1.4645.30967, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;CHK_enableoptflow.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;CHK_enableoptflow.ZOrder" xml:space="preserve">
<value>0</value>
<value>1</value>
</data>
<data name="pictureBox2.BackgroundImageLayout" type="System.Windows.Forms.ImageLayout, System.Windows.Forms">
<value>Zoom</value>
@ -262,7 +262,7 @@
<value>$this</value>
</data>
<data name="&gt;&gt;pictureBox2.ZOrder" xml:space="preserve">
<value>17</value>
<value>18</value>
</data>
<data name="linkLabelmagdec.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
@ -292,7 +292,7 @@
<value>$this</value>
</data>
<data name="&gt;&gt;linkLabelmagdec.ZOrder" xml:space="preserve">
<value>18</value>
<value>19</value>
</data>
<data name="label100.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
@ -319,7 +319,7 @@
<value>$this</value>
</data>
<data name="&gt;&gt;label100.ZOrder" xml:space="preserve">
<value>19</value>
<value>20</value>
</data>
<data name="TXT_declination.Enabled" type="System.Boolean, mscorlib">
<value>False</value>
@ -343,7 +343,7 @@
<value>$this</value>
</data>
<data name="&gt;&gt;TXT_declination.ZOrder" xml:space="preserve">
<value>20</value>
<value>21</value>
</data>
<data name="CHK_enableairspeed.Enabled" type="System.Boolean, mscorlib">
<value>False</value>
@ -352,10 +352,10 @@
<value>NoControl</value>
</data>
<data name="CHK_enableairspeed.Location" type="System.Drawing.Point, System.Drawing">
<value>92, 249</value>
<value>92, 248</value>
</data>
<data name="CHK_enableairspeed.Size" type="System.Drawing.Size, System.Drawing">
<value>103, 17</value>
<value>70, 18</value>
</data>
<data name="CHK_enableairspeed.TabIndex" type="System.Int32, mscorlib">
<value>39</value>
@ -367,13 +367,13 @@
<value>CHK_enableairspeed</value>
</data>
<data name="&gt;&gt;CHK_enableairspeed.Type" xml:space="preserve">
<value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<value>ArdupilotMega.Controls.MavlinkCheckBox, ArdupilotMegaPlanner10, Version=1.1.4645.30967, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;CHK_enableairspeed.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;CHK_enableairspeed.ZOrder" xml:space="preserve">
<value>3</value>
<value>4</value>
</data>
<data name="CHK_enablesonar.Enabled" type="System.Boolean, mscorlib">
<value>False</value>
@ -397,13 +397,13 @@
<value>CHK_enablesonar</value>
</data>
<data name="&gt;&gt;CHK_enablesonar.Type" xml:space="preserve">
<value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<value>ArdupilotMega.Controls.MavlinkCheckBox, ArdupilotMegaPlanner10, Version=1.1.4645.30967, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;CHK_enablesonar.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;CHK_enablesonar.ZOrder" xml:space="preserve">
<value>6</value>
<value>7</value>
</data>
<data name="CHK_enablecompass.Enabled" type="System.Boolean, mscorlib">
<value>False</value>
@ -427,13 +427,13 @@
<value>CHK_enablecompass</value>
</data>
<data name="&gt;&gt;CHK_enablecompass.Type" xml:space="preserve">
<value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<value>ArdupilotMega.Controls.MavlinkCheckBox, ArdupilotMegaPlanner10, Version=1.1.4645.30967, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;CHK_enablecompass.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;CHK_enablecompass.ZOrder" xml:space="preserve">
<value>9</value>
<value>10</value>
</data>
<data name="pictureBox4.BackgroundImageLayout" type="System.Windows.Forms.ImageLayout, System.Windows.Forms">
<value>Zoom</value>
@ -460,7 +460,7 @@
<value>$this</value>
</data>
<data name="&gt;&gt;pictureBox4.ZOrder" xml:space="preserve">
<value>21</value>
<value>22</value>
</data>
<data name="pictureBox3.BackgroundImageLayout" type="System.Windows.Forms.ImageLayout, System.Windows.Forms">
<value>Zoom</value>
@ -487,7 +487,7 @@
<value>$this</value>
</data>
<data name="&gt;&gt;pictureBox3.ZOrder" xml:space="preserve">
<value>22</value>
<value>23</value>
</data>
<data name="pictureBox1.BackgroundImageLayout" type="System.Windows.Forms.ImageLayout, System.Windows.Forms">
<value>Zoom</value>
@ -520,7 +520,7 @@
<value>$this</value>
</data>
<data name="&gt;&gt;pictureBox1.ZOrder" xml:space="preserve">
<value>23</value>
<value>24</value>
</data>
<data name="BUT_MagCalibrationLog.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
@ -541,13 +541,13 @@
<value>BUT_MagCalibrationLog</value>
</data>
<data name="&gt;&gt;BUT_MagCalibrationLog.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner10, Version=1.1.4592.29704, Culture=neutral, PublicKeyToken=null</value>
<value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner10, Version=1.1.4645.30967, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;BUT_MagCalibrationLog.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;BUT_MagCalibrationLog.ZOrder" xml:space="preserve">
<value>13</value>
<value>14</value>
</data>
<data name="CHK_autodec.Enabled" type="System.Boolean, mscorlib">
<value>False</value>
@ -577,7 +577,7 @@
<value>$this</value>
</data>
<data name="&gt;&gt;CHK_autodec.ZOrder" xml:space="preserve">
<value>12</value>
<value>13</value>
</data>
<data name="label5.Font" type="System.Drawing.Font, System.Drawing">
<value>Microsoft Sans Serif, 12pt</value>
@ -604,7 +604,7 @@
<value>$this</value>
</data>
<data name="&gt;&gt;label5.ZOrder" xml:space="preserve">
<value>10</value>
<value>11</value>
</data>
<data name="groupBox2.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Left, Right</value>
@ -628,7 +628,7 @@
<value>$this</value>
</data>
<data name="&gt;&gt;groupBox2.ZOrder" xml:space="preserve">
<value>11</value>
<value>12</value>
</data>
<data name="label1.Font" type="System.Drawing.Font, System.Drawing">
<value>Microsoft Sans Serif, 12pt</value>
@ -658,7 +658,7 @@
<value>$this</value>
</data>
<data name="&gt;&gt;label1.ZOrder" xml:space="preserve">
<value>7</value>
<value>8</value>
</data>
<data name="groupBox1.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Left, Right</value>
@ -682,7 +682,7 @@
<value>$this</value>
</data>
<data name="&gt;&gt;groupBox1.ZOrder" xml:space="preserve">
<value>8</value>
<value>9</value>
</data>
<data name="label2.Font" type="System.Drawing.Font, System.Drawing">
<value>Microsoft Sans Serif, 12pt</value>
@ -712,7 +712,7 @@
<value>$this</value>
</data>
<data name="&gt;&gt;label2.ZOrder" xml:space="preserve">
<value>4</value>
<value>5</value>
</data>
<data name="groupBox3.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Left, Right</value>
@ -736,7 +736,7 @@
<value>$this</value>
</data>
<data name="&gt;&gt;groupBox3.ZOrder" xml:space="preserve">
<value>5</value>
<value>6</value>
</data>
<data name="label3.Font" type="System.Drawing.Font, System.Drawing">
<value>Microsoft Sans Serif, 12pt</value>
@ -766,7 +766,7 @@
<value>$this</value>
</data>
<data name="&gt;&gt;label3.ZOrder" xml:space="preserve">
<value>1</value>
<value>2</value>
</data>
<data name="groupBox4.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Left, Right</value>
@ -790,7 +790,37 @@
<value>$this</value>
</data>
<data name="&gt;&gt;groupBox4.ZOrder" xml:space="preserve">
<value>2</value>
<value>3</value>
</data>
<data name="CHK_airspeeduse.Enabled" type="System.Boolean, mscorlib">
<value>False</value>
</data>
<data name="CHK_airspeeduse.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="CHK_airspeeduse.Location" type="System.Drawing.Point, System.Drawing">
<value>168, 249</value>
</data>
<data name="CHK_airspeeduse.Size" type="System.Drawing.Size, System.Drawing">
<value>103, 17</value>
</data>
<data name="CHK_airspeeduse.TabIndex" type="System.Int32, mscorlib">
<value>73</value>
</data>
<data name="CHK_airspeeduse.Text" xml:space="preserve">
<value>Use Airspeed</value>
</data>
<data name="&gt;&gt;CHK_airspeeduse.Name" xml:space="preserve">
<value>CHK_airspeeduse</value>
</data>
<data name="&gt;&gt;CHK_airspeeduse.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.MavlinkCheckBox, ArdupilotMegaPlanner10, Version=1.1.4645.30967, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;CHK_airspeeduse.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;CHK_airspeeduse.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>

View File

@ -85,8 +85,10 @@ namespace ArdupilotMega.GCSViews.ConfigurationView
enum Channelinput
{
Disable = 0,
RC5 = 5,
RC6 = 6,
RC7 = 7
RC7 = 7,
RC8 = 8
}
public void Activate()

View File

@ -1,35 +1,35 @@
using ArdupilotMega.Controls;
using ArdupilotMega.Presenter;
namespace ArdupilotMega.GCSViews.ConfigurationView
{
partial class ConfigMount
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary> pi
/// 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()
using ArdupilotMega.Controls;
using ArdupilotMega.Presenter;
namespace ArdupilotMega.GCSViews.ConfigurationView
{
partial class ConfigMount
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary> pi
/// 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()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ConfigMount));
this.pictureBox1 = new System.Windows.Forms.PictureBox();
@ -106,9 +106,9 @@ namespace ArdupilotMega.GCSViews.ConfigurationView
//
// pictureBox1
//
resources.ApplyResources(this.pictureBox1, "pictureBox1");
this.pictureBox1.BackColor = System.Drawing.Color.Transparent;
this.pictureBox1.BackgroundImage = global::ArdupilotMega.Properties.Resources.cameraGimalPitch1;
resources.ApplyResources(this.pictureBox1, "pictureBox1");
this.pictureBox1.Name = "pictureBox1";
this.pictureBox1.TabStop = false;
//
@ -120,8 +120,8 @@ namespace ArdupilotMega.GCSViews.ConfigurationView
//
// pictureBox2
//
resources.ApplyResources(this.pictureBox2, "pictureBox2");
this.pictureBox2.BackgroundImage = global::ArdupilotMega.Properties.Resources.cameraGimalRoll1;
resources.ApplyResources(this.pictureBox2, "pictureBox2");
this.pictureBox2.Name = "pictureBox2";
this.pictureBox2.TabStop = false;
//
@ -180,8 +180,8 @@ namespace ArdupilotMega.GCSViews.ConfigurationView
//
// pictureBox3
//
resources.ApplyResources(this.pictureBox3, "pictureBox3");
this.pictureBox3.BackgroundImage = global::ArdupilotMega.Properties.Resources.cameraGimalYaw;
resources.ApplyResources(this.pictureBox3, "pictureBox3");
this.pictureBox3.Name = "pictureBox3";
this.pictureBox3.TabStop = false;
//
@ -655,32 +655,32 @@ namespace ArdupilotMega.GCSViews.ConfigurationView
//
// mavlinkComboBoxTilt
//
resources.ApplyResources(this.mavlinkComboBoxTilt, "mavlinkComboBoxTilt");
this.mavlinkComboBoxTilt.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.mavlinkComboBoxTilt.FormattingEnabled = true;
resources.ApplyResources(this.mavlinkComboBoxTilt, "mavlinkComboBoxTilt");
this.mavlinkComboBoxTilt.Name = "mavlinkComboBoxTilt";
this.mavlinkComboBoxTilt.SelectedIndexChanged += new System.EventHandler(this.mavlinkComboBox_SelectedIndexChanged);
//
// mavlinkComboBoxRoll
//
resources.ApplyResources(this.mavlinkComboBoxRoll, "mavlinkComboBoxRoll");
this.mavlinkComboBoxRoll.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.mavlinkComboBoxRoll.FormattingEnabled = true;
resources.ApplyResources(this.mavlinkComboBoxRoll, "mavlinkComboBoxRoll");
this.mavlinkComboBoxRoll.Name = "mavlinkComboBoxRoll";
this.mavlinkComboBoxRoll.SelectedIndexChanged += new System.EventHandler(this.mavlinkComboBox_SelectedIndexChanged);
//
// mavlinkComboBoxPan
//
resources.ApplyResources(this.mavlinkComboBoxPan, "mavlinkComboBoxPan");
this.mavlinkComboBoxPan.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.mavlinkComboBoxPan.FormattingEnabled = true;
resources.ApplyResources(this.mavlinkComboBoxPan, "mavlinkComboBoxPan");
this.mavlinkComboBoxPan.Name = "mavlinkComboBoxPan";
this.mavlinkComboBoxPan.SelectedIndexChanged += new System.EventHandler(this.mavlinkComboBox_SelectedIndexChanged);
//
// CMB_inputch_tilt
//
resources.ApplyResources(this.CMB_inputch_tilt, "CMB_inputch_tilt");
this.CMB_inputch_tilt.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
resources.ApplyResources(this.CMB_inputch_tilt, "CMB_inputch_tilt");
this.CMB_inputch_tilt.FormattingEnabled = true;
this.CMB_inputch_tilt.Name = "CMB_inputch_tilt";
this.CMB_inputch_tilt.param = null;
@ -698,8 +698,8 @@ namespace ArdupilotMega.GCSViews.ConfigurationView
//
// CMB_inputch_roll
//
resources.ApplyResources(this.CMB_inputch_roll, "CMB_inputch_roll");
this.CMB_inputch_roll.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
resources.ApplyResources(this.CMB_inputch_roll, "CMB_inputch_roll");
this.CMB_inputch_roll.FormattingEnabled = true;
this.CMB_inputch_roll.Name = "CMB_inputch_roll";
this.CMB_inputch_roll.param = null;
@ -712,8 +712,8 @@ namespace ArdupilotMega.GCSViews.ConfigurationView
//
// CMB_inputch_pan
//
resources.ApplyResources(this.CMB_inputch_pan, "CMB_inputch_pan");
this.CMB_inputch_pan.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
resources.ApplyResources(this.CMB_inputch_pan, "CMB_inputch_pan");
this.CMB_inputch_pan.FormattingEnabled = true;
this.CMB_inputch_pan.Name = "CMB_inputch_pan";
this.CMB_inputch_pan.param = null;
@ -721,7 +721,6 @@ namespace ArdupilotMega.GCSViews.ConfigurationView
//
// ConfigMount
//
resources.ApplyResources(this, "$this");
this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(38)))), ((int)(((byte)(39)))), ((int)(((byte)(40)))));
this.Controls.Add(this.label24);
this.Controls.Add(this.CMB_inputch_pan);
@ -778,6 +777,7 @@ namespace ArdupilotMega.GCSViews.ConfigurationView
this.Controls.Add(this.pictureBox2);
this.Controls.Add(this.pictureBox1);
this.Name = "ConfigMount";
resources.ApplyResources(this, "$this");
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.pictureBox2)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.PBOX_WarningIcon)).EndInit();
@ -797,64 +797,64 @@ namespace ArdupilotMega.GCSViews.ConfigurationView
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.PictureBox pictureBox1;
private System.Windows.Forms.PictureBox pictureBox2;
private System.Windows.Forms.GroupBox groupBox1;
private System.Windows.Forms.GroupBox groupBox2;
private System.Windows.Forms.Label label6;
private System.Windows.Forms.Label label5;
private PictureBoxWithPseudoOpacity PBOX_WarningIcon;
private LabelWithPseudoOpacity LBL_Error;
private System.Windows.Forms.LinkLabel LNK_wiki;
private System.Windows.Forms.Label label15;
private System.Windows.Forms.GroupBox groupBox3;
private System.Windows.Forms.PictureBox pictureBox3;
private System.Windows.Forms.Label label9;
private System.Windows.Forms.Label label10;
private System.Windows.Forms.Label label11;
private System.Windows.Forms.Label label12;
private MavlinkNumericUpDown mavlinkNumericUpDownRAM;
private MavlinkNumericUpDown mavlinkNumericUpDownRAMX;
private System.Windows.Forms.Label label13;
private System.Windows.Forms.Label label14;
private MavlinkNumericUpDown mavlinkNumericUpDownRSM;
private MavlinkNumericUpDown mavlinkNumericUpDownRSMX;
private MavlinkCheckBox mavlinkCheckBoxRR;
private System.Windows.Forms.Label label16;
private System.Windows.Forms.Label label17;
private System.Windows.Forms.Label label18;
private System.Windows.Forms.Label label19;
private MavlinkNumericUpDown mavlinkNumericUpDownPAM;
private MavlinkNumericUpDown mavlinkNumericUpDownPAMX;
private System.Windows.Forms.Label label20;
private System.Windows.Forms.Label label21;
private MavlinkNumericUpDown mavlinkNumericUpDownPSM;
private MavlinkNumericUpDown mavlinkNumericUpDownPSMX;
private MavlinkCheckBox mavlinkCheckBoxPR;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.Label label2;
private System.Windows.Forms.Label label3;
private System.Windows.Forms.Label label4;
private MavlinkNumericUpDown mavlinkNumericUpDownTAM;
private MavlinkNumericUpDown mavlinkNumericUpDownTAMX;
private System.Windows.Forms.Label label7;
private System.Windows.Forms.Label label8;
private MavlinkNumericUpDown mavlinkNumericUpDownTSM;
private MavlinkNumericUpDown mavlinkNumericUpDownTSMX;
private MavlinkCheckBox mavlinkCheckBoxTR;
private System.Windows.Forms.ComboBox mavlinkComboBoxTilt;
private System.Windows.Forms.ComboBox mavlinkComboBoxRoll;
private System.Windows.Forms.ComboBox mavlinkComboBoxPan;
private MavlinkComboBox CMB_inputch_tilt;
private System.Windows.Forms.Label label22;
private System.Windows.Forms.Label label23;
private MavlinkComboBox CMB_inputch_roll;
private System.Windows.Forms.Label label24;
private MavlinkComboBox CMB_inputch_pan;
}
}
}
#endregion
private System.Windows.Forms.PictureBox pictureBox1;
private System.Windows.Forms.PictureBox pictureBox2;
private System.Windows.Forms.GroupBox groupBox1;
private System.Windows.Forms.GroupBox groupBox2;
private System.Windows.Forms.Label label6;
private System.Windows.Forms.Label label5;
private PictureBoxWithPseudoOpacity PBOX_WarningIcon;
private LabelWithPseudoOpacity LBL_Error;
private System.Windows.Forms.LinkLabel LNK_wiki;
private System.Windows.Forms.Label label15;
private System.Windows.Forms.GroupBox groupBox3;
private System.Windows.Forms.PictureBox pictureBox3;
private System.Windows.Forms.Label label9;
private System.Windows.Forms.Label label10;
private System.Windows.Forms.Label label11;
private System.Windows.Forms.Label label12;
private MavlinkNumericUpDown mavlinkNumericUpDownRAM;
private MavlinkNumericUpDown mavlinkNumericUpDownRAMX;
private System.Windows.Forms.Label label13;
private System.Windows.Forms.Label label14;
private MavlinkNumericUpDown mavlinkNumericUpDownRSM;
private MavlinkNumericUpDown mavlinkNumericUpDownRSMX;
private MavlinkCheckBox mavlinkCheckBoxRR;
private System.Windows.Forms.Label label16;
private System.Windows.Forms.Label label17;
private System.Windows.Forms.Label label18;
private System.Windows.Forms.Label label19;
private MavlinkNumericUpDown mavlinkNumericUpDownPAM;
private MavlinkNumericUpDown mavlinkNumericUpDownPAMX;
private System.Windows.Forms.Label label20;
private System.Windows.Forms.Label label21;
private MavlinkNumericUpDown mavlinkNumericUpDownPSM;
private MavlinkNumericUpDown mavlinkNumericUpDownPSMX;
private MavlinkCheckBox mavlinkCheckBoxPR;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.Label label2;
private System.Windows.Forms.Label label3;
private System.Windows.Forms.Label label4;
private MavlinkNumericUpDown mavlinkNumericUpDownTAM;
private MavlinkNumericUpDown mavlinkNumericUpDownTAMX;
private System.Windows.Forms.Label label7;
private System.Windows.Forms.Label label8;
private MavlinkNumericUpDown mavlinkNumericUpDownTSM;
private MavlinkNumericUpDown mavlinkNumericUpDownTSMX;
private MavlinkCheckBox mavlinkCheckBoxTR;
private System.Windows.Forms.ComboBox mavlinkComboBoxTilt;
private System.Windows.Forms.ComboBox mavlinkComboBoxRoll;
private System.Windows.Forms.ComboBox mavlinkComboBoxPan;
private MavlinkComboBox CMB_inputch_tilt;
private System.Windows.Forms.Label label22;
private System.Windows.Forms.Label label23;
private MavlinkComboBox CMB_inputch_roll;
private System.Windows.Forms.Label label24;
private MavlinkComboBox CMB_inputch_pan;
}
}

View File

@ -83,7 +83,7 @@ namespace ArdupilotMega.GCSViews.ConfigurationView
CHK_revch3.Checked = MainV2.comPort.param["RC3_REV"].ToString() == "-1";
CHK_revch4.Checked = MainV2.comPort.param["RC4_REV"].ToString() == "-1";
}
catch (Exception ex) { CustomMessageBox.Show("Missing RC rev Param " + ex.ToString()); }
catch (Exception ex) { /*CustomMessageBox.Show("Missing RC rev Param " + ex.ToString());*/ }
startup = false;
}

View File

@ -13,7 +13,7 @@ namespace ArdupilotMega.GCSViews.ConfigurationView
{
public partial class Setup : MyUserControl
{
// remeber the last page accessed
// remember the last page accessed
static string lastpagename = "";
public Setup()
@ -22,10 +22,8 @@ namespace ArdupilotMega.GCSViews.ConfigurationView
ThemeManager.ApplyThemeTo(this);
}
private void Setup_Load(object sender, EventArgs e)
{
if (MainV2.comPort.BaseStream.IsOpen)
{
AddPagesForConnectedState();
@ -35,7 +33,7 @@ namespace ArdupilotMega.GCSViews.ConfigurationView
// These pages work when not connected to an APM
AddBackstageViewPage(new ArdupilotMega._3DRradio(), "3DR Radio");
AddBackstageViewPage(new ArdupilotMega.Antenna.Tracker(), "Antenna Tracker");
//backstageView.AddSpacer(15);
backstageView.AddSpacer(5);
AddBackstageViewPage(new ConfigPlanner(), "Planner");
// remeber last page accessed
@ -67,14 +65,15 @@ If you are just setting up 3DR radios, you may continue without connecting.");
AddBackstageViewPage(new ConfigRadioInput(), "Radio Calibration");
AddBackstageViewPage(new ConfigFlightModes(), "Flight Modes");
AddBackstageViewPage(new ConfigHardwareOptions(), "Hardware Options");
AddBackstageViewPage(new ConfigBatteryMonitoring(), "Battery Monitor");
AddBackstageViewPage(new ConfigFailSafe(), "FailSafe");
BackstageView.BackstageViewPage hardware = AddBackstageViewPage(new ConfigHardwareOptions(), "Hardware Options");
AddBackstageViewPage(new ConfigBatteryMonitoring(), "Battery Monitor", hardware);
/******************************HELI **************************/
if (MainV2.comPort.param["H_GYR_ENABLE"] != null) // heli
{
AddBackstageViewPage(new ConfigMount(), "Camera Gimbal");
AddBackstageViewPage(new ConfigMount(), "Camera Gimbal", hardware);
AddBackstageViewPage(new ConfigAccelerometerCalibrationQuad(), "ArduCopter Level");
@ -89,9 +88,7 @@ If you are just setting up 3DR radios, you may continue without connecting.");
/****************************** ArduCopter **************************/
else if (MainV2.cs.firmware == MainV2.Firmwares.ArduCopter2)
{
//AddBackstageViewPage(new ConfigCameraStab(), "Camera Gimbal");
AddBackstageViewPage(new ConfigMount(), "Camera Gimbal");
AddBackstageViewPage(new ConfigMount(), "Camera Gimbal", hardware);
AddBackstageViewPage(new ConfigAccelerometerCalibrationQuad(), "ArduCopter Level");
@ -104,7 +101,7 @@ If you are just setting up 3DR radios, you may continue without connecting.");
/****************************** ArduPlane **************************/
else if (MainV2.cs.firmware == MainV2.Firmwares.ArduPlane)
{
AddBackstageViewPage(new ConfigMount(), "Camera Gimbal");
AddBackstageViewPage(new ConfigMount(), "Camera Gimbal", hardware);
AddBackstageViewPage(new ConfigAccelerometerCalibrationPlane(), "ArduPlane Level");
AddBackstageViewPage(new ConfigArduplane(), "ArduPlane Pids");
@ -118,18 +115,18 @@ If you are just setting up 3DR radios, you may continue without connecting.");
AddBackstageViewPage(new ConfigFriendlyParams { ParameterMode = ParameterMetaDataConstants.Standard }, "Standard Params");
AddBackstageViewPage(new ConfigFriendlyParams { ParameterMode = ParameterMetaDataConstants.Advanced }, "Advanced Params");
AddBackstageViewPage(new ConfigRawParams(), "Parameter List");
AddBackstageViewPage(new ConfigRawParams(), "Adv Parameter List");
}
private void AddBackstageViewPage(UserControl userControl, string headerText)
private BackstageView.BackstageViewPage AddBackstageViewPage(UserControl userControl, string headerText, BackstageView.BackstageViewPage Parent = null)
{
backstageView.AddPage(userControl, headerText);
return backstageView.AddPage(userControl, headerText, Parent);
}
private void Setup_FormClosing(object sender, FormClosingEventArgs e)
{
lastpagename = backstageView.SelectedPage.LinkText;
if (backstageView.SelectedPage != null)
lastpagename = backstageView.SelectedPage.LinkText;
backstageView.Close();
}

View File

@ -0,0 +1,60 @@
namespace ArdupilotMega.GCSViews.ConfigurationView
{
partial class SetupFresh
{
/// <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.backstageView = new ArdupilotMega.Controls.BackstageView.BackstageView();
this.SuspendLayout();
//
// backstageView
//
this.backstageView.AutoSize = true;
this.backstageView.Dock = System.Windows.Forms.DockStyle.Fill;
this.backstageView.Location = new System.Drawing.Point(0, 0);
this.backstageView.Name = "backstageView";
this.backstageView.Size = new System.Drawing.Size(1008, 506);
this.backstageView.TabIndex = 0;
//
// Setup
//
this.Controls.Add(this.backstageView);
this.MinimumSize = new System.Drawing.Size(1000, 450);
this.Name = "Setup";
this.Size = new System.Drawing.Size(1008, 506);
this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.Setup_FormClosing);
this.Load += new System.EventHandler(this.Setup_Load);
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private Controls.BackstageView.BackstageView backstageView;
}
}

View File

@ -0,0 +1,110 @@
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.Utilities;
namespace ArdupilotMega.GCSViews.ConfigurationView
{
public partial class SetupFresh : MyUserControl
{
// remember the last page accessed
static string lastpagename = "";
public SetupFresh()
{
InitializeComponent();
ThemeManager.ApplyThemeTo(this);
}
private void Setup_Load(object sender, EventArgs e)
{
if (MainV2.comPort.BaseStream.IsOpen)
{
AddPagesForConnectedState();
// backstageView.AddSpacer(20);
}
// remeber last page accessed
foreach (BackstageView.BackstageViewPage page in backstageView.Pages) {
if (page.LinkText == lastpagename)
{
this.backstageView.ActivatePage(page);
break;
}
}
//this.backstageView.ActivatePage(backstageView.Pages[0]);
ThemeManager.ApplyThemeTo(this);
if (!MainV2.comPort.BaseStream.IsOpen)
{
Common.MessageShowAgain("Config Connect", @"Please connect (click Connect Button) before using setup.");
}
}
// Add the pages that can only be shown when we are connected to an APM
private void AddPagesForConnectedState()
{
/****************************** Common **************************/
AddBackstageViewPage(new ConfigRadioInput(), "Step 1: Radio Calib");
AddBackstageViewPage(new ConfigFlightModes(), "Step 2: Flight Modes");
AddBackstageViewPage(new ConfigFailSafe(), "Step 3: FailSafe");
BackstageView.BackstageViewPage hardware = AddBackstageViewPage(new ConfigHardwareOptions(), "Step 4: Hardware");
AddBackstageViewPage(new ConfigBatteryMonitoring(), "Step 5: Battery");
/******************************HELI **************************/
if (MainV2.comPort.param["H_GYR_ENABLE"] != null) // heli
{
AddBackstageViewPage(new ConfigMount(), "Step 6: Gimbal");
AddBackstageViewPage(new ConfigAccelerometerCalibrationQuad(), "Step 7: Level");
AddBackstageViewPage(new ConfigTradHeli(), "Step 8: Heli Setup");
}
/****************************** ArduCopter **************************/
else if (MainV2.cs.firmware == MainV2.Firmwares.ArduCopter2)
{
AddBackstageViewPage(new ConfigMount(), "Step 6: Gimbal");
AddBackstageViewPage(new ConfigAccelerometerCalibrationQuad(), "Step 7: Level");
}
/****************************** ArduPlane **************************/
else if (MainV2.cs.firmware == MainV2.Firmwares.ArduPlane)
{
AddBackstageViewPage(new ConfigMount(), "Step 6: Gimbal");
AddBackstageViewPage(new ConfigAccelerometerCalibrationPlane(), "Step 7: Level");
}
/****************************** ArduRover **************************/
else if (MainV2.cs.firmware == MainV2.Firmwares.ArduRover)
{
}
}
private BackstageView.BackstageViewPage AddBackstageViewPage(UserControl userControl, string headerText, BackstageView.BackstageViewPage Parent = null)
{
return backstageView.AddPage(userControl, headerText, Parent);
}
private void Setup_FormClosing(object sender, FormClosingEventArgs e)
{
if (backstageView.SelectedPage != null)
lastpagename = backstageView.SelectedPage.LinkText;
backstageView.Close();
}
}
}

View File

@ -0,0 +1,120 @@
<?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>
</root>

View File

@ -73,8 +73,11 @@ namespace ArdupilotMega.GCSViews
this.pictureBoxACHHil = new System.Windows.Forms.PictureBox();
this.pictureBoxOcta = new ArdupilotMega.Controls.ImageLabel();
this.pictureBoxOctav = new ArdupilotMega.Controls.ImageLabel();
this.pictureBoxRover = new ArdupilotMega.Controls.ImageLabel();
this.label1 = new System.Windows.Forms.Label();
this.CMB_history = new System.Windows.Forms.ComboBox();
this.CMB_history_label = new System.Windows.Forms.Label();
this.Custom_firmware_label = new System.Windows.Forms.Label();
((System.ComponentModel.ISupportInitialize)(this.pictureBoxHilimage)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.pictureBoxAPHil)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.pictureBoxACHil)).BeginInit();
@ -173,8 +176,6 @@ namespace ArdupilotMega.GCSViews
this.pictureBoxAPHil.Name = "pictureBoxAPHil";
this.pictureBoxAPHil.TabStop = false;
this.pictureBoxAPHil.Click += new System.EventHandler(this.pictureBoxAPHil_Click);
this.pictureBoxAPHil.MouseEnter += new System.EventHandler(this.pictureBoxAPHil_MouseEnter);
this.pictureBoxAPHil.MouseLeave += new System.EventHandler(this.pictureBoxAPHil_MouseLeave);
//
// pictureBoxACHil
//
@ -210,6 +211,15 @@ namespace ArdupilotMega.GCSViews
this.pictureBoxOctav.TabStop = false;
this.pictureBoxOctav.Click += new System.EventHandler(this.pictureBoxOctav_Click);
//
// pictureBoxRover
//
this.pictureBoxRover.Cursor = System.Windows.Forms.Cursors.Hand;
this.pictureBoxRover.Image = null;
resources.ApplyResources(this.pictureBoxRover, "pictureBoxRover");
this.pictureBoxRover.Name = "pictureBoxRover";
this.pictureBoxRover.TabStop = false;
this.pictureBoxRover.Click += new System.EventHandler(this.pictureBoxRover_Click);
//
// label1
//
resources.ApplyResources(this.label1, "label1");
@ -223,10 +233,27 @@ namespace ArdupilotMega.GCSViews
this.CMB_history.Name = "CMB_history";
this.CMB_history.SelectedIndexChanged += new System.EventHandler(this.CMB_history_SelectedIndexChanged);
//
// CMB_history_label
//
resources.ApplyResources(this.CMB_history_label, "CMB_history_label");
this.CMB_history_label.Cursor = System.Windows.Forms.Cursors.Hand;
this.CMB_history_label.Name = "CMB_history_label";
this.CMB_history_label.Click += new System.EventHandler(this.CMB_history_label_Click);
//
// Custom_firmware_label
//
resources.ApplyResources(this.Custom_firmware_label, "Custom_firmware_label");
this.Custom_firmware_label.Cursor = System.Windows.Forms.Cursors.Hand;
this.Custom_firmware_label.Name = "Custom_firmware_label";
this.Custom_firmware_label.Click += new System.EventHandler(this.Custom_firmware_label_Click);
//
// Firmware
//
resources.ApplyResources(this, "$this");
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.Controls.Add(this.Custom_firmware_label);
this.Controls.Add(this.CMB_history_label);
this.Controls.Add(this.pictureBoxRover);
this.Controls.Add(this.CMB_history);
this.Controls.Add(this.label1);
this.Controls.Add(this.BUT_setup);
@ -258,6 +285,9 @@ namespace ArdupilotMega.GCSViews
}
private ComboBox CMB_history;
private Controls.ImageLabel pictureBoxRover;
private Label CMB_history_label;
private Label Custom_firmware_label;
}
}

View File

@ -21,33 +21,9 @@ namespace ArdupilotMega.GCSViews
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
if (keyData == (Keys.Control | Keys.C))
{
var fd = new OpenFileDialog {Filter = "Firmware (*.hex)|*.hex"};
fd.ShowDialog();
if (File.Exists(fd.FileName))
{
UploadFlash(fd.FileName, ArduinoDetect.DetectBoard(MainV2.comPortName));
}
return true;
}
if (keyData == (Keys.Control | Keys.R))
{
findfirmware("AR2");
return true;
}
if (keyData == (Keys.Control | Keys.O))
{
CMB_history.Enabled = false;
CMB_history.DataSource = oldurls;
CMB_history.Enabled = true;
CMB_history.Visible = true;
}
//CTRL+R moved to pictureBoxRover_Click
//CTRL+O moved to CMB_history_label_Click
//CTRL+C moved to Custom_firmware_label_Click
return base.ProcessCmdKey(ref msg, keyData);
}
@ -78,6 +54,7 @@ namespace ArdupilotMega.GCSViews
WebRequest.DefaultWebProxy.Credentials = System.Net.CredentialCache.DefaultCredentials;
this.pictureBoxAPM.Image = ArdupilotMega.Properties.Resources.APM_airframes_001;
this.pictureBoxRover.Image = ArdupilotMega.Properties.Resources.APM_rover_firmware;
this.pictureBoxQuad.Image = ArdupilotMega.Properties.Resources.quad;
this.pictureBoxHexa.Image = ArdupilotMega.Properties.Resources.hexa;
this.pictureBoxTri.Image = ArdupilotMega.Properties.Resources.tri;
@ -178,6 +155,10 @@ namespace ArdupilotMega.GCSViews
void updateDisplayName(software temp)
{
if (temp.url.ToLower().Contains("AR2".ToLower()))
{
pictureBoxRover.Text = temp.name;
}
if (temp.url.ToLower().Contains("firmware/AP-1".ToLower()))
{
pictureBoxAPM.Text = temp.name;
@ -259,6 +240,10 @@ namespace ArdupilotMega.GCSViews
}
}
private void pictureBoxRover_Click(object sender, EventArgs e)
{
findfirmware("AR2");
}
private void pictureBoxAPM_Click(object sender, EventArgs e)
{
findfirmware("firmware/AP-1");
@ -710,7 +695,7 @@ namespace ArdupilotMega.GCSViews
private void BUT_setup_Click(object sender, EventArgs e)
{
Form temp = new Form();
MyUserControl configview = new GCSViews.ConfigurationView.Setup();
MyUserControl configview = new GCSViews.ConfigurationView.SetupFresh();
temp.Controls.Add(configview);
ThemeManager.ApplyThemeTo(temp);
// fix title
@ -747,21 +732,34 @@ namespace ArdupilotMega.GCSViews
findfirmware("AC2-HELHIL-");
}
private void pictureBoxAPHil_MouseEnter(object sender, EventArgs e)
{
}
private void pictureBoxAPHil_MouseLeave(object sender, EventArgs e)
{
}
private void CMB_history_SelectedIndexChanged(object sender, EventArgs e)
{
firmwareurl = oldurl.Replace("!Hash!", CMB_history.Text);
Firmware_Load(null, null);
}
//Show list of previous firmware versions (old CTRL+O shortcut)
private void CMB_history_label_Click(object sender, EventArgs e)
{
CMB_history.Enabled = false;
CMB_history.DataSource = oldurls;
CMB_history.Enabled = true;
CMB_history.Visible = true;
CMB_history_label.Visible = false;
}
//Load custom firmware (old CTRL+C shortcut)
private void Custom_firmware_label_Click(object sender, EventArgs e)
{
var fd = new OpenFileDialog { Filter = "Firmware (*.hex)|*.hex" };
fd.ShowDialog();
if (File.Exists(fd.FileName))
{
UploadFlash(fd.FileName, ArduinoDetect.DetectBoard(MainV2.comPortName));
}
}
}
}

View File

@ -123,7 +123,7 @@
</data>
<assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="pictureBoxAPM.Location" type="System.Drawing.Point, System.Drawing">
<value>94, 0</value>
<value>237, 0</value>
</data>
<data name="pictureBoxAPM.Size" type="System.Drawing.Size, System.Drawing">
<value>170, 170</value>
@ -136,19 +136,19 @@
<value>pictureBoxAPM</value>
</data>
<data name="&gt;&gt;pictureBoxAPM.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.ImageLabel, ArdupilotMegaPlanner10, Version=1.1.4620.38627, Culture=neutral, PublicKeyToken=null</value>
<value>ArdupilotMega.Controls.ImageLabel, ArdupilotMegaPlanner10, Version=1.1.4645.32344, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;pictureBoxAPM.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;pictureBoxAPM.ZOrder" xml:space="preserve">
<value>17</value>
<value>20</value>
</data>
<data name="pictureBoxQuad.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="pictureBoxQuad.Location" type="System.Drawing.Point, System.Drawing">
<value>304, 0</value>
<value>413, 0</value>
</data>
<data name="pictureBoxQuad.Size" type="System.Drawing.Size, System.Drawing">
<value>170, 170</value>
@ -160,19 +160,19 @@
<value>pictureBoxQuad</value>
</data>
<data name="&gt;&gt;pictureBoxQuad.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.ImageLabel, ArdupilotMegaPlanner10, Version=1.1.4620.38627, Culture=neutral, PublicKeyToken=null</value>
<value>ArdupilotMega.Controls.ImageLabel, ArdupilotMegaPlanner10, Version=1.1.4645.32344, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;pictureBoxQuad.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;pictureBoxQuad.ZOrder" xml:space="preserve">
<value>16</value>
<value>19</value>
</data>
<data name="pictureBoxHexa.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="pictureBoxHexa.Location" type="System.Drawing.Point, System.Drawing">
<value>500, 0</value>
<value>589, 0</value>
</data>
<data name="pictureBoxHexa.Size" type="System.Drawing.Size, System.Drawing">
<value>170, 170</value>
@ -184,19 +184,19 @@
<value>pictureBoxHexa</value>
</data>
<data name="&gt;&gt;pictureBoxHexa.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.ImageLabel, ArdupilotMegaPlanner10, Version=1.1.4620.38627, Culture=neutral, PublicKeyToken=null</value>
<value>ArdupilotMega.Controls.ImageLabel, ArdupilotMegaPlanner10, Version=1.1.4645.32344, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;pictureBoxHexa.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;pictureBoxHexa.ZOrder" xml:space="preserve">
<value>15</value>
<value>18</value>
</data>
<data name="pictureBoxTri.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="pictureBoxTri.Location" type="System.Drawing.Point, System.Drawing">
<value>304, 176</value>
<value>413, 176</value>
</data>
<data name="pictureBoxTri.Size" type="System.Drawing.Size, System.Drawing">
<value>170, 170</value>
@ -208,19 +208,19 @@
<value>pictureBoxTri</value>
</data>
<data name="&gt;&gt;pictureBoxTri.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.ImageLabel, ArdupilotMegaPlanner10, Version=1.1.4620.38627, Culture=neutral, PublicKeyToken=null</value>
<value>ArdupilotMega.Controls.ImageLabel, ArdupilotMegaPlanner10, Version=1.1.4645.32344, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;pictureBoxTri.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;pictureBoxTri.ZOrder" xml:space="preserve">
<value>14</value>
<value>17</value>
</data>
<data name="pictureBoxY6.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="pictureBoxY6.Location" type="System.Drawing.Point, System.Drawing">
<value>500, 176</value>
<value>589, 176</value>
</data>
<data name="pictureBoxY6.Size" type="System.Drawing.Size, System.Drawing">
<value>170, 170</value>
@ -232,13 +232,13 @@
<value>pictureBoxY6</value>
</data>
<data name="&gt;&gt;pictureBoxY6.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.ImageLabel, ArdupilotMegaPlanner10, Version=1.1.4620.38627, Culture=neutral, PublicKeyToken=null</value>
<value>ArdupilotMega.Controls.ImageLabel, ArdupilotMegaPlanner10, Version=1.1.4645.32344, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;pictureBoxY6.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;pictureBoxY6.ZOrder" xml:space="preserve">
<value>13</value>
<value>16</value>
</data>
<data name="lbl_status.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
@ -268,7 +268,7 @@
<value>$this</value>
</data>
<data name="&gt;&gt;lbl_status.ZOrder" xml:space="preserve">
<value>4</value>
<value>7</value>
</data>
<data name="progress.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
@ -292,7 +292,7 @@
<value>$this</value>
</data>
<data name="&gt;&gt;progress.ZOrder" xml:space="preserve">
<value>5</value>
<value>8</value>
</data>
<data name="label2.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
@ -301,16 +301,16 @@
<value>NoControl</value>
</data>
<data name="label2.Location" type="System.Drawing.Point, System.Drawing">
<value>886, 443</value>
<value>812, 443</value>
</data>
<data name="label2.Size" type="System.Drawing.Size, System.Drawing">
<value>113, 13</value>
<value>185, 13</value>
</data>
<data name="label2.TabIndex" type="System.Int32, mscorlib">
<value>9</value>
</data>
<data name="label2.Text" xml:space="preserve">
<value>Images by Max Levine</value>
<value>Images by Max Levine and Marooned</value>
</data>
<data name="&gt;&gt;label2.Name" xml:space="preserve">
<value>label2</value>
@ -322,13 +322,13 @@
<value>$this</value>
</data>
<data name="&gt;&gt;label2.ZOrder" xml:space="preserve">
<value>3</value>
<value>6</value>
</data>
<data name="pictureBoxHeli.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="pictureBoxHeli.Location" type="System.Drawing.Point, System.Drawing">
<value>94, 176</value>
<value>237, 176</value>
</data>
<data name="pictureBoxHeli.Size" type="System.Drawing.Size, System.Drawing">
<value>170, 170</value>
@ -340,13 +340,13 @@
<value>pictureBoxHeli</value>
</data>
<data name="&gt;&gt;pictureBoxHeli.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.ImageLabel, ArdupilotMegaPlanner10, Version=1.1.4620.38627, Culture=neutral, PublicKeyToken=null</value>
<value>ArdupilotMega.Controls.ImageLabel, ArdupilotMegaPlanner10, Version=1.1.4645.32344, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;pictureBoxHeli.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;pictureBoxHeli.ZOrder" xml:space="preserve">
<value>12</value>
<value>15</value>
</data>
<data name="BUT_setup.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
@ -367,13 +367,13 @@
<value>BUT_setup</value>
</data>
<data name="&gt;&gt;BUT_setup.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner10, Version=1.1.4620.38627, Culture=neutral, PublicKeyToken=null</value>
<value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner10, Version=1.1.4645.32344, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;BUT_setup.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;BUT_setup.ZOrder" xml:space="preserve">
<value>2</value>
<value>5</value>
</data>
<data name="pictureBoxHilimage.ImageLocation" xml:space="preserve">
<value />
@ -400,7 +400,7 @@
<value>$this</value>
</data>
<data name="&gt;&gt;pictureBoxHilimage.ZOrder" xml:space="preserve">
<value>9</value>
<value>12</value>
</data>
<data name="pictureBoxAPHil.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
@ -427,7 +427,7 @@
<value>$this</value>
</data>
<data name="&gt;&gt;pictureBoxAPHil.ZOrder" xml:space="preserve">
<value>8</value>
<value>11</value>
</data>
<data name="pictureBoxACHil.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
@ -454,7 +454,7 @@
<value>$this</value>
</data>
<data name="&gt;&gt;pictureBoxACHil.ZOrder" xml:space="preserve">
<value>7</value>
<value>10</value>
</data>
<data name="pictureBoxACHHil.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
@ -481,10 +481,10 @@
<value>$this</value>
</data>
<data name="&gt;&gt;pictureBoxACHHil.ZOrder" xml:space="preserve">
<value>6</value>
<value>9</value>
</data>
<data name="pictureBoxOcta.Location" type="System.Drawing.Point, System.Drawing">
<value>696, 176</value>
<value>765, 176</value>
</data>
<data name="pictureBoxOcta.Size" type="System.Drawing.Size, System.Drawing">
<value>170, 170</value>
@ -496,16 +496,16 @@
<value>pictureBoxOcta</value>
</data>
<data name="&gt;&gt;pictureBoxOcta.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.ImageLabel, ArdupilotMegaPlanner10, Version=1.1.4620.38627, Culture=neutral, PublicKeyToken=null</value>
<value>ArdupilotMega.Controls.ImageLabel, ArdupilotMegaPlanner10, Version=1.1.4645.32344, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;pictureBoxOcta.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;pictureBoxOcta.ZOrder" xml:space="preserve">
<value>11</value>
<value>14</value>
</data>
<data name="pictureBoxOctav.Location" type="System.Drawing.Point, System.Drawing">
<value>696, 0</value>
<value>765, 0</value>
</data>
<data name="pictureBoxOctav.Size" type="System.Drawing.Size, System.Drawing">
<value>170, 170</value>
@ -517,13 +517,34 @@
<value>pictureBoxOctav</value>
</data>
<data name="&gt;&gt;pictureBoxOctav.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.ImageLabel, ArdupilotMegaPlanner10, Version=1.1.4620.38627, Culture=neutral, PublicKeyToken=null</value>
<value>ArdupilotMega.Controls.ImageLabel, ArdupilotMegaPlanner10, Version=1.1.4645.32344, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;pictureBoxOctav.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;pictureBoxOctav.ZOrder" xml:space="preserve">
<value>10</value>
<value>13</value>
</data>
<data name="pictureBoxRover.Location" type="System.Drawing.Point, System.Drawing">
<value>61, 0</value>
</data>
<data name="pictureBoxRover.Size" type="System.Drawing.Size, System.Drawing">
<value>170, 170</value>
</data>
<data name="pictureBoxRover.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="&gt;&gt;pictureBoxRover.Name" xml:space="preserve">
<value>pictureBoxRover</value>
</data>
<data name="&gt;&gt;pictureBoxRover.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.ImageLabel, ArdupilotMegaPlanner10, Version=1.1.4645.32344, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;pictureBoxRover.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;pictureBoxRover.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<data name="label1.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
@ -550,7 +571,7 @@
<value>$this</value>
</data>
<data name="&gt;&gt;label1.ZOrder" xml:space="preserve">
<value>1</value>
<value>4</value>
</data>
<data name="CMB_history.Location" type="System.Drawing.Point, System.Drawing">
<value>878, 387</value>
@ -574,6 +595,63 @@
<value>$this</value>
</data>
<data name="&gt;&gt;CMB_history.ZOrder" xml:space="preserve">
<value>3</value>
</data>
<data name="CMB_history_label.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="CMB_history_label.Location" type="System.Drawing.Point, System.Drawing">
<value>886, 392</value>
</data>
<data name="CMB_history_label.Size" type="System.Drawing.Size, System.Drawing">
<value>113, 13</value>
</data>
<data name="CMB_history_label.TabIndex" type="System.Int32, mscorlib">
<value>28</value>
</data>
<data name="CMB_history_label.Text" xml:space="preserve">
<value>Pick previous firmware</value>
</data>
<data name="&gt;&gt;CMB_history_label.Name" xml:space="preserve">
<value>CMB_history_label</value>
</data>
<data name="&gt;&gt;CMB_history_label.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;CMB_history_label.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;CMB_history_label.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="Custom_firmware_label.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="Custom_firmware_label.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="Custom_firmware_label.Location" type="System.Drawing.Point, System.Drawing">
<value>889, 371</value>
</data>
<data name="Custom_firmware_label.Size" type="System.Drawing.Size, System.Drawing">
<value>110, 13</value>
</data>
<data name="Custom_firmware_label.TabIndex" type="System.Int32, mscorlib">
<value>29</value>
</data>
<data name="Custom_firmware_label.Text" xml:space="preserve">
<value>Load custom firmware</value>
</data>
<data name="&gt;&gt;Custom_firmware_label.Name" xml:space="preserve">
<value>Custom_firmware_label</value>
</data>
<data name="&gt;&gt;Custom_firmware_label.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;Custom_firmware_label.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;Custom_firmware_label.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">
@ -589,6 +667,6 @@
<value>Firmware</value>
</data>
<data name="&gt;&gt;$this.Type" xml:space="preserve">
<value>System.Windows.Forms.MyUserControl, ArdupilotMegaPlanner10, Version=1.1.4620.38627, Culture=neutral, PublicKeyToken=null</value>
<value>System.Windows.Forms.MyUserControl, ArdupilotMegaPlanner10, Version=1.1.4645.32344, Culture=neutral, PublicKeyToken=null</value>
</data>
</root>

View File

@ -10,10 +10,15 @@
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FlightData));
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle();
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle2 = new System.Windows.Forms.DataGridViewCellStyle();
this.contextMenuStripMap = new System.Windows.Forms.ContextMenuStrip(this.components);
this.goHereToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.flyToHereAltToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.pointCameraHereToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.flightPlannerToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.MainH = new System.Windows.Forms.SplitContainer();
this.SubMainLeft = new System.Windows.Forms.SplitContainer();
this.hud1 = new ArdupilotMega.Controls.HUD();
this.contextMenuStrip2 = new System.Windows.Forms.ContextMenuStrip(this.components);
this.contextMenuStripHud = new System.Windows.Forms.ContextMenuStrip(this.components);
this.recordHudToAVIToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.stopRecordToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.setMJPEGSourceToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
@ -62,11 +67,6 @@
this.tableMap = new System.Windows.Forms.TableLayoutPanel();
this.splitContainer1 = new System.Windows.Forms.SplitContainer();
this.zg1 = new ZedGraph.ZedGraphControl();
this.contextMenuStrip1 = new System.Windows.Forms.ContextMenuStrip(this.components);
this.goHereToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.flyToHereAltToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.pointCameraHereToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.flightPlannerToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.lbl_winddir = new ArdupilotMega.Controls.MyLabel();
this.lbl_windvel = new ArdupilotMega.Controls.MyLabel();
this.lbl_hdop = new ArdupilotMega.Controls.MyLabel();
@ -84,14 +84,17 @@
this.dataGridViewImageColumn2 = new System.Windows.Forms.DataGridViewImageColumn();
this.ZedGraphTimer = new System.Windows.Forms.Timer(this.components);
this.toolTip1 = new System.Windows.Forms.ToolTip(this.components);
this.label6 = new ArdupilotMega.Controls.MyLabel();
this.dockContainer1 = new Crom.Controls.Docking.DockContainer();
this.contextMenuStripDockContainer = new System.Windows.Forms.ContextMenuStrip(this.components);
this.resetToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.contextMenuStripMap.SuspendLayout();
this.MainH.Panel1.SuspendLayout();
this.MainH.Panel2.SuspendLayout();
this.MainH.SuspendLayout();
this.SubMainLeft.Panel1.SuspendLayout();
this.SubMainLeft.Panel2.SuspendLayout();
this.SubMainLeft.SuspendLayout();
this.contextMenuStrip2.SuspendLayout();
this.contextMenuStripHud.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.bindingSource1)).BeginInit();
this.tabControl1.SuspendLayout();
this.tabQuick.SuspendLayout();
@ -104,11 +107,45 @@
this.splitContainer1.Panel1.SuspendLayout();
this.splitContainer1.Panel2.SuspendLayout();
this.splitContainer1.SuspendLayout();
this.contextMenuStrip1.SuspendLayout();
this.panel1.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.Zoomlevel)).BeginInit();
this.contextMenuStripDockContainer.SuspendLayout();
this.SuspendLayout();
//
// contextMenuStripMap
//
this.contextMenuStripMap.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.goHereToolStripMenuItem,
this.flyToHereAltToolStripMenuItem,
this.pointCameraHereToolStripMenuItem,
this.flightPlannerToolStripMenuItem});
this.contextMenuStripMap.Name = "contextMenuStrip1";
resources.ApplyResources(this.contextMenuStripMap, "contextMenuStripMap");
//
// goHereToolStripMenuItem
//
this.goHereToolStripMenuItem.Name = "goHereToolStripMenuItem";
resources.ApplyResources(this.goHereToolStripMenuItem, "goHereToolStripMenuItem");
this.goHereToolStripMenuItem.Click += new System.EventHandler(this.goHereToolStripMenuItem_Click);
//
// flyToHereAltToolStripMenuItem
//
this.flyToHereAltToolStripMenuItem.Name = "flyToHereAltToolStripMenuItem";
resources.ApplyResources(this.flyToHereAltToolStripMenuItem, "flyToHereAltToolStripMenuItem");
this.flyToHereAltToolStripMenuItem.Click += new System.EventHandler(this.flyToHereAltToolStripMenuItem_Click);
//
// pointCameraHereToolStripMenuItem
//
this.pointCameraHereToolStripMenuItem.Name = "pointCameraHereToolStripMenuItem";
resources.ApplyResources(this.pointCameraHereToolStripMenuItem, "pointCameraHereToolStripMenuItem");
this.pointCameraHereToolStripMenuItem.Click += new System.EventHandler(this.pointCameraHereToolStripMenuItem_Click);
//
// flightPlannerToolStripMenuItem
//
this.flightPlannerToolStripMenuItem.Name = "flightPlannerToolStripMenuItem";
resources.ApplyResources(this.flightPlannerToolStripMenuItem, "flightPlannerToolStripMenuItem");
this.flightPlannerToolStripMenuItem.Click += new System.EventHandler(this.flightPlannerToolStripMenuItem_Click);
//
// MainH
//
this.MainH.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
@ -122,7 +159,6 @@
// MainH.Panel2
//
this.MainH.Panel2.Controls.Add(this.tableMap);
this.MainH.SplitterMoved += new System.Windows.Forms.SplitterEventHandler(this.MainH_SplitterMoved);
//
// SubMainLeft
//
@ -133,7 +169,6 @@
// SubMainLeft.Panel1
//
this.SubMainLeft.Panel1.Controls.Add(this.hud1);
this.SubMainLeft.Panel1.Resize += new System.EventHandler(this.SubMainHT_Panel1_Resize);
//
// SubMainLeft.Panel2
//
@ -147,7 +182,7 @@
this.hud1.BackColor = System.Drawing.Color.Transparent;
this.hud1.batterylevel = 0F;
this.hud1.batteryremaining = 0F;
this.hud1.ContextMenuStrip = this.contextMenuStrip2;
this.hud1.ContextMenuStrip = this.contextMenuStripHud;
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));
@ -205,18 +240,19 @@
this.hud1.wpno = 0;
this.hud1.xtrack_error = 0F;
this.hud1.DoubleClick += new System.EventHandler(this.hud1_DoubleClick);
this.hud1.Resize += new System.EventHandler(this.hud1_Resize);
//
// contextMenuStrip2
// contextMenuStripHud
//
this.contextMenuStrip2.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.contextMenuStripHud.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.recordHudToAVIToolStripMenuItem,
this.stopRecordToolStripMenuItem,
this.setMJPEGSourceToolStripMenuItem,
this.setAspectRatioToolStripMenuItem,
this.displayBatteryInfoToolStripMenuItem,
this.userItemsToolStripMenuItem});
this.contextMenuStrip2.Name = "contextMenuStrip2";
resources.ApplyResources(this.contextMenuStrip2, "contextMenuStrip2");
this.contextMenuStripHud.Name = "contextMenuStrip2";
resources.ApplyResources(this.contextMenuStripHud, "contextMenuStripHud");
//
// recordHudToAVIToolStripMenuItem
//
@ -291,7 +327,7 @@
resources.ApplyResources(this.quickView6, "quickView6");
this.quickView6.MinimumSize = new System.Drawing.Size(100, 27);
this.quickView6.Name = "quickView6";
this.quickView6.number = "0.0";
this.quickView6.number = 0D;
this.quickView6.numberColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(255)))), ((int)(((byte)(252)))));
this.quickView6.DoubleClick += new System.EventHandler(this.quickView_DoubleClick);
//
@ -302,7 +338,7 @@
resources.ApplyResources(this.quickView5, "quickView5");
this.quickView5.MinimumSize = new System.Drawing.Size(100, 27);
this.quickView5.Name = "quickView5";
this.quickView5.number = "0.0";
this.quickView5.number = 0D;
this.quickView5.numberColor = System.Drawing.Color.FromArgb(((int)(((byte)(254)))), ((int)(((byte)(254)))), ((int)(((byte)(86)))));
this.quickView5.DoubleClick += new System.EventHandler(this.quickView_DoubleClick);
//
@ -313,7 +349,7 @@
resources.ApplyResources(this.quickView4, "quickView4");
this.quickView4.MinimumSize = new System.Drawing.Size(100, 27);
this.quickView4.Name = "quickView4";
this.quickView4.number = "0.0";
this.quickView4.number = 0D;
this.quickView4.numberColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(255)))), ((int)(((byte)(83)))));
this.quickView4.DoubleClick += new System.EventHandler(this.quickView_DoubleClick);
//
@ -324,7 +360,7 @@
resources.ApplyResources(this.quickView3, "quickView3");
this.quickView3.MinimumSize = new System.Drawing.Size(100, 27);
this.quickView3.Name = "quickView3";
this.quickView3.number = "0.0";
this.quickView3.number = 0D;
this.quickView3.numberColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(96)))), ((int)(((byte)(91)))));
this.quickView3.DoubleClick += new System.EventHandler(this.quickView_DoubleClick);
//
@ -335,7 +371,7 @@
resources.ApplyResources(this.quickView2, "quickView2");
this.quickView2.MinimumSize = new System.Drawing.Size(100, 27);
this.quickView2.Name = "quickView2";
this.quickView2.number = "0.0";
this.quickView2.number = 0D;
this.quickView2.numberColor = System.Drawing.Color.FromArgb(((int)(((byte)(254)))), ((int)(((byte)(132)))), ((int)(((byte)(46)))));
this.quickView2.DoubleClick += new System.EventHandler(this.quickView_DoubleClick);
//
@ -346,7 +382,7 @@
resources.ApplyResources(this.quickView1, "quickView1");
this.quickView1.MinimumSize = new System.Drawing.Size(100, 27);
this.quickView1.Name = "quickView1";
this.quickView1.number = "0.0";
this.quickView1.number = 0D;
this.quickView1.numberColor = System.Drawing.Color.FromArgb(((int)(((byte)(209)))), ((int)(((byte)(151)))), ((int)(((byte)(248)))));
this.quickView1.DoubleClick += new System.EventHandler(this.quickView_DoubleClick);
//
@ -985,10 +1021,12 @@
// NUM_playbackspeed
//
resources.ApplyResources(this.NUM_playbackspeed, "NUM_playbackspeed");
this.NUM_playbackspeed.LargeChange = 1;
this.NUM_playbackspeed.LargeChange = 10;
this.NUM_playbackspeed.Maximum = 10D;
this.NUM_playbackspeed.Minimum = 0.01D;
this.NUM_playbackspeed.Name = "NUM_playbackspeed";
this.NUM_playbackspeed.SmallChange = 10;
this.NUM_playbackspeed.TickFrequency = 100;
this.toolTip1.SetToolTip(this.NUM_playbackspeed, resources.GetString("NUM_playbackspeed.ToolTip"));
this.NUM_playbackspeed.Value = 1D;
this.NUM_playbackspeed.Scroll += new System.EventHandler(this.NUM_playbackspeed_Scroll);
@ -1041,7 +1079,7 @@
//
// splitContainer1.Panel2
//
this.splitContainer1.Panel2.ContextMenuStrip = this.contextMenuStrip1;
this.splitContainer1.Panel2.ContextMenuStrip = this.contextMenuStripMap;
this.splitContainer1.Panel2.Controls.Add(this.lbl_winddir);
this.splitContainer1.Panel2.Controls.Add(this.lbl_windvel);
this.splitContainer1.Panel2.Controls.Add(this.lbl_hdop);
@ -1061,40 +1099,6 @@
this.zg1.ScrollMinY2 = 0D;
this.zg1.DoubleClick += new System.EventHandler(this.zg1_DoubleClick);
//
// contextMenuStrip1
//
this.contextMenuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.goHereToolStripMenuItem,
this.flyToHereAltToolStripMenuItem,
this.pointCameraHereToolStripMenuItem,
this.flightPlannerToolStripMenuItem});
this.contextMenuStrip1.Name = "contextMenuStrip1";
resources.ApplyResources(this.contextMenuStrip1, "contextMenuStrip1");
//
// goHereToolStripMenuItem
//
this.goHereToolStripMenuItem.Name = "goHereToolStripMenuItem";
resources.ApplyResources(this.goHereToolStripMenuItem, "goHereToolStripMenuItem");
this.goHereToolStripMenuItem.Click += new System.EventHandler(this.goHereToolStripMenuItem_Click);
//
// flyToHereAltToolStripMenuItem
//
this.flyToHereAltToolStripMenuItem.Name = "flyToHereAltToolStripMenuItem";
resources.ApplyResources(this.flyToHereAltToolStripMenuItem, "flyToHereAltToolStripMenuItem");
this.flyToHereAltToolStripMenuItem.Click += new System.EventHandler(this.flyToHereAltToolStripMenuItem_Click);
//
// pointCameraHereToolStripMenuItem
//
this.pointCameraHereToolStripMenuItem.Name = "pointCameraHereToolStripMenuItem";
resources.ApplyResources(this.pointCameraHereToolStripMenuItem, "pointCameraHereToolStripMenuItem");
this.pointCameraHereToolStripMenuItem.Click += new System.EventHandler(this.pointCameraHereToolStripMenuItem_Click);
//
// flightPlannerToolStripMenuItem
//
this.flightPlannerToolStripMenuItem.Name = "flightPlannerToolStripMenuItem";
resources.ApplyResources(this.flightPlannerToolStripMenuItem, "flightPlannerToolStripMenuItem");
this.flightPlannerToolStripMenuItem.Click += new System.EventHandler(this.flightPlannerToolStripMenuItem_Click);
//
// lbl_winddir
//
this.lbl_winddir.DataBindings.Add(new System.Windows.Forms.Binding("Text", this.bindingSource1, "wind_dir", true, System.Windows.Forms.DataSourceUpdateMode.OnValidation, null, "Dir: 0"));
@ -1114,7 +1118,7 @@
// lbl_hdop
//
resources.ApplyResources(this.lbl_hdop, "lbl_hdop");
this.lbl_hdop.DataBindings.Add(new System.Windows.Forms.Binding("Text", this.bindingSource1, "gpshdop", true, System.Windows.Forms.DataSourceUpdateMode.OnValidation, null, "hdop: 0"));
this.lbl_hdop.DataBindings.Add(new System.Windows.Forms.Binding("Text", this.bindingSource1, "gpshdop", true, System.Windows.Forms.DataSourceUpdateMode.OnValidation, null, "hdop: 0.0"));
this.lbl_hdop.Name = "lbl_hdop";
this.lbl_hdop.resize = true;
this.toolTip1.SetToolTip(this.lbl_hdop, resources.GetString("lbl_hdop.ToolTip"));
@ -1132,7 +1136,7 @@
this.gMapControl1.BackColor = System.Drawing.Color.Transparent;
this.gMapControl1.Bearing = 0F;
this.gMapControl1.CanDragMap = true;
this.gMapControl1.ContextMenuStrip = this.contextMenuStrip1;
this.gMapControl1.ContextMenuStrip = this.contextMenuStripMap;
resources.ApplyResources(this.gMapControl1, "gMapControl1");
this.gMapControl1.GrayScaleMode = false;
this.gMapControl1.LevelsKeepInMemmory = 5;
@ -1264,31 +1268,52 @@
this.toolTip1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(205)))), ((int)(((byte)(226)))), ((int)(((byte)(150)))));
this.toolTip1.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(121)))), ((int)(((byte)(148)))), ((int)(((byte)(41)))));
//
// label6
// dockContainer1
//
resources.ApplyResources(this.label6, "label6");
this.label6.Name = "label6";
this.label6.resize = false;
this.dockContainer1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(118)))), ((int)(((byte)(118)))), ((int)(((byte)(118)))));
this.dockContainer1.CanMoveByMouseFilledForms = true;
this.dockContainer1.ContextMenuStrip = this.contextMenuStripDockContainer;
resources.ApplyResources(this.dockContainer1, "dockContainer1");
this.dockContainer1.Name = "dockContainer1";
this.dockContainer1.TitleBarGradientColor1 = System.Drawing.Color.FromArgb(((int)(((byte)(148)))), ((int)(((byte)(193)))), ((int)(((byte)(31)))));
this.dockContainer1.TitleBarGradientColor2 = System.Drawing.Color.FromArgb(((int)(((byte)(205)))), ((int)(((byte)(226)))), ((int)(((byte)(150)))));
this.dockContainer1.TitleBarGradientSelectedColor1 = System.Drawing.Color.DarkGray;
this.dockContainer1.TitleBarGradientSelectedColor2 = System.Drawing.Color.White;
this.dockContainer1.TitleBarTextColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(87)))), ((int)(((byte)(4)))));
//
// contextMenuStripDockContainer
//
this.contextMenuStripDockContainer.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.resetToolStripMenuItem});
this.contextMenuStripDockContainer.Name = "contextMenuStripDockContainer";
resources.ApplyResources(this.contextMenuStripDockContainer, "contextMenuStripDockContainer");
//
// resetToolStripMenuItem
//
this.resetToolStripMenuItem.Name = "resetToolStripMenuItem";
resources.ApplyResources(this.resetToolStripMenuItem, "resetToolStripMenuItem");
this.resetToolStripMenuItem.Click += new System.EventHandler(this.resetToolStripMenuItem_Click);
//
// FlightData
//
resources.ApplyResources(this, "$this");
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.Controls.Add(this.MainH);
this.Controls.Add(this.label6);
this.Controls.Add(this.dockContainer1);
this.MinimumSize = new System.Drawing.Size(1008, 461);
this.Name = "FlightData";
this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.FlightData_FormClosing);
this.Load += new System.EventHandler(this.FlightData_Load);
this.Resize += new System.EventHandler(this.FlightData_Resize);
this.ParentChanged += new System.EventHandler(this.FlightData_ParentChanged);
this.contextMenuStripMap.ResumeLayout(false);
this.MainH.Panel1.ResumeLayout(false);
this.MainH.Panel2.ResumeLayout(false);
this.MainH.ResumeLayout(false);
this.SubMainLeft.Panel1.ResumeLayout(false);
this.SubMainLeft.Panel2.ResumeLayout(false);
this.SubMainLeft.ResumeLayout(false);
this.contextMenuStrip2.ResumeLayout(false);
this.contextMenuStripHud.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.bindingSource1)).EndInit();
this.tabControl1.ResumeLayout(false);
this.tabQuick.ResumeLayout(false);
@ -1302,22 +1327,21 @@
this.splitContainer1.Panel1.ResumeLayout(false);
this.splitContainer1.Panel2.ResumeLayout(false);
this.splitContainer1.ResumeLayout(false);
this.contextMenuStrip1.ResumeLayout(false);
this.panel1.ResumeLayout(false);
this.panel1.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.Zoomlevel)).EndInit();
this.contextMenuStripDockContainer.ResumeLayout(false);
this.ResumeLayout(false);
}
private System.Windows.Forms.DataGridViewImageColumn dataGridViewImageColumn1;
private System.Windows.Forms.DataGridViewImageColumn dataGridViewImageColumn2;
private ArdupilotMega.Controls.MyLabel label6;
private System.Windows.Forms.BindingSource bindingSource1;
private System.Windows.Forms.Timer ZedGraphTimer;
private System.Windows.Forms.SplitContainer MainH;
private System.Windows.Forms.SplitContainer SubMainLeft;
private System.Windows.Forms.ContextMenuStrip contextMenuStrip1;
private System.Windows.Forms.ContextMenuStrip contextMenuStripMap;
private System.Windows.Forms.ToolStripMenuItem goHereToolStripMenuItem;
private ArdupilotMega.Controls.HUD hud1;
private ArdupilotMega.Controls.MyButton BUT_clear_track;
@ -1361,7 +1385,7 @@
private ArdupilotMega.Controls.MyButton BUT_joystick;
private System.Windows.Forms.ToolTip toolTip1;
private ArdupilotMega.Controls.MyTrackBar NUM_playbackspeed;
private System.Windows.Forms.ContextMenuStrip contextMenuStrip2;
private System.Windows.Forms.ContextMenuStrip contextMenuStripHud;
private System.Windows.Forms.ToolStripMenuItem recordHudToAVIToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem stopRecordToolStripMenuItem;
private ArdupilotMega.Controls.MyLabel lbl_logpercent;
@ -1385,5 +1409,8 @@
private System.Windows.Forms.ToolStripMenuItem flyToHereAltToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem flightPlannerToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem userItemsToolStripMenuItem;
private Crom.Controls.Docking.DockContainer dockContainer1;
private System.Windows.Forms.ContextMenuStrip contextMenuStripDockContainer;
private System.Windows.Forms.ToolStripMenuItem resetToolStripMenuItem;
}
}

View File

@ -19,6 +19,9 @@ using System.Drawing.Drawing2D;
using ArdupilotMega.Controls;
using ArdupilotMega.Utilities;
using ArdupilotMega.Controls.BackstageView;
using Crom.Controls.Docking;
using System.Reflection;
// written by michael oborne
namespace ArdupilotMega.GCSViews
@ -65,9 +68,14 @@ namespace ArdupilotMega.GCSViews
internal static GMapOverlay kmlpolygons;
internal static GMapOverlay geofence;
Dictionary<Guid, Form> formguids = new Dictionary<Guid,Form>();
bool huddropout = false;
bool huddropoutresize = false;
private DockStateSerializer _serializer = null;
DockableFormInfo dockhud;
List<PointLatLng> trackPoints = new List<PointLatLng>();
const float rad2deg = (float)(180 / Math.PI);
@ -90,7 +98,9 @@ namespace ArdupilotMega.GCSViews
{
threadrun = 0;
MainV2.comPort.logreadmode = false;
MainV2.config["FlightSplitter"] = MainH.SplitterDistance.ToString();
MainV2.config["FlightSplitter"] = hud1.Width;
_serializer.Save();
SaveWindowLayout();
System.Threading.Thread.Sleep(100);
base.Dispose(disposing);
}
@ -100,6 +110,9 @@ namespace ArdupilotMega.GCSViews
InitializeComponent();
instance = this;
_serializer = new DockStateSerializer(dockContainer1);
_serializer.SavePath = Application.StartupPath + Path.DirectorySeparatorChar + "FDscreen.xml";
dockContainer1.PreviewRenderer = new PreviewRenderer();
mymap = gMapControl1;
myhud = hud1;
@ -123,7 +136,7 @@ namespace ArdupilotMega.GCSViews
chk_box_CheckedChanged((object)(new CheckBox() { Name = "nav_pitch", Checked = true }), new EventArgs());
}
for (int f = 1; f < 10; f++ )
for (int f = 1; f < 10; f++)
{
// load settings
if (MainV2.config["quickView" + f] != null)
@ -141,32 +154,36 @@ namespace ArdupilotMega.GCSViews
}
}
foreach (string item in MainV2.config.Keys)
{
if (item.StartsWith("hud1_useritem_"))
{
string selection = item.Replace("hud1_useritem_", "");
CheckBox chk = new CheckBox();
chk.Name = selection;
chk.Checked = true;
HUD.Custom cust = new HUD.Custom();
cust.Header = MainV2.config[item].ToString();
addHudUserItem(ref cust, chk);
}
}
List<string> list = new List<string>();
//foreach (object obj in Enum.GetValues(typeof(MAVLink09.MAV_ACTION)))
#if MAVLINK10
{
list.Add("LOITER_UNLIM");
list.Add("RETURN_TO_LAUNCH");
list.Add("PREFLIGHT_CALIBRATION");
list.Add("MISSION_START");
list.Add("PREFLIGHT_REBOOT_SHUTDOWN");
//DO_SET_SERVO
//DO_REPEAT_SERVO
}
#else
{
list.Add("RETURN");
list.Add("HALT");
list.Add("CONTINUE");
list.Add("SET_MANUAL");
list.Add("SET_AUTO");
list.Add("STORAGE_READ");
list.Add("STORAGE_WRITE");
list.Add("CALIBRATE_RC");
list.Add("NAVIGATE");
list.Add("LOITER");
list.Add("TAKEOFF");
list.Add("CALIBRATE_GYRO");
}
#endif
CMB_action.DataSource = list;
@ -212,6 +229,295 @@ namespace ArdupilotMega.GCSViews
}
}
catch { }
SetupDocking();
if (File.Exists(_serializer.SavePath) == true)
{
try
{
_serializer.Load(true, GetFormFromGuid);
}
catch { }
}
cleanupDocks();
}
void SetupDocking()
{
this.SuspendLayout();
dockhud = CreateFormAndGuid(dockContainer1, hud1, "fd_hud_guid");
DockableFormInfo dockmap = CreateFormAndGuid(dockContainer1, tableMap, "fd_map_guid");
DockableFormInfo dockquick = CreateFormAndGuid(dockContainer1, tabQuick, "fd_quick_guid");
DockableFormInfo dockactions = CreateFormAndGuid(dockContainer1, tabActions, "fd_actions_guid");
DockableFormInfo dockguages = CreateFormAndGuid(dockContainer1, tabGauges, "fd_guages_guid");
DockableFormInfo dockstatus = CreateFormAndGuid(dockContainer1, tabStatus, "fd_status_guid");
DockableFormInfo docktlogs = CreateFormAndGuid(dockContainer1, tabTLogs, "fd_tlogs_guid");
dockContainer1.DockForm(dockmap, DockStyle.Fill, zDockMode.Outer);
dockContainer1.DockForm(dockquick, DockStyle.Right, zDockMode.Outer);
dockContainer1.DockForm(dockhud, DockStyle.Left, zDockMode.Outer);
dockContainer1.DockForm(dockactions, dockhud, DockStyle.Bottom, zDockMode.Outer);
dockContainer1.DockForm(dockguages, dockactions, DockStyle.Fill, zDockMode.Inner);
dockContainer1.DockForm(dockstatus, dockactions, DockStyle.Fill, zDockMode.Inner);
dockContainer1.DockForm(docktlogs, dockactions, DockStyle.Fill, zDockMode.Inner);
dockactions.IsSelected = true;
if (MainV2.config["FlightSplitter"] != null)
{
dockContainer1.SetWidth(dockhud, int.Parse(MainV2.config["FlightSplitter"].ToString()));
}
dockContainer1.SetHeight(dockhud, hud1.Height);
this.ResumeLayout();
}
void cleanupDocks()
{
// cleanup from load
for (int a = 0; a < dockContainer1.Count; a++)
{
DockableFormInfo info = dockContainer1.GetFormInfoAt(a);
info.ShowCloseButton = false;
info.ShowContextMenuButton = false;
}
dockContainer1.Invalidate();
}
void SaveWindowLayout()
{
XmlTextWriter xmlwriter = new XmlTextWriter(Path.GetDirectoryName(Application.ExecutablePath) + Path.DirectorySeparatorChar + @"FDLayout.xml", Encoding.ASCII);
xmlwriter.Formatting = Formatting.Indented;
xmlwriter.WriteStartDocument();
xmlwriter.WriteStartElement("ScreenLayout");
//xmlwriter.WriteElementString("comport", comPortName);
for (int a = 0; a < dockContainer1.Count; a++)
{
DockableFormInfo info = dockContainer1.GetFormInfoAt(a);
xmlwriter.WriteStartElement("Form");
object thisBoxed = info;
Type test = thisBoxed.GetType();
foreach (var field in test.GetProperties())
{
// field.Name has the field's name.
object fieldValue;
try
{
fieldValue = field.GetValue(thisBoxed,null); // Get value
}
catch { continue; }
// Get the TypeCode enumeration. Multiple types get mapped to a common typecode.
TypeCode typeCode = Type.GetTypeCode(fieldValue.GetType());
xmlwriter.WriteElementString(field.Name, fieldValue.ToString());
}
// DockableContainer dockcont = info as DockableContainer;
// dockContainer1.
xmlwriter.WriteEndElement();
}
xmlwriter.WriteEndElement();
xmlwriter.WriteEndDocument();
xmlwriter.Close();
}
DockableFormInfo CreateFormAndGuid(DockContainer dock, Control ctl, string configguidref)
{
Guid gu = GetOrCreateGuid(configguidref);
Form frm;
if (formguids.ContainsKey(gu))
{
frm = formguids[gu];
}
else
{
frm = CreateFormFromControl(ctl);
frm.AutoScroll = true;
formguids[gu] = frm;
}
return dock.Add(frm, Crom.Controls.Docking.zAllowedDock.All, gu);
}
Guid GetOrCreateGuid(string configname)
{
if (!MainV2.config.ContainsKey(configname))
{
MainV2.config[configname] = Guid.NewGuid().ToString();
}
return new Guid(MainV2.config[configname].ToString());
}
Form GetFormFromGuid(Guid id)
{
return formguids[id];
}
Form CreateFormFromControl(Control ctl)
{
ctl.Dock = DockStyle.Fill;
Form newform = new Form();
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MainV2));
newform.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
try
{
if (ctl is TabPage)
{
TabPage tp = ctl as TabPage;
newform.Text = ctl.Text;
while (tp.Controls.Count > 0)
{
newform.Controls.Add(tp.Controls[0]);
}
if (tp == tabQuick)
{
newform.Resize += tabQuick_Resize;
}
if (tp == tabStatus)
{
newform.Resize += tabStatus_Resize;
newform.Load += tabStatus_Resize;
//newform.Resize += tab1
}
if (tp == tabGauges)
{
newform.Resize += tabPage1_Resize;
}
}
else if (ctl is Form)
{
return (Form)ctl;
}
else
{
newform.Text = ctl.Text;
newform.Controls.Add(ctl);
if (ctl is HUD)
{
newform.Text = "Hud";
}
if (ctl is myGMAP)
{
newform.Text = "Map";
}
}
}
catch { }
return newform;
}
void tabStatus_Resize(object sender, EventArgs e)
{
// localise it
Control tabStatus = sender as Control;
// tabStatus.SuspendLayout();
//foreach (Control temp in tabStatus.Controls)
{
// temp.DataBindings.Clear();
//temp.Dispose();
}
//tabStatus.Controls.Clear();
int x = 10;
int y = 10;
object thisBoxed = MainV2.cs;
Type test = thisBoxed.GetType();
foreach (var field in test.GetProperties())
{
// field.Name has the field's name.
object fieldValue;
try
{
fieldValue = field.GetValue(thisBoxed, null); // Get value
}
catch { continue; }
// Get the TypeCode enumeration. Multiple types get mapped to a common typecode.
TypeCode typeCode = Type.GetTypeCode(fieldValue.GetType());
bool add = true;
MyLabel lbl1 = new MyLabel();
MyLabel lbl2 = new MyLabel();
try
{
lbl1 = (MyLabel)tabStatus.Controls.Find(field.Name, false)[0];
lbl2 = (MyLabel)tabStatus.Controls.Find(field.Name + "value", false)[0];
add = false;
}
catch { }
if (add)
{
lbl1.Location = new Point(x, y);
lbl1.Size = new System.Drawing.Size(75, 13);
lbl1.Text = field.Name;
lbl1.Name = field.Name;
lbl1.Visible = true;
lbl2.AutoSize = false;
lbl2.Location = new Point(lbl1.Right + 5, y);
lbl2.Size = new System.Drawing.Size(50, 13);
//if (lbl2.Name == "")
lbl2.DataBindings.Add(new System.Windows.Forms.Binding("Text", this.bindingSource1, field.Name, false, System.Windows.Forms.DataSourceUpdateMode.OnValidation, "0"));
lbl2.Name = field.Name + "value";
lbl2.Visible = true;
//lbl2.Text = fieldValue.ToString();
tabStatus.Controls.Add(lbl1);
tabStatus.Controls.Add(lbl2);
}
else
{
lbl1.Location = new Point(x, y);
lbl2.Location = new Point(lbl1.Right + 5, y);
}
//Application.DoEvents();
x += 0;
y += 15;
if (y > tabStatus.Height - 30)
{
x += 140;
y = 10;
}
}
tabStatus.Width = x;
// tabStatus.ResumeLayout();
}
public void Activate()
@ -1054,13 +1360,6 @@ namespace ArdupilotMega.GCSViews
}
}
private void SubMainHT_Panel1_Resize(object sender, EventArgs e)
{
hud1.Width = MainH.SplitterDistance;
SubMainLeft.SplitterDistance = hud1.Height + 2;
}
private void BUT_RAWSensor_Click(object sender, EventArgs e)
{
Form temp = new RAW_Sensor();
@ -1266,22 +1565,13 @@ namespace ArdupilotMega.GCSViews
catch { } // ignore any invalid
}
bool loaded = false;
private void MainH_SplitterMoved(object sender, SplitterEventArgs e)
{
if (loaded == true)
{ // startup check
MainV2.config["FlightSplitter"] = MainH.SplitterDistance.ToString();
}
loaded = true;
hud1.Width = MainH.Panel1.Width;
}
private void tabPage1_Resize(object sender, EventArgs e)
{
int mywidth, myheight;
// localize it
Control tabGauges = sender as Control;
float scale = tabGauges.Width / (float)tabGauges.Height;
if (scale > 0.5 && scale < 1.9)
@ -1444,10 +1734,8 @@ namespace ArdupilotMega.GCSViews
if (huddropout)
return;
SubMainLeft.Panel1Collapsed = true;
Form dropout = new Form();
dropout.Size = new System.Drawing.Size(hud1.Width, hud1.Height + 20);
SubMainLeft.Panel1.Controls.Remove(hud1);
dropout.Controls.Add(hud1);
dropout.Resize += new EventHandler(dropout_Resize);
dropout.FormClosed += new FormClosedEventHandler(dropout_FormClosed);
@ -1457,8 +1745,7 @@ namespace ArdupilotMega.GCSViews
void dropout_FormClosed(object sender, FormClosedEventArgs e)
{
SubMainLeft.Panel1.Controls.Add(hud1);
SubMainLeft.Panel1Collapsed = false;
dockhud.DockableForm.Controls.Add(hud1);
huddropout = false;
}
@ -1492,93 +1779,10 @@ namespace ArdupilotMega.GCSViews
private void tabControl1_SelectedIndexChanged(object sender, EventArgs e)
{
/*
if (tabControl1.SelectedTab == tabStatus)
{
tabControl1.SuspendLayout();
foreach (Control temp in tabStatus.Controls)
{
// temp.DataBindings.Clear();
//temp.Dispose();
}
//tabStatus.Controls.Clear();
int x = 10;
int y = 10;
object thisBoxed = MainV2.cs;
Type test = thisBoxed.GetType();
foreach (var field in test.GetProperties())
{
// field.Name has the field's name.
object fieldValue;
try
{
fieldValue = field.GetValue(thisBoxed, null); // Get value
}
catch { continue; }
// Get the TypeCode enumeration. Multiple types get mapped to a common typecode.
TypeCode typeCode = Type.GetTypeCode(fieldValue.GetType());
bool add = true;
MyLabel lbl1 = new MyLabel();
MyLabel lbl2 = new MyLabel();
try
{
lbl1 = (MyLabel)tabStatus.Controls.Find(field.Name, false)[0];
lbl2 = (MyLabel)tabStatus.Controls.Find(field.Name + "value", false)[0];
add = false;
}
catch { }
if (add)
{
lbl1.Location = new Point(x, y);
lbl1.Size = new System.Drawing.Size(75, 13);
lbl1.Text = field.Name;
lbl1.Name = field.Name;
lbl1.Visible = true;
lbl2.AutoSize = false;
lbl2.Location = new Point(lbl1.Right + 5, y);
lbl2.Size = new System.Drawing.Size(50, 13);
//if (lbl2.Name == "")
lbl2.DataBindings.Add(new System.Windows.Forms.Binding("Text", this.bindingSource1, field.Name, false, System.Windows.Forms.DataSourceUpdateMode.OnValidation, "0"));
lbl2.Name = field.Name + "value";
lbl2.Visible = true;
//lbl2.Text = fieldValue.ToString();
tabStatus.Controls.Add(lbl1);
tabStatus.Controls.Add(lbl2);
}
else
{
lbl1.Location = new Point(x, y);
lbl2.Location = new Point(lbl1.Right + 5, y);
}
//Application.DoEvents();
x += 0;
y += 15;
if (y > tabStatus.Height - 30)
{
x += 140;
y = 10;
}
}
tabStatus.Width = x;
tabControl1.ResumeLayout();
}
else
{
@ -1591,15 +1795,10 @@ namespace ArdupilotMega.GCSViews
if (tabControl1.SelectedTab == tabQuick)
{
int height = tabQuick.Height / 6;
quickView1.Size = new System.Drawing.Size(tabQuick.Width, height);
quickView2.Size = new System.Drawing.Size(tabQuick.Width, height);
quickView3.Size = new System.Drawing.Size(tabQuick.Width, height);
quickView4.Size = new System.Drawing.Size(tabQuick.Width, height);
quickView5.Size = new System.Drawing.Size(tabQuick.Width, height);
quickView6.Size = new System.Drawing.Size(tabQuick.Width, height);
}
}
*/
}
private void Gspeed_DoubleClick(object sender, EventArgs e)
@ -1810,6 +2009,15 @@ namespace ArdupilotMega.GCSViews
selectform.Show();
}
void addHudUserItem(ref HUD.Custom cust, CheckBox sender)
{
setupPropertyInfo(ref cust.Item, (sender).Name, MainV2.cs);
hud1.CustomItems.Add((sender).Name, cust);
hud1.Invalidate();
}
void chk_box_hud_UserItem_CheckedChanged(object sender, EventArgs e)
{
if (((CheckBox)sender).Checked)
@ -1825,11 +2033,8 @@ namespace ArdupilotMega.GCSViews
MainV2.config["hud1_useritem_" + ((CheckBox)sender).Name] = prefix;
cust.Header = prefix;
setupPropertyInfo(ref cust.Item, ((CheckBox)sender).Name, MainV2.cs);
hud1.CustomItems.Add(((CheckBox)sender).Name, cust);
hud1.Invalidate();
addHudUserItem(ref cust, (CheckBox)sender);
}
else
{
@ -1837,6 +2042,7 @@ namespace ArdupilotMega.GCSViews
{
hud1.CustomItems.Remove(((CheckBox)sender).Name);
}
MainV2.config.Remove("hud1_useritem_" + ((CheckBox)sender).Name);
hud1.Invalidate();
}
}
@ -2195,8 +2401,7 @@ print 'Roll complete'
private void setAspectRatioToolStripMenuItem_Click(object sender, EventArgs e)
{
hud1.SixteenXNine = !hud1.SixteenXNine;
// force a redraw
SubMainHT_Panel1_Resize(null, null);
hud1.Invalidate();
}
private void displayBatteryInfoToolStripMenuItem_Click(object sender, EventArgs e)
@ -2382,7 +2587,32 @@ print 'Roll complete'
private void tabQuick_Resize(object sender, EventArgs e)
{
tabControl1_SelectedIndexChanged(null, null);
int height = ((Control)sender).Height / 6;
quickView1.Size = new System.Drawing.Size(tabQuick.Width, height);
quickView2.Size = new System.Drawing.Size(tabQuick.Width, height);
quickView3.Size = new System.Drawing.Size(tabQuick.Width, height);
quickView4.Size = new System.Drawing.Size(tabQuick.Width, height);
quickView5.Size = new System.Drawing.Size(tabQuick.Width, height);
quickView6.Size = new System.Drawing.Size(tabQuick.Width, height);
}
private void hud1_Resize(object sender, EventArgs e)
{
Console.WriteLine("HUD resize "+ hud1.Width + " " + hud1.Height);
try
{
// dockContainer1.SetHeight(dockhud, hud1.Height);
}
catch { }
}
private void resetToolStripMenuItem_Click(object sender, EventArgs e)
{
dockContainer1.Clear();
SetupDocking();
cleanupDocks();
this.Refresh();
}
}
}

View File

@ -117,14 +117,47 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="MainH.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<metadata name="contextMenuStripMap.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>290, 17</value>
</metadata>
<assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="MainH.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 0</value>
<data name="goHereToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>174, 22</value>
</data>
<data name="goHereToolStripMenuItem.Text" xml:space="preserve">
<value>Fly To Here</value>
</data>
<data name="flyToHereAltToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>174, 22</value>
</data>
<data name="flyToHereAltToolStripMenuItem.Text" xml:space="preserve">
<value>Fly To Here Alt</value>
</data>
<data name="pointCameraHereToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>174, 22</value>
</data>
<data name="pointCameraHereToolStripMenuItem.Text" xml:space="preserve">
<value>Point Camera Here</value>
</data>
<data name="flightPlannerToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>174, 22</value>
</data>
<data name="flightPlannerToolStripMenuItem.Text" xml:space="preserve">
<value>Flight Planner</value>
</data>
<data name="contextMenuStripMap.Size" type="System.Drawing.Size, System.Drawing">
<value>175, 92</value>
</data>
<data name="&gt;&gt;contextMenuStripMap.Name" xml:space="preserve">
<value>contextMenuStripMap</value>
</data>
<data name="&gt;&gt;contextMenuStripMap.Type" xml:space="preserve">
<value>System.Windows.Forms.ContextMenuStrip, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="MainH.Location" type="System.Drawing.Point, System.Drawing">
<value>186, 70</value>
</data>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="MainH.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>0, 0, 0, 0</value>
</data>
@ -140,7 +173,7 @@
<data name="SubMainLeft.Orientation" type="System.Windows.Forms.Orientation, System.Windows.Forms">
<value>Horizontal</value>
</data>
<metadata name="contextMenuStrip2.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<metadata name="contextMenuStripHud.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>542, 17</value>
</metadata>
<data name="recordHudToAVIToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
@ -179,13 +212,13 @@
<data name="userItemsToolStripMenuItem.Text" xml:space="preserve">
<value>User Items</value>
</data>
<data name="contextMenuStrip2.Size" type="System.Drawing.Size, System.Drawing">
<data name="contextMenuStripHud.Size" type="System.Drawing.Size, System.Drawing">
<value>177, 158</value>
</data>
<data name="&gt;&gt;contextMenuStrip2.Name" xml:space="preserve">
<value>contextMenuStrip2</value>
<data name="&gt;&gt;contextMenuStripHud.Name" xml:space="preserve">
<value>contextMenuStripHud</value>
</data>
<data name="&gt;&gt;contextMenuStrip2.Type" xml:space="preserve">
<data name="&gt;&gt;contextMenuStripHud.Type" xml:space="preserve">
<value>System.Windows.Forms.ContextMenuStrip, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<metadata name="bindingSource1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
@ -198,7 +231,7 @@
<value>0, 0</value>
</data>
<data name="hud1.Size" type="System.Drawing.Size, System.Drawing">
<value>415, 311</value>
<value>358, 263</value>
</data>
<assembly alias="mscorlib" name="mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="hud1.TabIndex" type="System.Int32, mscorlib">
@ -208,7 +241,7 @@
<value>hud1</value>
</data>
<data name="&gt;&gt;hud1.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.HUD, ArdupilotMegaPlanner10, Version=1.1.4639.27099, Culture=neutral, PublicKeyToken=null</value>
<value>ArdupilotMega.Controls.HUD, ArdupilotMegaPlanner10, Version=1.1.4646.13106, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;hud1.Parent" xml:space="preserve">
<value>SubMainLeft.Panel1</value>
@ -238,7 +271,7 @@
<value>3, 278</value>
</data>
<data name="quickView6.Size" type="System.Drawing.Size, System.Drawing">
<value>384, 55</value>
<value>327, 55</value>
</data>
<data name="quickView6.TabIndex" type="System.Int32, mscorlib">
<value>5</value>
@ -247,7 +280,7 @@
<value>quickView6</value>
</data>
<data name="&gt;&gt;quickView6.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.QuickView, ArdupilotMegaPlanner10, Version=1.1.4639.27099, Culture=neutral, PublicKeyToken=null</value>
<value>ArdupilotMega.Controls.QuickView, ArdupilotMegaPlanner10, Version=1.1.4646.13106, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;quickView6.Parent" xml:space="preserve">
<value>tabQuick</value>
@ -262,7 +295,7 @@
<value>3, 223</value>
</data>
<data name="quickView5.Size" type="System.Drawing.Size, System.Drawing">
<value>384, 55</value>
<value>327, 55</value>
</data>
<data name="quickView5.TabIndex" type="System.Int32, mscorlib">
<value>4</value>
@ -271,7 +304,7 @@
<value>quickView5</value>
</data>
<data name="&gt;&gt;quickView5.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.QuickView, ArdupilotMegaPlanner10, Version=1.1.4639.27099, Culture=neutral, PublicKeyToken=null</value>
<value>ArdupilotMega.Controls.QuickView, ArdupilotMegaPlanner10, Version=1.1.4646.13106, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;quickView5.Parent" xml:space="preserve">
<value>tabQuick</value>
@ -286,7 +319,7 @@
<value>3, 168</value>
</data>
<data name="quickView4.Size" type="System.Drawing.Size, System.Drawing">
<value>384, 55</value>
<value>327, 55</value>
</data>
<data name="quickView4.TabIndex" type="System.Int32, mscorlib">
<value>3</value>
@ -295,7 +328,7 @@
<value>quickView4</value>
</data>
<data name="&gt;&gt;quickView4.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.QuickView, ArdupilotMegaPlanner10, Version=1.1.4639.27099, Culture=neutral, PublicKeyToken=null</value>
<value>ArdupilotMega.Controls.QuickView, ArdupilotMegaPlanner10, Version=1.1.4646.13106, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;quickView4.Parent" xml:space="preserve">
<value>tabQuick</value>
@ -310,7 +343,7 @@
<value>3, 113</value>
</data>
<data name="quickView3.Size" type="System.Drawing.Size, System.Drawing">
<value>384, 55</value>
<value>327, 55</value>
</data>
<data name="quickView3.TabIndex" type="System.Int32, mscorlib">
<value>2</value>
@ -319,7 +352,7 @@
<value>quickView3</value>
</data>
<data name="&gt;&gt;quickView3.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.QuickView, ArdupilotMegaPlanner10, Version=1.1.4639.27099, Culture=neutral, PublicKeyToken=null</value>
<value>ArdupilotMega.Controls.QuickView, ArdupilotMegaPlanner10, Version=1.1.4646.13106, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;quickView3.Parent" xml:space="preserve">
<value>tabQuick</value>
@ -334,7 +367,7 @@
<value>3, 58</value>
</data>
<data name="quickView2.Size" type="System.Drawing.Size, System.Drawing">
<value>384, 55</value>
<value>327, 55</value>
</data>
<data name="quickView2.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
@ -343,7 +376,7 @@
<value>quickView2</value>
</data>
<data name="&gt;&gt;quickView2.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.QuickView, ArdupilotMegaPlanner10, Version=1.1.4639.27099, Culture=neutral, PublicKeyToken=null</value>
<value>ArdupilotMega.Controls.QuickView, ArdupilotMegaPlanner10, Version=1.1.4646.13106, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;quickView2.Parent" xml:space="preserve">
<value>tabQuick</value>
@ -358,7 +391,7 @@
<value>3, 3</value>
</data>
<data name="quickView1.Size" type="System.Drawing.Size, System.Drawing">
<value>384, 55</value>
<value>327, 55</value>
</data>
<data name="quickView1.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
@ -367,7 +400,7 @@
<value>quickView1</value>
</data>
<data name="&gt;&gt;quickView1.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.QuickView, ArdupilotMegaPlanner10, Version=1.1.4639.27099, Culture=neutral, PublicKeyToken=null</value>
<value>ArdupilotMega.Controls.QuickView, ArdupilotMegaPlanner10, Version=1.1.4646.13106, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;quickView1.Parent" xml:space="preserve">
<value>tabQuick</value>
@ -382,7 +415,7 @@
<value>3, 3, 3, 3</value>
</data>
<data name="tabQuick.Size" type="System.Drawing.Size, System.Drawing">
<value>407, 116</value>
<value>350, 94</value>
</data>
<data name="tabQuick.TabIndex" type="System.Int32, mscorlib">
<value>4</value>
@ -421,7 +454,7 @@
<value>BUT_script</value>
</data>
<data name="&gt;&gt;BUT_script.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner10, Version=1.1.4639.27099, Culture=neutral, PublicKeyToken=null</value>
<value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner10, Version=1.1.4646.13106, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;BUT_script.Parent" xml:space="preserve">
<value>tabActions</value>
@ -454,7 +487,7 @@
<value>BUT_joystick</value>
</data>
<data name="&gt;&gt;BUT_joystick.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner10, Version=1.1.4639.27099, Culture=neutral, PublicKeyToken=null</value>
<value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner10, Version=1.1.4646.13106, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;BUT_joystick.Parent" xml:space="preserve">
<value>tabActions</value>
@ -484,7 +517,7 @@
<value>BUT_quickmanual</value>
</data>
<data name="&gt;&gt;BUT_quickmanual.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner10, Version=1.1.4639.27099, Culture=neutral, PublicKeyToken=null</value>
<value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner10, Version=1.1.4646.13106, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;BUT_quickmanual.Parent" xml:space="preserve">
<value>tabActions</value>
@ -514,7 +547,7 @@
<value>BUT_quickrtl</value>
</data>
<data name="&gt;&gt;BUT_quickrtl.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner10, Version=1.1.4639.27099, Culture=neutral, PublicKeyToken=null</value>
<value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner10, Version=1.1.4646.13106, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;BUT_quickrtl.Parent" xml:space="preserve">
<value>tabActions</value>
@ -544,7 +577,7 @@
<value>BUT_quickauto</value>
</data>
<data name="&gt;&gt;BUT_quickauto.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner10, Version=1.1.4639.27099, Culture=neutral, PublicKeyToken=null</value>
<value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner10, Version=1.1.4646.13106, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;BUT_quickauto.Parent" xml:space="preserve">
<value>tabActions</value>
@ -598,7 +631,7 @@
<value>BUT_setwp</value>
</data>
<data name="&gt;&gt;BUT_setwp.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner10, Version=1.1.4639.27099, Culture=neutral, PublicKeyToken=null</value>
<value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner10, Version=1.1.4646.13106, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;BUT_setwp.Parent" xml:space="preserve">
<value>tabActions</value>
@ -649,7 +682,7 @@
<value>BUT_setmode</value>
</data>
<data name="&gt;&gt;BUT_setmode.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner10, Version=1.1.4639.27099, Culture=neutral, PublicKeyToken=null</value>
<value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner10, Version=1.1.4646.13106, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;BUT_setmode.Parent" xml:space="preserve">
<value>tabActions</value>
@ -679,7 +712,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.4639.27099, Culture=neutral, PublicKeyToken=null</value>
<value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner10, Version=1.1.4646.13106, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;BUT_clear_track.Parent" xml:space="preserve">
<value>tabActions</value>
@ -730,7 +763,7 @@
<value>BUT_Homealt</value>
</data>
<data name="&gt;&gt;BUT_Homealt.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner10, Version=1.1.4639.27099, Culture=neutral, PublicKeyToken=null</value>
<value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner10, Version=1.1.4646.13106, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;BUT_Homealt.Parent" xml:space="preserve">
<value>tabActions</value>
@ -760,7 +793,7 @@
<value>BUT_RAWSensor</value>
</data>
<data name="&gt;&gt;BUT_RAWSensor.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner10, Version=1.1.4639.27099, Culture=neutral, PublicKeyToken=null</value>
<value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner10, Version=1.1.4646.13106, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;BUT_RAWSensor.Parent" xml:space="preserve">
<value>tabActions</value>
@ -790,7 +823,7 @@
<value>BUTrestartmission</value>
</data>
<data name="&gt;&gt;BUTrestartmission.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner10, Version=1.1.4639.27099, Culture=neutral, PublicKeyToken=null</value>
<value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner10, Version=1.1.4646.13106, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;BUTrestartmission.Parent" xml:space="preserve">
<value>tabActions</value>
@ -820,7 +853,7 @@
<value>BUTactiondo</value>
</data>
<data name="&gt;&gt;BUTactiondo.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner10, Version=1.1.4639.27099, Culture=neutral, PublicKeyToken=null</value>
<value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner10, Version=1.1.4646.13106, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;BUTactiondo.Parent" xml:space="preserve">
<value>tabActions</value>
@ -832,7 +865,7 @@
<value>4, 22</value>
</data>
<data name="tabActions.Size" type="System.Drawing.Size, System.Drawing">
<value>407, 116</value>
<value>350, 94</value>
</data>
<data name="tabActions.TabIndex" type="System.Int32, mscorlib">
<value>2</value>
@ -874,7 +907,7 @@
<value>Gvspeed</value>
</data>
<data name="&gt;&gt;Gvspeed.Type" xml:space="preserve">
<value>AGaugeApp.AGauge, ArdupilotMegaPlanner10, Version=1.1.4639.27099, Culture=neutral, PublicKeyToken=null</value>
<value>AGaugeApp.AGauge, ArdupilotMegaPlanner10, Version=1.1.4646.13106, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;Gvspeed.Parent" xml:space="preserve">
<value>tabGauges</value>
@ -904,7 +937,7 @@
<value>Gheading</value>
</data>
<data name="&gt;&gt;Gheading.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.HSI, ArdupilotMegaPlanner10, Version=1.1.4639.27099, Culture=neutral, PublicKeyToken=null</value>
<value>ArdupilotMega.Controls.HSI, ArdupilotMegaPlanner10, Version=1.1.4646.13106, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;Gheading.Parent" xml:space="preserve">
<value>tabGauges</value>
@ -934,7 +967,7 @@
<value>Galt</value>
</data>
<data name="&gt;&gt;Galt.Type" xml:space="preserve">
<value>AGaugeApp.AGauge, ArdupilotMegaPlanner10, Version=1.1.4639.27099, Culture=neutral, PublicKeyToken=null</value>
<value>AGaugeApp.AGauge, ArdupilotMegaPlanner10, Version=1.1.4646.13106, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;Galt.Parent" xml:space="preserve">
<value>tabGauges</value>
@ -967,7 +1000,7 @@
<value>Gspeed</value>
</data>
<data name="&gt;&gt;Gspeed.Type" xml:space="preserve">
<value>AGaugeApp.AGauge, ArdupilotMegaPlanner10, Version=1.1.4639.27099, Culture=neutral, PublicKeyToken=null</value>
<value>AGaugeApp.AGauge, ArdupilotMegaPlanner10, Version=1.1.4646.13106, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;Gspeed.Parent" xml:space="preserve">
<value>tabGauges</value>
@ -982,7 +1015,7 @@
<value>3, 3, 3, 3</value>
</data>
<data name="tabGauges.Size" type="System.Drawing.Size, System.Drawing">
<value>407, 116</value>
<value>350, 94</value>
</data>
<data name="tabGauges.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
@ -1012,7 +1045,7 @@
<value>3, 3, 3, 3</value>
</data>
<data name="tabStatus.Size" type="System.Drawing.Size, System.Drawing">
<value>407, 116</value>
<value>350, 94</value>
</data>
<data name="tabStatus.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
@ -1036,7 +1069,7 @@
<value>Top, Right</value>
</data>
<data name="lbl_playbackspeed.Location" type="System.Drawing.Point, System.Drawing">
<value>353, 54</value>
<value>253, 54</value>
</data>
<data name="lbl_playbackspeed.Size" type="System.Drawing.Size, System.Drawing">
<value>51, 20</value>
@ -1051,7 +1084,7 @@
<value>lbl_playbackspeed</value>
</data>
<data name="&gt;&gt;lbl_playbackspeed.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.MyLabel, ArdupilotMegaPlanner10, Version=1.1.4639.27099, Culture=neutral, PublicKeyToken=null</value>
<value>ArdupilotMega.Controls.MyLabel, ArdupilotMegaPlanner10, Version=1.1.4646.13106, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;lbl_playbackspeed.Parent" xml:space="preserve">
<value>tabTLogs</value>
@ -1063,7 +1096,7 @@
<value>Top, Right</value>
</data>
<data name="lbl_logpercent.Location" type="System.Drawing.Point, System.Drawing">
<value>353, 32</value>
<value>253, 32</value>
</data>
<data name="lbl_logpercent.Size" type="System.Drawing.Size, System.Drawing">
<value>51, 20</value>
@ -1078,7 +1111,7 @@
<value>lbl_logpercent</value>
</data>
<data name="&gt;&gt;lbl_logpercent.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.MyLabel, ArdupilotMegaPlanner10, Version=1.1.4639.27099, Culture=neutral, PublicKeyToken=null</value>
<value>ArdupilotMega.Controls.MyLabel, ArdupilotMegaPlanner10, Version=1.1.4646.13106, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;lbl_logpercent.Parent" xml:space="preserve">
<value>tabTLogs</value>
@ -1087,13 +1120,13 @@
<value>1</value>
</data>
<data name="NUM_playbackspeed.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Bottom, Left, Right</value>
<value>Top, Left, Right</value>
</data>
<data name="NUM_playbackspeed.Location" type="System.Drawing.Point, System.Drawing">
<value>178, 40</value>
</data>
<data name="NUM_playbackspeed.Size" type="System.Drawing.Size, System.Drawing">
<value>169, 45</value>
<value>73, 45</value>
</data>
<data name="NUM_playbackspeed.TabIndex" type="System.Int32, mscorlib">
<value>77</value>
@ -1105,7 +1138,7 @@
<value>NUM_playbackspeed</value>
</data>
<data name="&gt;&gt;NUM_playbackspeed.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.MyTrackBar, ArdupilotMegaPlanner10, Version=1.1.4639.27099, Culture=neutral, PublicKeyToken=null</value>
<value>ArdupilotMega.Controls.MyTrackBar, ArdupilotMegaPlanner10, Version=1.1.4646.13106, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;NUM_playbackspeed.Parent" xml:space="preserve">
<value>tabTLogs</value>
@ -1132,7 +1165,7 @@
<value>BUT_log2kml</value>
</data>
<data name="&gt;&gt;BUT_log2kml.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner10, Version=1.1.4639.27099, Culture=neutral, PublicKeyToken=null</value>
<value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner10, Version=1.1.4646.13106, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;BUT_log2kml.Parent" xml:space="preserve">
<value>tabTLogs</value>
@ -1150,7 +1183,7 @@
<value>178, 3</value>
</data>
<data name="tracklog.Size" type="System.Drawing.Size, System.Drawing">
<value>226, 45</value>
<value>110, 45</value>
</data>
<data name="tracklog.TabIndex" type="System.Int32, mscorlib">
<value>75</value>
@ -1186,7 +1219,7 @@
<value>BUT_playlog</value>
</data>
<data name="&gt;&gt;BUT_playlog.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner10, Version=1.1.4639.27099, Culture=neutral, PublicKeyToken=null</value>
<value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner10, Version=1.1.4646.13106, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;BUT_playlog.Parent" xml:space="preserve">
<value>tabTLogs</value>
@ -1213,7 +1246,7 @@
<value>BUT_loadtelem</value>
</data>
<data name="&gt;&gt;BUT_loadtelem.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner10, Version=1.1.4639.27099, Culture=neutral, PublicKeyToken=null</value>
<value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner10, Version=1.1.4646.13106, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;BUT_loadtelem.Parent" xml:space="preserve">
<value>tabTLogs</value>
@ -1225,7 +1258,7 @@
<value>4, 22</value>
</data>
<data name="tabTLogs.Size" type="System.Drawing.Size, System.Drawing">
<value>407, 116</value>
<value>350, 94</value>
</data>
<data name="tabTLogs.TabIndex" type="System.Int32, mscorlib">
<value>3</value>
@ -1255,7 +1288,7 @@
<value>0, 0</value>
</data>
<data name="tabControl1.Size" type="System.Drawing.Size, System.Drawing">
<value>415, 142</value>
<value>358, 120</value>
</data>
<data name="tabControl1.TabIndex" type="System.Int32, mscorlib">
<value>84</value>
@ -1285,10 +1318,10 @@
<value>1</value>
</data>
<data name="SubMainLeft.Size" type="System.Drawing.Size, System.Drawing">
<value>417, 461</value>
<value>360, 391</value>
</data>
<data name="SubMainLeft.SplitterDistance" type="System.Int32, mscorlib">
<value>313</value>
<value>265</value>
</data>
<data name="SubMainLeft.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
@ -1345,7 +1378,7 @@
<value>4, 4, 4, 4</value>
</data>
<data name="zg1.Size" type="System.Drawing.Size, System.Drawing">
<value>577, 210</value>
<value>448, 210</value>
</data>
<data name="zg1.TabIndex" type="System.Int32, mscorlib">
<value>67</value>
@ -1377,42 +1410,6 @@
<data name="&gt;&gt;splitContainer1.Panel1.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<metadata name="contextMenuStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>290, 17</value>
</metadata>
<data name="goHereToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>174, 22</value>
</data>
<data name="goHereToolStripMenuItem.Text" xml:space="preserve">
<value>Fly To Here</value>
</data>
<data name="flyToHereAltToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>174, 22</value>
</data>
<data name="flyToHereAltToolStripMenuItem.Text" xml:space="preserve">
<value>Fly To Here Alt</value>
</data>
<data name="pointCameraHereToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>174, 22</value>
</data>
<data name="pointCameraHereToolStripMenuItem.Text" xml:space="preserve">
<value>Point Camera Here</value>
</data>
<data name="flightPlannerToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>174, 22</value>
</data>
<data name="flightPlannerToolStripMenuItem.Text" xml:space="preserve">
<value>Flight Planner</value>
</data>
<data name="contextMenuStrip1.Size" type="System.Drawing.Size, System.Drawing">
<value>175, 92</value>
</data>
<data name="&gt;&gt;contextMenuStrip1.Name" xml:space="preserve">
<value>contextMenuStrip1</value>
</data>
<data name="&gt;&gt;contextMenuStrip1.Type" xml:space="preserve">
<value>System.Windows.Forms.ContextMenuStrip, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="lbl_winddir.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
@ -1435,7 +1432,7 @@
<value>lbl_winddir</value>
</data>
<data name="&gt;&gt;lbl_winddir.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.MyLabel, ArdupilotMegaPlanner10, Version=1.1.4639.27099, Culture=neutral, PublicKeyToken=null</value>
<value>ArdupilotMega.Controls.MyLabel, ArdupilotMegaPlanner10, Version=1.1.4646.13106, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;lbl_winddir.Parent" xml:space="preserve">
<value>splitContainer1.Panel2</value>
@ -1465,7 +1462,7 @@
<value>lbl_windvel</value>
</data>
<data name="&gt;&gt;lbl_windvel.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.MyLabel, ArdupilotMegaPlanner10, Version=1.1.4639.27099, Culture=neutral, PublicKeyToken=null</value>
<value>ArdupilotMega.Controls.MyLabel, ArdupilotMegaPlanner10, Version=1.1.4646.13106, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;lbl_windvel.Parent" xml:space="preserve">
<value>splitContainer1.Panel2</value>
@ -1480,7 +1477,7 @@
<value>NoControl</value>
</data>
<data name="lbl_hdop.Location" type="System.Drawing.Point, System.Drawing">
<value>-1, 390</value>
<value>-1, 320</value>
</data>
<data name="lbl_hdop.Size" type="System.Drawing.Size, System.Drawing">
<value>43, 12</value>
@ -1498,7 +1495,7 @@
<value>lbl_hdop</value>
</data>
<data name="&gt;&gt;lbl_hdop.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.MyLabel, ArdupilotMegaPlanner10, Version=1.1.4639.27099, Culture=neutral, PublicKeyToken=null</value>
<value>ArdupilotMega.Controls.MyLabel, ArdupilotMegaPlanner10, Version=1.1.4646.13106, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;lbl_hdop.Parent" xml:space="preserve">
<value>splitContainer1.Panel2</value>
@ -1513,7 +1510,7 @@
<value>NoControl</value>
</data>
<data name="lbl_sats.Location" type="System.Drawing.Point, System.Drawing">
<value>-1, 408</value>
<value>-1, 338</value>
</data>
<data name="lbl_sats.Size" type="System.Drawing.Size, System.Drawing">
<value>40, 12</value>
@ -1531,7 +1528,7 @@
<value>lbl_sats</value>
</data>
<data name="&gt;&gt;lbl_sats.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.MyLabel, ArdupilotMegaPlanner10, Version=1.1.4639.27099, Culture=neutral, PublicKeyToken=null</value>
<value>ArdupilotMega.Controls.MyLabel, ArdupilotMegaPlanner10, Version=1.1.4646.13106, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;lbl_sats.Parent" xml:space="preserve">
<value>splitContainer1.Panel2</value>
@ -1549,7 +1546,7 @@
<value>0, 0, 0, 0</value>
</data>
<data name="gMapControl1.Size" type="System.Drawing.Size, System.Drawing">
<value>577, 420</value>
<value>448, 350</value>
</data>
<data name="gMapControl1.streamjpg" mimetype="application/x-microsoft.net.object.binary.base64">
<value>
@ -1703,7 +1700,7 @@
<value>gMapControl1</value>
</data>
<data name="&gt;&gt;gMapControl1.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.myGMAP, ArdupilotMegaPlanner10, Version=1.1.4639.27099, Culture=neutral, PublicKeyToken=null</value>
<value>ArdupilotMega.Controls.myGMAP, ArdupilotMegaPlanner10, Version=1.1.4646.13106, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;gMapControl1.Parent" xml:space="preserve">
<value>splitContainer1.Panel2</value>
@ -1724,7 +1721,7 @@
<value>1</value>
</data>
<data name="splitContainer1.Size" type="System.Drawing.Size, System.Drawing">
<value>577, 420</value>
<value>448, 350</value>
</data>
<data name="splitContainer1.SplitterDistance" type="System.Int32, mscorlib">
<value>210</value>
@ -1766,7 +1763,7 @@
<value>TXT_lat</value>
</data>
<data name="&gt;&gt;TXT_lat.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.MyLabel, ArdupilotMegaPlanner10, Version=1.1.4639.27099, Culture=neutral, PublicKeyToken=null</value>
<value>ArdupilotMega.Controls.MyLabel, ArdupilotMegaPlanner10, Version=1.1.4646.13106, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;TXT_lat.Parent" xml:space="preserve">
<value>panel1</value>
@ -1823,7 +1820,7 @@
<value>label1</value>
</data>
<data name="&gt;&gt;label1.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.MyLabel, ArdupilotMegaPlanner10, Version=1.1.4639.27099, Culture=neutral, PublicKeyToken=null</value>
<value>ArdupilotMega.Controls.MyLabel, ArdupilotMegaPlanner10, Version=1.1.4646.13106, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;label1.Parent" xml:space="preserve">
<value>panel1</value>
@ -1853,7 +1850,7 @@
<value>TXT_long</value>
</data>
<data name="&gt;&gt;TXT_long.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.MyLabel, ArdupilotMegaPlanner10, Version=1.1.4639.27099, Culture=neutral, PublicKeyToken=null</value>
<value>ArdupilotMega.Controls.MyLabel, ArdupilotMegaPlanner10, Version=1.1.4646.13106, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;TXT_long.Parent" xml:space="preserve">
<value>panel1</value>
@ -1883,7 +1880,7 @@
<value>TXT_alt</value>
</data>
<data name="&gt;&gt;TXT_alt.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.MyLabel, ArdupilotMegaPlanner10, Version=1.1.4639.27099, Culture=neutral, PublicKeyToken=null</value>
<value>ArdupilotMega.Controls.MyLabel, ArdupilotMegaPlanner10, Version=1.1.4646.13106, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;TXT_alt.Parent" xml:space="preserve">
<value>panel1</value>
@ -1967,13 +1964,13 @@
<value>Fill</value>
</data>
<data name="panel1.Location" type="System.Drawing.Point, System.Drawing">
<value>1, 428</value>
<value>1, 358</value>
</data>
<data name="panel1.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>0, 0, 0, 0</value>
</data>
<data name="panel1.Size" type="System.Drawing.Size, System.Drawing">
<value>583, 30</value>
<value>454, 30</value>
</data>
<data name="panel1.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
@ -2000,7 +1997,7 @@
<value>2</value>
</data>
<data name="tableMap.Size" type="System.Drawing.Size, System.Drawing">
<value>585, 459</value>
<value>456, 389</value>
</data>
<data name="tableMap.TabIndex" type="System.Int32, mscorlib">
<value>75</value>
@ -2033,14 +2030,17 @@
<value>1</value>
</data>
<data name="MainH.Size" type="System.Drawing.Size, System.Drawing">
<value>1008, 461</value>
<value>822, 391</value>
</data>
<data name="MainH.SplitterDistance" type="System.Int32, mscorlib">
<value>417</value>
<value>360</value>
</data>
<data name="MainH.TabIndex" type="System.Int32, mscorlib">
<value>68</value>
</data>
<data name="MainH.Visible" type="System.Boolean, mscorlib">
<value>False</value>
</data>
<data name="&gt;&gt;MainH.Name" xml:space="preserve">
<value>MainH</value>
</data>
@ -2051,7 +2051,7 @@
<value>$this</value>
</data>
<data name="&gt;&gt;MainH.ZOrder" xml:space="preserve">
<value>2</value>
<value>3</value>
</data>
<data name="dataGridViewImageColumn1.HeaderText" xml:space="preserve">
<value>Up</value>
@ -2068,29 +2068,47 @@
<metadata name="ZedGraphTimer.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
<data name="label6.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
<metadata name="contextMenuStripDockContainer.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>714, 17</value>
</metadata>
<data name="resetToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>152, 22</value>
</data>
<data name="label6.Location" type="System.Drawing.Point, System.Drawing">
<data name="resetToolStripMenuItem.Text" xml:space="preserve">
<value>Reset</value>
</data>
<data name="contextMenuStripDockContainer.Size" type="System.Drawing.Size, System.Drawing">
<value>103, 26</value>
</data>
<data name="&gt;&gt;contextMenuStripDockContainer.Name" xml:space="preserve">
<value>contextMenuStripDockContainer</value>
</data>
<data name="&gt;&gt;contextMenuStripDockContainer.Type" xml:space="preserve">
<value>System.Windows.Forms.ContextMenuStrip, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="dockContainer1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="dockContainer1.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 0</value>
</data>
<data name="label6.Size" type="System.Drawing.Size, System.Drawing">
<value>100, 23</value>
<data name="dockContainer1.Size" type="System.Drawing.Size, System.Drawing">
<value>1008, 461</value>
</data>
<data name="label6.TabIndex" type="System.Int32, mscorlib">
<value>47</value>
<data name="dockContainer1.TabIndex" type="System.Int32, mscorlib">
<value>69</value>
</data>
<data name="&gt;&gt;label6.Name" xml:space="preserve">
<value>label6</value>
<data name="&gt;&gt;dockContainer1.Name" xml:space="preserve">
<value>dockContainer1</value>
</data>
<data name="&gt;&gt;label6.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.MyLabel, ArdupilotMegaPlanner10, Version=1.1.4639.27099, Culture=neutral, PublicKeyToken=null</value>
<data name="&gt;&gt;dockContainer1.Type" xml:space="preserve">
<value>Crom.Controls.Docking.DockContainer, Crom.Controls, Version=2.0.5.21, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;label6.Parent" xml:space="preserve">
<data name="&gt;&gt;dockContainer1.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;label6.ZOrder" xml:space="preserve">
<value>3</value>
<data name="&gt;&gt;dockContainer1.ZOrder" xml:space="preserve">
<value>4</value>
</data>
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
@ -2104,6 +2122,30 @@
<data name="$this.Size" type="System.Drawing.Size, System.Drawing">
<value>1008, 461</value>
</data>
<data name="&gt;&gt;goHereToolStripMenuItem.Name" xml:space="preserve">
<value>goHereToolStripMenuItem</value>
</data>
<data name="&gt;&gt;goHereToolStripMenuItem.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;flyToHereAltToolStripMenuItem.Name" xml:space="preserve">
<value>flyToHereAltToolStripMenuItem</value>
</data>
<data name="&gt;&gt;flyToHereAltToolStripMenuItem.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;pointCameraHereToolStripMenuItem.Name" xml:space="preserve">
<value>pointCameraHereToolStripMenuItem</value>
</data>
<data name="&gt;&gt;pointCameraHereToolStripMenuItem.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;flightPlannerToolStripMenuItem.Name" xml:space="preserve">
<value>flightPlannerToolStripMenuItem</value>
</data>
<data name="&gt;&gt;flightPlannerToolStripMenuItem.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;recordHudToAVIToolStripMenuItem.Name" xml:space="preserve">
<value>recordHudToAVIToolStripMenuItem</value>
</data>
@ -2146,30 +2188,6 @@
<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;goHereToolStripMenuItem.Name" xml:space="preserve">
<value>goHereToolStripMenuItem</value>
</data>
<data name="&gt;&gt;goHereToolStripMenuItem.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;flyToHereAltToolStripMenuItem.Name" xml:space="preserve">
<value>flyToHereAltToolStripMenuItem</value>
</data>
<data name="&gt;&gt;flyToHereAltToolStripMenuItem.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;pointCameraHereToolStripMenuItem.Name" xml:space="preserve">
<value>pointCameraHereToolStripMenuItem</value>
</data>
<data name="&gt;&gt;pointCameraHereToolStripMenuItem.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;flightPlannerToolStripMenuItem.Name" xml:space="preserve">
<value>flightPlannerToolStripMenuItem</value>
</data>
<data name="&gt;&gt;flightPlannerToolStripMenuItem.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;dataGridViewImageColumn1.Name" xml:space="preserve">
<value>dataGridViewImageColumn1</value>
</data>
@ -2194,10 +2212,16 @@
<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;resetToolStripMenuItem.Name" xml:space="preserve">
<value>resetToolStripMenuItem</value>
</data>
<data name="&gt;&gt;resetToolStripMenuItem.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>FlightData</value>
</data>
<data name="&gt;&gt;$this.Type" xml:space="preserve">
<value>System.Windows.Forms.MyUserControl, ArdupilotMegaPlanner10, Version=1.1.4639.27099, Culture=neutral, PublicKeyToken=null</value>
<value>System.Windows.Forms.MyUserControl, ArdupilotMegaPlanner10, Version=1.1.4646.13106, 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 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();
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();
this.CHK_altmode = new System.Windows.Forms.CheckBox();
this.CHK_holdalt = new System.Windows.Forms.CheckBox();
this.Commands = new System.Windows.Forms.DataGridView();
@ -134,6 +134,7 @@
this.reverseWPsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.fileLoadSaveToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.loadWPFileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.loadAndAppendToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.saveWPFileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.trackerHomeToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.flyToHereToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
@ -142,7 +143,8 @@
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.loadAndAppendToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
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();
@ -174,14 +176,14 @@
//
this.Commands.AllowUserToAddRows = false;
resources.ApplyResources(this.Commands, "Commands");
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;
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;
this.Commands.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
this.Command,
this.Param1,
@ -195,17 +197,17 @@
this.Up,
this.Down});
this.Commands.Name = "Commands";
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;
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;
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);
@ -217,9 +219,9 @@
//
// Command
//
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;
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;
this.Command.DisplayStyle = System.Windows.Forms.DataGridViewComboBoxDisplayStyle.ComboBox;
resources.ApplyResources(this.Command, "Command");
this.Command.Name = "Command";
@ -285,7 +287,7 @@
//
// Up
//
this.Up.DefaultCellStyle = dataGridViewCellStyle3;
this.Up.DefaultCellStyle = dataGridViewCellStyle11;
resources.ApplyResources(this.Up, "Up");
this.Up.Image = global::ArdupilotMega.Properties.Resources.up;
this.Up.ImageLayout = System.Windows.Forms.DataGridViewImageCellLayout.Stretch;
@ -293,8 +295,8 @@
//
// Down
//
dataGridViewCellStyle4.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter;
this.Down.DefaultCellStyle = dataGridViewCellStyle4;
dataGridViewCellStyle12.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter;
this.Down.DefaultCellStyle = dataGridViewCellStyle12;
resources.ApplyResources(this.Down, "Down");
this.Down.Image = global::ArdupilotMega.Properties.Resources.down;
this.Down.ImageLayout = System.Windows.Forms.DataGridViewImageCellLayout.Stretch;
@ -418,8 +420,8 @@
//
// dataGridViewImageColumn1
//
dataGridViewCellStyle7.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter;
this.dataGridViewImageColumn1.DefaultCellStyle = dataGridViewCellStyle7;
dataGridViewCellStyle15.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter;
this.dataGridViewImageColumn1.DefaultCellStyle = dataGridViewCellStyle15;
resources.ApplyResources(this.dataGridViewImageColumn1, "dataGridViewImageColumn1");
this.dataGridViewImageColumn1.Image = global::ArdupilotMega.Properties.Resources.up;
this.dataGridViewImageColumn1.ImageLayout = System.Windows.Forms.DataGridViewImageCellLayout.Stretch;
@ -427,8 +429,8 @@
//
// dataGridViewImageColumn2
//
dataGridViewCellStyle8.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter;
this.dataGridViewImageColumn2.DefaultCellStyle = dataGridViewCellStyle8;
dataGridViewCellStyle16.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter;
this.dataGridViewImageColumn2.DefaultCellStyle = dataGridViewCellStyle16;
resources.ApplyResources(this.dataGridViewImageColumn2, "dataGridViewImageColumn2");
this.dataGridViewImageColumn2.Image = global::ArdupilotMega.Properties.Resources.down;
this.dataGridViewImageColumn2.ImageLayout = System.Windows.Forms.DataGridViewImageCellLayout.Stretch;
@ -765,7 +767,9 @@
//
this.polygonToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.addPolygonPointToolStripMenuItem,
this.clearPolygonToolStripMenuItem});
this.clearPolygonToolStripMenuItem,
this.savePolygonToolStripMenuItem,
this.loadPolygonToolStripMenuItem});
this.polygonToolStripMenuItem.Name = "polygonToolStripMenuItem";
resources.ApplyResources(this.polygonToolStripMenuItem, "polygonToolStripMenuItem");
//
@ -938,6 +942,12 @@
resources.ApplyResources(this.loadWPFileToolStripMenuItem, "loadWPFileToolStripMenuItem");
this.loadWPFileToolStripMenuItem.Click += new System.EventHandler(this.loadWPFileToolStripMenuItem_Click);
//
// loadAndAppendToolStripMenuItem
//
this.loadAndAppendToolStripMenuItem.Name = "loadAndAppendToolStripMenuItem";
resources.ApplyResources(this.loadAndAppendToolStripMenuItem, "loadAndAppendToolStripMenuItem");
this.loadAndAppendToolStripMenuItem.Click += new System.EventHandler(this.loadAndAppendToolStripMenuItem_Click);
//
// saveWPFileToolStripMenuItem
//
this.saveWPFileToolStripMenuItem.Name = "saveWPFileToolStripMenuItem";
@ -990,11 +1000,17 @@
this.timer1.Interval = 1000;
this.timer1.Tick += new System.EventHandler(this.timer1_Tick);
//
// loadAndAppendToolStripMenuItem
// savePolygonToolStripMenuItem
//
this.loadAndAppendToolStripMenuItem.Name = "loadAndAppendToolStripMenuItem";
resources.ApplyResources(this.loadAndAppendToolStripMenuItem, "loadAndAppendToolStripMenuItem");
this.loadAndAppendToolStripMenuItem.Click += new System.EventHandler(this.loadAndAppendToolStripMenuItem_Click);
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
//
@ -1131,5 +1147,7 @@
private System.Windows.Forms.ToolStripMenuItem gridV2ToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem reverseWPsToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem loadAndAppendToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem savePolygonToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem loadPolygonToolStripMenuItem;
}
}

View File

@ -1419,7 +1419,7 @@ namespace ArdupilotMega.GCSViews
return;
}
int i = -1;
int i = Commands.Rows.Count - 1;
foreach (Locationwp temp in cmds)
{
i++;
@ -1920,11 +1920,39 @@ namespace ArdupilotMega.GCSViews
rc.Pen.Color = Color.Red;
MainMap.Invalidate(false);
int answer;
if (int.TryParse(item.Tag.ToString(), out answer))
{
try
{
Commands.CurrentCell = Commands[0, answer - 1];
item.ToolTipText = "Alt: " + Commands[Alt.Index, answer - 1].Value.ToString();
item.ToolTipMode = MarkerTooltipMode.OnMouseOver;
}
catch { }
}
CurentRectMarker = rc;
}
}
}
// click on some marker
void MainMap_OnMarkerClick(GMapMarker item, MouseEventArgs e)
{
int answer;
try // when dragging item can sometimes be null
{
if (int.TryParse(item.Tag.ToString(), out answer))
{
Commands.CurrentCell = Commands[0, answer - 1];
}
}
catch { }
return;
}
void MainMap_OnMapTypeChanged(MapType type)
{
comboBoxMapType.SelectedItem = MainMap.MapType;
@ -1949,6 +1977,8 @@ namespace ArdupilotMega.GCSViews
{
end = MainMap.FromLocalToLatLng(e.X, e.Y);
// Console.WriteLine("MainMap MU");
if (e.Button == MouseButtons.Right) // ignore right clicks
{
return;
@ -2001,6 +2031,8 @@ namespace ArdupilotMega.GCSViews
{
start = MainMap.FromLocalToLatLng(e.X, e.Y);
// Console.WriteLine("MainMap MD");
if (e.Button == MouseButtons.Left && Control.ModifierKeys != Keys.Alt)
{
isMouseDown = true;
@ -2018,6 +2050,11 @@ namespace ArdupilotMega.GCSViews
{
PointLatLng point = MainMap.FromLocalToLatLng(e.X, e.Y);
if (start == point)
return;
// Console.WriteLine("MainMap MM " + point);
currentMarker.Position = point;
if (!isMouseDown)
@ -2108,22 +2145,7 @@ namespace ArdupilotMega.GCSViews
}
}
// click on some marker
void MainMap_OnMarkerClick(GMapMarker item, MouseEventArgs e)
{
int answer;
try // when dragging item can sometimes be null
{
if (int.TryParse(item.Tag.ToString(), out answer))
{
Commands.CurrentCell = Commands[0, answer - 1];
}
}
catch { }
return;
}
// loader start loading tiles
void MainMap_OnTileLoadStart()
@ -4204,5 +4226,89 @@ namespace ArdupilotMega.GCSViews
readQGC110wpfile(file, true);
}
}
private void savePolygonToolStripMenuItem_Click(object sender, EventArgs e)
{
if (drawnpolygon.Points.Count == 0)
{
return;
}
SaveFileDialog sf = new SaveFileDialog();
sf.Filter = "Polygon (*.poly)|*.poly";
sf.ShowDialog();
if (sf.FileName != "")
{
try
{
StreamWriter sw = new StreamWriter(sf.OpenFile());
sw.WriteLine("#saved by APM Planner " + Application.ProductVersion);
if (drawnpolygon.Points.Count > 0)
{
foreach (var pll in drawnpolygon.Points)
{
sw.WriteLine(pll.Lat + " " + pll.Lng);
}
PointLatLng pll2 = drawnpolygon.Points[0];
sw.WriteLine(pll2.Lat + " " + pll2.Lng);
}
sw.Close();
}
catch { CustomMessageBox.Show("Failed to write fence file"); }
}
}
private void loadPolygonToolStripMenuItem_Click(object sender, EventArgs e)
{
OpenFileDialog fd = new OpenFileDialog();
fd.Filter = "Polygon (*.poly)|*.poly";
fd.ShowDialog();
if (File.Exists(fd.FileName))
{
StreamReader sr = new StreamReader(fd.OpenFile());
drawnpolygons.Markers.Clear();
drawnpolygons.Polygons.Clear();
drawnpolygon.Points.Clear();
int a = 0;
while (!sr.EndOfStream)
{
string line = sr.ReadLine();
if (line.StartsWith("#"))
{
continue;
}
else
{
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);
a++;
}
}
// remove loop close
if (drawnpolygon.Points[0] == drawnpolygon.Points[drawnpolygon.Points.Count - 1])
{
drawnpolygon.Points.RemoveAt(drawnpolygon.Points.Count - 1);
}
drawnpolygons.Polygons.Add(drawnpolygon);
MainMap.UpdatePolygonLocalPosition(drawnpolygon);
MainMap.Invalidate();
}
}
}
}

View File

@ -537,26 +537,11 @@
<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.4627.35768, Culture=neutral, PublicKeyToken=null</value>
<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>
@ -564,26 +549,11 @@
<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.4627.35768, Culture=neutral, PublicKeyToken=null</value>
<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>
@ -612,9 +582,168 @@
<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>
@ -798,27 +927,6 @@
<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>
@ -858,6 +966,111 @@
<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>
@ -1041,27 +1254,6 @@
<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>
@ -1122,6 +1314,9 @@
<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>
@ -1137,9 +1332,6 @@
<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>
@ -1147,7 +1339,7 @@
<value>BUT_Add</value>
</data>
<data name="&gt;&gt;BUT_Add.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner10, Version=1.1.4627.35768, Culture=neutral, PublicKeyToken=null</value>
<value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner10, Version=1.1.4637.40284, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;BUT_Add.Parent" xml:space="preserve">
<value>panelWaypoints</value>
@ -1338,42 +1530,12 @@
<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>
@ -1425,153 +1587,42 @@
<data name="clearPolygonToolStripMenuItem.Text" xml:space="preserve">
<value>Clear Polygon</value>
</data>
<data name="savePolygonToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>174, 22</value>
</data>
<data name="savePolygonToolStripMenuItem.Text" xml:space="preserve">
<value>Save Polygon</value>
</data>
<data name="loadPolygonToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>174, 22</value>
</data>
<data name="loadPolygonToolStripMenuItem.Text" xml:space="preserve">
<value>Load Polygon</value>
</data>
<data name="polygonToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>152, 22</value>
</data>
<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>
@ -1760,7 +1811,7 @@
<value>MainMap</value>
</data>
<data name="&gt;&gt;MainMap.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.myGMAP, ArdupilotMegaPlanner10, Version=1.1.4627.35768, Culture=neutral, PublicKeyToken=null</value>
<value>ArdupilotMega.Controls.myGMAP, ArdupilotMegaPlanner10, Version=1.1.4637.40284, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;MainMap.Parent" xml:space="preserve">
<value>panelMap</value>
@ -1790,7 +1841,7 @@
<value>trackBar1</value>
</data>
<data name="&gt;&gt;trackBar1.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.MyTrackBar, ArdupilotMegaPlanner10, Version=1.1.4627.35768, Culture=neutral, PublicKeyToken=null</value>
<value>ArdupilotMega.Controls.MyTrackBar, ArdupilotMegaPlanner10, Version=1.1.4637.40284, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;trackBar1.Parent" xml:space="preserve">
<value>panelMap</value>
@ -1858,6 +1909,159 @@
<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>
@ -1882,6 +2086,9 @@
<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>
@ -2215,6 +2422,12 @@
<data name="&gt;&gt;loadWPFileToolStripMenuItem.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;loadAndAppendToolStripMenuItem.Name" xml:space="preserve">
<value>loadAndAppendToolStripMenuItem</value>
</data>
<data name="&gt;&gt;loadAndAppendToolStripMenuItem.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;saveWPFileToolStripMenuItem.Name" xml:space="preserve">
<value>saveWPFileToolStripMenuItem</value>
</data>
@ -2245,16 +2458,22 @@
<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;loadAndAppendToolStripMenuItem.Name" xml:space="preserve">
<value>loadAndAppendToolStripMenuItem</value>
<data name="&gt;&gt;savePolygonToolStripMenuItem.Name" xml:space="preserve">
<value>savePolygonToolStripMenuItem</value>
</data>
<data name="&gt;&gt;loadAndAppendToolStripMenuItem.Type" xml:space="preserve">
<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.4627.35768, Culture=neutral, PublicKeyToken=null</value>
<value>System.Windows.Forms.MyUserControl, ArdupilotMegaPlanner10, Version=1.1.4637.40284, Culture=neutral, PublicKeyToken=null</value>
</data>
</root>

View File

@ -336,7 +336,7 @@ namespace ArdupilotMega.GCSViews
System.Threading.Thread t11 = new System.Threading.Thread(new System.Threading.ThreadStart(mainloop))
{
Name = "Main Serial/UDP listener",
Name = "Main simu Serial/UDP listener",
IsBackground = true
};
t11.Start();
@ -638,7 +638,7 @@ namespace ArdupilotMega.GCSViews
if (hzcounttime.Second != DateTime.Now.Second)
{
Console.WriteLine("SIM hz {0}", hzcount);
// Console.WriteLine("SIM hz {0}", hzcount);
hzcount = 0;
hzcounttime = DateTime.Now;
}

View File

@ -0,0 +1,11 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ArdupilotMega.HIL
{
class AeroSimRC : Hil
{
}
}

View File

@ -0,0 +1,11 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ArdupilotMega.HIL
{
class FlightGear : Hil
{
}
}

View File

@ -0,0 +1,93 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using log4net;
using System.Reflection;
using System.Runtime.InteropServices;
namespace ArdupilotMega.HIL
{
public delegate void ProgressEventHandler(int progress, string status);
public abstract class Hil
{
internal static readonly ILog log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
[StructLayout(LayoutKind.Sequential, Pack = 1)]
public struct sitl_fdm
{
// this is the packet sent by the simulator
// to the APM executable to update the simulator state
// All values are little-endian
public double latitude, longitude; // degrees
public double altitude; // MSL
public double heading; // degrees
public double speedN, speedE; // m/s
public double xAccel, yAccel, zAccel; // m/s/s in body frame
public double rollRate, pitchRate, yawRate; // degrees/s/s in earth frame
public double rollDeg, pitchDeg, yawDeg; // euler angles, degrees
public double airspeed; // m/s
public UInt32 magic; // 0x4c56414e
};
public const float ft2m = (float)(1.0 / 3.2808399);
public const float rad2deg = (float)(180 / Math.PI);
public const float deg2rad = (float)(1.0 / rad2deg);
public const float kts2fps = (float)1.68780986;
internal DateTime lastgpsupdate = DateTime.Now;
internal sitl_fdm[] sitl_fdmbuffer = new sitl_fdm[5];
internal sitl_fdm oldgps = new sitl_fdm();
// gps buffer
internal int gpsbufferindex = 0;
internal int REV_pitch = 1;
internal int REV_roll = 1;
internal int REV_rudder = 1;
internal int GPS_rate = 200;
internal int rollgain = 10000;
internal int pitchgain = 10000;
internal int ruddergain = 10000;
internal int throttlegain = 10000;
public float roll_out, pitch_out, throttle_out, rudder_out, collective_out;
public event ProgressEventHandler Status;
public bool sitl { get; set; }
public bool heli { get; set; }
public bool quad { get; set; }
public bool xplane10 { get; set; }
public abstract void SetupSockets(int Recvport, int SendPort, string SimIP);
public abstract void Shutdown();
public abstract void GetFromSim(ref sitl_fdm data);
public abstract void SendToSim();
public abstract void SendToAP(sitl_fdm data);
public abstract void GetFromAP();
internal void UpdateStatus(int progress, string status)
{
if (Status != null)
Status(progress, status);
}
internal float Constrain(float value, float min, float max)
{
if (value > max) { value = max; }
if (value < min) { value = min; }
return value;
}
internal short Constrain(double value, double min, double max)
{
if (value > max) { value = max; }
if (value < min) { value = min; }
return (short)value;
}
}
}

View File

@ -0,0 +1,11 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ArdupilotMega.HIL
{
class JSBSim : Hil
{
}
}

View File

@ -0,0 +1,360 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.Net.Sockets;
namespace ArdupilotMega.HIL
{
class XPlane : Hil
{
Socket SimulatorRECV;
UdpClient XplanesSEND;
EndPoint Remote = (EndPoint)(new IPEndPoint(IPAddress.Any, 0));
// place to store the xplane packet data
float[][] DATA = new float[113][];
public override void SetupSockets(int recvPort, int SendPort, string simIP)
{
// setup receiver
IPEndPoint ipep = new IPEndPoint(IPAddress.Any, recvPort);
SimulatorRECV = new Socket(AddressFamily.InterNetwork,
SocketType.Dgram, ProtocolType.Udp);
SimulatorRECV.Bind(ipep);
UpdateStatus(-1, "Listerning on port UDP " + recvPort + " (sim->planner)\n");
// setup sender
XplanesSEND = new UdpClient(simIP, SendPort);
UpdateStatus(-1, "Sending to port UDP " + SendPort + " (planner->sim)\n");
setupXplane();
UpdateStatus(-1, "Sent xplane settings\n");
}
public override void Shutdown()
{
try
{
SimulatorRECV.Close();
}
catch { }
try
{
XplanesSEND.Close();
}
catch { }
}
public override void GetFromSim(ref sitl_fdm sitldata)
{
if (SimulatorRECV.Available > 0)
{
byte[] udpdata = new byte[1500];
int receviedbytes = 0;
try
{
while (SimulatorRECV.Available > 0)
{
receviedbytes = SimulatorRECV.ReceiveFrom(udpdata, ref Remote);
}
}
catch { }
if (udpdata[0] == 'D' && udpdata[1] == 'A')
{
// Xplanes sends
// 5 byte header
// 1 int for the index - numbers on left of output
// 8 floats - might be useful. or 0 if not
int count = 5;
while (count < receviedbytes)
{
int index = BitConverter.ToInt32(udpdata, count);
DATA[index] = new float[8];
DATA[index][0] = BitConverter.ToSingle(udpdata, count + 1 * 4); ;
DATA[index][1] = BitConverter.ToSingle(udpdata, count + 2 * 4); ;
DATA[index][2] = BitConverter.ToSingle(udpdata, count + 3 * 4); ;
DATA[index][3] = BitConverter.ToSingle(udpdata, count + 4 * 4); ;
DATA[index][4] = BitConverter.ToSingle(udpdata, count + 5 * 4); ;
DATA[index][5] = BitConverter.ToSingle(udpdata, count + 6 * 4); ;
DATA[index][6] = BitConverter.ToSingle(udpdata, count + 7 * 4); ;
DATA[index][7] = BitConverter.ToSingle(udpdata, count + 8 * 4); ;
count += 36; // 8 * float
}
bool xplane9 = !xplane10;
if (xplane9)
{
sitldata.pitchDeg = (DATA[18][0]);
sitldata.rollDeg = (DATA[18][1]);
sitldata.yawDeg = (DATA[18][2]);
sitldata.pitchRate = (DATA[17][0] * rad2deg);
sitldata.rollRate = (DATA[17][1] * rad2deg);
sitldata.yawRate = (DATA[17][2] * rad2deg);
sitldata.heading = ((float)DATA[19][2]);
}
else
{
sitldata.pitchDeg = (DATA[17][0]);
sitldata.rollDeg = (DATA[17][1]);
sitldata.yawDeg = (DATA[17][2]);
sitldata.pitchRate = (DATA[16][0] * rad2deg);
sitldata.rollRate = (DATA[16][1] * rad2deg);
sitldata.yawRate = (DATA[16][2] * rad2deg);
sitldata.heading = (DATA[18][2]);
}
sitldata.airspeed = ((DATA[3][5] * .44704));
sitldata.latitude = (DATA[20][0]);
sitldata.longitude = (DATA[20][1]);
sitldata.altitude = (DATA[20][2] * ft2m);
sitldata.speedN = DATA[21][3];// (DATA[3][7] * 0.44704 * Math.Sin(sitldata.heading * deg2rad));
sitldata.speedE = -DATA[21][5];// (DATA[3][7] * 0.44704 * Math.Cos(sitldata.heading * deg2rad));
Matrix3 dcm = new Matrix3();
dcm.from_euler(sitldata.rollDeg * deg2rad, sitldata.pitchDeg * deg2rad, sitldata.yawDeg * deg2rad);
// rad = tas^2 / (tan(angle) * G)
float turnrad = (float)(((DATA[3][7] * 0.44704) * (DATA[3][7] * 0.44704)) / (float)(9.8f * Math.Tan(sitldata.rollDeg * deg2rad)));
float gload = (float)(1 / Math.Cos(sitldata.rollDeg * deg2rad)); // calculated Gs
// a = v^2/r
float centripaccel = (float)((DATA[3][7] * 0.44704) * (DATA[3][7] * 0.44704)) / turnrad;
Vector3 accel_body = dcm.transposed() * (new Vector3(0, 0, -9.8));
Vector3 centrip_accel = new Vector3(0, centripaccel * Math.Cos(sitldata.rollDeg * deg2rad), centripaccel * Math.Sin(sitldata.rollDeg * deg2rad));
accel_body -= centrip_accel;
sitldata.xAccel = DATA[4][5] * 9.8;
sitldata.yAccel = DATA[4][6] * 9.8;
sitldata.zAccel = (0 - DATA[4][4]) * 9.8;
// Console.WriteLine(accel_body.ToString());
// Console.WriteLine(" {0} {1} {2}",sitldata.xAccel, sitldata.yAccel, sitldata.zAccel);
}
}
}
public override void SendToSim()
{
roll_out = (float)MainV2.cs.hilch1 / rollgain;
pitch_out = (float)MainV2.cs.hilch2 / pitchgain;
throttle_out = ((float)MainV2.cs.hilch3) / throttlegain;
rudder_out = (float)MainV2.cs.hilch4 / ruddergain;
// Limit min and max
roll_out = Constrain(roll_out, -1, 1);
pitch_out = Constrain(pitch_out, -1, 1);
rudder_out = Constrain(rudder_out, -1, 1);
throttle_out = Constrain(throttle_out, 0, 1);
// sending only 1 packet instead of many.
byte[] Xplane = new byte[5 + 36 + 36];
if (heli)
{
Xplane = new byte[5 + 36 + 36 + 36];
}
Xplane[0] = (byte)'D';
Xplane[1] = (byte)'A';
Xplane[2] = (byte)'T';
Xplane[3] = (byte)'A';
Xplane[4] = 0;
Array.Copy(BitConverter.GetBytes((int)25), 0, Xplane, 5, 4); // packet index
Array.Copy(BitConverter.GetBytes((float)throttle_out), 0, Xplane, 9, 4); // start data
Array.Copy(BitConverter.GetBytes((float)throttle_out), 0, Xplane, 13, 4);
Array.Copy(BitConverter.GetBytes((float)throttle_out), 0, Xplane, 17, 4);
Array.Copy(BitConverter.GetBytes((float)throttle_out), 0, Xplane, 21, 4);
Array.Copy(BitConverter.GetBytes((int)-999), 0, Xplane, 25, 4);
Array.Copy(BitConverter.GetBytes((int)-999), 0, Xplane, 29, 4);
Array.Copy(BitConverter.GetBytes((int)-999), 0, Xplane, 33, 4);
Array.Copy(BitConverter.GetBytes((int)-999), 0, Xplane, 37, 4);
// NEXT ONE - control surfaces
Array.Copy(BitConverter.GetBytes((int)11), 0, Xplane, 41, 4); // packet index
Array.Copy(BitConverter.GetBytes((float)(pitch_out * REV_pitch)), 0, Xplane, 45, 4); // start data
Array.Copy(BitConverter.GetBytes((float)(roll_out * REV_roll)), 0, Xplane, 49, 4);
Array.Copy(BitConverter.GetBytes((float)(rudder_out * REV_rudder)), 0, Xplane, 53, 4);
Array.Copy(BitConverter.GetBytes((int)-999), 0, Xplane, 57, 4);
Array.Copy(BitConverter.GetBytes((float)(roll_out * REV_roll * 0.5)), 0, Xplane, 61, 4);
Array.Copy(BitConverter.GetBytes((int)-999), 0, Xplane, 65, 4);
Array.Copy(BitConverter.GetBytes((int)-999), 0, Xplane, 69, 4);
Array.Copy(BitConverter.GetBytes((int)-999), 0, Xplane, 73, 4);
if (heli)
{
Array.Copy(BitConverter.GetBytes((float)(0)), 0, Xplane, 53, 4);
int a = 73 + 4;
Array.Copy(BitConverter.GetBytes((int)39), 0, Xplane, a, 4); // packet index
a += 4;
Array.Copy(BitConverter.GetBytes((float)(12 * collective_out)), 0, Xplane, a, 4); // main rotor 0 - 12
a += 4;
Array.Copy(BitConverter.GetBytes((float)(12 * rudder_out)), 0, Xplane, a, 4); // tail rotor -12 - 12
a += 4;
Array.Copy(BitConverter.GetBytes((int)-999), 0, Xplane, a, 4);
a += 4;
Array.Copy(BitConverter.GetBytes((int)-999), 0, Xplane, a, 4);
a += 4;
Array.Copy(BitConverter.GetBytes((int)-999), 0, Xplane, a, 4);
a += 4;
Array.Copy(BitConverter.GetBytes((int)-999), 0, Xplane, a, 4);
a += 4;
Array.Copy(BitConverter.GetBytes((int)-999), 0, Xplane, a, 4);
a += 4;
Array.Copy(BitConverter.GetBytes((int)-999), 0, Xplane, a, 4);
}
try
{
XplanesSEND.Send(Xplane, Xplane.Length);
}
catch (Exception e) { log.Info("Xplanes udp send error " + e.Message); }
}
public override void SendToAP(sitl_fdm sitldata)
{
TimeSpan gpsspan = DateTime.Now - lastgpsupdate;
// add gps delay
if (gpsspan.TotalMilliseconds >= GPS_rate)
{
lastgpsupdate = DateTime.Now;
// save current fix = 3
sitl_fdmbuffer[gpsbufferindex % sitl_fdmbuffer.Length] = sitldata;
// Console.WriteLine((gpsbufferindex % gpsbuffer.Length) + " " + ((gpsbufferindex + (gpsbuffer.Length - 1)) % gpsbuffer.Length));
// return buffer index + 5 = (3 + 5) = 8 % 6 = 2
oldgps = sitl_fdmbuffer[(gpsbufferindex + (sitl_fdmbuffer.Length - 1)) % sitl_fdmbuffer.Length];
//comPort.sendPacket(oldgps);
gpsbufferindex++;
}
MAVLink.mavlink_hil_state_t hilstate = new MAVLink.mavlink_hil_state_t();
hilstate.time_usec = (UInt64)DateTime.Now.Ticks; // microsec
hilstate.lat = (int)(oldgps.latitude * 1e7); // * 1E7
hilstate.lon = (int)(oldgps.longitude * 1e7); // * 1E7
hilstate.alt = (int)(oldgps.altitude * 1000); // mm
// Console.WriteLine(hilstate.alt);
hilstate.pitch = (float)sitldata.pitchDeg * deg2rad; // (rad)
hilstate.pitchspeed = (float)sitldata.pitchRate * deg2rad; // (rad/s)
hilstate.roll = (float)sitldata.rollDeg * deg2rad; // (rad)
hilstate.rollspeed = (float)sitldata.rollRate * deg2rad; // (rad/s)
hilstate.yaw = (float)sitldata.yawDeg * deg2rad; // (rad)
hilstate.yawspeed = (float)sitldata.yawRate * deg2rad; // (rad/s)
hilstate.vx = (short)(sitldata.speedN * 100); // m/s * 100
hilstate.vy = (short)(sitldata.speedE * 100); // m/s * 100
hilstate.vz = 0; // m/s * 100
hilstate.xacc = (short)(sitldata.xAccel * 1000); // (mg)
hilstate.yacc = (short)(sitldata.yAccel * 1000); // (mg)
hilstate.zacc = (short)(sitldata.zAccel * 1000); // (mg)
MainV2.comPort.sendPacket(hilstate);
MainV2.comPort.sendPacket(new MAVLink.mavlink_vfr_hud_t()
{
airspeed = (float)sitldata.airspeed
});
}
public override void GetFromAP() { }
void setupXplane()
{
// sending only 1 packet instead of many.
byte[] Xplane = new byte[5 + 4 * 8];
Xplane[0] = (byte)'D';
Xplane[1] = (byte)'S';
Xplane[2] = (byte)'E';
Xplane[3] = (byte)'L';
Xplane[4] = 0;
if (xplane10)
{
int pos = 5;
Xplane[pos] = 0x3;
pos += 4;
Xplane[pos] = 0x4;
pos += 4;
Xplane[pos] = 0x6;
pos += 4;
Xplane[pos] = 0x10;
pos += 4;
Xplane[pos] = 0x11;
pos += 4;
Xplane[pos] = 0x12;
pos += 4;
Xplane[pos] = 0x14;
pos += 4;
Xplane[pos] = 0x15;
pos += 4;
}
else
{
int pos = 5;
Xplane[pos] = 0x3;
pos += 4;
Xplane[pos] = 0x4;
pos += 4;
Xplane[pos] = 0x6;
pos += 4;
Xplane[pos] = 0x11;
pos += 4;
Xplane[pos] = 0x12;
pos += 4;
Xplane[pos] = 0x13;
pos += 4;
Xplane[pos] = 0x14;
pos += 4;
Xplane[pos] = 0x15;
pos += 4;
}
try
{
XplanesSEND.Send(Xplane, Xplane.Length);
}
catch (Exception e) { log.Info("Xplanes udp send error " + e.Message); }
}
}
}

View File

@ -260,7 +260,15 @@ namespace ArdupilotMega
// preload
Python.CreateEngine();
}
catch (Exception e) { CustomMessageBox.Show("A Major error has occured : " + e.ToString()); this.Close(); }
catch (ArgumentException e) {
//http://www.microsoft.com/en-us/download/details.aspx?id=16083
//System.ArgumentException: Font 'Arial' does not support style 'Regular'.
log.Fatal(e);
CustomMessageBox.Show(e.ToString() + "\n\n Please install this http://www.microsoft.com/en-us/download/details.aspx?id=16083");
this.Close();
}
catch (Exception e) { log.Fatal(e); CustomMessageBox.Show("A Major error has occured : " + e.ToString()); this.Close(); }
if (MainV2.config["CHK_GDIPlus"] != null)
GCSViews.FlightData.myhud.UseOpenGL = !bool.Parse(MainV2.config["CHK_GDIPlus"].ToString());
@ -294,7 +302,7 @@ namespace ArdupilotMega
if (config["CMB_rateattitude"] != null)
MainV2.cs.rateattitude = byte.Parse(config["CMB_rateattitude"].ToString());
if (config["rateposition"] != null)
if (config["CMB_rateposition"] != null)
MainV2.cs.rateposition = byte.Parse(config["CMB_rateposition"].ToString());
if (config["CMB_ratestatus"] != null)
MainV2.cs.ratestatus = byte.Parse(config["CMB_ratestatus"].ToString());
@ -434,12 +442,6 @@ namespace ArdupilotMega
private void MenuFlightData_Click(object sender, EventArgs e)
{
MyView.ShowScreen("FlightData");
if (MainV2.config["FlightSplitter"] != null)
{
FlightData.MainHcopy.SplitterDistance = int.Parse(MainV2.config["FlightSplitter"].ToString()) - 1;
FlightData.MainHcopy.SplitterDistance = int.Parse(MainV2.config["FlightSplitter"].ToString());
}
}
private void MenuFlightPlanner_Click(object sender, EventArgs e)
@ -571,17 +573,22 @@ namespace ArdupilotMega
comPort.BaseStream.DtrEnable = false;
comPort.BaseStream.RtsEnable = false;
// prevent serialreader from doing anything
giveComport = true;
// reset on connect logic.
if (config["CHK_resetapmonconnect"] == null || bool.Parse(config["CHK_resetapmonconnect"].ToString()) == true)
comPort.BaseStream.toggleDTR();
giveComport = false;
// setup to record new logs
try
{
Directory.CreateDirectory(Path.GetDirectoryName(Application.ExecutablePath) + Path.DirectorySeparatorChar + @"logs");
comPort.logfile = new BinaryWriter(File.Open(Path.GetDirectoryName(Application.ExecutablePath) + Path.DirectorySeparatorChar + @"logs" + Path.DirectorySeparatorChar + DateTime.Now.ToString("yyyy-MM-dd HH-mm-ss") + ".tlog", FileMode.CreateNew, FileAccess.ReadWrite, FileShare.Read));
comPort.logfile = new BinaryWriter(File.Open(Path.GetDirectoryName(Application.ExecutablePath) + Path.DirectorySeparatorChar + @"logs" + Path.DirectorySeparatorChar + DateTime.Now.ToString("yyyy-MM-dd HH-mm-ss") + ".tlog", FileMode.CreateNew, FileAccess.ReadWrite, FileShare.None));
comPort.rawlogfile = new BinaryWriter(File.Open(Path.GetDirectoryName(Application.ExecutablePath) + Path.DirectorySeparatorChar + @"logs" + Path.DirectorySeparatorChar + DateTime.Now.ToString("yyyy-MM-dd HH-mm-ss") + ".rlog", FileMode.CreateNew, FileAccess.ReadWrite, FileShare.Read));
comPort.rawlogfile = new BinaryWriter(File.Open(Path.GetDirectoryName(Application.ExecutablePath) + Path.DirectorySeparatorChar + @"logs" + Path.DirectorySeparatorChar + DateTime.Now.ToString("yyyy-MM-dd HH-mm-ss") + ".rlog", FileMode.CreateNew, FileAccess.ReadWrite, FileShare.None));
}
catch (Exception exp2) { log.Error(exp2); CustomMessageBox.Show("Failed to create log - wont log this session"); } // soft fail
@ -611,6 +618,13 @@ namespace ArdupilotMega
// save the baudrate for this port
config[_connectionControl.CMB_serialport.Text + "_BAUD"] = _connectionControl.CMB_baudrate.Text;
// refresh config window if needed
if (MyView.current != null && MyView.current.Name == "Config")
{
MyView.ShowScreen("Config");
}
// load wps on connect option.
if (config["loadwpsonconnect"] != null && bool.Parse(config["loadwpsonconnect"].ToString()) == true)
{
@ -671,7 +685,7 @@ namespace ArdupilotMega
}
}
catch (Exception exp3) { log.Error(exp3); }
//MessageBox.Show("Can not establish a connection\n\n" + ex.ToString());
MessageBox.Show("Can not establish a connection\n\n" + ex.Message);
return;
}
}
@ -1124,7 +1138,11 @@ namespace ArdupilotMega
// actauly read the packets
while (comPort.BaseStream.BytesToRead > minbytes && giveComport == false)
{
comPort.readPacket();
try
{
comPort.readPacket();
}
catch { }
}
}
catch (Exception e)

View File

@ -87,15 +87,11 @@ namespace ArdupilotMega
/// <summary>
/// used as a serial port write lock
/// </summary>
object objlock = new object();
volatile object objlock = new object();
/// <summary>
/// used for a readlock on readpacket
/// </summary>
object readlock = new object();
/// <summary>
/// used for tlog file lock
/// </summary>
object logwritelock = new object();
volatile object readlock = new object();
/// <summary>
/// time seen of last mavlink packet
/// </summary>
@ -157,7 +153,6 @@ namespace ArdupilotMega
this.WhenPacketLost = new Subject<int>();
this.WhenPacketReceived = new Subject<int>();
this.readlock = new object();
this.logwritelock = new object();
this.lastvalidpacket = DateTime.Now;
this.oldlogformat = false;
this.mavlinkversion = 0;
@ -183,6 +178,22 @@ namespace ArdupilotMega
public void Close()
{
try
{
logfile.Close();
}
catch { }
try
{
rawlogfile.Close();
}
catch { }
try
{
logplaybackfile.Close();
}
catch { }
BaseStream.Close();
}
@ -443,104 +454,100 @@ namespace ArdupilotMega
/// <param name="indata">struct of data</param>
void generatePacket(byte messageType, object indata)
{
byte[] data;
lock (objlock)
{
byte[] data;
if (mavlinkversion == 3)
{
data = MavlinkUtil.StructureToByteArray(indata);
}
else
{
data = MavlinkUtil.StructureToByteArrayBigEndian(indata);
}
if (mavlinkversion == 3)
{
data = MavlinkUtil.StructureToByteArray(indata);
}
else
{
data = MavlinkUtil.StructureToByteArrayBigEndian(indata);
}
//Console.WriteLine(DateTime.Now + " PC Doing req "+ messageType + " " + this.BytesToRead);
byte[] packet = new byte[data.Length + 6 + 2];
//Console.WriteLine(DateTime.Now + " PC Doing req "+ messageType + " " + this.BytesToRead);
byte[] packet = new byte[data.Length + 6 + 2];
if (mavlinkversion == 3)
{
packet[0] = 254;
}
else if (mavlinkversion == 2)
{
packet[0] = (byte)'U';
}
packet[1] = (byte)data.Length;
packet[2] = packetcount;
packet[3] = 255; // this is always 255 - MYGCS
if (mavlinkversion == 3)
{
packet[0] = 254;
}
else if (mavlinkversion == 2)
{
packet[0] = (byte)'U';
}
packet[1] = (byte)data.Length;
packet[2] = packetcount;
packetcount++;
packet[3] = 255; // this is always 255 - MYGCS
#if MAVLINK10
packet[4] = (byte)MAV_COMPONENT.MAV_COMP_ID_MISSIONPLANNER;
packet[4] = (byte)MAV_COMPONENT.MAV_COMP_ID_MISSIONPLANNER;
#else
packet[4] = (byte)MAV_COMPONENT.MAV_COMP_ID_WAYPOINTPLANNER;
#endif
packet[5] = messageType;
packet[5] = messageType;
int i = 6;
foreach (byte b in data)
{
packet[i] = b;
i++;
}
ushort checksum = MavlinkCRC.crc_calculate(packet, packet[1] + 6);
if (mavlinkversion == 3)
{
checksum = MavlinkCRC.crc_accumulate(MAVLINK_MESSAGE_CRCS[messageType], checksum);
}
byte ck_a = (byte)(checksum & 0xFF); ///< High byte
byte ck_b = (byte)(checksum >> 8); ///< Low byte
packet[i] = ck_a;
i += 1;
packet[i] = ck_b;
i += 1;
if (BaseStream.IsOpen)
{
lock (objlock)
int i = 6;
foreach (byte b in data)
{
BaseStream.Write(packet, 0, i);
}
_bytesSentSubj.OnNext(i);
}
try
{
if (logfile != null && logfile.BaseStream.CanWrite)
{
lock (logwritelock)
{
byte[] datearray = BitConverter.GetBytes((UInt64)((DateTime.UtcNow - new DateTime(1970, 1, 1)).TotalMilliseconds * 1000)); //ASCIIEncoding.ASCII.GetBytes(DateTime.Now.ToBinary() + ":");
Array.Reverse(datearray);
logfile.Write(datearray, 0, datearray.Length);
logfile.Write(packet, 0, i);
// logfile.Flush();
}
packet[i] = b;
i++;
}
}
catch { }
ushort checksum = MavlinkCRC.crc_calculate(packet, packet[1] + 6);
if (mavlinkversion == 3)
{
checksum = MavlinkCRC.crc_accumulate(MAVLINK_MESSAGE_CRCS[messageType], checksum);
}
byte ck_a = (byte)(checksum & 0xFF); ///< High byte
byte ck_b = (byte)(checksum >> 8); ///< Low byte
packet[i] = ck_a;
i += 1;
packet[i] = ck_b;
i += 1;
if (BaseStream.IsOpen)
{
BaseStream.Write(packet, 0, i);
_bytesSentSubj.OnNext(i);
}
if (messageType == ArdupilotMega.MAVLink.MAVLINK_MSG_ID_REQUEST_DATA_STREAM)
{
try
{
BinaryWriter bw = new BinaryWriter(File.OpenWrite("serialsent.raw"));
bw.Seek(0, SeekOrigin.End);
bw.Write(packet, 0, i);
bw.Write((byte)'\n');
bw.Close();
if (logfile != null && logfile.BaseStream.CanWrite)
{
lock (logfile)
{
byte[] datearray = BitConverter.GetBytes((UInt64)((DateTime.UtcNow - new DateTime(1970, 1, 1)).TotalMilliseconds * 1000));
Array.Reverse(datearray);
logfile.Write(datearray, 0, datearray.Length);
logfile.Write(packet, 0, i);
}
}
}
catch { } // been getting errors from this. people must have it open twice.
}
packetcount++;
//System.Threading.Thread.Sleep(1);
catch { }
/*
if (messageType == ArdupilotMega.MAVLink.MAVLINK_MSG_ID_REQUEST_DATA_STREAM)
{
try
{
BinaryWriter bw = new BinaryWriter(File.OpenWrite("serialsent.raw"));
bw.Seek(0, SeekOrigin.End);
bw.Write(packet, 0, i);
bw.Write((byte)'\n');
bw.Close();
}
catch { } // been getting errors from this. people must have it open twice.
}*/
}
}
public bool Write(string line)
@ -1621,7 +1628,7 @@ namespace ArdupilotMega
byte compid = datin[4];
byte messid = datin[5];
textoutput = string.Format("{0:X}{6}{1:X}{6}{2:X}{6}{3:X}{6}{4:X}{6}{5:X}{6}", header, length, seq, sysid, compid, messid, delimeter);
textoutput = string.Format("{0,2:X}{6}{1,2:X}{6}{2,2:X}{6}{3,2:X}{6}{4,2:X}{6}{5,2:X}{6}", header, length, seq, sysid, compid, messid, delimeter);
object data = Activator.CreateInstance(MAVLINK_MESSAGE_INFO[messid]);
@ -1892,11 +1899,11 @@ namespace ArdupilotMega
#endif
DateTime start = DateTime.Now;
int retrys = 6;
int retrys = 10;
while (true)
{
if (!(start.AddMilliseconds(200) > DateTime.Now))
if (!(start.AddMilliseconds(150) > DateTime.Now))
{
if (retrys > 0)
{
@ -2193,7 +2200,7 @@ namespace ArdupilotMega
catch (Exception e) { log.Info("MAVLink readpacket read error: " + e.ToString()); break; }
// check if looks like a mavlink packet and check for exclusions and write to console
if (buffer[0] != 254 && buffer[0] != 'U' || lastbad[0] == 'I' && lastbad[1] == 'M' || lastbad[1] == 'G' || lastbad[1] == 'A') // out of sync "AUTO" "GUIDED" "IMU"
if (buffer[0] != 254)
{
if (buffer[0] >= 0x20 && buffer[0] <= 127 || buffer[0] == '\n' || buffer[0] == '\r')
{
@ -2213,7 +2220,7 @@ namespace ArdupilotMega
//Console.WriteLine(DateTime.Now.Millisecond + " SR2 " + BaseStream.BytesToRead);
// check for a header
if (buffer[0] == 'U' || buffer[0] == 254)
if (buffer[0] == 254)
{
// if we have the header, and no other chars, get the length and packet identifiers
if (count == 0 && !logreadmode)
@ -2467,15 +2474,15 @@ namespace ArdupilotMega
{
if (logfile != null && logfile.BaseStream.CanWrite && !logreadmode)
{
lock (logwritelock)
lock (logfile)
{
byte[] datearray = BitConverter.GetBytes((UInt64)((DateTime.UtcNow - new DateTime(1970, 1, 1)).TotalMilliseconds * 1000)); //ASCIIEncoding.ASCII.GetBytes(DateTime.Now.ToBinary() + ":");
byte[] datearray = BitConverter.GetBytes((UInt64)((DateTime.UtcNow - new DateTime(1970, 1, 1)).TotalMilliseconds * 1000));
Array.Reverse(datearray);
logfile.Write(datearray, 0, datearray.Length);
logfile.Write(buffer, 0, buffer.Length);
if (buffer[5] == 0) {// flush on heartbeat - 1 seconds
logfile.Flush();
logfile.BaseStream.Flush();
rawlogfile.BaseStream.Flush();
}
}
@ -2671,7 +2678,7 @@ namespace ArdupilotMega
byte[] datearray = new byte[8];
logplaybackfile.BaseStream.Read(datearray, 0, datearray.Length);
int tem = logplaybackfile.BaseStream.Read(datearray, 0, datearray.Length);
Array.Reverse(datearray);
@ -2679,9 +2686,13 @@ namespace ArdupilotMega
UInt64 dateint = BitConverter.ToUInt64(datearray, 0);
date1 = date1.AddMilliseconds(dateint / 1000);
try
{
date1 = date1.AddMilliseconds(dateint / 1000);
lastlogread = date1.ToLocalTime();
lastlogread = date1.ToLocalTime();
}
catch { }
MainV2.cs.datetime = lastlogread;

View File

@ -2,14 +2,14 @@
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi" xmlns:netfx="http://schemas.microsoft.com/wix/NetFxExtension" xmlns:difx="http://schemas.microsoft.com/wix/DifxAppExtension">
<Product Id="*" Name="APM Planner" Language="1033" Version="1.2.9" Manufacturer="Michael Oborne" UpgradeCode="{625389D7-EB3C-4d77-A5F6-A285CF99437D}">
<Product Id="*" Name="APM Planner" Language="1033" Version="1.2.11" Manufacturer="Michael Oborne" UpgradeCode="{625389D7-EB3C-4d77-A5F6-A285CF99437D}">
<Package Description="APM Planner Installer" Comments="Apm Planner Installer" Manufacturer="Michael Oborne" InstallerVersion="200" Compressed="yes" />
<Upgrade Id="{625389D7-EB3C-4d77-A5F6-A285CF99437D}">
<UpgradeVersion OnlyDetect="yes" Minimum="1.2.9" Property="NEWERVERSIONDETECTED" IncludeMinimum="no" />
<UpgradeVersion OnlyDetect="no" Maximum="1.2.9" Property="OLDERVERSIONBEINGUPGRADED" IncludeMaximum="no" />
<UpgradeVersion OnlyDetect="yes" Minimum="1.2.11" Property="NEWERVERSIONDETECTED" IncludeMinimum="no" />
<UpgradeVersion OnlyDetect="no" Maximum="1.2.11" Property="OLDERVERSIONBEINGUPGRADED" IncludeMaximum="no" />
</Upgrade>
<InstallExecuteSequence>
@ -31,7 +31,7 @@
<Permission User="Everyone" GenericAll="yes" />
</CreateFolder>
</Component>
<Component Id="_comp1" Guid="374bbf47-d390-441d-b3c3-bf96b2f204e4">
<Component Id="_comp1" Guid="14edd85b-dc50-435c-9790-c20549b31302">
<File Id="_2" Source="..\bin\release\.gdbinit" />
<File Id="_3" Source="..\bin\release\.gitignore" />
<File Id="_4" Source="..\bin\release\aerosim3.91.txt" />
@ -81,178 +81,177 @@
<File Id="_48" Source="..\bin\release\mavcmd.xml" />
<File Id="_49" Source="..\bin\release\MAVLink.xml" />
<File Id="_50" Source="..\bin\release\MetaDataExtractor.dll" />
<File Id="_51" Source="..\bin\release\Microsoft.DirectX.DirectInput.dll" />
<File Id="_52" Source="..\bin\release\Microsoft.DirectX.dll" />
<File Id="_53" Source="..\bin\release\Microsoft.Dynamic.dll" />
<File Id="_54" Source="..\bin\release\Microsoft.Scripting.Core.dll" />
<File Id="_55" Source="..\bin\release\Microsoft.Scripting.Debugging.dll" />
<File Id="_56" Source="..\bin\release\Microsoft.Scripting.dll" />
<File Id="_57" Source="..\bin\release\Microsoft.Scripting.ExtensionAttribute.dll" />
<File Id="_58" Source="..\bin\release\netDxf.dll" />
<File Id="_59" Source="..\bin\release\OpenTK.Compatibility.dll" />
<File Id="_60" Source="..\bin\release\OpenTK.dll" />
<File Id="_61" Source="..\bin\release\OpenTK.dll.config" />
<File Id="_62" Source="..\bin\release\OpenTK.GLControl.dll" />
<File Id="_63" Source="..\bin\release\ParameterMetaData.xml" />
<File Id="_64" Source="..\bin\release\quadhil.xml" />
<File Id="_65" Source="..\bin\release\runme" />
<File Id="_66" Source="..\bin\release\serialsent.raw" />
<File Id="_67" Source="..\bin\release\SharpKml.dll" />
<File Id="_68" Source="..\bin\release\SharpKml.pdb" />
<File Id="_69" Source="..\bin\release\SharpKml.xml" />
<File Id="_70" Source="..\bin\release\System.Data.SQLite.dll" />
<File Id="_71" Source="..\bin\release\System.Reactive.dll" />
<File Id="_72" Source="..\bin\release\System.Reactive.xml" />
<File Id="_73" Source="..\bin\release\System.Speech.dll" />
<File Id="_74" Source="..\bin\release\Transitions.dll" />
<File Id="_75" Source="..\bin\release\Updater.exe" />
<File Id="_76" Source="..\bin\release\Updater.exe.config" />
<File Id="_77" Source="..\bin\release\Updater.pdb" />
<File Id="_78" Source="..\bin\release\version.exe" />
<File Id="_79" Source="..\bin\release\version.txt" />
<File Id="_80" Source="..\bin\release\ZedGraph.dll" />
<File Id="_51" Source="..\bin\release\Microsoft.DirectX.dll" />
<File Id="_52" Source="..\bin\release\Microsoft.Dynamic.dll" />
<File Id="_53" Source="..\bin\release\Microsoft.Scripting.Core.dll" />
<File Id="_54" Source="..\bin\release\Microsoft.Scripting.Debugging.dll" />
<File Id="_55" Source="..\bin\release\Microsoft.Scripting.dll" />
<File Id="_56" Source="..\bin\release\Microsoft.Scripting.ExtensionAttribute.dll" />
<File Id="_57" Source="..\bin\release\netDxf.dll" />
<File Id="_58" Source="..\bin\release\OpenTK.Compatibility.dll" />
<File Id="_59" Source="..\bin\release\OpenTK.dll" />
<File Id="_60" Source="..\bin\release\OpenTK.dll.config" />
<File Id="_61" Source="..\bin\release\OpenTK.GLControl.dll" />
<File Id="_62" Source="..\bin\release\ParameterMetaData.xml" />
<File Id="_63" Source="..\bin\release\quadhil.xml" />
<File Id="_64" Source="..\bin\release\runme" />
<File Id="_65" Source="..\bin\release\serialsent.raw" />
<File Id="_66" Source="..\bin\release\SharpKml.dll" />
<File Id="_67" Source="..\bin\release\SharpKml.pdb" />
<File Id="_68" Source="..\bin\release\SharpKml.xml" />
<File Id="_69" Source="..\bin\release\System.Data.SQLite.dll" />
<File Id="_70" Source="..\bin\release\System.Reactive.dll" />
<File Id="_71" Source="..\bin\release\System.Reactive.xml" />
<File Id="_72" Source="..\bin\release\System.Speech.dll" />
<File Id="_73" Source="..\bin\release\Transitions.dll" />
<File Id="_74" Source="..\bin\release\Updater.exe" />
<File Id="_75" Source="..\bin\release\Updater.exe.config" />
<File Id="_76" Source="..\bin\release\Updater.pdb" />
<File Id="_77" Source="..\bin\release\version.exe" />
<File Id="_78" Source="..\bin\release\version.txt" />
<File Id="_79" Source="..\bin\release\ZedGraph.dll" />
</Component>
<Directory Id="aircraft80" Name="aircraft">
<Component Id="_comp81" Guid="63a1bc0f-998e-4d82-95af-f794c0195bb7">
<File Id="_82" Source="..\bin\release\aircraft\placeholder.txt" />
<Directory Id="aircraft79" Name="aircraft">
<Component Id="_comp80" Guid="626e4768-abf0-4b69-bd4c-a203dba6a6a6">
<File Id="_81" Source="..\bin\release\aircraft\placeholder.txt" />
</Component>
<Directory Id="arducopter82" Name="arducopter">
<Component Id="_comp83" Guid="0630f92e-f583-4937-af02-c4c2ab38049e">
<File Id="_84" Source="..\bin\release\aircraft\arducopter\arducopter-set.xml" />
<File Id="_85" Source="..\bin\release\aircraft\arducopter\arducopter.jpg" />
<File Id="_86" Source="..\bin\release\aircraft\arducopter\arducopter.xml" />
<File Id="_87" Source="..\bin\release\aircraft\arducopter\initfile.xml" />
<File Id="_88" Source="..\bin\release\aircraft\arducopter\plus_quad2-set.xml" />
<File Id="_89" Source="..\bin\release\aircraft\arducopter\plus_quad2.xml" />
<File Id="_90" Source="..\bin\release\aircraft\arducopter\quad.nas" />
<File Id="_91" Source="..\bin\release\aircraft\arducopter\README" />
<Directory Id="arducopter81" Name="arducopter">
<Component Id="_comp82" Guid="2d01715e-d29d-4f10-bd83-ec9c9a91e44d">
<File Id="_83" Source="..\bin\release\aircraft\arducopter\arducopter-set.xml" />
<File Id="_84" Source="..\bin\release\aircraft\arducopter\arducopter.jpg" />
<File Id="_85" Source="..\bin\release\aircraft\arducopter\arducopter.xml" />
<File Id="_86" Source="..\bin\release\aircraft\arducopter\initfile.xml" />
<File Id="_87" Source="..\bin\release\aircraft\arducopter\plus_quad2-set.xml" />
<File Id="_88" Source="..\bin\release\aircraft\arducopter\plus_quad2.xml" />
<File Id="_89" Source="..\bin\release\aircraft\arducopter\quad.nas" />
<File Id="_90" Source="..\bin\release\aircraft\arducopter\README" />
</Component>
<Directory Id="data91" Name="data">
<Component Id="_comp92" Guid="acf4cb9c-693e-4307-a085-a83880478047">
<File Id="_93" Source="..\bin\release\aircraft\arducopter\data\arducopter_half_step.txt" />
<File Id="_94" Source="..\bin\release\aircraft\arducopter\data\arducopter_step.txt" />
<File Id="_95" Source="..\bin\release\aircraft\arducopter\data\rw_generic_pylon.ac" />
<Directory Id="data90" Name="data">
<Component Id="_comp91" Guid="35c92295-3274-4062-83b2-f9b57e04dc98">
<File Id="_92" Source="..\bin\release\aircraft\arducopter\data\arducopter_half_step.txt" />
<File Id="_93" Source="..\bin\release\aircraft\arducopter\data\arducopter_step.txt" />
<File Id="_94" Source="..\bin\release\aircraft\arducopter\data\rw_generic_pylon.ac" />
</Component>
</Directory>
<Directory Id="Engines95" Name="Engines">
<Component Id="_comp96" Guid="03b81b85-ae7e-4b69-9f8b-8c2c187fdf7f">
<File Id="_97" Source="..\bin\release\aircraft\arducopter\Engines\a2830-12.xml" />
<File Id="_98" Source="..\bin\release\aircraft\arducopter\Engines\prop10x4.5.xml" />
<Directory Id="Engines94" Name="Engines">
<Component Id="_comp95" Guid="79cc8885-7ed4-4900-8001-8e8fec577e1f">
<File Id="_96" Source="..\bin\release\aircraft\arducopter\Engines\a2830-12.xml" />
<File Id="_97" Source="..\bin\release\aircraft\arducopter\Engines\prop10x4.5.xml" />
</Component>
</Directory>
<Directory Id="Models98" Name="Models">
<Component Id="_comp99" Guid="91c2026d-303f-4a5d-81a6-892f7a2a569f">
<File Id="_100" Source="..\bin\release\aircraft\arducopter\Models\arducopter.ac" />
<File Id="_101" Source="..\bin\release\aircraft\arducopter\Models\arducopter.xml" />
<File Id="_102" Source="..\bin\release\aircraft\arducopter\Models\plus_quad.ac" />
<File Id="_103" Source="..\bin\release\aircraft\arducopter\Models\plus_quad2.ac" />
<File Id="_104" Source="..\bin\release\aircraft\arducopter\Models\plus_quad2.xml" />
<File Id="_105" Source="..\bin\release\aircraft\arducopter\Models\quad.3ds" />
<File Id="_106" Source="..\bin\release\aircraft\arducopter\Models\shareware_output.3ds" />
<File Id="_107" Source="..\bin\release\aircraft\arducopter\Models\Untitled.ac" />
<File Id="_108" Source="..\bin\release\aircraft\arducopter\Models\Y6_test.ac" />
<Directory Id="Models97" Name="Models">
<Component Id="_comp98" Guid="823617c4-8c7a-4185-b6a4-ef3afa9cf058">
<File Id="_99" Source="..\bin\release\aircraft\arducopter\Models\arducopter.ac" />
<File Id="_100" Source="..\bin\release\aircraft\arducopter\Models\arducopter.xml" />
<File Id="_101" Source="..\bin\release\aircraft\arducopter\Models\plus_quad.ac" />
<File Id="_102" Source="..\bin\release\aircraft\arducopter\Models\plus_quad2.ac" />
<File Id="_103" Source="..\bin\release\aircraft\arducopter\Models\plus_quad2.xml" />
<File Id="_104" Source="..\bin\release\aircraft\arducopter\Models\quad.3ds" />
<File Id="_105" Source="..\bin\release\aircraft\arducopter\Models\shareware_output.3ds" />
<File Id="_106" Source="..\bin\release\aircraft\arducopter\Models\Untitled.ac" />
<File Id="_107" Source="..\bin\release\aircraft\arducopter\Models\Y6_test.ac" />
</Component>
</Directory>
</Directory>
<Directory Id="Rascal108" Name="Rascal">
<Component Id="_comp109" Guid="291468a0-aa56-4839-a693-d18f08298aef">
<File Id="_110" Source="..\bin\release\aircraft\Rascal\Rascal-keyboard.xml" />
<File Id="_111" Source="..\bin\release\aircraft\Rascal\Rascal-submodels.xml" />
<File Id="_112" Source="..\bin\release\aircraft\Rascal\Rascal.xml" />
<File Id="_113" Source="..\bin\release\aircraft\Rascal\Rascal110-JSBSim-set.xml" />
<File Id="_114" Source="..\bin\release\aircraft\Rascal\Rascal110-JSBSim.xml" />
<File Id="_115" Source="..\bin\release\aircraft\Rascal\Rascal110-splash.rgb" />
<File Id="_116" Source="..\bin\release\aircraft\Rascal\README.Rascal" />
<File Id="_117" Source="..\bin\release\aircraft\Rascal\reset_CMAC.xml" />
<File Id="_118" Source="..\bin\release\aircraft\Rascal\thumbnail.jpg" />
<Directory Id="Rascal107" Name="Rascal">
<Component Id="_comp108" Guid="d62d5f01-c08a-4dee-a4e1-07f1d7259a88">
<File Id="_109" Source="..\bin\release\aircraft\Rascal\Rascal-keyboard.xml" />
<File Id="_110" Source="..\bin\release\aircraft\Rascal\Rascal-submodels.xml" />
<File Id="_111" Source="..\bin\release\aircraft\Rascal\Rascal.xml" />
<File Id="_112" Source="..\bin\release\aircraft\Rascal\Rascal110-JSBSim-set.xml" />
<File Id="_113" Source="..\bin\release\aircraft\Rascal\Rascal110-JSBSim.xml" />
<File Id="_114" Source="..\bin\release\aircraft\Rascal\Rascal110-splash.rgb" />
<File Id="_115" Source="..\bin\release\aircraft\Rascal\README.Rascal" />
<File Id="_116" Source="..\bin\release\aircraft\Rascal\reset_CMAC.xml" />
<File Id="_117" Source="..\bin\release\aircraft\Rascal\thumbnail.jpg" />
</Component>
<Directory Id="Engines118" Name="Engines">
<Component Id="_comp119" Guid="96bd3719-1478-4a01-9634-0d7b8dbdd573">
<File Id="_120" Source="..\bin\release\aircraft\Rascal\Engines\18x8.xml" />
<File Id="_121" Source="..\bin\release\aircraft\Rascal\Engines\Zenoah_G-26A.xml" />
<Directory Id="Engines117" Name="Engines">
<Component Id="_comp118" Guid="261e663c-9ac0-4808-b8dd-56e21ded8ecf">
<File Id="_119" Source="..\bin\release\aircraft\Rascal\Engines\18x8.xml" />
<File Id="_120" Source="..\bin\release\aircraft\Rascal\Engines\Zenoah_G-26A.xml" />
</Component>
</Directory>
<Directory Id="Models121" Name="Models">
<Component Id="_comp122" Guid="e63c75ad-ec68-4311-8757-e69263089e31">
<File Id="_123" Source="..\bin\release\aircraft\Rascal\Models\Rascal.rgb" />
<File Id="_124" Source="..\bin\release\aircraft\Rascal\Models\Rascal110-000-013.ac" />
<File Id="_125" Source="..\bin\release\aircraft\Rascal\Models\Rascal110.xml" />
<File Id="_126" Source="..\bin\release\aircraft\Rascal\Models\smoke.png" />
<File Id="_127" Source="..\bin\release\aircraft\Rascal\Models\smokeW.xml" />
<File Id="_128" Source="..\bin\release\aircraft\Rascal\Models\Trajectory-Marker.ac" />
<File Id="_129" Source="..\bin\release\aircraft\Rascal\Models\Trajectory-Marker.xml" />
<Directory Id="Models120" Name="Models">
<Component Id="_comp121" Guid="c1a6789d-950d-4d95-9cc7-a501c8011c3d">
<File Id="_122" Source="..\bin\release\aircraft\Rascal\Models\Rascal.rgb" />
<File Id="_123" Source="..\bin\release\aircraft\Rascal\Models\Rascal110-000-013.ac" />
<File Id="_124" Source="..\bin\release\aircraft\Rascal\Models\Rascal110.xml" />
<File Id="_125" Source="..\bin\release\aircraft\Rascal\Models\smoke.png" />
<File Id="_126" Source="..\bin\release\aircraft\Rascal\Models\smokeW.xml" />
<File Id="_127" Source="..\bin\release\aircraft\Rascal\Models\Trajectory-Marker.ac" />
<File Id="_128" Source="..\bin\release\aircraft\Rascal\Models\Trajectory-Marker.xml" />
</Component>
</Directory>
<Directory Id="Systems129" Name="Systems">
<Component Id="_comp130" Guid="428f1bf2-7280-44df-ab87-46f9954c90b5">
<File Id="_131" Source="..\bin\release\aircraft\Rascal\Systems\110-autopilot.xml" />
<File Id="_132" Source="..\bin\release\aircraft\Rascal\Systems\airdata.nas" />
<File Id="_133" Source="..\bin\release\aircraft\Rascal\Systems\electrical.xml" />
<File Id="_134" Source="..\bin\release\aircraft\Rascal\Systems\main.nas" />
<File Id="_135" Source="..\bin\release\aircraft\Rascal\Systems\ugear.nas" />
<Directory Id="Systems128" Name="Systems">
<Component Id="_comp129" Guid="d0209c82-a212-4fdb-a21c-595ebef257e2">
<File Id="_130" Source="..\bin\release\aircraft\Rascal\Systems\110-autopilot.xml" />
<File Id="_131" Source="..\bin\release\aircraft\Rascal\Systems\airdata.nas" />
<File Id="_132" Source="..\bin\release\aircraft\Rascal\Systems\electrical.xml" />
<File Id="_133" Source="..\bin\release\aircraft\Rascal\Systems\main.nas" />
<File Id="_134" Source="..\bin\release\aircraft\Rascal\Systems\ugear.nas" />
</Component>
</Directory>
</Directory>
</Directory>
<Directory Id="Driver135" Name="Driver">
<Component Id="_comp136" Guid="cf4756cc-09a6-43ae-855e-dffc804a309c">
<File Id="_137" Source="..\bin\release\Driver\Arduino MEGA 2560.inf" />
<Directory Id="Driver134" Name="Driver">
<Component Id="_comp135" Guid="2b339b16-e81e-4446-a577-89186b2add10">
<File Id="_136" Source="..\bin\release\Driver\Arduino MEGA 2560.inf" />
</Component>
</Directory>
<Directory Id="es_ES137" Name="es-ES">
<Component Id="_comp138" Guid="8451bc36-e241-4895-905c-97fee9f3d429">
<File Id="_139" Source="..\bin\release\es-ES\ArdupilotMegaPlanner10.resources.dll" />
<Directory Id="es_ES136" Name="es-ES">
<Component Id="_comp137" Guid="84622c60-6bc5-4536-b534-3ca384e85739">
<File Id="_138" Source="..\bin\release\es-ES\ArdupilotMegaPlanner10.resources.dll" />
</Component>
</Directory>
<Directory Id="fr139" Name="fr">
<Component Id="_comp140" Guid="2d859ed3-675b-4d55-ac7e-e7988ae1ca41">
<File Id="_141" Source="..\bin\release\fr\ArdupilotMegaPlanner10.resources.dll" />
<Directory Id="fr138" Name="fr">
<Component Id="_comp139" Guid="db29830b-f195-4683-98e5-1a29dd1f90db">
<File Id="_140" Source="..\bin\release\fr\ArdupilotMegaPlanner10.resources.dll" />
</Component>
</Directory>
<Directory Id="it_IT141" Name="it-IT">
<Component Id="_comp142" Guid="01eff05b-9fbc-4ba1-9f06-254165878059">
<File Id="_143" Source="..\bin\release\it-IT\ArdupilotMegaPlanner10.resources.dll" />
<Directory Id="it_IT140" Name="it-IT">
<Component Id="_comp141" Guid="d948fc7b-ad86-4be1-8491-a9ce57665c0d">
<File Id="_142" Source="..\bin\release\it-IT\ArdupilotMegaPlanner10.resources.dll" />
</Component>
</Directory>
<Directory Id="jsbsim143" Name="jsbsim">
<Component Id="_comp144" Guid="32e4a0b3-b855-42fd-915f-2b22d41e31db">
<File Id="_145" Source="..\bin\release\jsbsim\fgout.xml" />
<File Id="_146" Source="..\bin\release\jsbsim\rascal_test.xml" />
<Directory Id="jsbsim142" Name="jsbsim">
<Component Id="_comp143" Guid="c2527e3e-d37f-4c08-b35f-89eda4d628e9">
<File Id="_144" Source="..\bin\release\jsbsim\fgout.xml" />
<File Id="_145" Source="..\bin\release\jsbsim\rascal_test.xml" />
</Component>
</Directory>
<Directory Id="m3u146" Name="m3u">
<Component Id="_comp147" Guid="c1731c97-36b2-4118-a4e4-26dea45c9e87">
<File Id="_148" Source="..\bin\release\m3u\both.m3u" />
<File Id="_149" Source="..\bin\release\m3u\GeoRefnetworklink.kml" />
<File Id="_150" Source="..\bin\release\m3u\hud.m3u" />
<File Id="_151" Source="..\bin\release\m3u\map.m3u" />
<File Id="_152" Source="..\bin\release\m3u\networklink.kml" />
<Directory Id="m3u145" Name="m3u">
<Component Id="_comp146" Guid="b68d9497-a452-413d-8624-6526c7a039e7">
<File Id="_147" Source="..\bin\release\m3u\both.m3u" />
<File Id="_148" Source="..\bin\release\m3u\GeoRefnetworklink.kml" />
<File Id="_149" Source="..\bin\release\m3u\hud.m3u" />
<File Id="_150" Source="..\bin\release\m3u\map.m3u" />
<File Id="_151" Source="..\bin\release\m3u\networklink.kml" />
</Component>
</Directory>
<Directory Id="pl152" Name="pl">
<Component Id="_comp153" Guid="d20e0b51-89db-4829-9376-ac87eb0c014d">
<File Id="_154" Source="..\bin\release\pl\ArdupilotMegaPlanner10.resources.dll" />
<Directory Id="pl151" Name="pl">
<Component Id="_comp152" Guid="359b6787-5f88-437f-bd66-a46fe5fa218f">
<File Id="_153" Source="..\bin\release\pl\ArdupilotMegaPlanner10.resources.dll" />
</Component>
</Directory>
<Directory Id="Resources154" Name="Resources">
<Component Id="_comp155" Guid="bcb133d9-727d-4e80-8cfb-96e7c22f6b4e">
<File Id="_156" Source="..\bin\release\Resources\MAVCmd.txt" />
<File Id="_157" Source="..\bin\release\Resources\Welcome_to_Michael_Oborne.rtf" />
<Directory Id="Resources153" Name="Resources">
<Component Id="_comp154" Guid="b0c6b2d3-2d5d-4fd5-ab20-24c95a20fe8c">
<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_RU157" Name="ru-RU">
<Component Id="_comp158" Guid="04f82c03-bca7-4ea1-bf67-ae9580ff8de5">
<File Id="_159" Source="..\bin\release\ru-RU\ArdupilotMegaPlanner10.resources.dll" />
<Directory Id="ru_RU156" Name="ru-RU">
<Component Id="_comp157" Guid="e10eddb8-431c-40f2-9e22-70824b73ef02">
<File Id="_158" Source="..\bin\release\ru-RU\ArdupilotMegaPlanner10.resources.dll" />
</Component>
</Directory>
<Directory Id="zh_Hans159" Name="zh-Hans">
<Component Id="_comp160" Guid="11eadd21-3f68-4184-9d9b-cd73889e38b7">
<File Id="_161" Source="..\bin\release\zh-Hans\ArdupilotMegaPlanner10.resources.dll" />
<Directory Id="zh_Hans158" Name="zh-Hans">
<Component Id="_comp159" Guid="c2bffeb8-3994-49ae-9fec-03ff68237f0a">
<File Id="_160" Source="..\bin\release\zh-Hans\ArdupilotMegaPlanner10.resources.dll" />
</Component>
</Directory>
<Directory Id="zh_TW161" Name="zh-TW">
<Component Id="_comp162" Guid="d334ccf7-6290-4a4f-a6fd-55727721ef7a">
<File Id="_163" Source="..\bin\release\zh-TW\ArdupilotMegaPlanner10.resources.dll" />
<Directory Id="zh_TW160" Name="zh-TW">
<Component Id="_comp161" Guid="3f203723-7fc9-48f5-af76-4ecb6cce7f35">
<File Id="_162" Source="..\bin\release\zh-TW\ArdupilotMegaPlanner10.resources.dll" />
</Component>
</Directory>
@ -296,26 +295,26 @@
<ComponentRef Id="InstallDirPermissions" />
<ComponentRef Id="_comp1" />
<ComponentRef Id="_comp81" />
<ComponentRef Id="_comp83" />
<ComponentRef Id="_comp92" />
<ComponentRef Id="_comp96" />
<ComponentRef Id="_comp99" />
<ComponentRef Id="_comp109" />
<ComponentRef Id="_comp119" />
<ComponentRef Id="_comp122" />
<ComponentRef Id="_comp130" />
<ComponentRef Id="_comp136" />
<ComponentRef Id="_comp138" />
<ComponentRef Id="_comp140" />
<ComponentRef Id="_comp142" />
<ComponentRef Id="_comp144" />
<ComponentRef Id="_comp147" />
<ComponentRef Id="_comp153" />
<ComponentRef Id="_comp155" />
<ComponentRef Id="_comp158" />
<ComponentRef Id="_comp160" />
<ComponentRef Id="_comp162" />
<ComponentRef Id="_comp80" />
<ComponentRef Id="_comp82" />
<ComponentRef Id="_comp91" />
<ComponentRef Id="_comp95" />
<ComponentRef Id="_comp98" />
<ComponentRef Id="_comp108" />
<ComponentRef Id="_comp118" />
<ComponentRef Id="_comp121" />
<ComponentRef Id="_comp129" />
<ComponentRef Id="_comp135" />
<ComponentRef Id="_comp137" />
<ComponentRef Id="_comp139" />
<ComponentRef Id="_comp141" />
<ComponentRef Id="_comp143" />
<ComponentRef Id="_comp146" />
<ComponentRef Id="_comp152" />
<ComponentRef Id="_comp154" />
<ComponentRef Id="_comp157" />
<ComponentRef Id="_comp159" />
<ComponentRef Id="_comp161" />
<ComponentRef Id="ApplicationShortcut" />

View File

@ -0,0 +1,377 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using OpenTK;
using OpenTK.Graphics.OpenGL;
using System.Drawing.Imaging;
using System.Drawing;
using GMap.NET;
using GMap.NET.WindowsForms;
namespace ArdupilotMega.Controls
{
public class OpenGLtest : GLControl
{
public static OpenGLtest instance;
// terrain image
Bitmap _terrain = new Bitmap(640,480);
int texture = 0;
float _angle = 0;
double cameraX, cameraY, cameraZ; // camera coordinates
double lookX, lookY, lookZ; // camera look-at coordinates
double step = 1 / 1200.0;
// image zoom level
int zoom = 11;
RectLatLng area = new RectLatLng(-35.04286,117.84262,0.1,0.1);
double _alt = 0;
public PointLatLngAlt LocationCenter {
get {
return new PointLatLngAlt(area.LocationMiddle.Lat, area.LocationMiddle.Lng,_alt,"");
}
set {
if (area.LocationMiddle.Lat == value.Lat && area.LocationMiddle.Lng == value.Lng)
return;
if (value.Lat == 0 && value.Lng == 0)
return;
_alt = value.Alt;
area = new RectLatLng(value.Lat + 0.15, value.Lng - 0.15, 0.3, 0.3);
// Console.WriteLine(area.LocationMiddle + " " + value.ToString());
this.Invalidate();
}
}
public Vector3 rpy = new Vector3();
public OpenGLtest()
{
instance = this;
InitializeComponent();
GL.GenTextures(1, out texture);
}
void getImage()
{
MapType type = MapType.GoogleSatellite;
PureProjection prj = null;
int maxZoom;
GMaps.Instance.AdjustProjection(type, ref prj, out maxZoom);
//int zoom = 14; // 12
if (!area.IsEmpty)
{
try
{
List<GPoint> tileArea = prj.GetAreaTileList(area, zoom, 0);
//string bigImage = zoom + "-" + type + "-vilnius.png";
//Console.WriteLine("Preparing: " + bigImage);
//Console.WriteLine("Zoom: " + zoom);
//Console.WriteLine("Type: " + type.ToString());
//Console.WriteLine("Area: " + area);
var types = GMaps.Instance.GetAllLayersOfType(type);
// current area
GPoint topLeftPx = prj.FromLatLngToPixel(area.LocationTopLeft, zoom);
GPoint rightButtomPx = prj.FromLatLngToPixel(area.Bottom, area.Right, zoom);
GPoint pxDelta = new GPoint(rightButtomPx.X - topLeftPx.X, rightButtomPx.Y - topLeftPx.Y);
DateTime startimage = DateTime.Now;
int padding = 0;
{
using (Bitmap bmpDestination = new Bitmap(pxDelta.X + padding * 2, pxDelta.Y + padding * 2))
{
using (Graphics gfx = Graphics.FromImage(bmpDestination))
{
gfx.CompositingMode = System.Drawing.Drawing2D.CompositingMode.SourceOver;
// get tiles & combine into one
foreach (var p in tileArea)
{
Console.WriteLine("Downloading[" + p + "]: " + tileArea.IndexOf(p) + " of " + tileArea.Count);
foreach (MapType tp in types)
{
Exception ex;
WindowsFormsImage tile = GMaps.Instance.GetImageFrom(tp, p, zoom, out ex) as WindowsFormsImage;
if (tile != null)
{
using (tile)
{
int x = p.X * prj.TileSize.Width - topLeftPx.X + padding;
int y = p.Y * prj.TileSize.Width - topLeftPx.Y + padding;
{
gfx.DrawImage(tile.Img, x, y, prj.TileSize.Width, prj.TileSize.Height);
}
}
}
}
if ((DateTime.Now - startimage).TotalMilliseconds > 200)
break;
}
}
_terrain = new Bitmap(bmpDestination, 512, 512);
GL.BindTexture(TextureTarget.Texture2D, texture);
BitmapData data = _terrain.LockBits(new System.Drawing.Rectangle(0, 0, _terrain.Width, _terrain.Height),
ImageLockMode.ReadOnly, System.Drawing.Imaging.PixelFormat.Format32bppArgb);
//Console.WriteLine("w {0} h {1}",data.Width, data.Height);
GL.TexImage2D(TextureTarget.Texture2D, 0, PixelInternalFormat.Rgba, data.Width, data.Height, 0,
OpenTK.Graphics.OpenGL.PixelFormat.Bgra, PixelType.UnsignedByte, data.Scan0);
_terrain.UnlockBits(data);
GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureMinFilter, (int)TextureMinFilter.Linear);
GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureMagFilter, (int)TextureMagFilter.Linear);
}
}
if ((DateTime.Now - startimage).TotalMilliseconds > 200)
{
zoom--;
}
else
{
//zoom++;
}
}
catch { }
}
}
const float rad2deg = (float)(180 / Math.PI);
const float deg2rad = (float)(1.0 / rad2deg);
public Vector3 Normal(Vector3 a, Vector3 b, Vector3 c)
{
var dir = Vector3.Cross(b - a, c - a);
var norm = Vector3.Normalize(dir);
return norm;
}
protected override void OnPaint(System.Windows.Forms.PaintEventArgs e)
{
if (this.DesignMode)
return;
if (area.LocationMiddle.Lat == 0 && area.LocationMiddle.Lng == 0)
return;
_angle+=1f;
// area.LocationTopLeft = new PointLatLng(area.LocationTopLeft.Lat + 0.0001,area.LocationTopLeft.Lng);
//area.Size = new SizeLatLng(0.1, 0.1);
try
{
base.OnPaint(e);
}
catch { return; }
double heightscale = (step / 90.0) * 4;
float scale = 1.0f;
float radians = (float)(Math.PI * (rpy.Z * -1) / 180.0f);
//radians = 0;
float mouseY = (float)(0.1 * scale);
cameraX = area.LocationMiddle.Lng; // multiplying by mouseY makes the
cameraZ = area.LocationMiddle.Lat; // camera get closer/farther away with mouseY
cameraY = (LocationCenter.Alt < srtm.getAltitude(cameraZ, cameraX, 20)) ? (srtm.getAltitude(cameraZ, cameraX, 20)+ 0.2) * heightscale : LocationCenter.Alt * heightscale;// (srtm.getAltitude(lookZ, lookX, 20) + 100) * heighscale;
lookX = area.LocationMiddle.Lng + Math.Sin(radians) * mouseY; ;
lookY = cameraY;
lookZ = area.LocationMiddle.Lat + Math.Cos(radians) * mouseY; ;
MakeCurrent();
GL.MatrixMode(MatrixMode.Projection);
OpenTK.Matrix4 projection = OpenTK.Matrix4.CreatePerspectiveFieldOfView(60 * deg2rad, 1f, 0.00001f, 5000.0f);
GL.LoadMatrix(ref projection);
Matrix4 modelview = Matrix4.LookAt((float)cameraX, (float)cameraY, (float)cameraZ, (float)lookX, (float)lookY, (float)lookZ, 0,1,0);
GL.MatrixMode(MatrixMode.Modelview);
// roll
modelview = Matrix4.Mult(modelview,Matrix4.CreateRotationZ (rpy.X * deg2rad));
// pitch
modelview = Matrix4.Mult(modelview, Matrix4.CreateRotationX(rpy.Y * -deg2rad));
GL.LoadMatrix(ref modelview);
GL.ClearColor(Color.Blue);
GL.Clear(ClearBufferMask.ColorBufferBit | ClearBufferMask.DepthBufferBit);
GL.LightModel(LightModelParameter.LightModelAmbient,new float[] {1f,1f,1f,1f});
GL.Enable(EnableCap.Texture2D);
GL.BindTexture(TextureTarget.Texture2D, texture);
/*
GL.Begin(BeginMode.LineStrip);
GL.Color3(Color.White);
GL.Vertex3(0, 0, 0);
GL.Vertex3(area.Bottom, 0, area.Left);
GL.Vertex3(lookX, lookY, lookZ);
//GL.Vertex3(cameraX, cameraY, cameraZ);
GL.End();
*/
System.Diagnostics.Stopwatch sw = new System.Diagnostics.Stopwatch();
sw.Start();
getImage();
sw.Stop();
Console.WriteLine("img " +sw.ElapsedMilliseconds);
sw.Start();
double increment = step * 1;
double cleanup = area.Bottom % increment;
double cleanup2 = area.Left % increment;
for (double z = (area.Bottom - cleanup); z < area.Top - step; z += increment)
{
//Makes OpenGL draw a triangle at every three consecutive vertices
GL.Begin(BeginMode.TriangleStrip);
for (double x = (area.Left - cleanup2); x < area.Right - step; x += increment)
{
int heightl = srtm.getAltitude(z, area.Right + area.Left - x, 20);
// Console.WriteLine(x + " " + z);
GL.Color3(Color.White);
// int heightl = 0;
double scale2 = (Math.Abs(x - area.Left) / area.WidthLng);// / (float)_terrain.Width;
double scale3 = (Math.Abs(z - area.Bottom) / area.HeightLat);// / (float)_terrain.Height;
double imgx = 1 - scale2;
double imgy = 1 - scale3;
// GL.Color3(Color.Red);
//GL.Color3(_terrain.GetPixel(imgx, imgy));
GL.TexCoord2(imgx,imgy);
GL.Vertex3(x, heightl * heightscale, z); // _terrain.GetPixel(x, z).R
try
{
heightl = srtm.getAltitude(z + increment, area.Right + area.Left - x, 20);
//scale2 = (Math.Abs(x - area.Left) / area.WidthLng) * (float)_terrain.Width;
scale3 = (Math.Abs(((z + increment) - area.Bottom)) / area.HeightLat);// / (float)_terrain.Height;
imgx = 1- scale2;
imgy = 1 - scale3;
// GL.Color3(Color.Green);
//GL.Color3(_terrain.GetPixel(imgx, imgy));
GL.TexCoord2(imgx,imgy);
GL.Vertex3(x, heightl * heightscale, z + increment);
// Console.WriteLine(x + " " + (z + step));
}
catch { break; }
}
GL.End();
}
GL.Enable(EnableCap.Blend);
GL.DepthMask(false);
GL.BlendFunc(BlendingFactorSrc.SrcAlpha, BlendingFactorDest.One);
GL.DepthMask(true);
GL.Disable(EnableCap.Blend);
GL.Flush();
sw.Stop();
Console.WriteLine("GL "+sw.ElapsedMilliseconds);
this.SwapBuffers();
//this.Invalidate();
}
private void InitializeComponent()
{
this.SuspendLayout();
//
// OpenGLtest
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.Name = "OpenGLtest";
this.Load += new System.EventHandler(this.test_Load);
this.Resize += new System.EventHandler(this.test_Resize);
this.ResumeLayout(false);
}
private void test_Load(object sender, EventArgs e)
{
GL.Enable(EnableCap.DepthTest);
// GL.Enable(EnableCap.Light0);
GL.Enable(EnableCap.Lighting);
GL.Enable(EnableCap.ColorMaterial);
GL.Enable(EnableCap.Normalize);
//GL.Enable(EnableCap.LineSmooth);
//GL.Enable(EnableCap.PointSmooth);
//GL.Enable(EnableCap.PolygonSmooth);
GL.ShadeModel(ShadingModel.Smooth);
GL.Enable(EnableCap.CullFace);
GL.Enable(EnableCap.Texture2D);
}
private void test_Resize(object sender, EventArgs e)
{
MakeCurrent();
GL.Viewport(0, 0, this.Width, this.Height);
this.Invalidate();
}
}
}

View File

@ -0,0 +1,120 @@
<?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>
</root>

View File

@ -28,6 +28,8 @@ namespace ArdupilotMega
Application.ThreadException += Application_ThreadException;
AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
Application.Idle += Application_Idle;
//MagCalib.ProcessLog();
@ -38,30 +40,81 @@ namespace ArdupilotMega
//Console.WriteLine(srtm.getAltitude(-35.115676879882812, 117.94178754638671,20));
/*
Arduino.ArduinoSTK comport = new Arduino.ArduinoSTK();
Arduino.ArduinoSTKv2 comport = new Arduino.ArduinoSTKv2();
comport.PortName = "com4";
comport.PortName = "com8";
comport.BaudRate = 57600;
comport.BaudRate = 115200;
comport.Open();
comport.connectAP();
comport.sync();
comport.sync();
Console.WriteLine( comport.getChipType(0));
Console.WriteLine(comport.getChipType(1));
Console.WriteLine(comport.getChipType(2));
Arduino.Chip.Populate();
if (comport.connectAP())
{
Arduino.Chip chip = comport.getChipType();
Console.WriteLine(chip);
}
Console.ReadLine();
return;
*/
/*
Comms.SerialPort sp = new Comms.SerialPort();
sp.PortName = "com8";
sp.BaudRate = 115200;
CurrentState cs = new CurrentState();
MAVLink mav = new MAVLink();
mav.BaseStream = sp;
mav.Open();
HIL.XPlane xp = new HIL.XPlane();
xp.SetupSockets(49005, 49000, "127.0.0.1");
HIL.Hil.sitl_fdm data = new HIL.Hil.sitl_fdm();
while (true)
{
while (mav.BaseStream.BytesToRead > 0)
mav.readPacket();
// update all stats
cs.UpdateCurrentSettings(null);
xp.GetFromSim(ref data);
xp.GetFromAP(); // no function
xp.SendToAP(data);
xp.SendToSim();
MAVLink.mavlink_rc_channels_override_t rc = new MAVLink.mavlink_rc_channels_override_t();
rc.chan3_raw = 1500;
mav.sendPacket(rc);
} */
/*
MAVLink mav = new MAVLink();
mav.BaseStream = new Comms.CommsFile() { PortName = @"C:\Users\hog\Documents\Visual Studio 2010\Projects\ArdupilotMega\ArdupilotMega\bin\Debug\logs\2012-09-09 15-07-25.tlog" };
mav.Open(true);
while (mav.BaseStream.BytesToRead > 0)
{
byte[] packet = mav.readPacket();
mav.DebugPacket(packet, true);
}
*/
try
{
@ -71,6 +124,11 @@ namespace ArdupilotMega
}
catch (Exception ex)
{
if (ex.GetType() == typeof(FileNotFoundException))
{
Console.WriteLine("If your error is about Microsoft.DirectX.DirectInput, please install the latest directx redist from here http://www.microsoft.com/en-us/download/details.aspx?id=35 \n\n");
}
log.Fatal("Fatal app exception", ex);
Console.WriteLine(ex.ToString());
@ -78,6 +136,11 @@ namespace ArdupilotMega
}
}
static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
{
handleException((Exception)e.ExceptionObject);
}
static DateTime lastidle = DateTime.Now;
static void Application_Idle(object sender, EventArgs e)
@ -93,10 +156,8 @@ namespace ArdupilotMega
System.Threading.Thread.Sleep(1);
}
static void Application_ThreadException(object sender, System.Threading.ThreadExceptionEventArgs e)
static void handleException(Exception ex)
{
Exception ex = e.Exception;
log.Debug(ex.ToString());
if (ex.Message == "Requested registry access is not allowed.")
@ -113,18 +174,18 @@ namespace ArdupilotMega
CustomMessageBox.Show("Serial connection has been lost");
return;
}
if (e.Exception.GetType() == typeof(MissingMethodException))
if (ex.GetType() == typeof(MissingMethodException))
{
CustomMessageBox.Show("Please Update - Some older library dlls are causing problems\n" + e.Exception.Message);
CustomMessageBox.Show("Please Update - Some older library dlls are causing problems\n" + ex.Message);
return;
}
if (e.Exception.GetType() == typeof(ObjectDisposedException) || e.Exception.GetType() == typeof(InvalidOperationException)) // something is trying to update while the form, is closing.
if (ex.GetType() == typeof(ObjectDisposedException) || ex.GetType() == typeof(InvalidOperationException)) // something is trying to update while the form, is closing.
{
return; // ignore
}
if (e.Exception.GetType() == typeof(FileNotFoundException) || e.Exception.GetType() == typeof(BadImageFormatException)) // i get alot of error from people who click the exe from inside a zip file.
if (ex.GetType() == typeof(FileNotFoundException) || ex.GetType() == typeof(BadImageFormatException)) // i get alot of error from people who click the exe from inside a zip file.
{
CustomMessageBox.Show("You are missing some DLL's. Please extract the zip file somewhere. OR Use the update feature from the menu " + e.Exception.ToString());
CustomMessageBox.Show("You are missing some DLL's. Please extract the zip file somewhere. OR Use the update feature from the menu " + ex.ToString());
// return;
}
DialogResult dr = CustomMessageBox.Show("An error has occurred\n" + ex.ToString() + "\n\nReport this Error???", "Send Error", MessageBoxButtons.YesNo);
@ -173,5 +234,12 @@ namespace ArdupilotMega
}
}
}
static void Application_ThreadException(object sender, System.Threading.ThreadExceptionEventArgs e)
{
Exception ex = e.Exception;
handleException(ex);
}
}
}

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.11")]
[assembly: AssemblyFileVersion("1.2.12")]
[assembly: NeutralResourcesLanguageAttribute("")]

View File

@ -95,6 +95,20 @@ namespace ArdupilotMega.Properties {
}
}
public static System.Drawing.Bitmap APM_rover_firmware {
get {
object obj = ResourceManager.GetObject("APM_rover_firmware", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
public static System.Drawing.Icon apm2 {
get {
object obj = ResourceManager.GetObject("apm2", resourceCulture);
return ((System.Drawing.Icon)(obj));
}
}
public static System.Drawing.Bitmap attocurrent {
get {
object obj = ResourceManager.GetObject("attocurrent", resourceCulture);

View File

@ -1246,8 +1246,14 @@
<data name="frames_x" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\frames_x.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="cameraGimalYaw" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\cameraGimalYaw.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="APM_rover_firmware" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\APM_rover-firmware.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="apm2" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\apm2.ico;System.Drawing.Icon, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
</root>

View File

@ -66,7 +66,6 @@
this.S8 = new System.Windows.Forms.ComboBox();
this.RS8 = new System.Windows.Forms.ComboBox();
this.RS9 = new System.Windows.Forms.ComboBox();
this.linkLabel1 = new System.Windows.Forms.LinkLabel();
this.RS0 = new System.Windows.Forms.TextBox();
this.RTI = new System.Windows.Forms.TextBox();
this.ATI = new System.Windows.Forms.TextBox();
@ -103,6 +102,7 @@
this.groupBox2 = new System.Windows.Forms.GroupBox();
this.label9 = new System.Windows.Forms.Label();
this.label10 = new System.Windows.Forms.Label();
this.linkLabel1 = new System.Windows.Forms.LinkLabel();
this.SPLIT_local.Panel1.SuspendLayout();
this.SPLIT_local.Panel2.SuspendLayout();
this.SPLIT_local.SuspendLayout();
@ -117,11 +117,9 @@
//
resources.ApplyResources(this.Progressbar, "Progressbar");
this.Progressbar.Name = "Progressbar";
this.toolTip1.SetToolTip(this.Progressbar, resources.GetString("Progressbar.ToolTip"));
//
// S1
//
resources.ApplyResources(this.S1, "S1");
this.S1.FormattingEnabled = true;
this.S1.Items.AddRange(new object[] {
resources.GetString("S1.Items"),
@ -133,6 +131,7 @@
resources.GetString("S1.Items6"),
resources.GetString("S1.Items7"),
resources.GetString("S1.Items8")});
resources.ApplyResources(this.S1, "S1");
this.S1.Name = "S1";
this.toolTip1.SetToolTip(this.S1, resources.GetString("S1.ToolTip"));
//
@ -140,30 +139,25 @@
//
resources.ApplyResources(this.label1, "label1");
this.label1.Name = "label1";
this.toolTip1.SetToolTip(this.label1, resources.GetString("label1.ToolTip"));
//
// S0
//
resources.ApplyResources(this.S0, "S0");
this.S0.Name = "S0";
this.S0.ReadOnly = true;
this.toolTip1.SetToolTip(this.S0, resources.GetString("S0.ToolTip"));
//
// label2
//
resources.ApplyResources(this.label2, "label2");
this.label2.Name = "label2";
this.toolTip1.SetToolTip(this.label2, resources.GetString("label2.ToolTip"));
//
// label3
//
resources.ApplyResources(this.label3, "label3");
this.label3.Name = "label3";
this.toolTip1.SetToolTip(this.label3, resources.GetString("label3.ToolTip"));
//
// S2
//
resources.ApplyResources(this.S2, "S2");
this.S2.FormattingEnabled = true;
this.S2.Items.AddRange(new object[] {
resources.GetString("S2.Items"),
@ -179,6 +173,7 @@
resources.GetString("S2.Items10"),
resources.GetString("S2.Items11"),
resources.GetString("S2.Items12")});
resources.ApplyResources(this.S2, "S2");
this.S2.Name = "S2";
this.toolTip1.SetToolTip(this.S2, resources.GetString("S2.ToolTip"));
//
@ -186,11 +181,9 @@
//
resources.ApplyResources(this.label4, "label4");
this.label4.Name = "label4";
this.toolTip1.SetToolTip(this.label4, resources.GetString("label4.ToolTip"));
//
// S3
//
resources.ApplyResources(this.S3, "S3");
this.S3.FormattingEnabled = true;
this.S3.Items.AddRange(new object[] {
resources.GetString("S3.Items"),
@ -223,6 +216,7 @@
resources.GetString("S3.Items27"),
resources.GetString("S3.Items28"),
resources.GetString("S3.Items29")});
resources.ApplyResources(this.S3, "S3");
this.S3.Name = "S3";
this.toolTip1.SetToolTip(this.S3, resources.GetString("S3.ToolTip"));
//
@ -230,11 +224,9 @@
//
resources.ApplyResources(this.label5, "label5");
this.label5.Name = "label5";
this.toolTip1.SetToolTip(this.label5, resources.GetString("label5.ToolTip"));
//
// S4
//
resources.ApplyResources(this.S4, "S4");
this.S4.FormattingEnabled = true;
this.S4.Items.AddRange(new object[] {
resources.GetString("S4.Items"),
@ -245,6 +237,7 @@
resources.GetString("S4.Items5"),
resources.GetString("S4.Items6"),
resources.GetString("S4.Items7")});
resources.ApplyResources(this.S4, "S4");
this.S4.Name = "S4";
this.toolTip1.SetToolTip(this.S4, resources.GetString("S4.ToolTip"));
//
@ -252,7 +245,6 @@
//
resources.ApplyResources(this.label6, "label6");
this.label6.Name = "label6";
this.toolTip1.SetToolTip(this.label6, resources.GetString("label6.ToolTip"));
//
// S5
//
@ -264,7 +256,6 @@
//
resources.ApplyResources(this.label7, "label7");
this.label7.Name = "label7";
this.toolTip1.SetToolTip(this.label7, resources.GetString("label7.ToolTip"));
//
// S6
//
@ -276,7 +267,6 @@
//
resources.ApplyResources(this.label8, "label8");
this.label8.Name = "label8";
this.toolTip1.SetToolTip(this.label8, resources.GetString("label8.ToolTip"));
//
// S7
//
@ -304,7 +294,6 @@
//
// RS4
//
resources.ApplyResources(this.RS4, "RS4");
this.RS4.FormattingEnabled = true;
this.RS4.Items.AddRange(new object[] {
resources.GetString("RS4.Items"),
@ -315,12 +304,12 @@
resources.GetString("RS4.Items5"),
resources.GetString("RS4.Items6"),
resources.GetString("RS4.Items7")});
resources.ApplyResources(this.RS4, "RS4");
this.RS4.Name = "RS4";
this.toolTip1.SetToolTip(this.RS4, resources.GetString("RS4.ToolTip"));
//
// RS3
//
resources.ApplyResources(this.RS3, "RS3");
this.RS3.FormattingEnabled = true;
this.RS3.Items.AddRange(new object[] {
resources.GetString("RS3.Items"),
@ -353,12 +342,12 @@
resources.GetString("RS3.Items27"),
resources.GetString("RS3.Items28"),
resources.GetString("RS3.Items29")});
resources.ApplyResources(this.RS3, "RS3");
this.RS3.Name = "RS3";
this.toolTip1.SetToolTip(this.RS3, resources.GetString("RS3.ToolTip"));
//
// RS2
//
resources.ApplyResources(this.RS2, "RS2");
this.RS2.FormattingEnabled = true;
this.RS2.Items.AddRange(new object[] {
resources.GetString("RS2.Items"),
@ -374,12 +363,12 @@
resources.GetString("RS2.Items10"),
resources.GetString("RS2.Items11"),
resources.GetString("RS2.Items12")});
resources.ApplyResources(this.RS2, "RS2");
this.RS2.Name = "RS2";
this.toolTip1.SetToolTip(this.RS2, resources.GetString("RS2.ToolTip"));
//
// RS1
//
resources.ApplyResources(this.RS1, "RS1");
this.RS1.FormattingEnabled = true;
this.RS1.Items.AddRange(new object[] {
resources.GetString("RS1.Items"),
@ -391,6 +380,7 @@
resources.GetString("RS1.Items6"),
resources.GetString("RS1.Items7"),
resources.GetString("RS1.Items8")});
resources.ApplyResources(this.RS1, "RS1");
this.RS1.Name = "RS1";
this.toolTip1.SetToolTip(this.RS1, resources.GetString("RS1.ToolTip"));
//
@ -403,7 +393,6 @@
//
// S10
//
resources.ApplyResources(this.S10, "S10");
this.S10.FormattingEnabled = true;
this.S10.Items.AddRange(new object[] {
resources.GetString("S10.Items"),
@ -425,12 +414,12 @@
resources.GetString("S10.Items16"),
resources.GetString("S10.Items17"),
resources.GetString("S10.Items18")});
resources.ApplyResources(this.S10, "S10");
this.S10.Name = "S10";
this.toolTip1.SetToolTip(this.S10, resources.GetString("S10.ToolTip"));
//
// S11
//
resources.ApplyResources(this.S11, "S11");
this.S11.FormattingEnabled = true;
this.S11.Items.AddRange(new object[] {
resources.GetString("S11.Items"),
@ -443,32 +432,32 @@
resources.GetString("S11.Items7"),
resources.GetString("S11.Items8"),
resources.GetString("S11.Items9")});
resources.ApplyResources(this.S11, "S11");
this.S11.Name = "S11";
this.toolTip1.SetToolTip(this.S11, resources.GetString("S11.ToolTip"));
//
// S12
//
resources.ApplyResources(this.S12, "S12");
this.S12.FormattingEnabled = true;
this.S12.Items.AddRange(new object[] {
resources.GetString("S12.Items"),
resources.GetString("S12.Items1")});
resources.ApplyResources(this.S12, "S12");
this.S12.Name = "S12";
this.toolTip1.SetToolTip(this.S12, resources.GetString("S12.ToolTip"));
//
// RS12
//
resources.ApplyResources(this.RS12, "RS12");
this.RS12.FormattingEnabled = true;
this.RS12.Items.AddRange(new object[] {
resources.GetString("RS12.Items"),
resources.GetString("RS12.Items1")});
resources.ApplyResources(this.RS12, "RS12");
this.RS12.Name = "RS12";
this.toolTip1.SetToolTip(this.RS12, resources.GetString("RS12.ToolTip"));
//
// RS11
//
resources.ApplyResources(this.RS11, "RS11");
this.RS11.FormattingEnabled = true;
this.RS11.Items.AddRange(new object[] {
resources.GetString("RS11.Items"),
@ -481,12 +470,12 @@
resources.GetString("RS11.Items7"),
resources.GetString("RS11.Items8"),
resources.GetString("RS11.Items9")});
resources.ApplyResources(this.RS11, "RS11");
this.RS11.Name = "RS11";
this.toolTip1.SetToolTip(this.RS11, resources.GetString("RS11.ToolTip"));
//
// RS10
//
resources.ApplyResources(this.RS10, "RS10");
this.RS10.FormattingEnabled = true;
this.RS10.Items.AddRange(new object[] {
resources.GetString("RS10.Items"),
@ -508,12 +497,12 @@
resources.GetString("RS10.Items16"),
resources.GetString("RS10.Items17"),
resources.GetString("RS10.Items18")});
resources.ApplyResources(this.RS10, "RS10");
this.RS10.Name = "RS10";
this.toolTip1.SetToolTip(this.RS10, resources.GetString("RS10.ToolTip"));
//
// S9
//
resources.ApplyResources(this.S9, "S9");
this.S9.FormattingEnabled = true;
this.S9.Items.AddRange(new object[] {
resources.GetString("S9.Items"),
@ -525,12 +514,12 @@
resources.GetString("S9.Items6"),
resources.GetString("S9.Items7"),
resources.GetString("S9.Items8")});
resources.ApplyResources(this.S9, "S9");
this.S9.Name = "S9";
this.toolTip1.SetToolTip(this.S9, resources.GetString("S9.ToolTip"));
//
// S8
//
resources.ApplyResources(this.S8, "S8");
this.S8.FormattingEnabled = true;
this.S8.Items.AddRange(new object[] {
resources.GetString("S8.Items"),
@ -545,12 +534,12 @@
resources.GetString("S8.Items9"),
resources.GetString("S8.Items10"),
resources.GetString("S8.Items11")});
resources.ApplyResources(this.S8, "S8");
this.S8.Name = "S8";
this.toolTip1.SetToolTip(this.S8, resources.GetString("S8.ToolTip"));
//
// RS8
//
resources.ApplyResources(this.RS8, "RS8");
this.RS8.FormattingEnabled = true;
this.RS8.Items.AddRange(new object[] {
resources.GetString("RS8.Items"),
@ -562,12 +551,12 @@
resources.GetString("RS8.Items6"),
resources.GetString("RS8.Items7"),
resources.GetString("RS8.Items8")});
resources.ApplyResources(this.RS8, "RS8");
this.RS8.Name = "RS8";
this.toolTip1.SetToolTip(this.RS8, resources.GetString("RS8.ToolTip"));
//
// RS9
//
resources.ApplyResources(this.RS9, "RS9");
this.RS9.FormattingEnabled = true;
this.RS9.Items.AddRange(new object[] {
resources.GetString("RS9.Items"),
@ -579,55 +568,42 @@
resources.GetString("RS9.Items6"),
resources.GetString("RS9.Items7"),
resources.GetString("RS9.Items8")});
resources.ApplyResources(this.RS9, "RS9");
this.RS9.Name = "RS9";
this.toolTip1.SetToolTip(this.RS9, resources.GetString("RS9.ToolTip"));
//
// linkLabel1
//
resources.ApplyResources(this.linkLabel1, "linkLabel1");
this.linkLabel1.Name = "linkLabel1";
this.linkLabel1.TabStop = true;
this.toolTip1.SetToolTip(this.linkLabel1, resources.GetString("linkLabel1.ToolTip"));
this.linkLabel1.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkLabel1_LinkClicked);
//
// RS0
//
resources.ApplyResources(this.RS0, "RS0");
this.RS0.Name = "RS0";
this.RS0.ReadOnly = true;
this.toolTip1.SetToolTip(this.RS0, resources.GetString("RS0.ToolTip"));
//
// RTI
//
resources.ApplyResources(this.RTI, "RTI");
this.RTI.Name = "RTI";
this.RTI.ReadOnly = true;
this.toolTip1.SetToolTip(this.RTI, resources.GetString("RTI.ToolTip"));
//
// ATI
//
resources.ApplyResources(this.ATI, "ATI");
this.ATI.Name = "ATI";
this.ATI.ReadOnly = true;
this.toolTip1.SetToolTip(this.ATI, resources.GetString("ATI.ToolTip"));
//
// label11
//
resources.ApplyResources(this.label11, "label11");
this.label11.Name = "label11";
this.toolTip1.SetToolTip(this.label11, resources.GetString("label11.ToolTip"));
//
// label12
//
resources.ApplyResources(this.label12, "label12");
this.label12.Name = "label12";
this.toolTip1.SetToolTip(this.label12, resources.GetString("label12.ToolTip"));
//
// BUT_savesettings
//
resources.ApplyResources(this.BUT_savesettings, "BUT_savesettings");
this.BUT_savesettings.Name = "BUT_savesettings";
this.toolTip1.SetToolTip(this.BUT_savesettings, resources.GetString("BUT_savesettings.ToolTip"));
this.BUT_savesettings.UseVisualStyleBackColor = true;
this.BUT_savesettings.Click += new System.EventHandler(this.BUT_savesettings_Click);
//
@ -635,22 +611,19 @@
//
resources.ApplyResources(this.BUT_getcurrent, "BUT_getcurrent");
this.BUT_getcurrent.Name = "BUT_getcurrent";
this.toolTip1.SetToolTip(this.BUT_getcurrent, resources.GetString("BUT_getcurrent.ToolTip"));
this.BUT_getcurrent.UseVisualStyleBackColor = true;
this.BUT_getcurrent.Click += new System.EventHandler(this.BUT_getcurrent_Click);
//
// lbl_status
//
resources.ApplyResources(this.lbl_status, "lbl_status");
this.lbl_status.BackColor = System.Drawing.Color.Transparent;
resources.ApplyResources(this.lbl_status, "lbl_status");
this.lbl_status.Name = "lbl_status";
this.toolTip1.SetToolTip(this.lbl_status, resources.GetString("lbl_status.ToolTip"));
//
// BUT_upload
//
resources.ApplyResources(this.BUT_upload, "BUT_upload");
this.BUT_upload.Name = "BUT_upload";
this.toolTip1.SetToolTip(this.BUT_upload, resources.GetString("BUT_upload.ToolTip"));
this.BUT_upload.UseVisualStyleBackColor = true;
this.BUT_upload.Click += new System.EventHandler(this.BUT_upload_Click);
//
@ -658,109 +631,91 @@
//
resources.ApplyResources(this.label13, "label13");
this.label13.Name = "label13";
this.toolTip1.SetToolTip(this.label13, resources.GetString("label13.ToolTip"));
//
// label14
//
resources.ApplyResources(this.label14, "label14");
this.label14.Name = "label14";
this.toolTip1.SetToolTip(this.label14, resources.GetString("label14.ToolTip"));
//
// label15
//
resources.ApplyResources(this.label15, "label15");
this.label15.Name = "label15";
this.toolTip1.SetToolTip(this.label15, resources.GetString("label15.ToolTip"));
//
// label16
//
resources.ApplyResources(this.label16, "label16");
this.label16.Name = "label16";
this.toolTip1.SetToolTip(this.label16, resources.GetString("label16.ToolTip"));
//
// label17
//
resources.ApplyResources(this.label17, "label17");
this.label17.Name = "label17";
this.toolTip1.SetToolTip(this.label17, resources.GetString("label17.ToolTip"));
//
// label20
//
resources.ApplyResources(this.label20, "label20");
this.label20.Name = "label20";
this.toolTip1.SetToolTip(this.label20, resources.GetString("label20.ToolTip"));
//
// label21
//
resources.ApplyResources(this.label21, "label21");
this.label21.Name = "label21";
this.toolTip1.SetToolTip(this.label21, resources.GetString("label21.ToolTip"));
//
// label22
//
resources.ApplyResources(this.label22, "label22");
this.label22.Name = "label22";
this.toolTip1.SetToolTip(this.label22, resources.GetString("label22.ToolTip"));
//
// label23
//
resources.ApplyResources(this.label23, "label23");
this.label23.Name = "label23";
this.toolTip1.SetToolTip(this.label23, resources.GetString("label23.ToolTip"));
//
// label24
//
resources.ApplyResources(this.label24, "label24");
this.label24.Name = "label24";
this.toolTip1.SetToolTip(this.label24, resources.GetString("label24.ToolTip"));
//
// label25
//
resources.ApplyResources(this.label25, "label25");
this.label25.Name = "label25";
this.toolTip1.SetToolTip(this.label25, resources.GetString("label25.ToolTip"));
//
// label26
//
resources.ApplyResources(this.label26, "label26");
this.label26.Name = "label26";
this.toolTip1.SetToolTip(this.label26, resources.GetString("label26.ToolTip"));
//
// label27
//
resources.ApplyResources(this.label27, "label27");
this.label27.Name = "label27";
this.toolTip1.SetToolTip(this.label27, resources.GetString("label27.ToolTip"));
//
// label28
//
resources.ApplyResources(this.label28, "label28");
this.label28.Name = "label28";
this.toolTip1.SetToolTip(this.label28, resources.GetString("label28.ToolTip"));
//
// label29
//
resources.ApplyResources(this.label29, "label29");
this.label29.Name = "label29";
this.toolTip1.SetToolTip(this.label29, resources.GetString("label29.ToolTip"));
//
// label30
//
resources.ApplyResources(this.label30, "label30");
this.label30.Name = "label30";
this.toolTip1.SetToolTip(this.label30, resources.GetString("label30.ToolTip"));
//
// label31
//
resources.ApplyResources(this.label31, "label31");
this.label31.Name = "label31";
this.toolTip1.SetToolTip(this.label31, resources.GetString("label31.ToolTip"));
//
// label32
//
resources.ApplyResources(this.label32, "label32");
this.label32.Name = "label32";
this.toolTip1.SetToolTip(this.label32, resources.GetString("label32.ToolTip"));
//
// SPLIT_local
//
@ -769,7 +724,6 @@
//
// SPLIT_local.Panel1
//
resources.ApplyResources(this.SPLIT_local.Panel1, "SPLIT_local.Panel1");
this.SPLIT_local.Panel1.Controls.Add(this.label2);
this.SPLIT_local.Panel1.Controls.Add(this.S1);
this.SPLIT_local.Panel1.Controls.Add(this.label1);
@ -786,11 +740,9 @@
this.SPLIT_local.Panel1.Controls.Add(this.S6);
this.SPLIT_local.Panel1.Controls.Add(this.S7);
this.SPLIT_local.Panel1.Controls.Add(this.label7);
this.toolTip1.SetToolTip(this.SPLIT_local.Panel1, resources.GetString("SPLIT_local.Panel1.ToolTip"));
//
// SPLIT_local.Panel2
//
resources.ApplyResources(this.SPLIT_local.Panel2, "SPLIT_local.Panel2");
this.SPLIT_local.Panel2.Controls.Add(this.label13);
this.SPLIT_local.Panel2.Controls.Add(this.S9);
this.SPLIT_local.Panel2.Controls.Add(this.S10);
@ -801,8 +753,6 @@
this.SPLIT_local.Panel2.Controls.Add(this.S8);
this.SPLIT_local.Panel2.Controls.Add(this.label15);
this.SPLIT_local.Panel2.Controls.Add(this.label14);
this.toolTip1.SetToolTip(this.SPLIT_local.Panel2, resources.GetString("SPLIT_local.Panel2.ToolTip"));
this.toolTip1.SetToolTip(this.SPLIT_local, resources.GetString("SPLIT_local.ToolTip"));
//
// SPLIT_remote
//
@ -811,7 +761,6 @@
//
// SPLIT_remote.Panel1
//
resources.ApplyResources(this.SPLIT_remote.Panel1, "SPLIT_remote.Panel1");
this.SPLIT_remote.Panel1.Controls.Add(this.RS0);
this.SPLIT_remote.Panel1.Controls.Add(this.RS1);
this.SPLIT_remote.Panel1.Controls.Add(this.RS2);
@ -828,11 +777,9 @@
this.SPLIT_remote.Panel1.Controls.Add(this.label32);
this.SPLIT_remote.Panel1.Controls.Add(this.label30);
this.SPLIT_remote.Panel1.Controls.Add(this.label31);
this.toolTip1.SetToolTip(this.SPLIT_remote.Panel1, resources.GetString("SPLIT_remote.Panel1.ToolTip"));
//
// SPLIT_remote.Panel2
//
resources.ApplyResources(this.SPLIT_remote.Panel2, "SPLIT_remote.Panel2");
this.SPLIT_remote.Panel2.Controls.Add(this.label24);
this.SPLIT_remote.Panel2.Controls.Add(this.RS9);
this.SPLIT_remote.Panel2.Controls.Add(this.RS10);
@ -843,14 +790,11 @@
this.SPLIT_remote.Panel2.Controls.Add(this.label22);
this.SPLIT_remote.Panel2.Controls.Add(this.label21);
this.SPLIT_remote.Panel2.Controls.Add(this.label20);
this.toolTip1.SetToolTip(this.SPLIT_remote.Panel2, resources.GetString("SPLIT_remote.Panel2.ToolTip"));
this.toolTip1.SetToolTip(this.SPLIT_remote, resources.GetString("SPLIT_remote.ToolTip"));
//
// CHK_advanced
//
resources.ApplyResources(this.CHK_advanced, "CHK_advanced");
this.CHK_advanced.Name = "CHK_advanced";
this.toolTip1.SetToolTip(this.CHK_advanced, resources.GetString("CHK_advanced.ToolTip"));
this.CHK_advanced.UseVisualStyleBackColor = true;
this.CHK_advanced.CheckedChanged += new System.EventHandler(this.CHK_advanced_CheckedChanged);
//
@ -858,7 +802,6 @@
//
resources.ApplyResources(this.BUT_Syncoptions, "BUT_Syncoptions");
this.BUT_Syncoptions.Name = "BUT_Syncoptions";
this.toolTip1.SetToolTip(this.BUT_Syncoptions, resources.GetString("BUT_Syncoptions.ToolTip"));
this.BUT_Syncoptions.UseVisualStyleBackColor = true;
this.BUT_Syncoptions.Click += new System.EventHandler(this.BUT_Syncoptions_Click);
//
@ -867,42 +810,45 @@
resources.ApplyResources(this.ATI3, "ATI3");
this.ATI3.Name = "ATI3";
this.ATI3.ReadOnly = true;
this.toolTip1.SetToolTip(this.ATI3, resources.GetString("ATI3.ToolTip"));
//
// groupBox1
//
resources.ApplyResources(this.groupBox1, "groupBox1");
this.groupBox1.Controls.Add(this.SPLIT_local);
this.groupBox1.Controls.Add(this.ATI3);
this.groupBox1.Controls.Add(this.label11);
this.groupBox1.Controls.Add(this.ATI);
this.groupBox1.Controls.Add(this.RSSI);
this.groupBox1.Controls.Add(this.label12);
resources.ApplyResources(this.groupBox1, "groupBox1");
this.groupBox1.Name = "groupBox1";
this.groupBox1.TabStop = false;
this.toolTip1.SetToolTip(this.groupBox1, resources.GetString("groupBox1.ToolTip"));
//
// groupBox2
//
resources.ApplyResources(this.groupBox2, "groupBox2");
this.groupBox2.Controls.Add(this.label9);
this.groupBox2.Controls.Add(this.SPLIT_remote);
this.groupBox2.Controls.Add(this.RTI);
resources.ApplyResources(this.groupBox2, "groupBox2");
this.groupBox2.Name = "groupBox2";
this.groupBox2.TabStop = false;
this.toolTip1.SetToolTip(this.groupBox2, resources.GetString("groupBox2.ToolTip"));
//
// label9
//
resources.ApplyResources(this.label9, "label9");
this.label9.Name = "label9";
this.toolTip1.SetToolTip(this.label9, resources.GetString("label9.ToolTip"));
//
// label10
//
resources.ApplyResources(this.label10, "label10");
this.label10.Name = "label10";
this.toolTip1.SetToolTip(this.label10, resources.GetString("label10.ToolTip"));
//
// linkLabel1
//
resources.ApplyResources(this.linkLabel1, "linkLabel1");
this.linkLabel1.Name = "linkLabel1";
this.linkLabel1.TabStop = true;
this.toolTip1.SetToolTip(this.linkLabel1, resources.GetString("linkLabel1.ToolTip"));
this.linkLabel1.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkLabel1_LinkClicked);
//
// _3DRradio
//
@ -921,7 +867,6 @@
this.Controls.Add(this.BUT_upload);
this.MinimumSize = new System.Drawing.Size(781, 433);
this.Name = "_3DRradio";
this.toolTip1.SetToolTip(this, resources.GetString("$this.ToolTip"));
this.SPLIT_local.Panel1.ResumeLayout(false);
this.SPLIT_local.Panel1.PerformLayout();
this.SPLIT_local.Panel2.ResumeLayout(false);

File diff suppressed because it is too large Load Diff

View File

@ -69,113 +69,121 @@ namespace ArdupilotMega.Utilities
Bitmap frame = new Bitmap(640, 480);
// Create a request using a URL that can receive a post.
WebRequest request = HttpWebRequest.Create(URL);
// Set the Method property of the request to POST.
request.Method = "GET";
((HttpWebRequest)request).AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate;
request.Headers.Add("Accept-Encoding", "gzip,deflate");
// Get the response.
WebResponse response = request.GetResponse();
// Display the status.
log.Debug(((HttpWebResponse)response).StatusDescription);
// Get the stream containing content returned by the server.
Stream dataStream = response.GetResponseStream();
BinaryReader br = new BinaryReader(dataStream);
// get boundary header
string mpheader = response.Headers["Content-Type"];
if (mpheader.IndexOf("boundary=") == -1) {
ReadLine(br); // this is a blank line
string line = "proxyline";
while (line.Length > 2)
{
line = ReadLine(br);
if (line.StartsWith("--")) {
mpheader = line;
break;
}
}
}
else
try
{
int startboundary = mpheader.IndexOf("boundary=") + 9;
int endboundary = mpheader.Length;
mpheader = mpheader.Substring(startboundary, endboundary - startboundary);
}
// Create a request using a URL that can receive a post.
WebRequest request = HttpWebRequest.Create(URL);
// Set the Method property of the request to POST.
request.Method = "GET";
dataStream.ReadTimeout = 30000; // 30 seconds
br.BaseStream.ReadTimeout = 30000;
((HttpWebRequest)request).AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate;
while (running)
{
try
request.Headers.Add("Accept-Encoding", "gzip,deflate");
// Get the response.
WebResponse response = request.GetResponse();
// Display the status.
log.Debug(((HttpWebResponse)response).StatusDescription);
// Get the stream containing content returned by the server.
Stream dataStream = response.GetResponseStream();
BinaryReader br = new BinaryReader(dataStream);
// get boundary header
string mpheader = response.Headers["Content-Type"];
if (mpheader.IndexOf("boundary=") == -1)
{
// get the multipart start header
int length = int.Parse(getHeader(br)["Content-Length"]);
// read boundary header
if (length > 0)
ReadLine(br); // this is a blank line
string line = "proxyline";
do
{
byte[] buf1 = new byte[length];
dataStream.ReadTimeout = 3000;
int offset = 0;
int len = 0;
while ((len = br.Read(buf1, offset, length)) > 0)
line = ReadLine(br);
if (line.StartsWith("--"))
{
offset += len;
length -= len;
mpheader = line;
break;
}
/*
BinaryWriter sw = new BinaryWriter(File.OpenWrite("test.jpg"));
sw.Write(buf1,0,buf1.Length);
sw.Close();
*/
try
{
frame = new Bitmap(new MemoryStream(buf1));
}
catch { }
fps++;
if (lastimage.Second != DateTime.Now.Second)
{
Console.WriteLine("MJPEG " + fps);
fps = 0;
lastimage = DateTime.Now;
}
if (OnNewImage != null)
OnNewImage(frame, new EventArgs());
}
// blank line at end of data
ReadLine(br);
} while (line.Length > 2);
}
catch (Exception ex) { log.Info(ex); break; }
else
{
int startboundary = mpheader.IndexOf("boundary=") + 9;
int endboundary = mpheader.Length;
mpheader = mpheader.Substring(startboundary, endboundary - startboundary);
}
dataStream.ReadTimeout = 30000; // 30 seconds
br.BaseStream.ReadTimeout = 30000;
while (running)
{
try
{
// get the multipart start header
int length = int.Parse(getHeader(br)["Content-Length"]);
// read boundary header
if (length > 0)
{
byte[] buf1 = new byte[length];
dataStream.ReadTimeout = 3000;
int offset = 0;
int len = 0;
while ((len = br.Read(buf1, offset, length)) > 0)
{
offset += len;
length -= len;
}
/*
BinaryWriter sw = new BinaryWriter(File.OpenWrite("test.jpg"));
sw.Write(buf1,0,buf1.Length);
sw.Close();
*/
try
{
frame = new Bitmap(new MemoryStream(buf1));
}
catch { }
fps++;
if (lastimage.Second != DateTime.Now.Second)
{
Console.WriteLine("MJPEG " + fps);
fps = 0;
lastimage = DateTime.Now;
}
if (OnNewImage != null)
OnNewImage(frame, new EventArgs());
}
// blank line at end of data
ReadLine(br);
}
catch (Exception ex) { log.Info(ex); break; }
}
// clear last image
if (OnNewImage != null)
OnNewImage(null, new EventArgs());
dataStream.Close();
response.Close();
}
// clear last image
if (OnNewImage != null)
OnNewImage(null, new EventArgs());
dataStream.Close();
response.Close();
catch (Exception ex) { log.Error(ex); }
running = false;
}