Merge branch 'master' of https://code.google.com/p/ardupilot-mega into param-suffix

Conflicts:
	Tools/ArdupilotMegaPlanner/ArdupilotMega.csproj
	Tools/ArdupilotMegaPlanner/MainV2.cs
	Tools/ArdupilotMegaPlanner/Utilities/ParameterMetaDataConstants.cs
	Tools/ArdupilotMegaPlanner/Utilities/ParameterMetaDataParser.cs
This commit is contained in:
Adam M Rivera 2012-04-25 13:57:17 -05:00
commit 6f07bd99c5
51 changed files with 2922 additions and 1603 deletions

View File

@ -8,6 +8,7 @@ using System.Text;
using System.Windows.Forms; using System.Windows.Forms;
using ArdupilotMega.Controls.BackstageView; using ArdupilotMega.Controls.BackstageView;
using ArdupilotMega.Comms; using ArdupilotMega.Comms;
using ArdupilotMega.Utilities;
namespace ArdupilotMega.Antenna namespace ArdupilotMega.Antenna
{ {

View File

@ -56,14 +56,14 @@ When the sticks are fully deflected:
<FIELD> <FIELD>
<NAME>Dampen</NAME> <NAME>Dampen</NAME>
<PARAMNAME>STAB_D</PARAMNAME> <PARAMNAME>STAB_D</PARAMNAME>
<RANGEMIN>0.001</RANGEMIN> <RANGEMIN>0</RANGEMIN>
<RANGEMAX>5</RANGEMAX> <RANGEMAX>5</RANGEMAX>
<STEP>0.001</STEP> <STEP>0.001</STEP>
</FIELD> </FIELD>
<FIELD> <FIELD>
<NAME>Dynamic</NAME> <NAME>Dynamic</NAME>
<PARAMNAME>STAB_D_S</PARAMNAME> <PARAMNAME>STAB_D_S</PARAMNAME>
<RANGEMIN>0.001</RANGEMIN> <RANGEMIN>0</RANGEMIN>
<RANGEMAX>1</RANGEMAX> <RANGEMAX>1</RANGEMAX>
<STEP>0.001</STEP> <STEP>0.001</STEP>
</FIELD> </FIELD>
@ -201,5 +201,87 @@ A distance error of 100cm * P of .25 = 25 cm/s
<STEP>0.1</STEP> <STEP>0.1</STEP>
</FIELD> </FIELD>
</FIELDS> </FIELDS>
<SUBHEAD>WP Speed:</SUBHEAD>
<DESC>
How fast the copter should move towards the target. A larger value means a faster return to center, but can cause the copter to oscillate around the target.
in m/s
</DESC>
<FIELDS>
<FIELD>
<NAME>Speed</NAME>
<PARAMNAME>WP_SPEED_MAX</PARAMNAME>
<RANGEMIN>1</RANGEMIN>
<RANGEMAX>30</RANGEMAX>
<STEP>1</STEP>
</FIELD>
</FIELDS>
</Item>
<!-- Alt Hold -->
<Item>
<HEAD>Altitude Hold:</HEAD>
<SUBHEAD>Altitude Error:</SUBHEAD>
<DESC>
How fast the copter should go to reach the correct altitude.
</DESC>
<FIELDS>
<FIELD>
<NAME>P</NAME>
<PARAMNAME>THR_ALT_P</PARAMNAME>
<RANGEMIN>0.001</RANGEMIN>
<RANGEMAX>5</RANGEMAX>
<STEP>0.001</STEP>
</FIELD>
<FIELD>
<NAME>I</NAME>
<PARAMNAME>THR_ALT_I</PARAMNAME>
<RANGEMIN>0</RANGEMIN>
<RANGEMAX>5</RANGEMAX>
<STEP>0.001</STEP>
</FIELD>
<FIELD>
<NAME>IMAX</NAME>
<PARAMNAME>THR_ALT_IMAX</PARAMNAME>
<RANGEMIN>0</RANGEMIN>
<RANGEMAX>50</RANGEMAX>
<STEP>0.1</STEP>
</FIELD>
</FIELDS>
<SUBHEAD>Thrust Rate:</SUBHEAD>
<DESC>
How much thrust to give us the desired rate.
This will change depending on the weight and thrust of your copter.
</DESC>
<FIELDS>
<FIELD>
<NAME>P</NAME>
<PARAMNAME>THR_RATE_P</PARAMNAME>
<RANGEMIN>0.001</RANGEMIN>
<RANGEMAX>5</RANGEMAX>
<STEP>0.001</STEP>
</FIELD>
<FIELD>
<NAME>I</NAME>
<PARAMNAME>THR_RATE_I</PARAMNAME>
<RANGEMIN>0</RANGEMIN>
<RANGEMAX>5</RANGEMAX>
<STEP>0.001</STEP>
</FIELD>
<FIELD>
<NAME>D</NAME>
<PARAMNAME>THR_RATE_D</PARAMNAME>
<RANGEMIN>0</RANGEMIN>
<RANGEMAX>5</RANGEMAX>
<STEP>0.001</STEP>
</FIELD>
<FIELD>
<NAME>IMAX</NAME>
<PARAMNAME>THR_RATE_IMAX</PARAMNAME>
<RANGEMIN>0</RANGEMIN>
<RANGEMAX>50</RANGEMAX>
<STEP>0.1</STEP>
</FIELD>
</FIELDS>
</Item> </Item>
</AC> </AC>

View File

@ -6,6 +6,7 @@ using System.Threading;
using log4net; using log4net;
using System.Globalization; using System.Globalization;
using ArdupilotMega.Comms; using ArdupilotMega.Comms;
using ArdupilotMega.Utilities;
namespace ArdupilotMega.Arduino namespace ArdupilotMega.Arduino
{ {

View File

@ -250,7 +250,7 @@
<DependentUpon>ConnectionControl.cs</DependentUpon> <DependentUpon>ConnectionControl.cs</DependentUpon>
</Compile> </Compile>
<Compile Include="Controls\ConfigPanel.cs"> <Compile Include="Controls\ConfigPanel.cs">
<SubType>Form</SubType> <SubType>UserControl</SubType>
</Compile> </Compile>
<Compile Include="Controls\ConfigPanel.Designer.cs"> <Compile Include="Controls\ConfigPanel.Designer.cs">
<DependentUpon>ConfigPanel.cs</DependentUpon> <DependentUpon>ConfigPanel.cs</DependentUpon>
@ -322,12 +322,6 @@
<Compile Include="GCSViews\ConfigurationView\ConfigTradHeli.Designer.cs"> <Compile Include="GCSViews\ConfigurationView\ConfigTradHeli.Designer.cs">
<DependentUpon>ConfigTradHeli.cs</DependentUpon> <DependentUpon>ConfigTradHeli.cs</DependentUpon>
</Compile> </Compile>
<Compile Include="GCSViews\ConfigurationView\Configuration.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="GCSViews\ConfigurationView\Configuration.Designer.cs">
<DependentUpon>Configuration.cs</DependentUpon>
</Compile>
<Compile Include="GCSViews\ConfigurationView\ConfigRawParams.cs"> <Compile Include="GCSViews\ConfigurationView\ConfigRawParams.cs">
<SubType>UserControl</SubType> <SubType>UserControl</SubType>
</Compile> </Compile>
@ -341,7 +335,7 @@
<DependentUpon>ConfigAccelerometerCalibrationPlane.cs</DependentUpon> <DependentUpon>ConfigAccelerometerCalibrationPlane.cs</DependentUpon>
</Compile> </Compile>
<Compile Include="GCSViews\ConfigurationView\Setup.cs"> <Compile Include="GCSViews\ConfigurationView\Setup.cs">
<SubType>Form</SubType> <SubType>UserControl</SubType>
</Compile> </Compile>
<Compile Include="GCSViews\ConfigurationView\Setup.Designer.cs"> <Compile Include="GCSViews\ConfigurationView\Setup.Designer.cs">
<DependentUpon>Setup.cs</DependentUpon> <DependentUpon>Setup.cs</DependentUpon>
@ -359,14 +353,14 @@
<SubType>UserControl</SubType> <SubType>UserControl</SubType>
</Compile> </Compile>
<Compile Include="Arduino\ArduinoDetect.cs" /> <Compile Include="Arduino\ArduinoDetect.cs" />
<Compile Include="AviWriter.cs" /> <Compile Include="Utilities\AviWriter.cs" />
<Compile Include="Camera.cs"> <Compile Include="Camera.cs">
<SubType>Form</SubType> <SubType>Form</SubType>
</Compile> </Compile>
<Compile Include="Camera.Designer.cs"> <Compile Include="Camera.Designer.cs">
<DependentUpon>Camera.cs</DependentUpon> <DependentUpon>Camera.cs</DependentUpon>
</Compile> </Compile>
<Compile Include="Capture.cs" /> <Compile Include="Utilities\Capture.cs" />
<Compile Include="Comms\CommsSerialInterface.cs" /> <Compile Include="Comms\CommsSerialInterface.cs" />
<Compile Include="Comms\CommsSerialPort.cs"> <Compile Include="Comms\CommsSerialPort.cs">
<SubType>Component</SubType> <SubType>Component</SubType>
@ -409,7 +403,7 @@
<Compile Include="HIL\QuadCopter.cs" /> <Compile Include="HIL\QuadCopter.cs" />
<Compile Include="HIL\Quaternion.cs" /> <Compile Include="HIL\Quaternion.cs" />
<Compile Include="HIL\Vector3d.cs" /> <Compile Include="HIL\Vector3d.cs" />
<Compile Include="hires.cs" /> <Compile Include="Utilities\hires.cs" />
<Compile Include="MavlinkLog.cs"> <Compile Include="MavlinkLog.cs">
<SubType>Form</SubType> <SubType>Form</SubType>
</Compile> </Compile>
@ -536,7 +530,7 @@
<Compile Include="SerialOutput.Designer.cs"> <Compile Include="SerialOutput.Designer.cs">
<DependentUpon>SerialOutput.cs</DependentUpon> <DependentUpon>SerialOutput.cs</DependentUpon>
</Compile> </Compile>
<Compile Include="Speech.cs" /> <Compile Include="Utilities\Speech.cs" />
<Compile Include="Splash.cs"> <Compile Include="Splash.cs">
<SubType>Form</SubType> <SubType>Form</SubType>
</Compile> </Compile>
@ -544,7 +538,7 @@
<DependentUpon>Splash.cs</DependentUpon> <DependentUpon>Splash.cs</DependentUpon>
</Compile> </Compile>
<Compile Include="srtm.cs" /> <Compile Include="srtm.cs" />
<Compile Include="TCPConsole.cs" /> <Compile Include="Utilities\TCPConsole.cs" />
<Compile Include="temp.cs"> <Compile Include="temp.cs">
<SubType>Form</SubType> <SubType>Form</SubType>
</Compile> </Compile>
@ -552,8 +546,8 @@
<DependentUpon>temp.cs</DependentUpon> <DependentUpon>temp.cs</DependentUpon>
</Compile> </Compile>
<Compile Include="Radio\Uploader.cs" /> <Compile Include="Radio\Uploader.cs" />
<Compile Include="LangUtility.cs" /> <Compile Include="Utilities\LangUtility.cs" />
<Compile Include="ThemeManager.cs" /> <Compile Include="Utilities\ThemeManager.cs" />
<Compile Include="Utilities\EnumTranslator.cs" /> <Compile Include="Utilities\EnumTranslator.cs" />
<Compile Include="Utilities\ParameterMetaDataParser.cs" /> <Compile Include="Utilities\ParameterMetaDataParser.cs" />
<Compile Include="Utilities\ParameterMetaDataRepository.cs" /> <Compile Include="Utilities\ParameterMetaDataRepository.cs" />
@ -685,7 +679,6 @@
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Include="GCSViews\ConfigurationView\ConfigRadioInput.resx"> <EmbeddedResource Include="GCSViews\ConfigurationView\ConfigRadioInput.resx">
<DependentUpon>ConfigRadioInput.cs</DependentUpon> <DependentUpon>ConfigRadioInput.cs</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Include="GCSViews\ConfigurationView\ConfigRadioInput.zh-Hans.resx"> <EmbeddedResource Include="GCSViews\ConfigurationView\ConfigRadioInput.zh-Hans.resx">
<DependentUpon>ConfigRadioInput.cs</DependentUpon> <DependentUpon>ConfigRadioInput.cs</DependentUpon>
@ -710,7 +703,6 @@
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Include="GCSViews\ConfigurationView\ConfigTradHeli.resx"> <EmbeddedResource Include="GCSViews\ConfigurationView\ConfigTradHeli.resx">
<DependentUpon>ConfigTradHeli.cs</DependentUpon> <DependentUpon>ConfigTradHeli.cs</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Include="GCSViews\ConfigurationView\ConfigTradHeli.zh-Hans.resx"> <EmbeddedResource Include="GCSViews\ConfigurationView\ConfigTradHeli.zh-Hans.resx">
<DependentUpon>ConfigTradHeli.cs</DependentUpon> <DependentUpon>ConfigTradHeli.cs</DependentUpon>
@ -718,9 +710,6 @@
<EmbeddedResource Include="GCSViews\ConfigurationView\ConfigTradHeli.zh-TW.resx"> <EmbeddedResource Include="GCSViews\ConfigurationView\ConfigTradHeli.zh-TW.resx">
<DependentUpon>ConfigTradHeli.cs</DependentUpon> <DependentUpon>ConfigTradHeli.cs</DependentUpon>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Include="GCSViews\ConfigurationView\Configuration.resx">
<DependentUpon>Configuration.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="GCSViews\ConfigurationView\ConfigAccelerometerCalibrationPlane.es-ES.resx"> <EmbeddedResource Include="GCSViews\ConfigurationView\ConfigAccelerometerCalibrationPlane.es-ES.resx">
<DependentUpon>ConfigAccelerometerCalibrationPlane.cs</DependentUpon> <DependentUpon>ConfigAccelerometerCalibrationPlane.cs</DependentUpon>
</EmbeddedResource> </EmbeddedResource>
@ -1085,9 +1074,7 @@
<None Include="AeroSimRCAPMHil.zip"> <None Include="AeroSimRCAPMHil.zip">
<CopyToOutputDirectory>Always</CopyToOutputDirectory> <CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None> </None>
<None Include="app.config"> <None Include="app.config" />
<SubType>Designer</SubType>
</None>
<None Include="arducopter-xplane.zip"> <None Include="arducopter-xplane.zip">
<CopyToOutputDirectory>Always</CopyToOutputDirectory> <CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None> </None>

View File

@ -125,6 +125,8 @@ namespace ArdupilotMega
Matrix temp = g.Transform; Matrix temp = g.Transform;
g.TranslateTransform(LocalPosition.X, LocalPosition.Y); g.TranslateTransform(LocalPosition.X, LocalPosition.Y);
g.RotateTransform(-MainMap.Bearing);
int length = 500; int length = 500;
// anti NaN // anti NaN
try try
@ -445,7 +447,7 @@ namespace ArdupilotMega
// altitude controller // altitude controller
CH6_THR_HOLD_KP = 14, CH6_THR_HOLD_KP = 14,
CH6_Z_GAIN = 15, CH6_Z_GAIN = 15,
//CH6_DAMP = 16, CH6_DAMP = 16,
// optical flow controller // optical flow controller
CH6_OPTFLOW_KP = 17, CH6_OPTFLOW_KP = 17,
@ -511,7 +513,7 @@ namespace ArdupilotMega
{ {
if (Common.getModes() == typeof(Common.apmmodes)) if (Common.getModes() == typeof(Common.apmmodes))
{ {
switch ((int)Enum.Parse(Common.getModes(), modein)) switch (EnumTranslator.GetValue<Common.apmmodes>(modein))
{ {
case (int)Common.apmmodes.MANUAL: case (int)Common.apmmodes.MANUAL:
case (int)Common.apmmodes.CIRCLE: case (int)Common.apmmodes.CIRCLE:
@ -525,13 +527,13 @@ namespace ArdupilotMega
mode.custom_mode = (uint)(int)Enum.Parse(Common.getModes(), modein); mode.custom_mode = (uint)(int)Enum.Parse(Common.getModes(), modein);
break; break;
default: default:
MessageBox.Show("No Mode Changed " + (int)Enum.Parse(Common.getModes(), modein)); MessageBox.Show("No Mode Changed " + modein);
return false; return false;
} }
} }
else if (Common.getModes() == typeof(Common.ac2modes)) else if (Common.getModes() == typeof(Common.ac2modes))
{ {
switch ((int)Enum.Parse(Common.getModes(), modein)) switch (EnumTranslator.GetValue<Common.ac2modes>(modein))
{ {
case (int)Common.ac2modes.STABILIZE: case (int)Common.ac2modes.STABILIZE:
case (int)Common.ac2modes.AUTO: case (int)Common.ac2modes.AUTO:
@ -545,7 +547,7 @@ namespace ArdupilotMega
mode.custom_mode = (uint)(int)Enum.Parse(Common.getModes(), modein); mode.custom_mode = (uint)(int)Enum.Parse(Common.getModes(), modein);
break; break;
default: default:
MessageBox.Show("No Mode Changed " + (int)Enum.Parse(Common.getModes(), modein)); MessageBox.Show("No Mode Changed " + modein);
return false; return false;
} }
} }
@ -555,7 +557,7 @@ namespace ArdupilotMega
return true; return true;
} }
#else #else
public static bool translateMode(string modein, ref MAVLink.mavlink_set_nav_mode_t navmode, ref MAVLink.mavlink_set_mode_t mode) public static bool translateMode(string modein, ref MAVLink.mavlink_set_nav_mode_t navmode, ref MAVLink.mavlink_set_mode_t mode)
{ {
@ -570,7 +572,7 @@ namespace ArdupilotMega
{ {
if (Common.getModes() == typeof(Common.apmmodes)) if (Common.getModes() == typeof(Common.apmmodes))
{ {
switch ((int)Enum.Parse(Common.getModes(), modein)) switch (EnumTranslator.GetValue<Common.apmmodes>(modein))
{ {
case (int)Common.apmmodes.MANUAL: case (int)Common.apmmodes.MANUAL:
mode.mode = (byte)MAVLink.MAV_MODE.MAV_MODE_MANUAL; mode.mode = (byte)MAVLink.MAV_MODE.MAV_MODE_MANUAL;
@ -604,13 +606,13 @@ namespace ArdupilotMega
mode.mode = (byte)MAVLink.MAV_MODE.MAV_MODE_TEST2; mode.mode = (byte)MAVLink.MAV_MODE.MAV_MODE_TEST2;
break; break;
default: default:
CustomMessageBox.Show("No Mode Changed " + (int)Enum.Parse(Common.getModes(), modein)); CustomMessageBox.Show("No Mode Changed " + modein);
return false; return false;
} }
} }
else if (Common.getModes() == typeof(Common.ac2modes)) else if (Common.getModes() == typeof(Common.ac2modes))
{ {
switch ((int)Enum.Parse(Common.getModes(), modein)) switch (EnumTranslator.GetValue<Common.ac2modes>(modein))
{ {
case (int)Common.ac2modes.GUIDED: case (int)Common.ac2modes.GUIDED:
mode.mode = (byte)MAVLink.MAV_MODE.MAV_MODE_GUIDED; mode.mode = (byte)MAVLink.MAV_MODE.MAV_MODE_GUIDED;
@ -632,7 +634,7 @@ namespace ArdupilotMega
mode.mode = (byte)MAVLink.MAV_MODE.MAV_MODE_AUTO; mode.mode = (byte)MAVLink.MAV_MODE.MAV_MODE_AUTO;
break; break;
default: default:
CustomMessageBox.Show("No Mode Changed " + (int)Enum.Parse(Common.getModes(), modein)); CustomMessageBox.Show("No Mode Changed " + modein);
return false; return false;
} }
} }
@ -697,7 +699,7 @@ namespace ArdupilotMega
} }
catch (Exception ex) { log.Info("getFilefromNet(): " + ex.ToString()); return false; } catch (Exception ex) { log.Info("getFilefromNet(): " + ex.ToString()); return false; }
} }
public static Type getModes() public static Type getModes()
{ {
if (MainV2.cs.firmware == MainV2.Firmwares.ArduPlane) if (MainV2.cs.firmware == MainV2.Firmwares.ArduPlane)

View File

@ -91,7 +91,7 @@ namespace ArdupilotMega.Comms
frmProgressReporter.UpdateProgressAndStatus(-1, "Connecting Mavlink UDP"); frmProgressReporter.UpdateProgressAndStatus(-1, "Connecting Mavlink UDP");
ArdupilotMega.ThemeManager.ApplyThemeTo(frmProgressReporter); ArdupilotMega.Utilities.ThemeManager.ApplyThemeTo(frmProgressReporter);
frmProgressReporter.RunBackgroundOperationAsync(); frmProgressReporter.RunBackgroundOperationAsync();

View File

@ -8,10 +8,12 @@ using System.Linq;
using System.Text; using System.Text;
using System.Windows.Forms; using System.Windows.Forms;
using System.Xml; using System.Xml;
using ArdupilotMega.Controls.BackstageView;
using ArdupilotMega.Utilities;
namespace ArdupilotMega.Controls namespace ArdupilotMega.Controls
{ {
public partial class ConfigPanel : Form public partial class ConfigPanel : BackStageViewContentPanel
{ {
/// <summary> /// <summary>
/// store tempory pending changes /// store tempory pending changes

View File

@ -4,6 +4,7 @@ using System.Windows.Forms;
//using ArdupilotMega.Controls; //using ArdupilotMega.Controls;
using System.Text; using System.Text;
using ArdupilotMega; using ArdupilotMega;
using ArdupilotMega.Utilities;
namespace System.Windows.Forms namespace System.Windows.Forms
{ {

View File

@ -2,6 +2,7 @@
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
using System.Windows.Forms;
namespace System.Windows.Forms namespace System.Windows.Forms
{ {
@ -10,6 +11,19 @@ namespace System.Windows.Forms
/// </summary> /// </summary>
public class MyUserControl : System.Windows.Forms.UserControl public class MyUserControl : System.Windows.Forms.UserControl
{ {
public event FormClosingEventHandler FormClosing;
public void Close(object sender, FormClosingEventArgs e)
{
if (FormClosing != null)
FormClosing(sender,e);
}
public void Close()
{
Close(this, new FormClosingEventArgs(CloseReason.UserClosing, false));
}
protected override void WndProc(ref Message m) protected override void WndProc(ref Message m)
{ {
try try

View File

@ -14,6 +14,8 @@ using System.Threading;
using DirectShowLib; using DirectShowLib;
using System.Runtime.InteropServices; using System.Runtime.InteropServices;
using ArdupilotMega.Controls; using ArdupilotMega.Controls;
using ArdupilotMega.Utilities;
using System.Linq;
namespace ArdupilotMega.GCSViews namespace ArdupilotMega.GCSViews
{ {
@ -97,8 +99,13 @@ namespace ArdupilotMega.GCSViews
readToolTips(); readToolTips();
// ensure the fields are populated before setting them // ensure the fields are populated before setting them
CH7_OPT.DataSource = Enum.GetNames(typeof(Common.ac2ch7modes)); CH7_OPT.DataSource = EnumTranslator.Translate<Common.ac2ch7modes>().ToList();
TUNE.DataSource = Enum.GetNames(typeof(Common.ac2ch6modes)); CH7_OPT.DisplayMember = "Value";
CH7_OPT.ValueMember = "Key";
TUNE.DataSource = EnumTranslator.Translate<Common.ac2ch6modes>().ToList();
TUNE.DisplayMember = "Value";
TUNE.ValueMember = "Key";
// prefill all fields // prefill all fields
param = MainV2.comPort.param; param = MainV2.comPort.param;
@ -726,11 +733,17 @@ namespace ArdupilotMega.GCSViews
if (ConfigTabs.SelectedTab == TabSetup) if (ConfigTabs.SelectedTab == TabSetup)
{ {
GCSViews.ConfigurationView.Setup temp = new GCSViews.ConfigurationView.Setup(); Form temp = new Form();
MyUserControl configview = new GCSViews.ConfigurationView.Setup();
ThemeManager.ApplyThemeTo(temp); temp.Controls.Add(configview);
ThemeManager.ApplyThemeTo(temp);
temp.ShowDialog(); // fix title
temp.Text = configview.Name;
// fix size
temp.Size = configview.Size;
configview.Dock = DockStyle.Fill;
temp.FormClosing += configview.Close;
temp.ShowDialog();
startup = true; startup = true;
processToScreen(); processToScreen();
@ -999,7 +1012,6 @@ namespace ArdupilotMega.GCSViews
} }
private void CMB_rateattitude_SelectedIndexChanged(object sender, EventArgs e) private void CMB_rateattitude_SelectedIndexChanged(object sender, EventArgs e)
{ {
MainV2.config[((ComboBox)sender).Name] = ((ComboBox)sender).Text; MainV2.config[((ComboBox)sender).Name] = ((ComboBox)sender).Text;
@ -1010,18 +1022,21 @@ namespace ArdupilotMega.GCSViews
{ {
MainV2.config[((ComboBox)sender).Name] = ((ComboBox)sender).Text; MainV2.config[((ComboBox)sender).Name] = ((ComboBox)sender).Text;
MainV2.cs.rateposition = byte.Parse(((ComboBox)sender).Text); MainV2.cs.rateposition = byte.Parse(((ComboBox)sender).Text);
} }
private void CMB_ratestatus_SelectedIndexChanged(object sender, EventArgs e) private void CMB_ratestatus_SelectedIndexChanged(object sender, EventArgs e)
{ {
MainV2.config[((ComboBox)sender).Name] = ((ComboBox)sender).Text; MainV2.config[((ComboBox)sender).Name] = ((ComboBox)sender).Text;
MainV2.cs.ratestatus = byte.Parse(((ComboBox)sender).Text); MainV2.cs.ratestatus = byte.Parse(((ComboBox)sender).Text);
} }
private void CMB_raterc_SelectedIndexChanged(object sender, EventArgs e) private void CMB_raterc_SelectedIndexChanged(object sender, EventArgs e)
{ {
MainV2.config[((ComboBox)sender).Name] = ((ComboBox)sender).Text; MainV2.config[((ComboBox)sender).Name] = ((ComboBox)sender).Text;
MainV2.cs.raterc = byte.Parse(((ComboBox)sender).Text); MainV2.cs.raterc = byte.Parse(((ComboBox)sender).Text);
} }
private void CHK_mavdebug_CheckedChanged(object sender, EventArgs e) private void CHK_mavdebug_CheckedChanged(object sender, EventArgs e)

View File

@ -126,6 +126,7 @@
this.RATE_RLL_P = new System.Windows.Forms.NumericUpDown(); this.RATE_RLL_P = new System.Windows.Forms.NumericUpDown();
this.label91 = new System.Windows.Forms.Label(); this.label91 = new System.Windows.Forms.Label();
this.toolTip1 = new System.Windows.Forms.ToolTip(this.components); this.toolTip1 = new System.Windows.Forms.ToolTip(this.components);
this.BUT_writePIDS = new ArdupilotMega.Controls.MyButton();
((System.ComponentModel.ISupportInitialize)(this.TUNE_LOW)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.TUNE_LOW)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.TUNE_HIGH)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.TUNE_HIGH)).BeginInit();
this.groupBox5.SuspendLayout(); this.groupBox5.SuspendLayout();
@ -785,10 +786,18 @@
resources.ApplyResources(this.label91, "label91"); resources.ApplyResources(this.label91, "label91");
this.label91.Name = "label91"; this.label91.Name = "label91";
// //
// BUT_writePIDS
//
resources.ApplyResources(this.BUT_writePIDS, "BUT_writePIDS");
this.BUT_writePIDS.Name = "BUT_writePIDS";
this.BUT_writePIDS.UseVisualStyleBackColor = true;
this.BUT_writePIDS.Click += new System.EventHandler(this.BUT_writePIDS_Click);
//
// ConfigArducopter // ConfigArducopter
// //
resources.ApplyResources(this, "$this"); resources.ApplyResources(this, "$this");
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.Controls.Add(this.BUT_writePIDS);
this.Controls.Add(this.myLabel3); this.Controls.Add(this.myLabel3);
this.Controls.Add(this.TUNE_LOW); this.Controls.Add(this.TUNE_LOW);
this.Controls.Add(this.TUNE_HIGH); this.Controls.Add(this.TUNE_HIGH);
@ -964,5 +973,6 @@
private System.Windows.Forms.NumericUpDown RATE_RLL_P; private System.Windows.Forms.NumericUpDown RATE_RLL_P;
private System.Windows.Forms.Label label91; private System.Windows.Forms.Label label91;
private System.Windows.Forms.ToolTip toolTip1; private System.Windows.Forms.ToolTip toolTip1;
private Controls.MyButton BUT_writePIDS;
} }
} }

View File

@ -63,8 +63,13 @@ namespace ArdupilotMega.GCSViews.ConfigurationView
readToolTips(); readToolTips();
// ensure the fields are populated before setting them // ensure the fields are populated before setting them
CH7_OPT.DataSource = Enum.GetNames(typeof(Common.ac2ch7modes)); CH7_OPT.DataSource = Utilities.EnumTranslator.Translate<Common.ac2ch7modes>().ToList();
TUNE.DataSource = Enum.GetNames(typeof(Common.ac2ch6modes)); CH7_OPT.DisplayMember = "Value";
CH7_OPT.ValueMember = "Key";
TUNE.DataSource = Utilities.EnumTranslator.Translate<Common.ac2ch6modes>().ToList();
TUNE.DisplayMember = "Value";
TUNE.ValueMember = "Key";
// prefill all fields // prefill all fields
processToScreen(); processToScreen();
@ -225,7 +230,7 @@ namespace ArdupilotMega.GCSViews.ConfigurationView
ComboBox thisctl = ((ComboBox)ctl); ComboBox thisctl = ((ComboBox)ctl);
thisctl.SelectedIndex = (int)(float)MainV2.comPort.param[value]; thisctl.SelectedValue = (int)(float)MainV2.comPort.param[value];
thisctl.Validated += new EventHandler(ComboBox_Validated); thisctl.Validated += new EventHandler(ComboBox_Validated);
@ -271,7 +276,7 @@ namespace ArdupilotMega.GCSViews.ConfigurationView
} }
else if (sender.GetType() == typeof(ComboBox)) else if (sender.GetType() == typeof(ComboBox))
{ {
value = ((ComboBox)sender).SelectedIndex; value = (int)((ComboBox)sender).SelectedValue;
changes[name] = value; changes[name] = value;
} }
((Control)sender).BackColor = Color.Green; ((Control)sender).BackColor = Color.Green;
@ -344,6 +349,38 @@ namespace ArdupilotMega.GCSViews.ConfigurationView
} }
catch { } catch { }
} }
private void BUT_writePIDS_Click(object sender, EventArgs e)
{
var temp = (Hashtable)changes.Clone();
foreach (string value in temp.Keys)
{
try
{
MainV2.comPort.setParam(value, (float)changes[value]);
try
{
// set control as well
var textControls = this.Controls.Find(value, true);
if (textControls.Length > 0)
{
textControls[0].BackColor = Color.FromArgb(0x43, 0x44, 0x45);
}
}
catch
{
}
}
catch
{
CustomMessageBox.Show("Set " + value + " Failed");
}
}
}
} }

View File

@ -135,13 +135,13 @@
<value>myLabel3</value> <value>myLabel3</value>
</data> </data>
<data name="&gt;&gt;myLabel3.Type" xml:space="preserve"> <data name="&gt;&gt;myLabel3.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.MyLabel, ArdupilotMegaPlanner, Version=1.1.4491.33622, Culture=neutral, PublicKeyToken=null</value> <value>ArdupilotMega.Controls.MyLabel, ArdupilotMegaPlanner, Version=1.1.4498.24834, Culture=neutral, PublicKeyToken=null</value>
</data> </data>
<data name="&gt;&gt;myLabel3.Parent" xml:space="preserve"> <data name="&gt;&gt;myLabel3.Parent" xml:space="preserve">
<value>$this</value> <value>$this</value>
</data> </data>
<data name="&gt;&gt;myLabel3.ZOrder" xml:space="preserve"> <data name="&gt;&gt;myLabel3.ZOrder" xml:space="preserve">
<value>0</value> <value>1</value>
</data> </data>
<data name="TUNE_LOW.Location" type="System.Drawing.Point, System.Drawing"> <data name="TUNE_LOW.Location" type="System.Drawing.Point, System.Drawing">
<value>575, 305</value> <value>575, 305</value>
@ -162,7 +162,7 @@
<value>$this</value> <value>$this</value>
</data> </data>
<data name="&gt;&gt;TUNE_LOW.ZOrder" xml:space="preserve"> <data name="&gt;&gt;TUNE_LOW.ZOrder" xml:space="preserve">
<value>1</value> <value>2</value>
</data> </data>
<data name="TUNE_HIGH.Location" type="System.Drawing.Point, System.Drawing"> <data name="TUNE_HIGH.Location" type="System.Drawing.Point, System.Drawing">
<value>665, 305</value> <value>665, 305</value>
@ -183,7 +183,7 @@
<value>$this</value> <value>$this</value>
</data> </data>
<data name="&gt;&gt;TUNE_HIGH.ZOrder" xml:space="preserve"> <data name="&gt;&gt;TUNE_HIGH.ZOrder" xml:space="preserve">
<value>2</value> <value>3</value>
</data> </data>
<data name="myLabel2.Location" type="System.Drawing.Point, System.Drawing"> <data name="myLabel2.Location" type="System.Drawing.Point, System.Drawing">
<value>540, 277</value> <value>540, 277</value>
@ -201,13 +201,13 @@
<value>myLabel2</value> <value>myLabel2</value>
</data> </data>
<data name="&gt;&gt;myLabel2.Type" xml:space="preserve"> <data name="&gt;&gt;myLabel2.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.MyLabel, ArdupilotMegaPlanner, Version=1.1.4491.33622, Culture=neutral, PublicKeyToken=null</value> <value>ArdupilotMega.Controls.MyLabel, ArdupilotMegaPlanner, Version=1.1.4498.24834, Culture=neutral, PublicKeyToken=null</value>
</data> </data>
<data name="&gt;&gt;myLabel2.Parent" xml:space="preserve"> <data name="&gt;&gt;myLabel2.Parent" xml:space="preserve">
<value>$this</value> <value>$this</value>
</data> </data>
<data name="&gt;&gt;myLabel2.ZOrder" xml:space="preserve"> <data name="&gt;&gt;myLabel2.ZOrder" xml:space="preserve">
<value>3</value> <value>4</value>
</data> </data>
<data name="TUNE.Items" xml:space="preserve"> <data name="TUNE.Items" xml:space="preserve">
<value>CH6_NONE</value> <value>CH6_NONE</value>
@ -294,7 +294,7 @@
<value>$this</value> <value>$this</value>
</data> </data>
<data name="&gt;&gt;TUNE.ZOrder" xml:space="preserve"> <data name="&gt;&gt;TUNE.ZOrder" xml:space="preserve">
<value>4</value> <value>5</value>
</data> </data>
<data name="myLabel1.Location" type="System.Drawing.Point, System.Drawing"> <data name="myLabel1.Location" type="System.Drawing.Point, System.Drawing">
<value>540, 329</value> <value>540, 329</value>
@ -312,13 +312,13 @@
<value>myLabel1</value> <value>myLabel1</value>
</data> </data>
<data name="&gt;&gt;myLabel1.Type" xml:space="preserve"> <data name="&gt;&gt;myLabel1.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.MyLabel, ArdupilotMegaPlanner, Version=1.1.4491.33622, Culture=neutral, PublicKeyToken=null</value> <value>ArdupilotMega.Controls.MyLabel, ArdupilotMegaPlanner, Version=1.1.4498.24834, Culture=neutral, PublicKeyToken=null</value>
</data> </data>
<data name="&gt;&gt;myLabel1.Parent" xml:space="preserve"> <data name="&gt;&gt;myLabel1.Parent" xml:space="preserve">
<value>$this</value> <value>$this</value>
</data> </data>
<data name="&gt;&gt;myLabel1.ZOrder" xml:space="preserve"> <data name="&gt;&gt;myLabel1.ZOrder" xml:space="preserve">
<value>5</value> <value>6</value>
</data> </data>
<data name="CH7_OPT.Items" xml:space="preserve"> <data name="CH7_OPT.Items" xml:space="preserve">
<value>Do Nothing</value> <value>Do Nothing</value>
@ -363,7 +363,7 @@
<value>$this</value> <value>$this</value>
</data> </data>
<data name="&gt;&gt;CH7_OPT.ZOrder" xml:space="preserve"> <data name="&gt;&gt;CH7_OPT.ZOrder" xml:space="preserve">
<value>6</value> <value>7</value>
</data> </data>
<data name="THR_RATE_D.Location" type="System.Drawing.Point, System.Drawing"> <data name="THR_RATE_D.Location" type="System.Drawing.Point, System.Drawing">
<value>80, 60</value> <value>80, 60</value>
@ -580,7 +580,7 @@
<value>$this</value> <value>$this</value>
</data> </data>
<data name="&gt;&gt;groupBox5.ZOrder" xml:space="preserve"> <data name="&gt;&gt;groupBox5.ZOrder" xml:space="preserve">
<value>7</value> <value>8</value>
</data> </data>
<data name="CHK_lockrollpitch.AutoSize" type="System.Boolean, mscorlib"> <data name="CHK_lockrollpitch.AutoSize" type="System.Boolean, mscorlib">
<value>True</value> <value>True</value>
@ -610,7 +610,7 @@
<value>$this</value> <value>$this</value>
</data> </data>
<data name="&gt;&gt;CHK_lockrollpitch.ZOrder" xml:space="preserve"> <data name="&gt;&gt;CHK_lockrollpitch.ZOrder" xml:space="preserve">
<value>8</value> <value>9</value>
</data> </data>
<data name="NAV_LAT_D.Location" type="System.Drawing.Point, System.Drawing"> <data name="NAV_LAT_D.Location" type="System.Drawing.Point, System.Drawing">
<value>80, 60</value> <value>80, 60</value>
@ -874,7 +874,7 @@
<value>$this</value> <value>$this</value>
</data> </data>
<data name="&gt;&gt;groupBox4.ZOrder" xml:space="preserve"> <data name="&gt;&gt;groupBox4.ZOrder" xml:space="preserve">
<value>9</value> <value>10</value>
</data> </data>
<data name="XTRK_GAIN_SC1.Location" type="System.Drawing.Point, System.Drawing"> <data name="XTRK_GAIN_SC1.Location" type="System.Drawing.Point, System.Drawing">
<value>80, 13</value> <value>80, 13</value>
@ -946,7 +946,7 @@
<value>$this</value> <value>$this</value>
</data> </data>
<data name="&gt;&gt;groupBox6.ZOrder" xml:space="preserve"> <data name="&gt;&gt;groupBox6.ZOrder" xml:space="preserve">
<value>10</value> <value>11</value>
</data> </data>
<data name="THR_ALT_IMAX.Location" type="System.Drawing.Point, System.Drawing"> <data name="THR_ALT_IMAX.Location" type="System.Drawing.Point, System.Drawing">
<value>80, 63</value> <value>80, 63</value>
@ -1114,7 +1114,7 @@
<value>$this</value> <value>$this</value>
</data> </data>
<data name="&gt;&gt;groupBox7.ZOrder" xml:space="preserve"> <data name="&gt;&gt;groupBox7.ZOrder" xml:space="preserve">
<value>11</value> <value>12</value>
</data> </data>
<data name="HLD_LAT_IMAX.Location" type="System.Drawing.Point, System.Drawing"> <data name="HLD_LAT_IMAX.Location" type="System.Drawing.Point, System.Drawing">
<value>80, 61</value> <value>80, 61</value>
@ -1282,7 +1282,7 @@
<value>$this</value> <value>$this</value>
</data> </data>
<data name="&gt;&gt;groupBox19.ZOrder" xml:space="preserve"> <data name="&gt;&gt;groupBox19.ZOrder" xml:space="preserve">
<value>12</value> <value>13</value>
</data> </data>
<data name="STB_YAW_IMAX.Location" type="System.Drawing.Point, System.Drawing"> <data name="STB_YAW_IMAX.Location" type="System.Drawing.Point, System.Drawing">
<value>80, 63</value> <value>80, 63</value>
@ -1450,7 +1450,7 @@
<value>$this</value> <value>$this</value>
</data> </data>
<data name="&gt;&gt;groupBox20.ZOrder" xml:space="preserve"> <data name="&gt;&gt;groupBox20.ZOrder" xml:space="preserve">
<value>13</value> <value>14</value>
</data> </data>
<data name="STAB_D.Location" type="System.Drawing.Point, System.Drawing"> <data name="STAB_D.Location" type="System.Drawing.Point, System.Drawing">
<value>80, 88</value> <value>80, 88</value>
@ -1666,7 +1666,7 @@
<value>$this</value> <value>$this</value>
</data> </data>
<data name="&gt;&gt;groupBox21.ZOrder" xml:space="preserve"> <data name="&gt;&gt;groupBox21.ZOrder" xml:space="preserve">
<value>14</value> <value>15</value>
</data> </data>
<data name="STB_RLL_IMAX.Location" type="System.Drawing.Point, System.Drawing"> <data name="STB_RLL_IMAX.Location" type="System.Drawing.Point, System.Drawing">
<value>80, 63</value> <value>80, 63</value>
@ -1834,7 +1834,7 @@
<value>$this</value> <value>$this</value>
</data> </data>
<data name="&gt;&gt;groupBox22.ZOrder" xml:space="preserve"> <data name="&gt;&gt;groupBox22.ZOrder" xml:space="preserve">
<value>15</value> <value>16</value>
</data> </data>
<data name="RATE_YAW_D.Location" type="System.Drawing.Point, System.Drawing"> <data name="RATE_YAW_D.Location" type="System.Drawing.Point, System.Drawing">
<value>80, 60</value> <value>80, 60</value>
@ -2050,7 +2050,7 @@
<value>$this</value> <value>$this</value>
</data> </data>
<data name="&gt;&gt;groupBox23.ZOrder" xml:space="preserve"> <data name="&gt;&gt;groupBox23.ZOrder" xml:space="preserve">
<value>16</value> <value>17</value>
</data> </data>
<data name="RATE_PIT_D.Location" type="System.Drawing.Point, System.Drawing"> <data name="RATE_PIT_D.Location" type="System.Drawing.Point, System.Drawing">
<value>80, 60</value> <value>80, 60</value>
@ -2266,7 +2266,7 @@
<value>$this</value> <value>$this</value>
</data> </data>
<data name="&gt;&gt;groupBox24.ZOrder" xml:space="preserve"> <data name="&gt;&gt;groupBox24.ZOrder" xml:space="preserve">
<value>17</value> <value>18</value>
</data> </data>
<data name="RATE_RLL_D.Location" type="System.Drawing.Point, System.Drawing"> <data name="RATE_RLL_D.Location" type="System.Drawing.Point, System.Drawing">
<value>80, 60</value> <value>80, 60</value>
@ -2482,11 +2482,41 @@
<value>$this</value> <value>$this</value>
</data> </data>
<data name="&gt;&gt;groupBox25.ZOrder" xml:space="preserve"> <data name="&gt;&gt;groupBox25.ZOrder" xml:space="preserve">
<value>18</value> <value>19</value>
</data> </data>
<metadata name="toolTip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> <metadata name="toolTip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value> <value>17, 17</value>
</metadata> </metadata>
<data name="BUT_writePIDS.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Right</value>
</data>
<data name="BUT_writePIDS.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="BUT_writePIDS.Location" type="System.Drawing.Point, System.Drawing">
<value>305, 383</value>
</data>
<data name="BUT_writePIDS.Size" type="System.Drawing.Size, System.Drawing">
<value>103, 19</value>
</data>
<data name="BUT_writePIDS.TabIndex" type="System.Int32, mscorlib">
<value>70</value>
</data>
<data name="BUT_writePIDS.Text" xml:space="preserve">
<value>Write Params</value>
</data>
<data name="&gt;&gt;BUT_writePIDS.Name" xml:space="preserve">
<value>BUT_writePIDS</value>
</data>
<data name="&gt;&gt;BUT_writePIDS.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner, Version=1.1.4498.24834, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;BUT_writePIDS.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;BUT_writePIDS.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> <metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value> <value>True</value>
</metadata> </metadata>
@ -2509,6 +2539,6 @@
<value>ConfigArducopter</value> <value>ConfigArducopter</value>
</data> </data>
<data name="&gt;&gt;$this.Type" xml:space="preserve"> <data name="&gt;&gt;$this.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.BackstageView.BackStageViewContentPanel, ArdupilotMegaPlanner, Version=1.1.4491.33622, Culture=neutral, PublicKeyToken=null</value> <value>ArdupilotMega.Controls.BackstageView.BackStageViewContentPanel, ArdupilotMegaPlanner, Version=1.1.4498.24834, Culture=neutral, PublicKeyToken=null</value>
</data> </data>
</root> </root>

View File

@ -131,6 +131,7 @@
this.RLL2SRV_P = new System.Windows.Forms.NumericUpDown(); this.RLL2SRV_P = new System.Windows.Forms.NumericUpDown();
this.label52 = new System.Windows.Forms.Label(); this.label52 = new System.Windows.Forms.Label();
this.toolTip1 = new System.Windows.Forms.ToolTip(this.components); this.toolTip1 = new System.Windows.Forms.ToolTip(this.components);
this.BUT_writePIDS = new ArdupilotMega.Controls.MyButton();
this.groupBox3.SuspendLayout(); this.groupBox3.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.THR_FS_VALUE)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.THR_FS_VALUE)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.THR_MAX)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.THR_MAX)).BeginInit();
@ -789,10 +790,18 @@
resources.ApplyResources(this.label52, "label52"); resources.ApplyResources(this.label52, "label52");
this.label52.Name = "label52"; this.label52.Name = "label52";
// //
// BUT_writePIDS
//
resources.ApplyResources(this.BUT_writePIDS, "BUT_writePIDS");
this.BUT_writePIDS.Name = "BUT_writePIDS";
this.BUT_writePIDS.UseVisualStyleBackColor = true;
this.BUT_writePIDS.Click += new System.EventHandler(this.BUT_writePIDS_Click);
//
// ConfigArduplane // ConfigArduplane
// //
resources.ApplyResources(this, "$this"); resources.ApplyResources(this, "$this");
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.Controls.Add(this.BUT_writePIDS);
this.Controls.Add(this.groupBox3); this.Controls.Add(this.groupBox3);
this.Controls.Add(this.groupBox1); this.Controls.Add(this.groupBox1);
this.Controls.Add(this.groupBox2); this.Controls.Add(this.groupBox2);
@ -970,5 +979,6 @@
private System.Windows.Forms.NumericUpDown RLL2SRV_P; private System.Windows.Forms.NumericUpDown RLL2SRV_P;
private System.Windows.Forms.Label label52; private System.Windows.Forms.Label label52;
private System.Windows.Forms.ToolTip toolTip1; private System.Windows.Forms.ToolTip toolTip1;
private Controls.MyButton BUT_writePIDS;
} }
} }

View File

@ -268,5 +268,37 @@ namespace ArdupilotMega.GCSViews.ConfigurationView
} }
} }
private void BUT_writePIDS_Click(object sender, EventArgs e)
{
var temp = (Hashtable)changes.Clone();
foreach (string value in temp.Keys)
{
try
{
MainV2.comPort.setParam(value, (float)changes[value]);
try
{
// set control as well
var textControls = this.Controls.Find(value, true);
if (textControls.Length > 0)
{
textControls[0].BackColor = Color.FromArgb(0x43, 0x44, 0x45);
}
}
catch
{
}
}
catch
{
CustomMessageBox.Show("Set " + value + " Failed");
}
}
}
} }
} }

View File

@ -25,12 +25,12 @@ namespace ArdupilotMega.GCSViews.ConfigurationView
private void BUT_MagCalibration_Click(object sender, EventArgs e) private void BUT_MagCalibration_Click(object sender, EventArgs e)
{ {
// list of x,y,z 's
List<Tuple<float, float, float>> data = new List<Tuple<float, float, float>>(); List<Tuple<float, float, float>> data = new List<Tuple<float, float, float>>();
// backup current rate and set to 10 hz
byte backupratesens = MainV2.cs.ratesensors; byte backupratesens = MainV2.cs.ratesensors;
MainV2.cs.ratesensors = 10; MainV2.cs.ratesensors = 10;
MainV2.comPort.requestDatastream((byte)MAVLink.MAV_DATA_STREAM.RAW_SENSORS, MainV2.cs.ratesensors); // mag captures at 10 hz MainV2.comPort.requestDatastream((byte)MAVLink.MAV_DATA_STREAM.RAW_SENSORS, MainV2.cs.ratesensors); // mag captures at 10 hz
CustomMessageBox.Show("Data will be collected for 30 seconds, Please click ok and move the apm around all axises"); CustomMessageBox.Show("Data will be collected for 30 seconds, Please click ok and move the apm around all axises");
@ -43,6 +43,7 @@ namespace ArdupilotMega.GCSViews.ConfigurationView
while (deadline > DateTime.Now) while (deadline > DateTime.Now)
{ {
// dont let the gui hang
Application.DoEvents(); Application.DoEvents();
if (oldmx != MainV2.cs.mx && if (oldmx != MainV2.cs.mx &&
@ -60,7 +61,9 @@ namespace ArdupilotMega.GCSViews.ConfigurationView
} }
} }
// restore old sensor rate
MainV2.cs.ratesensors = backupratesens; MainV2.cs.ratesensors = backupratesens;
MainV2.comPort.requestDatastream((byte)MAVLink.MAV_DATA_STREAM.RAW_SENSORS, MainV2.cs.ratesensors);
if (data.Count < 10) if (data.Count < 10)
{ {

View File

@ -74,6 +74,8 @@
this.BUT_Joystick = new ArdupilotMega.Controls.MyButton(); this.BUT_Joystick = new ArdupilotMega.Controls.MyButton();
this.BUT_videostop = new ArdupilotMega.Controls.MyButton(); this.BUT_videostop = new ArdupilotMega.Controls.MyButton();
this.BUT_videostart = new ArdupilotMega.Controls.MyButton(); this.BUT_videostart = new ArdupilotMega.Controls.MyButton();
this.label1 = new System.Windows.Forms.Label();
this.CHK_maprotation = new System.Windows.Forms.CheckBox();
((System.ComponentModel.ISupportInitialize)(this.NUM_tracklength)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.NUM_tracklength)).BeginInit();
this.SuspendLayout(); this.SuspendLayout();
// //
@ -94,6 +96,7 @@
resources.GetString("CMB_ratesensors.Items4")}); resources.GetString("CMB_ratesensors.Items4")});
resources.ApplyResources(this.CMB_ratesensors, "CMB_ratesensors"); resources.ApplyResources(this.CMB_ratesensors, "CMB_ratesensors");
this.CMB_ratesensors.Name = "CMB_ratesensors"; this.CMB_ratesensors.Name = "CMB_ratesensors";
this.CMB_ratesensors.SelectedIndexChanged += new System.EventHandler(this.CMB_ratesensors_SelectedIndexChanged);
// //
// label26 // label26
// //
@ -348,6 +351,7 @@
this.CMB_osdcolor.FormattingEnabled = true; this.CMB_osdcolor.FormattingEnabled = true;
resources.ApplyResources(this.CMB_osdcolor, "CMB_osdcolor"); resources.ApplyResources(this.CMB_osdcolor, "CMB_osdcolor");
this.CMB_osdcolor.Name = "CMB_osdcolor"; this.CMB_osdcolor.Name = "CMB_osdcolor";
this.CMB_osdcolor.DrawItem += new System.Windows.Forms.DrawItemEventHandler(this.CMB_osdcolor_DrawItem);
this.CMB_osdcolor.SelectedIndexChanged += new System.EventHandler(this.CMB_osdcolor_SelectedIndexChanged); this.CMB_osdcolor.SelectedIndexChanged += new System.EventHandler(this.CMB_osdcolor_SelectedIndexChanged);
// //
// CMB_language // CMB_language
@ -377,7 +381,7 @@
resources.ApplyResources(this.CHK_hudshow, "CHK_hudshow"); resources.ApplyResources(this.CHK_hudshow, "CHK_hudshow");
this.CHK_hudshow.Name = "CHK_hudshow"; this.CHK_hudshow.Name = "CHK_hudshow";
this.CHK_hudshow.UseVisualStyleBackColor = true; this.CHK_hudshow.UseVisualStyleBackColor = true;
this.CHK_hudshow.Click += new System.EventHandler(this.CHK_hudshow_CheckedChanged); this.CHK_hudshow.CheckedChanged += new System.EventHandler(this.CHK_hudshow_CheckedChanged);
// //
// label92 // label92
// //
@ -391,6 +395,7 @@
resources.ApplyResources(this.CMB_videosources, "CMB_videosources"); resources.ApplyResources(this.CMB_videosources, "CMB_videosources");
this.CMB_videosources.Name = "CMB_videosources"; this.CMB_videosources.Name = "CMB_videosources";
this.CMB_videosources.SelectedIndexChanged += new System.EventHandler(this.CMB_videosources_SelectedIndexChanged); this.CMB_videosources.SelectedIndexChanged += new System.EventHandler(this.CMB_videosources_SelectedIndexChanged);
this.CMB_videosources.Click += new System.EventHandler(this.CMB_videosources_Click);
// //
// BUT_Joystick // BUT_Joystick
// //
@ -413,10 +418,24 @@
this.BUT_videostart.UseVisualStyleBackColor = true; this.BUT_videostart.UseVisualStyleBackColor = true;
this.BUT_videostart.Click += new System.EventHandler(this.BUT_videostart_Click); this.BUT_videostart.Click += new System.EventHandler(this.BUT_videostart_Click);
// //
// label1
//
resources.ApplyResources(this.label1, "label1");
this.label1.Name = "label1";
//
// CHK_maprotation
//
resources.ApplyResources(this.CHK_maprotation, "CHK_maprotation");
this.CHK_maprotation.Name = "CHK_maprotation";
this.CHK_maprotation.UseVisualStyleBackColor = true;
this.CHK_maprotation.CheckedChanged += new System.EventHandler(this.CHK_maprotation_CheckedChanged);
//
// ConfigPlanner // ConfigPlanner
// //
resources.ApplyResources(this, "$this"); resources.ApplyResources(this, "$this");
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.Controls.Add(this.label1);
this.Controls.Add(this.CHK_maprotation);
this.Controls.Add(this.label33); this.Controls.Add(this.label33);
this.Controls.Add(this.CMB_ratesensors); this.Controls.Add(this.CMB_ratesensors);
this.Controls.Add(this.label26); this.Controls.Add(this.label26);
@ -463,6 +482,7 @@
this.Controls.Add(this.BUT_videostop); this.Controls.Add(this.BUT_videostop);
this.Controls.Add(this.BUT_videostart); this.Controls.Add(this.BUT_videostart);
this.Name = "ConfigPlanner"; this.Name = "ConfigPlanner";
this.Load += new System.EventHandler(this.ConfigPlanner_Load);
((System.ComponentModel.ISupportInitialize)(this.NUM_tracklength)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.NUM_tracklength)).EndInit();
this.ResumeLayout(false); this.ResumeLayout(false);
@ -515,5 +535,7 @@
private ArdupilotMega.Controls.MyButton BUT_Joystick; private ArdupilotMega.Controls.MyButton BUT_Joystick;
private ArdupilotMega.Controls.MyButton BUT_videostop; private ArdupilotMega.Controls.MyButton BUT_videostop;
private ArdupilotMega.Controls.MyButton BUT_videostart; private ArdupilotMega.Controls.MyButton BUT_videostart;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.CheckBox CHK_maprotation;
} }
} }

View File

@ -11,13 +11,15 @@ using System.Windows.Forms;
using DirectShowLib; using DirectShowLib;
using ArdupilotMega.Controls.BackstageView; using ArdupilotMega.Controls.BackstageView;
using ArdupilotMega.Controls; using ArdupilotMega.Controls;
using ArdupilotMega.Utilities;
using System.Threading;
namespace ArdupilotMega.GCSViews.ConfigurationView namespace ArdupilotMega.GCSViews.ConfigurationView
{ {
public partial class ConfigPlanner : BackStageViewContentPanel public partial class ConfigPlanner : BackStageViewContentPanel
{ {
// AR todo: replicate this functionality
private bool startup = false; private bool startup = false;
List<CultureInfo> languages = new List<CultureInfo>();
public ConfigPlanner() public ConfigPlanner()
{ {
@ -291,32 +293,54 @@ namespace ArdupilotMega.GCSViews.ConfigurationView
private void CMB_rateattitude_SelectedIndexChanged(object sender, EventArgs e) private void CMB_rateattitude_SelectedIndexChanged(object sender, EventArgs e)
{ {
if (startup)
return;
MainV2.config[((ComboBox)sender).Name] = ((ComboBox)sender).Text; MainV2.config[((ComboBox)sender).Name] = ((ComboBox)sender).Text;
MainV2.cs.rateattitude = byte.Parse(((ComboBox)sender).Text); MainV2.cs.rateattitude = byte.Parse(((ComboBox)sender).Text);
MainV2.comPort.requestDatastream((byte)ArdupilotMega.MAVLink.MAV_DATA_STREAM.EXTRA1, MainV2.cs.rateattitude); // request attitude
MainV2.comPort.requestDatastream((byte)ArdupilotMega.MAVLink.MAV_DATA_STREAM.EXTRA2, MainV2.cs.rateattitude); // request vfr
} }
private void CMB_rateposition_SelectedIndexChanged(object sender, EventArgs e) private void CMB_rateposition_SelectedIndexChanged(object sender, EventArgs e)
{ {
if (startup)
return;
MainV2.config[((ComboBox)sender).Name] = ((ComboBox)sender).Text; MainV2.config[((ComboBox)sender).Name] = ((ComboBox)sender).Text;
MainV2.cs.rateposition = byte.Parse(((ComboBox)sender).Text); MainV2.cs.rateposition = byte.Parse(((ComboBox)sender).Text);
MainV2.comPort.requestDatastream((byte)ArdupilotMega.MAVLink.MAV_DATA_STREAM.POSITION, MainV2.cs.rateposition); // request gps
} }
private void CMB_ratestatus_SelectedIndexChanged(object sender, EventArgs e) private void CMB_ratestatus_SelectedIndexChanged(object sender, EventArgs e)
{ {
if (startup)
return;
MainV2.config[((ComboBox)sender).Name] = ((ComboBox)sender).Text; MainV2.config[((ComboBox)sender).Name] = ((ComboBox)sender).Text;
MainV2.cs.ratestatus = byte.Parse(((ComboBox)sender).Text); MainV2.cs.ratestatus = byte.Parse(((ComboBox)sender).Text);
MainV2.comPort.requestDatastream((byte)ArdupilotMega.MAVLink.MAV_DATA_STREAM.EXTENDED_STATUS, MainV2.cs.ratestatus); // mode
} }
private void CMB_raterc_SelectedIndexChanged(object sender, EventArgs e) private void CMB_raterc_SelectedIndexChanged(object sender, EventArgs e)
{ {
if (startup)
return;
MainV2.config[((ComboBox)sender).Name] = ((ComboBox)sender).Text; MainV2.config[((ComboBox)sender).Name] = ((ComboBox)sender).Text;
MainV2.cs.raterc = byte.Parse(((ComboBox)sender).Text); MainV2.cs.raterc = byte.Parse(((ComboBox)sender).Text);
MainV2.comPort.requestDatastream((byte)ArdupilotMega.MAVLink.MAV_DATA_STREAM.RC_CHANNELS, MainV2.cs.raterc); // request rc info
} }
private void CMB_ratesensors_SelectedIndexChanged(object sender, EventArgs e) private void CMB_ratesensors_SelectedIndexChanged(object sender, EventArgs e)
{ {
if (startup)
return;
MainV2.config[((ComboBox)sender).Name] = ((ComboBox)sender).Text; MainV2.config[((ComboBox)sender).Name] = ((ComboBox)sender).Text;
MainV2.cs.ratesensors = byte.Parse(((ComboBox)sender).Text); MainV2.cs.ratesensors = byte.Parse(((ComboBox)sender).Text);
MainV2.comPort.requestDatastream((byte)ArdupilotMega.MAVLink.MAV_DATA_STREAM.EXTRA3, MainV2.cs.ratesensors); // request extra stuff - tridge
MainV2.comPort.requestDatastream((byte)ArdupilotMega.MAVLink.MAV_DATA_STREAM.RAW_SENSORS, MainV2.cs.ratesensors); // request raw sensor
} }
private void CHK_mavdebug_CheckedChanged(object sender, EventArgs e) private void CHK_mavdebug_CheckedChanged(object sender, EventArgs e)
@ -371,5 +395,154 @@ namespace ArdupilotMega.GCSViews.ConfigurationView
MainV2.config["CHK_GDIPlus"] = CHK_GDIPlus.Checked.ToString(); MainV2.config["CHK_GDIPlus"] = CHK_GDIPlus.Checked.ToString();
} }
private void ConfigPlanner_Load(object sender, EventArgs e)
{
startup = true;
// setup up camera button states
if (MainV2.cam != null)
{
BUT_videostart.Enabled = false;
CHK_hudshow.Checked = GCSViews.FlightData.myhud.hudon;
}
else
{
BUT_videostart.Enabled = true;
}
// setup speech states
if (MainV2.config["speechenable"] != null)
CHK_enablespeech.Checked = bool.Parse(MainV2.config["speechenable"].ToString());
if (MainV2.config["speechwaypointenabled"] != null)
CHK_speechwaypoint.Checked = bool.Parse(MainV2.config["speechwaypointenabled"].ToString());
if (MainV2.config["speechmodeenabled"] != null)
CHK_speechmode.Checked = bool.Parse(MainV2.config["speechmodeenabled"].ToString());
if (MainV2.config["speechcustomenabled"] != null)
CHK_speechcustom.Checked = bool.Parse(MainV2.config["speechcustomenabled"].ToString());
if (MainV2.config["speechbatteryenabled"] != null)
CHK_speechbattery.Checked = bool.Parse(MainV2.config["speechbatteryenabled"].ToString());
if (MainV2.config["speechaltenabled"] != null)
CHK_speechaltwarning.Checked = bool.Parse(MainV2.config["speechaltenabled"].ToString());
// this can't fail because it set at startup
NUM_tracklength.Value = int.Parse(MainV2.config["NUM_tracklength"].ToString());
// get wps on connect
if (MainV2.config["loadwpsonconnect"] != null)
CHK_loadwponconnect.Checked = bool.Parse(MainV2.config["loadwpsonconnect"].ToString());
// setup other config state
if (MainV2.config["CHK_resetapmonconnect"] != null)
CHK_resetapmonconnect.Checked = bool.Parse(MainV2.config["CHK_resetapmonconnect"].ToString());
CMB_rateattitude.Text = MainV2.cs.rateattitude.ToString();
CMB_rateposition.Text = MainV2.cs.rateposition.ToString();
CMB_raterc.Text = MainV2.cs.raterc.ToString();
CMB_ratestatus.Text = MainV2.cs.ratestatus.ToString();
CMB_ratesensors.Text = MainV2.cs.ratesensors.ToString();
if (MainV2.config["CHK_GDIPlus"] != null)
CHK_GDIPlus.Checked = bool.Parse(MainV2.config["CHK_GDIPlus"].ToString());
if (MainV2.config["CHK_maprotation"] != null)
CHK_maprotation.Checked = bool.Parse(MainV2.config["CHK_maprotation"].ToString());
//set hud color state
string hudcolor = (string)MainV2.config["hudcolor"];
CMB_osdcolor.DataSource = Enum.GetNames(typeof(KnownColor));
if (hudcolor != null)
{
int index = CMB_osdcolor.Items.IndexOf(hudcolor);
CMB_osdcolor.SelectedIndex = index;
}
else
{
int index = CMB_osdcolor.Items.IndexOf("White");
CMB_osdcolor.SelectedIndex = index;
}
// set distance/speed unit states
CMB_distunits.DataSource = Enum.GetNames(typeof(Common.distances));
CMB_speedunits.DataSource = Enum.GetNames(typeof(Common.speeds));
if (MainV2.config["distunits"] != null)
CMB_distunits.Text = MainV2.config["distunits"].ToString();
if (MainV2.config["speedunits"] != null)
CMB_speedunits.Text = MainV2.config["speedunits"].ToString();
// setup language selection
CultureInfo ci = null;
foreach (string name in new string[] { "en-US", "zh-Hans", "zh-TW", "ru-RU", "Fr", "Pl", "it-IT", "es-ES" })
{
ci = CultureInfoEx.GetCultureInfo(name);
if (ci != null)
languages.Add(ci);
}
CMB_language.DisplayMember = "DisplayName";
CMB_language.DataSource = languages;
ci = Thread.CurrentThread.CurrentUICulture;
for (int i = 0; i < languages.Count; i++)
{
if (ci.IsChildOf(languages[i]))
{
CMB_language.SelectedIndex = i;
break;
}
}
CMB_language.SelectedIndexChanged += CMB_language_SelectedIndexChanged;
startup = false;
}
private void CMB_osdcolor_DrawItem(object sender, DrawItemEventArgs e)
{
if (e.Index < 0)
return;
Graphics g = e.Graphics;
Rectangle rect = e.Bounds;
Brush brush = null;
if ((e.State & DrawItemState.Selected) == 0)
brush = new SolidBrush(CMB_osdcolor.BackColor);
else
brush = SystemBrushes.Highlight;
g.FillRectangle(brush, rect);
brush = new SolidBrush(Color.FromName((string)CMB_osdcolor.Items[e.Index]));
g.FillRectangle(brush, rect.X + 2, rect.Y + 2, 30, rect.Height - 4);
g.DrawRectangle(Pens.Black, rect.X + 2, rect.Y + 2, 30, rect.Height - 4);
if ((e.State & DrawItemState.Selected) == 0)
brush = new SolidBrush(CMB_osdcolor.ForeColor);
else
brush = SystemBrushes.HighlightText;
g.DrawString(CMB_osdcolor.Items[e.Index].ToString(),
CMB_osdcolor.Font, brush, rect.X + 35, rect.Top + rect.Height - CMB_osdcolor.Font.Height);
}
private void CMB_videosources_Click(object sender, EventArgs e)
{
// the reason why i dont populate this list is because on linux/mac this call will fail.
WebCamService.Capture capt = new WebCamService.Capture();
List<string> devices = WebCamService.Capture.getDevices();
CMB_videosources.DataSource = devices;
capt.Dispose();
}
private void CHK_maprotation_CheckedChanged(object sender, EventArgs e)
{
if (startup)
return;
MainV2.config["CHK_maprotation"] = CHK_maprotation.Checked.ToString();
}
} }
} }

View File

@ -145,7 +145,7 @@
<value>$this</value> <value>$this</value>
</data> </data>
<data name="&gt;&gt;label33.ZOrder" xml:space="preserve"> <data name="&gt;&gt;label33.ZOrder" xml:space="preserve">
<value>0</value> <value>2</value>
</data> </data>
<data name="CMB_ratesensors.Items" xml:space="preserve"> <data name="CMB_ratesensors.Items" xml:space="preserve">
<value>0</value> <value>0</value>
@ -181,7 +181,7 @@
<value>$this</value> <value>$this</value>
</data> </data>
<data name="&gt;&gt;CMB_ratesensors.ZOrder" xml:space="preserve"> <data name="&gt;&gt;CMB_ratesensors.ZOrder" xml:space="preserve">
<value>1</value> <value>3</value>
</data> </data>
<data name="label26.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms"> <data name="label26.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value> <value>NoControl</value>
@ -208,7 +208,7 @@
<value>$this</value> <value>$this</value>
</data> </data>
<data name="&gt;&gt;label26.ZOrder" xml:space="preserve"> <data name="&gt;&gt;label26.ZOrder" xml:space="preserve">
<value>2</value> <value>4</value>
</data> </data>
<data name="CMB_videoresolutions.Location" type="System.Drawing.Point, System.Drawing"> <data name="CMB_videoresolutions.Location" type="System.Drawing.Point, System.Drawing">
<value>124, 49</value> <value>124, 49</value>
@ -229,7 +229,7 @@
<value>$this</value> <value>$this</value>
</data> </data>
<data name="&gt;&gt;CMB_videoresolutions.ZOrder" xml:space="preserve"> <data name="&gt;&gt;CMB_videoresolutions.ZOrder" xml:space="preserve">
<value>3</value> <value>5</value>
</data> </data>
<data name="label12.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms"> <data name="label12.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value> <value>NoControl</value>
@ -256,7 +256,7 @@
<value>$this</value> <value>$this</value>
</data> </data>
<data name="&gt;&gt;label12.ZOrder" xml:space="preserve"> <data name="&gt;&gt;label12.ZOrder" xml:space="preserve">
<value>4</value> <value>6</value>
</data> </data>
<data name="CHK_GDIPlus.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms"> <data name="CHK_GDIPlus.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value> <value>NoControl</value>
@ -283,7 +283,7 @@
<value>$this</value> <value>$this</value>
</data> </data>
<data name="&gt;&gt;CHK_GDIPlus.ZOrder" xml:space="preserve"> <data name="&gt;&gt;CHK_GDIPlus.ZOrder" xml:space="preserve">
<value>5</value> <value>7</value>
</data> </data>
<data name="label24.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms"> <data name="label24.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value> <value>NoControl</value>
@ -310,7 +310,7 @@
<value>$this</value> <value>$this</value>
</data> </data>
<data name="&gt;&gt;label24.ZOrder" xml:space="preserve"> <data name="&gt;&gt;label24.ZOrder" xml:space="preserve">
<value>6</value> <value>8</value>
</data> </data>
<data name="CHK_loadwponconnect.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms"> <data name="CHK_loadwponconnect.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value> <value>NoControl</value>
@ -337,7 +337,7 @@
<value>$this</value> <value>$this</value>
</data> </data>
<data name="&gt;&gt;CHK_loadwponconnect.ZOrder" xml:space="preserve"> <data name="&gt;&gt;CHK_loadwponconnect.ZOrder" xml:space="preserve">
<value>7</value> <value>9</value>
</data> </data>
<data name="label23.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms"> <data name="label23.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value> <value>NoControl</value>
@ -364,7 +364,7 @@
<value>$this</value> <value>$this</value>
</data> </data>
<data name="&gt;&gt;label23.ZOrder" xml:space="preserve"> <data name="&gt;&gt;label23.ZOrder" xml:space="preserve">
<value>8</value> <value>10</value>
</data> </data>
<data name="NUM_tracklength.Location" type="System.Drawing.Point, System.Drawing"> <data name="NUM_tracklength.Location" type="System.Drawing.Point, System.Drawing">
<value>124, 293</value> <value>124, 293</value>
@ -385,7 +385,7 @@
<value>$this</value> <value>$this</value>
</data> </data>
<data name="&gt;&gt;NUM_tracklength.ZOrder" xml:space="preserve"> <data name="&gt;&gt;NUM_tracklength.ZOrder" xml:space="preserve">
<value>9</value> <value>11</value>
</data> </data>
<data name="CHK_speechaltwarning.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms"> <data name="CHK_speechaltwarning.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value> <value>NoControl</value>
@ -412,7 +412,7 @@
<value>$this</value> <value>$this</value>
</data> </data>
<data name="&gt;&gt;CHK_speechaltwarning.ZOrder" xml:space="preserve"> <data name="&gt;&gt;CHK_speechaltwarning.ZOrder" xml:space="preserve">
<value>10</value> <value>12</value>
</data> </data>
<data name="label108.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms"> <data name="label108.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value> <value>NoControl</value>
@ -439,7 +439,7 @@
<value>$this</value> <value>$this</value>
</data> </data>
<data name="&gt;&gt;label108.ZOrder" xml:space="preserve"> <data name="&gt;&gt;label108.ZOrder" xml:space="preserve">
<value>11</value> <value>13</value>
</data> </data>
<data name="CHK_resetapmonconnect.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms"> <data name="CHK_resetapmonconnect.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value> <value>NoControl</value>
@ -466,7 +466,7 @@
<value>$this</value> <value>$this</value>
</data> </data>
<data name="&gt;&gt;CHK_resetapmonconnect.ZOrder" xml:space="preserve"> <data name="&gt;&gt;CHK_resetapmonconnect.ZOrder" xml:space="preserve">
<value>12</value> <value>14</value>
</data> </data>
<data name="CHK_mavdebug.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms"> <data name="CHK_mavdebug.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Left</value> <value>Bottom, Left</value>
@ -475,7 +475,7 @@
<value>NoControl</value> <value>NoControl</value>
</data> </data>
<data name="CHK_mavdebug.Location" type="System.Drawing.Point, System.Drawing"> <data name="CHK_mavdebug.Location" type="System.Drawing.Point, System.Drawing">
<value>15, 378</value> <value>15, 398</value>
</data> </data>
<data name="CHK_mavdebug.Size" type="System.Drawing.Size, System.Drawing"> <data name="CHK_mavdebug.Size" type="System.Drawing.Size, System.Drawing">
<value>144, 17</value> <value>144, 17</value>
@ -496,7 +496,7 @@
<value>$this</value> <value>$this</value>
</data> </data>
<data name="&gt;&gt;CHK_mavdebug.ZOrder" xml:space="preserve"> <data name="&gt;&gt;CHK_mavdebug.ZOrder" xml:space="preserve">
<value>13</value> <value>15</value>
</data> </data>
<data name="label107.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms"> <data name="label107.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value> <value>NoControl</value>
@ -523,7 +523,7 @@
<value>$this</value> <value>$this</value>
</data> </data>
<data name="&gt;&gt;label107.ZOrder" xml:space="preserve"> <data name="&gt;&gt;label107.ZOrder" xml:space="preserve">
<value>14</value> <value>16</value>
</data> </data>
<data name="CMB_raterc.Items" xml:space="preserve"> <data name="CMB_raterc.Items" xml:space="preserve">
<value>0</value> <value>0</value>
@ -556,7 +556,7 @@
<value>$this</value> <value>$this</value>
</data> </data>
<data name="&gt;&gt;CMB_raterc.ZOrder" xml:space="preserve"> <data name="&gt;&gt;CMB_raterc.ZOrder" xml:space="preserve">
<value>15</value> <value>17</value>
</data> </data>
<data name="label104.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms"> <data name="label104.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value> <value>NoControl</value>
@ -583,7 +583,7 @@
<value>$this</value> <value>$this</value>
</data> </data>
<data name="&gt;&gt;label104.ZOrder" xml:space="preserve"> <data name="&gt;&gt;label104.ZOrder" xml:space="preserve">
<value>16</value> <value>18</value>
</data> </data>
<data name="label103.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms"> <data name="label103.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value> <value>NoControl</value>
@ -610,7 +610,7 @@
<value>$this</value> <value>$this</value>
</data> </data>
<data name="&gt;&gt;label103.ZOrder" xml:space="preserve"> <data name="&gt;&gt;label103.ZOrder" xml:space="preserve">
<value>17</value> <value>19</value>
</data> </data>
<data name="label102.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms"> <data name="label102.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value> <value>NoControl</value>
@ -637,7 +637,7 @@
<value>$this</value> <value>$this</value>
</data> </data>
<data name="&gt;&gt;label102.ZOrder" xml:space="preserve"> <data name="&gt;&gt;label102.ZOrder" xml:space="preserve">
<value>18</value> <value>20</value>
</data> </data>
<data name="label101.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms"> <data name="label101.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value> <value>NoControl</value>
@ -664,7 +664,7 @@
<value>$this</value> <value>$this</value>
</data> </data>
<data name="&gt;&gt;label101.ZOrder" xml:space="preserve"> <data name="&gt;&gt;label101.ZOrder" xml:space="preserve">
<value>19</value> <value>21</value>
</data> </data>
<data name="CMB_ratestatus.Items" xml:space="preserve"> <data name="CMB_ratestatus.Items" xml:space="preserve">
<value>0</value> <value>0</value>
@ -697,7 +697,7 @@
<value>$this</value> <value>$this</value>
</data> </data>
<data name="&gt;&gt;CMB_ratestatus.ZOrder" xml:space="preserve"> <data name="&gt;&gt;CMB_ratestatus.ZOrder" xml:space="preserve">
<value>20</value> <value>22</value>
</data> </data>
<data name="CMB_rateposition.Items" xml:space="preserve"> <data name="CMB_rateposition.Items" xml:space="preserve">
<value>0</value> <value>0</value>
@ -730,7 +730,7 @@
<value>$this</value> <value>$this</value>
</data> </data>
<data name="&gt;&gt;CMB_rateposition.ZOrder" xml:space="preserve"> <data name="&gt;&gt;CMB_rateposition.ZOrder" xml:space="preserve">
<value>21</value> <value>23</value>
</data> </data>
<data name="CMB_rateattitude.Items" xml:space="preserve"> <data name="CMB_rateattitude.Items" xml:space="preserve">
<value>0</value> <value>0</value>
@ -763,7 +763,7 @@
<value>$this</value> <value>$this</value>
</data> </data>
<data name="&gt;&gt;CMB_rateattitude.ZOrder" xml:space="preserve"> <data name="&gt;&gt;CMB_rateattitude.ZOrder" xml:space="preserve">
<value>22</value> <value>24</value>
</data> </data>
<data name="label99.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms"> <data name="label99.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value> <value>NoControl</value>
@ -791,7 +791,7 @@
<value>$this</value> <value>$this</value>
</data> </data>
<data name="&gt;&gt;label99.ZOrder" xml:space="preserve"> <data name="&gt;&gt;label99.ZOrder" xml:space="preserve">
<value>23</value> <value>25</value>
</data> </data>
<data name="label98.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms"> <data name="label98.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value> <value>NoControl</value>
@ -818,7 +818,7 @@
<value>$this</value> <value>$this</value>
</data> </data>
<data name="&gt;&gt;label98.ZOrder" xml:space="preserve"> <data name="&gt;&gt;label98.ZOrder" xml:space="preserve">
<value>24</value> <value>26</value>
</data> </data>
<data name="label97.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms"> <data name="label97.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value> <value>NoControl</value>
@ -845,7 +845,7 @@
<value>$this</value> <value>$this</value>
</data> </data>
<data name="&gt;&gt;label97.ZOrder" xml:space="preserve"> <data name="&gt;&gt;label97.ZOrder" xml:space="preserve">
<value>25</value> <value>27</value>
</data> </data>
<data name="CMB_speedunits.Location" type="System.Drawing.Point, System.Drawing"> <data name="CMB_speedunits.Location" type="System.Drawing.Point, System.Drawing">
<value>124, 216</value> <value>124, 216</value>
@ -866,7 +866,7 @@
<value>$this</value> <value>$this</value>
</data> </data>
<data name="&gt;&gt;CMB_speedunits.ZOrder" xml:space="preserve"> <data name="&gt;&gt;CMB_speedunits.ZOrder" xml:space="preserve">
<value>26</value> <value>28</value>
</data> </data>
<data name="CMB_distunits.Location" type="System.Drawing.Point, System.Drawing"> <data name="CMB_distunits.Location" type="System.Drawing.Point, System.Drawing">
<value>124, 189</value> <value>124, 189</value>
@ -887,7 +887,7 @@
<value>$this</value> <value>$this</value>
</data> </data>
<data name="&gt;&gt;CMB_distunits.ZOrder" xml:space="preserve"> <data name="&gt;&gt;CMB_distunits.ZOrder" xml:space="preserve">
<value>27</value> <value>29</value>
</data> </data>
<data name="label96.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms"> <data name="label96.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value> <value>NoControl</value>
@ -914,7 +914,7 @@
<value>$this</value> <value>$this</value>
</data> </data>
<data name="&gt;&gt;label96.ZOrder" xml:space="preserve"> <data name="&gt;&gt;label96.ZOrder" xml:space="preserve">
<value>28</value> <value>30</value>
</data> </data>
<data name="label95.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms"> <data name="label95.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value> <value>NoControl</value>
@ -941,7 +941,7 @@
<value>$this</value> <value>$this</value>
</data> </data>
<data name="&gt;&gt;label95.ZOrder" xml:space="preserve"> <data name="&gt;&gt;label95.ZOrder" xml:space="preserve">
<value>29</value> <value>31</value>
</data> </data>
<data name="CHK_speechbattery.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms"> <data name="CHK_speechbattery.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value> <value>NoControl</value>
@ -968,7 +968,7 @@
<value>$this</value> <value>$this</value>
</data> </data>
<data name="&gt;&gt;CHK_speechbattery.ZOrder" xml:space="preserve"> <data name="&gt;&gt;CHK_speechbattery.ZOrder" xml:space="preserve">
<value>30</value> <value>32</value>
</data> </data>
<data name="CHK_speechcustom.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms"> <data name="CHK_speechcustom.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value> <value>NoControl</value>
@ -995,7 +995,7 @@
<value>$this</value> <value>$this</value>
</data> </data>
<data name="&gt;&gt;CHK_speechcustom.ZOrder" xml:space="preserve"> <data name="&gt;&gt;CHK_speechcustom.ZOrder" xml:space="preserve">
<value>31</value> <value>33</value>
</data> </data>
<data name="CHK_speechmode.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms"> <data name="CHK_speechmode.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value> <value>NoControl</value>
@ -1022,7 +1022,7 @@
<value>$this</value> <value>$this</value>
</data> </data>
<data name="&gt;&gt;CHK_speechmode.ZOrder" xml:space="preserve"> <data name="&gt;&gt;CHK_speechmode.ZOrder" xml:space="preserve">
<value>32</value> <value>34</value>
</data> </data>
<data name="CHK_speechwaypoint.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms"> <data name="CHK_speechwaypoint.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value> <value>NoControl</value>
@ -1049,7 +1049,7 @@
<value>$this</value> <value>$this</value>
</data> </data>
<data name="&gt;&gt;CHK_speechwaypoint.ZOrder" xml:space="preserve"> <data name="&gt;&gt;CHK_speechwaypoint.ZOrder" xml:space="preserve">
<value>33</value> <value>35</value>
</data> </data>
<data name="label94.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms"> <data name="label94.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value> <value>NoControl</value>
@ -1076,7 +1076,7 @@
<value>$this</value> <value>$this</value>
</data> </data>
<data name="&gt;&gt;label94.ZOrder" xml:space="preserve"> <data name="&gt;&gt;label94.ZOrder" xml:space="preserve">
<value>34</value> <value>36</value>
</data> </data>
<data name="CMB_osdcolor.Location" type="System.Drawing.Point, System.Drawing"> <data name="CMB_osdcolor.Location" type="System.Drawing.Point, System.Drawing">
<value>124, 82</value> <value>124, 82</value>
@ -1097,7 +1097,7 @@
<value>$this</value> <value>$this</value>
</data> </data>
<data name="&gt;&gt;CMB_osdcolor.ZOrder" xml:space="preserve"> <data name="&gt;&gt;CMB_osdcolor.ZOrder" xml:space="preserve">
<value>35</value> <value>37</value>
</data> </data>
<data name="CMB_language.Location" type="System.Drawing.Point, System.Drawing"> <data name="CMB_language.Location" type="System.Drawing.Point, System.Drawing">
<value>124, 133</value> <value>124, 133</value>
@ -1118,7 +1118,7 @@
<value>$this</value> <value>$this</value>
</data> </data>
<data name="&gt;&gt;CMB_language.ZOrder" xml:space="preserve"> <data name="&gt;&gt;CMB_language.ZOrder" xml:space="preserve">
<value>36</value> <value>38</value>
</data> </data>
<data name="label93.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms"> <data name="label93.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value> <value>NoControl</value>
@ -1145,7 +1145,7 @@
<value>$this</value> <value>$this</value>
</data> </data>
<data name="&gt;&gt;label93.ZOrder" xml:space="preserve"> <data name="&gt;&gt;label93.ZOrder" xml:space="preserve">
<value>37</value> <value>39</value>
</data> </data>
<data name="CHK_enablespeech.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms"> <data name="CHK_enablespeech.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value> <value>NoControl</value>
@ -1172,7 +1172,7 @@
<value>$this</value> <value>$this</value>
</data> </data>
<data name="&gt;&gt;CHK_enablespeech.ZOrder" xml:space="preserve"> <data name="&gt;&gt;CHK_enablespeech.ZOrder" xml:space="preserve">
<value>38</value> <value>40</value>
</data> </data>
<data name="CHK_hudshow.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms"> <data name="CHK_hudshow.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value> <value>NoControl</value>
@ -1199,7 +1199,7 @@
<value>$this</value> <value>$this</value>
</data> </data>
<data name="&gt;&gt;CHK_hudshow.ZOrder" xml:space="preserve"> <data name="&gt;&gt;CHK_hudshow.ZOrder" xml:space="preserve">
<value>39</value> <value>41</value>
</data> </data>
<data name="label92.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms"> <data name="label92.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value> <value>NoControl</value>
@ -1226,7 +1226,7 @@
<value>$this</value> <value>$this</value>
</data> </data>
<data name="&gt;&gt;label92.ZOrder" xml:space="preserve"> <data name="&gt;&gt;label92.ZOrder" xml:space="preserve">
<value>40</value> <value>42</value>
</data> </data>
<data name="CMB_videosources.Location" type="System.Drawing.Point, System.Drawing"> <data name="CMB_videosources.Location" type="System.Drawing.Point, System.Drawing">
<value>124, 15</value> <value>124, 15</value>
@ -1247,7 +1247,7 @@
<value>$this</value> <value>$this</value>
</data> </data>
<data name="&gt;&gt;CMB_videosources.ZOrder" xml:space="preserve"> <data name="&gt;&gt;CMB_videosources.ZOrder" xml:space="preserve">
<value>41</value> <value>43</value>
</data> </data>
<data name="BUT_Joystick.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms"> <data name="BUT_Joystick.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value> <value>NoControl</value>
@ -1268,13 +1268,13 @@
<value>BUT_Joystick</value> <value>BUT_Joystick</value>
</data> </data>
<data name="&gt;&gt;BUT_Joystick.Type" xml:space="preserve"> <data name="&gt;&gt;BUT_Joystick.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner, Version=1.1.4491.33622, Culture=neutral, PublicKeyToken=null</value> <value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner, Version=1.1.4498.31567, Culture=neutral, PublicKeyToken=null</value>
</data> </data>
<data name="&gt;&gt;BUT_Joystick.Parent" xml:space="preserve"> <data name="&gt;&gt;BUT_Joystick.Parent" xml:space="preserve">
<value>$this</value> <value>$this</value>
</data> </data>
<data name="&gt;&gt;BUT_Joystick.ZOrder" xml:space="preserve"> <data name="&gt;&gt;BUT_Joystick.ZOrder" xml:space="preserve">
<value>42</value> <value>44</value>
</data> </data>
<data name="BUT_videostop.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms"> <data name="BUT_videostop.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value> <value>NoControl</value>
@ -1295,13 +1295,13 @@
<value>BUT_videostop</value> <value>BUT_videostop</value>
</data> </data>
<data name="&gt;&gt;BUT_videostop.Type" xml:space="preserve"> <data name="&gt;&gt;BUT_videostop.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner, Version=1.1.4491.33622, Culture=neutral, PublicKeyToken=null</value> <value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner, Version=1.1.4498.31567, Culture=neutral, PublicKeyToken=null</value>
</data> </data>
<data name="&gt;&gt;BUT_videostop.Parent" xml:space="preserve"> <data name="&gt;&gt;BUT_videostop.Parent" xml:space="preserve">
<value>$this</value> <value>$this</value>
</data> </data>
<data name="&gt;&gt;BUT_videostop.ZOrder" xml:space="preserve"> <data name="&gt;&gt;BUT_videostop.ZOrder" xml:space="preserve">
<value>43</value> <value>45</value>
</data> </data>
<data name="BUT_videostart.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms"> <data name="BUT_videostart.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value> <value>NoControl</value>
@ -1322,13 +1322,67 @@
<value>BUT_videostart</value> <value>BUT_videostart</value>
</data> </data>
<data name="&gt;&gt;BUT_videostart.Type" xml:space="preserve"> <data name="&gt;&gt;BUT_videostart.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner, Version=1.1.4491.33622, Culture=neutral, PublicKeyToken=null</value> <value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner, Version=1.1.4498.31567, Culture=neutral, PublicKeyToken=null</value>
</data> </data>
<data name="&gt;&gt;BUT_videostart.Parent" xml:space="preserve"> <data name="&gt;&gt;BUT_videostart.Parent" xml:space="preserve">
<value>$this</value> <value>$this</value>
</data> </data>
<data name="&gt;&gt;BUT_videostart.ZOrder" xml:space="preserve"> <data name="&gt;&gt;BUT_videostart.ZOrder" xml:space="preserve">
<value>44</value> <value>46</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>15, 365</value>
</data>
<data name="label1.Size" type="System.Drawing.Size, System.Drawing">
<value>81, 17</value>
</data>
<data name="label1.TabIndex" type="System.Int32, mscorlib">
<value>89</value>
</data>
<data name="label1.Text" xml:space="preserve">
<value>Map Follow</value>
</data>
<data name="&gt;&gt;label1.Name" xml:space="preserve">
<value>label1</value>
</data>
<data name="&gt;&gt;label1.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;label1.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;label1.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="CHK_maprotation.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="CHK_maprotation.Location" type="System.Drawing.Point, System.Drawing">
<value>124, 365</value>
</data>
<data name="CHK_maprotation.Size" type="System.Drawing.Size, System.Drawing">
<value>205, 17</value>
</data>
<data name="CHK_maprotation.TabIndex" type="System.Int32, mscorlib">
<value>90</value>
</data>
<data name="CHK_maprotation.Text" xml:space="preserve">
<value>Map is rotated to follow the plane</value>
</data>
<data name="&gt;&gt;CHK_maprotation.Name" xml:space="preserve">
<value>CHK_maprotation</value>
</data>
<data name="&gt;&gt;CHK_maprotation.Type" xml:space="preserve">
<value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;CHK_maprotation.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;CHK_maprotation.ZOrder" xml:space="preserve">
<value>1</value>
</data> </data>
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> <metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value> <value>True</value>
@ -1337,12 +1391,12 @@
<value>6, 13</value> <value>6, 13</value>
</data> </data>
<data name="$this.Size" type="System.Drawing.Size, System.Drawing"> <data name="$this.Size" type="System.Drawing.Size, System.Drawing">
<value>682, 398</value> <value>682, 418</value>
</data> </data>
<data name="&gt;&gt;$this.Name" xml:space="preserve"> <data name="&gt;&gt;$this.Name" xml:space="preserve">
<value>ConfigPlanner</value> <value>ConfigPlanner</value>
</data> </data>
<data name="&gt;&gt;$this.Type" xml:space="preserve"> <data name="&gt;&gt;$this.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.BackstageView.BackStageViewContentPanel, ArdupilotMegaPlanner, Version=1.1.4491.33622, Culture=neutral, PublicKeyToken=null</value> <value>ArdupilotMega.Controls.BackstageView.BackStageViewContentPanel, ArdupilotMegaPlanner, Version=1.1.4498.31567, Culture=neutral, PublicKeyToken=null</value>
</data> </data>
</root> </root>

View File

@ -16,7 +16,6 @@ namespace ArdupilotMega.GCSViews.ConfigurationView
{ {
private static readonly ILog log = private static readonly ILog log =
LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
private readonly ParameterMetaDataRepository _parameterMetaDataRepository; private readonly ParameterMetaDataRepository _parameterMetaDataRepository;
// Changes made to the params between writing to the copter // Changes made to the params between writing to the copter
@ -41,8 +40,6 @@ namespace ArdupilotMega.GCSViews.ConfigurationView
public ConfigRawParams() public ConfigRawParams()
{ {
InitializeComponent(); InitializeComponent();
// Init the accessor class for the parameter meta data
_parameterMetaDataRepository = new ParameterMetaDataRepository(); _parameterMetaDataRepository = new ParameterMetaDataRepository();
} }

View File

@ -1,60 +0,0 @@
namespace ArdupilotMega.GCSViews.ConfigurationView
{
partial class Configuration
{
/// <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()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Configuration));
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(634, 336);
this.backstageView.TabIndex = 0;
//
// Configuration
//
this.ClientSize = new System.Drawing.Size(634, 336);
this.Controls.Add(this.backstageView);
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.Name = "Configuration";
this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.Configuration_FormClosing);
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private Controls.BackstageView.BackstageView backstageView;
}
}

View File

@ -1,37 +0,0 @@
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;
namespace ArdupilotMega.GCSViews.ConfigurationView
{
public partial class Configuration : Form
{
public Configuration()
{
InitializeComponent();
this.backstageView.AddPage(new BackstageView.BackstageViewPage(new ConfigRadioInput(), "Radio Calibration"));
this.backstageView.AddPage(new BackstageView.BackstageViewPage(new ConfigFlightModes(), "Flight Modes"));
this.backstageView.AddPage(new BackstageView.BackstageViewPage(new ConfigHardwareOptions(), "Hardware Options"));
this.backstageView.AddPage(new BackstageView.BackstageViewPage(new ConfigBatteryMonitoring(), "Battery Monitor"));
this.backstageView.AddPage(new BackstageView.BackstageViewPage(new ConfigAccelerometerCalibrationQuad(), "ArduCopter"));
this.backstageView.AddPage(new BackstageView.BackstageViewPage(new ConfigAccelerometerCalibrationPlane(), "ArduPlane"));
this.backstageView.AddPage(new BackstageView.BackstageViewPage(new ConfigArducopter(), "Arducopter Setup"));
this.backstageView.AddPage(new BackstageView.BackstageViewPage(new ConfigArduplane(), "Arduplane Setup"));
this.backstageView.AddPage(new BackstageView.BackstageViewPage(new ConfigTradHeli(), "Heli Setup"));
this.backstageView.AddPage(new BackstageView.BackstageViewPage(new ConfigRawParams(), "Raw params (Advanced)"));
this.backstageView.AddPage(new BackstageView.BackstageViewPage(new ConfigPlanner(), "Planner"));
}
private void Configuration_FormClosing(object sender, FormClosingEventArgs e)
{
backstageView.Close();
}
}
}

View File

@ -1,197 +0,0 @@
<?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="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAABAAEAICAAAAEAIACoEAAAFgAAACgAAAAgAAAAQAAAAAEAIAAAAAAAABAAABILAAASCwAAAAAAAAAA
AAD///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADOxkjAtnoOAKpJ4vyiK
c+8nh3D/J4Zv/yeHcP8oi3PvKpJ4vy6fg4AzsZIwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADjGo2AyspPfLZ+D/yiQ
d/8hlXj/G6F9/xeqg/8XqYL/GKqD/xuhfv8ilnn/KZB3/y2fhP8yspPfN8ajYAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAA////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADvRrDA1vpzfL6uN/yel
hP8XvJD/DMyY/wfQl/8FzJP/A8qS/wPJkf8EypL/BsyU/wnRmP8PzZn/Gb2R/yemhP8tqoz/Mb2a3zbQ
qkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8AAAAAAAAAAAAAAAAAAAAAAAAAAAA4y6ZgMbWV/yin
iP8WwZP/Btqf/wDPlf8AyI7/A8aP/yfNnv9T2LP/UNax/03XsP8506b/G8ya/wHKkf8F0Zf/CNuf/xLB
kv8fpYT/J7KQ/y7IomAAAAAAAAAAAAAAAAAAAAAAAAAAAP///wAAAAAAAAAAAAAAAAAAAAAANcajny+w
kf8hqoj/CNSd/wDRlf8Axor/Hcyd/3Lhwf+p7Nj/o+vV/57m0/+X5dD/k+TN/4/jzf+K5Mz/fuHH/0PW
rf8HzJT/ANCT/wDRlv8OpX//HayI/yrFn58AAAAAAAAAAAAAAAAAAAAA////AAAAAAAAAAAAAAAAADDC
nmAtro7/H62J/wPWmv8Ay47/AMaO/3XhxP+e6tT/mObP/5Pjy/+Q4sr/jODJ/4ffx/+C3MT/f9vC/3nb
wf9y2r7/adq7/2DauP8ZzZv/Fdae/8T/9/9WxKj/HKuI/y7IomAAAAAAAAAAAAAAAAD///8AAAAAAAAA
AAAiuZMwKKyM/x6ohf8C1Zr/AMmL/wHGjv+49OL///////////9+3ML/f9zD/4Dcwv9+28L/e9rA/3bZ
vv9w1rr/Z9S4/17Rs/9Qz63/Qcyn/3LewP////////////n///8MpH7/JbKP/zXQqUAAAAAAAAAAAP//
/wAAAAAAAAAAABymhN8dnn//BNGa/wDKjP8AxY3/sfHf/////////////////2nXt/9w1rv/c9e8/3TX
vP9x17z/a9W5/2TTtf9Y0K//SMyp/zXFoP9i07X/////////////////f/LR/wDQlf8epYT/Mb2a3wAA
AAAAAAAA////AAAAAAADlnJgFZR1/wq4iv8AzpH/AMCD/4rmzf//////////////////////WdGv/2PU
tf9p1rf/atS4/2nUtv9i0rT/Vc+u/0fKpv8zxZz/Ws+w//////////////////////8GyJL/ANCS/xLB
kv8tq4z/OMajYAAAAAD///8AAAAAAACHZt8NkW//ANKV/wDChP9i27r//////////////////////9Dx
6P9MzKn/Vc+v/17Rsv9g0rP/XNCx/1XNrv9Fyaf/McSd/1fPr///////////////////////QM2m/ynK
oP8JzJX/C9yh/ymmhf80spPfAAAAAP///wAAcUwwAHtc/wCrfP8AyIv/AMKK////////////////////
/////////////5Dgyv9Gyqb/TMyq/07Nq/9MzKn/Qcmj/y/Fnf9Wzq3//////////////////////57k
0v8av5T/Lceg/yzOo/8M05v/Hr6T/zCghf80spIw////AABoRYAAclT/AL2H/wDBhf9R1rL/////////
////////4vfw//////////////////H8+P9KzKn/Ocah/zTFnv8qwpj/Us2t////////////////////
////////DLqM/yDBlv8wxp//OM6m/xPPm/8Xz53/LZF5/y+fg4////8AAGNAvwB7Wf8Aw4j/ALyC/4bj
yP+g5tL/g93E/2HSsv9Pzqz/Us6s//////////////////////9Yzq//Gr2S/0jLp///////////////
/////////////yrDm/8SvI//JMGY/zDHn/81zKT/Is2e/xTUnf8nl3v/LJJ5v////wAAXz3vAIlg/wDA
hf8AuoD/quzZ/5Hjyv9628D/ada2/1jRsP9Jy6f/a9a4//////////////////////+Y4s7/////////
//////////////////+c4tD/AbaH/xW8kf8jwZj/LcWd/y/Jn/8kzJ3/E9Ca/yGjgf8ri3Tv////AABd
PP8Ak2b/AL6D/w/Ekv+m6tf/j+HJ/3vawP9p1rf/W9Gx/0rNqf85yJ//Nsaf////////////////////
/////////////////////////////wCwe/8AtoT/ELqP/xu+k/8jwZj/KMeb/yHKm/8QzZf/HqyG/ymI
cf////8AAF07/wCSZP8AvYL/GMWU/6Dn1P+K38f/ddi+/27Wuf+E3MX/leHN/6fm1f+l5tX/neLQ////
////////////////////////////////////////j9/J/27Vuv9Tzq7/JsKY/xa/kv8aw5T/FcaW/wvL
lf8aqoT/J4dw/////wAAXTv/AJFk/wC9gP8GwY3/mObQ/5rkz/+26dv/y/Hl/8Dt3/+06tz/pebV/5bg
zP+g5NL//////////////v///f7+//7+/v//////7fn2////////////tOnb/6Ll0v+v6Nj/jeDI/zXK
o/8IxJD/BMqS/xaqgv8lh2//////AABeO+8AgVf/AL1//wDBif/R9uv/1PPq/8Tv5P+36t3/rujY/6Lk
0v+U4cv/jt7J//j8+///////+/38//f8+//2+/r/+Pz7//3+/v/m9/P/9Pv6//D6+P9/28L/jd7J/5jj
z/+h5dL/qOvX/4Hmyf8f1J//E596/yOJcO////8AAGA8vwB3U/8p06P/hufM/8Ty5f/D7+T/s+vb/6bm
1P+c4c//j9/K/4vcyP/t+fb///7///j8/P/0+/r/8vr5//P7+f/1+/r/+/39///////i9fL/ZNO1/3HW
vP992sH/htzG/4vhyv+S5dD/mO7W/6X74v80noT/Io90v////wAAZkCAAHla/33ny/945cb/nunV/7Xr
3v+l5tT/luDN/4ndxv992cL/1vLq//v9/P/1+/n/8vv4//L69//z+/j/9Pv5/7Xo2//x+vn/////////
//+y59n/aNS3/3LWvP932r//fNzD/4Ljyf+J7ND/l/bd/yORdf8knH6A////AABuRzAAdlT/Xc6x/23o
xv9s4MH/qurZ/5jiz/+I3cb/edjA/8ju5f/3/Pv/8vv4//H6+P/y+/j/6/f0/7np3v/7/fz//v7+/6fk
1f+56tz///////////9h0bT/aNW4/23Wu/9v3L//dOLG/37w0f9m1rn/Hpt8/ymujTD///8AAAAAAACD
X98po4X/Z+7K/1vgvP+A4sf/jOHK/3rZwv+r59f/9Pv6/+/69//v+vf/8vr4/9fy6/9n0rf/VM6t/6Di
0v/N7+f/adO4/1PMrf9t1Lr/i9zI/1/Rs/9h0rX/ZNe4/2bbvf9s5sb/ePfV/z2ylf8lrozfAAAAAP//
/wAAAAAAAJNsYAWQbf9U1rP/Vee//0rYsf993sb/pebV//P7+v/s+Pb/6/f1/+749v+s5tj/Vc2u/1jP
r/9ZzrD/btW5/1bOr/9Wza//Vs6v/1fOr/9Z0LD/WdCy/1vTtP9d1rX/Xt+8/2btyP9k4L//IaaF/y7D
nmAAAAAA////AAAAAAAAAAAAD6J9zyCjgv9S68L/P9+0/2Pevv/5////7/v6/+v59//j9/L/gtvF/1PN
r/9Wz7D/Wc+x/1nQsf9Zz7H/WM6w/1fPsP9UzrD/VM+w/1TPrv9U0a//U9Oy/1Tatv9Z5sD/Y/LL/zSx
lP8qupbPAAAAAAAAAAD///8AAAAAAAAAAAAYto4wGaeE/y23lP8+5rn/6/////j////w//3/ve/i/2bV
uP9Tzq7/Vc+v/1jPsP9Z0LL/WM+w/1fOsf9Wz7D/Us2w/1HOrf9Qzq3/T9Cu/0zSr/9M2LP/TeC5/1bt
xP9HxaX/KLKQ/zTPqDAAAAAAAAAAAP///wAAAAAAAAAAAAAAAAAkvpdgG6iF/y++m//e/////P///3rl
yf9G0K3/VdKy/1bPsf9Wz7H/Vs6w/1bPsP9Sza//Ucyu/0/Nrf9NzKz/S82s/0fOrP9G0a7/QdWv/0Le
tP9I6L7/Q8Ok/yitjP8yyKJgAAAAAAAAAAAAAAAA////AAAAAAAAAAAAAAAAAAAAAAAmwJlgG6iF/yK3
kP8k3q7/H9el/x7Pn/8tzKT/Q9Cs/1HQsP9Q0K7/TM6u/0nMrf9Hzaz/RMyp/0LNqf8+zqn/ONGo/zTV
qf833rD/O+S4/zvCof8orIv/MMSfYAAAAAAAAAAAAAAAAAAAAAD///8AAAAAAAAAAAAAAAAAAAAAAAAA
AAAkvpdgG6iE/xukgv8gy53/HNql/xzRn/8czJz/HcmZ/yXJnP8qyp7/Lcqg/yzLn/8nypz/JMqc/yTO
n/8l1KT/KN2r/y3Tpv8nq4n/JaqJ/yzAm2AAAAAAAAAAAAAAAAAAAAAAAAAAAP///wAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAato8wFKN/zxCScv8RnHn/DbqM/wjIlP8GyZT/BsaS/wbFkf8GxZH/B8WR/wfH
k/8IypX/DMmV/xG3jP8WoX3/Fph2/xqkgs8ft5EwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////AAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJVvYACGZM8Aelr/AHlZ/wCFX/8AiWL/AJlr/wCb
bP8AlGf/AI5k/wB/W/8AeFj/AHtb/wCHZd8ClXBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAD///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwSzAAaESAAGI/vwBf
Pd8AXTz/AF08/wBdPP8AXz3fAGJAvwBoRIAAcUswAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
/wD///8A////AP///wD///8A/+AD//+AAP/+AAA//AAAH/gAAA/wAAAH4AAAA+AAAAPAAAABwAAAAYAA
AACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAwAAAAcAAAAHgAAAD4AAAA/AA
AAf4AAAP/AAAH/4AAD//gAD//+AD//////8=
</value>
</data>
</root>

View File

@ -45,7 +45,7 @@
// //
this.ClientSize = new System.Drawing.Size(931, 468); this.ClientSize = new System.Drawing.Size(931, 468);
this.Controls.Add(this.backstageView); this.Controls.Add(this.backstageView);
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); //this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.MinimumSize = new System.Drawing.Size(947, 506); this.MinimumSize = new System.Drawing.Size(947, 506);
this.Name = "Setup"; this.Name = "Setup";
this.Text = "Setup"; this.Text = "Setup";

View File

@ -10,26 +10,62 @@ using ArdupilotMega.Controls.BackstageView;
namespace ArdupilotMega.GCSViews.ConfigurationView namespace ArdupilotMega.GCSViews.ConfigurationView
{ {
public partial class Setup : Form public partial class Setup : MyUserControl
{ {
public Setup() public Setup()
{ {
InitializeComponent(); InitializeComponent();
this.backstageView.AddPage(new BackstageView.BackstageViewPage(new ConfigRadioInput(), "Radio Calibration")); if (MainV2.comPort.BaseStream.IsOpen)
this.backstageView.AddPage(new BackstageView.BackstageViewPage(new ConfigFlightModes(), "Flight Modes")); {
this.backstageView.AddPage(new BackstageView.BackstageViewPage(new ConfigHardwareOptions(), "Hardware Options")); this.backstageView.AddPage(new BackstageView.BackstageViewPage(new ConfigRadioInput(), "Radio Calibration"));
this.backstageView.AddPage(new BackstageView.BackstageViewPage(new ConfigBatteryMonitoring(), "Battery Monitor")); this.backstageView.AddPage(new BackstageView.BackstageViewPage(new ConfigFlightModes(), "Flight Modes"));
this.backstageView.AddPage(new BackstageView.BackstageViewPage(new ConfigAccelerometerCalibrationQuad(), "ArduCopter Level")); this.backstageView.AddPage(new BackstageView.BackstageViewPage(new ConfigHardwareOptions(), "Hardware Options"));
this.backstageView.AddPage(new BackstageView.BackstageViewPage(new ConfigAccelerometerCalibrationPlane(), "ArduPlane Level")); this.backstageView.AddPage(new BackstageView.BackstageViewPage(new ConfigBatteryMonitoring(), "Battery Monitor"));
this.backstageView.AddPage(new BackstageView.BackstageViewPage(new ConfigTradHeli(), "Heli Setup"));
this.backstageView.AddPage(new BackstageView.BackstageViewPage(new ConfigRawParams(), "Raw params (Advanced)"));
/******************************HELI **************************/
if (MainV2.comPort.param["H_GYR_ENABLE"] != null) // heli
{
this.backstageView.AddPage(new BackstageView.BackstageViewPage(new ConfigAccelerometerCalibrationQuad(), "ArduCopter Level"));
this.backstageView.AddPage(new BackstageView.BackstageViewPage(new ConfigTradHeli(), "Heli Setup"));
var configpanel = new Controls.ConfigPanel();
configpanel.LoadXML("ArduCopterConfig.xml");
this.backstageView.AddPage(new BackstageView.BackstageViewPage(configpanel, "ArduCopter Config"));
this.backstageView.AddPage(new BackstageView.BackstageViewPage(new ConfigArducopter(), "OLD ArduCopter Config"));
}
/****************************** ArduCopter **************************/
else if (MainV2.cs.firmware == MainV2.Firmwares.ArduCopter2)
{
this.backstageView.AddPage(new BackstageView.BackstageViewPage(new ConfigAccelerometerCalibrationQuad(), "ArduCopter Level"));
var configpanel = new Controls.ConfigPanel();
configpanel.LoadXML("ArduCopterConfig.xml");
this.backstageView.AddPage(new BackstageView.BackstageViewPage(configpanel, "ArduCopter Config"));
this.backstageView.AddPage(new BackstageView.BackstageViewPage(new ConfigArducopter(), "OLD ArduCopter Config"));
}
/****************************** ArduPlane **************************/
else if (MainV2.cs.firmware == MainV2.Firmwares.ArduPlane)
{
this.backstageView.AddPage(new BackstageView.BackstageViewPage(new ConfigAccelerometerCalibrationPlane(), "ArduPlane Level"));
this.backstageView.AddPage(new BackstageView.BackstageViewPage(new ConfigArduplane(), "ArduPlane Config"));
}
this.backstageView.AddPage(new BackstageView.BackstageViewPage(new ConfigRawParams(), "Raw params (Adv)"));
}
this.backstageView.AddPage(new BackstageView.BackstageViewPage(new ArdupilotMega._3DRradio(), "3DR Radio")); this.backstageView.AddPage(new BackstageView.BackstageViewPage(new ArdupilotMega._3DRradio(), "3DR Radio"));
this.backstageView.AddPage(new BackstageView.BackstageViewPage(new ArdupilotMega.Antenna.Tracker(), "Antenna Tracker")); this.backstageView.AddPage(new BackstageView.BackstageViewPage(new ArdupilotMega.Antenna.Tracker(), "Antenna Tracker"));
this.backstageView.AddPage(new BackstageView.BackstageViewPage(new ConfigPlanner(), "Planner"));
this.backstageView.ActivatePage(backstageView.Pages[0]); this.backstageView.ActivatePage(backstageView.Pages[0]);
if (!MainV2.comPort.BaseStream.IsOpen) if (!MainV2.comPort.BaseStream.IsOpen)

View File

@ -8,6 +8,7 @@ using System.Xml;
using System.Net; using System.Net;
using log4net; using log4net;
using ArdupilotMega.Arduino; using ArdupilotMega.Arduino;
using ArdupilotMega.Utilities;
namespace ArdupilotMega.GCSViews namespace ArdupilotMega.GCSViews
{ {
@ -649,8 +650,16 @@ namespace ArdupilotMega.GCSViews
private void BUT_setup_Click(object sender, EventArgs e) private void BUT_setup_Click(object sender, EventArgs e)
{ {
Form temp = new GCSViews.ConfigurationView.Setup(); Form temp = new Form();
MyUserControl configview = new GCSViews.ConfigurationView.Setup();
temp.Controls.Add(configview);
ThemeManager.ApplyThemeTo(temp); ThemeManager.ApplyThemeTo(temp);
// fix title
temp.Text = configview.Name;
// fix size
temp.Size = configview.Size;
configview.Dock = DockStyle.Fill;
temp.FormClosing += configview.Close;
temp.ShowDialog(); temp.ShowDialog();
} }

View File

@ -152,7 +152,9 @@ namespace ArdupilotMega.GCSViews
CMB_action.DataSource = list; CMB_action.DataSource = list;
CMB_modes.DataSource = Enum.GetNames(typeof(Common.apmmodes)); CMB_modes.DataSource = Common.getModesList();
CMB_modes.ValueMember = "Key";
CMB_modes.DisplayMember = "Value";
CMB_setwp.SelectedIndex = 0; CMB_setwp.SelectedIndex = 0;
@ -288,7 +290,7 @@ namespace ArdupilotMega.GCSViews
comPort.requestDatastream((byte)ArdupilotMega.MAVLink.MAV_DATA_STREAM.RC_CHANNELS, MainV2.cs.raterc); // request rc info comPort.requestDatastream((byte)ArdupilotMega.MAVLink.MAV_DATA_STREAM.RC_CHANNELS, MainV2.cs.raterc); // request rc info
} }
catch { } catch { }
lastdata = DateTime.Now.AddSeconds(12); // prevent flooding lastdata = DateTime.Now.AddSeconds(120); // prevent flooding
} }
if (!MainV2.comPort.logreadmode) if (!MainV2.comPort.logreadmode)
@ -408,6 +410,11 @@ namespace ArdupilotMega.GCSViews
if (tracklast.AddSeconds(1) < DateTime.Now) if (tracklast.AddSeconds(1) < DateTime.Now)
{ {
if (MainV2.config["CHK_maprotation"] != null && MainV2.config["CHK_maprotation"].ToString() == "True")
{
setMapBearing();
}
gMapControl1.HoldInvalidation = true; gMapControl1.HoldInvalidation = true;
while (gMapControl1.inOnPaint == true) while (gMapControl1.inOnPaint == true)
@ -423,7 +430,6 @@ namespace ArdupilotMega.GCSViews
trackPoints.Add(new PointLatLng(MainV2.cs.lat, MainV2.cs.lng)); trackPoints.Add(new PointLatLng(MainV2.cs.lat, MainV2.cs.lng));
// if (CB_tuning.Checked == false) // draw if in view // if (CB_tuning.Checked == false) // draw if in view
{ {
@ -514,6 +520,14 @@ namespace ArdupilotMega.GCSViews
Console.WriteLine("FD Main loop exit"); Console.WriteLine("FD Main loop exit");
} }
private void setMapBearing()
{
this.Invoke((System.Windows.Forms.MethodInvoker)delegate()
{
gMapControl1.Bearing = (int)MainV2.cs.yaw;
});
}
// to prevent cross thread calls while in a draw and exception // to prevent cross thread calls while in a draw and exception
private void updateClearRoutes() private void updateClearRoutes()

View File

@ -208,7 +208,7 @@
<value>hud1</value> <value>hud1</value>
</data> </data>
<data name="&gt;&gt;hud1.Type" xml:space="preserve"> <data name="&gt;&gt;hud1.Type" xml:space="preserve">
<value>hud.HUD, ArdupilotMegaPlanner, Version=1.1.4497.35992, Culture=neutral, PublicKeyToken=null</value> <value>ArdupilotMega.Controls.HUD, ArdupilotMegaPlanner, Version=1.1.4498.22301, Culture=neutral, PublicKeyToken=null</value>
</data> </data>
<data name="&gt;&gt;hud1.Parent" xml:space="preserve"> <data name="&gt;&gt;hud1.Parent" xml:space="preserve">
<value>SubMainLeft.Panel1</value> <value>SubMainLeft.Panel1</value>
@ -247,7 +247,7 @@
<value>BUT_script</value> <value>BUT_script</value>
</data> </data>
<data name="&gt;&gt;BUT_script.Type" xml:space="preserve"> <data name="&gt;&gt;BUT_script.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner, Version=1.1.4497.35992, Culture=neutral, PublicKeyToken=null</value> <value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner, Version=1.1.4498.22301, Culture=neutral, PublicKeyToken=null</value>
</data> </data>
<data name="&gt;&gt;BUT_script.Parent" xml:space="preserve"> <data name="&gt;&gt;BUT_script.Parent" xml:space="preserve">
<value>tabActions</value> <value>tabActions</value>
@ -280,7 +280,7 @@
<value>BUT_joystick</value> <value>BUT_joystick</value>
</data> </data>
<data name="&gt;&gt;BUT_joystick.Type" xml:space="preserve"> <data name="&gt;&gt;BUT_joystick.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner, Version=1.1.4497.35992, Culture=neutral, PublicKeyToken=null</value> <value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner, Version=1.1.4498.22301, Culture=neutral, PublicKeyToken=null</value>
</data> </data>
<data name="&gt;&gt;BUT_joystick.Parent" xml:space="preserve"> <data name="&gt;&gt;BUT_joystick.Parent" xml:space="preserve">
<value>tabActions</value> <value>tabActions</value>
@ -310,7 +310,7 @@
<value>BUT_quickmanual</value> <value>BUT_quickmanual</value>
</data> </data>
<data name="&gt;&gt;BUT_quickmanual.Type" xml:space="preserve"> <data name="&gt;&gt;BUT_quickmanual.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner, Version=1.1.4497.35992, Culture=neutral, PublicKeyToken=null</value> <value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner, Version=1.1.4498.22301, Culture=neutral, PublicKeyToken=null</value>
</data> </data>
<data name="&gt;&gt;BUT_quickmanual.Parent" xml:space="preserve"> <data name="&gt;&gt;BUT_quickmanual.Parent" xml:space="preserve">
<value>tabActions</value> <value>tabActions</value>
@ -340,7 +340,7 @@
<value>BUT_quickrtl</value> <value>BUT_quickrtl</value>
</data> </data>
<data name="&gt;&gt;BUT_quickrtl.Type" xml:space="preserve"> <data name="&gt;&gt;BUT_quickrtl.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner, Version=1.1.4497.35992, Culture=neutral, PublicKeyToken=null</value> <value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner, Version=1.1.4498.22301, Culture=neutral, PublicKeyToken=null</value>
</data> </data>
<data name="&gt;&gt;BUT_quickrtl.Parent" xml:space="preserve"> <data name="&gt;&gt;BUT_quickrtl.Parent" xml:space="preserve">
<value>tabActions</value> <value>tabActions</value>
@ -370,7 +370,7 @@
<value>BUT_quickauto</value> <value>BUT_quickauto</value>
</data> </data>
<data name="&gt;&gt;BUT_quickauto.Type" xml:space="preserve"> <data name="&gt;&gt;BUT_quickauto.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner, Version=1.1.4497.35992, Culture=neutral, PublicKeyToken=null</value> <value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner, Version=1.1.4498.22301, Culture=neutral, PublicKeyToken=null</value>
</data> </data>
<data name="&gt;&gt;BUT_quickauto.Parent" xml:space="preserve"> <data name="&gt;&gt;BUT_quickauto.Parent" xml:space="preserve">
<value>tabActions</value> <value>tabActions</value>
@ -424,7 +424,7 @@
<value>BUT_setwp</value> <value>BUT_setwp</value>
</data> </data>
<data name="&gt;&gt;BUT_setwp.Type" xml:space="preserve"> <data name="&gt;&gt;BUT_setwp.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner, Version=1.1.4497.35992, Culture=neutral, PublicKeyToken=null</value> <value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner, Version=1.1.4498.22301, Culture=neutral, PublicKeyToken=null</value>
</data> </data>
<data name="&gt;&gt;BUT_setwp.Parent" xml:space="preserve"> <data name="&gt;&gt;BUT_setwp.Parent" xml:space="preserve">
<value>tabActions</value> <value>tabActions</value>
@ -475,7 +475,7 @@
<value>BUT_setmode</value> <value>BUT_setmode</value>
</data> </data>
<data name="&gt;&gt;BUT_setmode.Type" xml:space="preserve"> <data name="&gt;&gt;BUT_setmode.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner, Version=1.1.4497.35992, Culture=neutral, PublicKeyToken=null</value> <value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner, Version=1.1.4498.22301, Culture=neutral, PublicKeyToken=null</value>
</data> </data>
<data name="&gt;&gt;BUT_setmode.Parent" xml:space="preserve"> <data name="&gt;&gt;BUT_setmode.Parent" xml:space="preserve">
<value>tabActions</value> <value>tabActions</value>
@ -505,7 +505,7 @@
<value>BUT_clear_track</value> <value>BUT_clear_track</value>
</data> </data>
<data name="&gt;&gt;BUT_clear_track.Type" xml:space="preserve"> <data name="&gt;&gt;BUT_clear_track.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner, Version=1.1.4497.35992, Culture=neutral, PublicKeyToken=null</value> <value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner, Version=1.1.4498.22301, Culture=neutral, PublicKeyToken=null</value>
</data> </data>
<data name="&gt;&gt;BUT_clear_track.Parent" xml:space="preserve"> <data name="&gt;&gt;BUT_clear_track.Parent" xml:space="preserve">
<value>tabActions</value> <value>tabActions</value>
@ -556,7 +556,7 @@
<value>BUT_Homealt</value> <value>BUT_Homealt</value>
</data> </data>
<data name="&gt;&gt;BUT_Homealt.Type" xml:space="preserve"> <data name="&gt;&gt;BUT_Homealt.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner, Version=1.1.4497.35992, Culture=neutral, PublicKeyToken=null</value> <value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner, Version=1.1.4498.22301, Culture=neutral, PublicKeyToken=null</value>
</data> </data>
<data name="&gt;&gt;BUT_Homealt.Parent" xml:space="preserve"> <data name="&gt;&gt;BUT_Homealt.Parent" xml:space="preserve">
<value>tabActions</value> <value>tabActions</value>
@ -586,7 +586,7 @@
<value>BUT_RAWSensor</value> <value>BUT_RAWSensor</value>
</data> </data>
<data name="&gt;&gt;BUT_RAWSensor.Type" xml:space="preserve"> <data name="&gt;&gt;BUT_RAWSensor.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner, Version=1.1.4497.35992, Culture=neutral, PublicKeyToken=null</value> <value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner, Version=1.1.4498.22301, Culture=neutral, PublicKeyToken=null</value>
</data> </data>
<data name="&gt;&gt;BUT_RAWSensor.Parent" xml:space="preserve"> <data name="&gt;&gt;BUT_RAWSensor.Parent" xml:space="preserve">
<value>tabActions</value> <value>tabActions</value>
@ -616,7 +616,7 @@
<value>BUTrestartmission</value> <value>BUTrestartmission</value>
</data> </data>
<data name="&gt;&gt;BUTrestartmission.Type" xml:space="preserve"> <data name="&gt;&gt;BUTrestartmission.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner, Version=1.1.4497.35992, Culture=neutral, PublicKeyToken=null</value> <value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner, Version=1.1.4498.22301, Culture=neutral, PublicKeyToken=null</value>
</data> </data>
<data name="&gt;&gt;BUTrestartmission.Parent" xml:space="preserve"> <data name="&gt;&gt;BUTrestartmission.Parent" xml:space="preserve">
<value>tabActions</value> <value>tabActions</value>
@ -646,7 +646,7 @@
<value>BUTactiondo</value> <value>BUTactiondo</value>
</data> </data>
<data name="&gt;&gt;BUTactiondo.Type" xml:space="preserve"> <data name="&gt;&gt;BUTactiondo.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner, Version=1.1.4497.35992, Culture=neutral, PublicKeyToken=null</value> <value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner, Version=1.1.4498.22301, Culture=neutral, PublicKeyToken=null</value>
</data> </data>
<data name="&gt;&gt;BUTactiondo.Parent" xml:space="preserve"> <data name="&gt;&gt;BUTactiondo.Parent" xml:space="preserve">
<value>tabActions</value> <value>tabActions</value>
@ -700,7 +700,7 @@
<value>Gvspeed</value> <value>Gvspeed</value>
</data> </data>
<data name="&gt;&gt;Gvspeed.Type" xml:space="preserve"> <data name="&gt;&gt;Gvspeed.Type" xml:space="preserve">
<value>AGaugeApp.AGauge, ArdupilotMegaPlanner, Version=1.1.4497.35992, Culture=neutral, PublicKeyToken=null</value> <value>AGaugeApp.AGauge, ArdupilotMegaPlanner, Version=1.1.4498.22301, Culture=neutral, PublicKeyToken=null</value>
</data> </data>
<data name="&gt;&gt;Gvspeed.Parent" xml:space="preserve"> <data name="&gt;&gt;Gvspeed.Parent" xml:space="preserve">
<value>tabGauges</value> <value>tabGauges</value>
@ -730,7 +730,7 @@
<value>Gheading</value> <value>Gheading</value>
</data> </data>
<data name="&gt;&gt;Gheading.Type" xml:space="preserve"> <data name="&gt;&gt;Gheading.Type" xml:space="preserve">
<value>AGaugeApp.AGauge, ArdupilotMegaPlanner, Version=1.1.4497.35992, Culture=neutral, PublicKeyToken=null</value> <value>AGaugeApp.AGauge, ArdupilotMegaPlanner, Version=1.1.4498.22301, Culture=neutral, PublicKeyToken=null</value>
</data> </data>
<data name="&gt;&gt;Gheading.Parent" xml:space="preserve"> <data name="&gt;&gt;Gheading.Parent" xml:space="preserve">
<value>tabGauges</value> <value>tabGauges</value>
@ -760,7 +760,7 @@
<value>Galt</value> <value>Galt</value>
</data> </data>
<data name="&gt;&gt;Galt.Type" xml:space="preserve"> <data name="&gt;&gt;Galt.Type" xml:space="preserve">
<value>AGaugeApp.AGauge, ArdupilotMegaPlanner, Version=1.1.4497.35992, Culture=neutral, PublicKeyToken=null</value> <value>AGaugeApp.AGauge, ArdupilotMegaPlanner, Version=1.1.4498.22301, Culture=neutral, PublicKeyToken=null</value>
</data> </data>
<data name="&gt;&gt;Galt.Parent" xml:space="preserve"> <data name="&gt;&gt;Galt.Parent" xml:space="preserve">
<value>tabGauges</value> <value>tabGauges</value>
@ -793,7 +793,7 @@
<value>Gspeed</value> <value>Gspeed</value>
</data> </data>
<data name="&gt;&gt;Gspeed.Type" xml:space="preserve"> <data name="&gt;&gt;Gspeed.Type" xml:space="preserve">
<value>AGaugeApp.AGauge, ArdupilotMegaPlanner, Version=1.1.4497.35992, Culture=neutral, PublicKeyToken=null</value> <value>AGaugeApp.AGauge, ArdupilotMegaPlanner, Version=1.1.4498.22301, Culture=neutral, PublicKeyToken=null</value>
</data> </data>
<data name="&gt;&gt;Gspeed.Parent" xml:space="preserve"> <data name="&gt;&gt;Gspeed.Parent" xml:space="preserve">
<value>tabGauges</value> <value>tabGauges</value>
@ -874,7 +874,7 @@
<value>lbl_logpercent</value> <value>lbl_logpercent</value>
</data> </data>
<data name="&gt;&gt;lbl_logpercent.Type" xml:space="preserve"> <data name="&gt;&gt;lbl_logpercent.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.MyLabel, ArdupilotMegaPlanner, Version=1.1.4497.35992, Culture=neutral, PublicKeyToken=null</value> <value>ArdupilotMega.Controls.MyLabel, ArdupilotMegaPlanner, Version=1.1.4498.22301, Culture=neutral, PublicKeyToken=null</value>
</data> </data>
<data name="&gt;&gt;lbl_logpercent.Parent" xml:space="preserve"> <data name="&gt;&gt;lbl_logpercent.Parent" xml:space="preserve">
<value>tabTLogs</value> <value>tabTLogs</value>
@ -925,7 +925,7 @@
<value>BUT_log2kml</value> <value>BUT_log2kml</value>
</data> </data>
<data name="&gt;&gt;BUT_log2kml.Type" xml:space="preserve"> <data name="&gt;&gt;BUT_log2kml.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner, Version=1.1.4497.35992, Culture=neutral, PublicKeyToken=null</value> <value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner, Version=1.1.4498.22301, Culture=neutral, PublicKeyToken=null</value>
</data> </data>
<data name="&gt;&gt;BUT_log2kml.Parent" xml:space="preserve"> <data name="&gt;&gt;BUT_log2kml.Parent" xml:space="preserve">
<value>tabTLogs</value> <value>tabTLogs</value>
@ -976,7 +976,7 @@
<value>BUT_playlog</value> <value>BUT_playlog</value>
</data> </data>
<data name="&gt;&gt;BUT_playlog.Type" xml:space="preserve"> <data name="&gt;&gt;BUT_playlog.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner, Version=1.1.4497.35992, Culture=neutral, PublicKeyToken=null</value> <value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner, Version=1.1.4498.22301, Culture=neutral, PublicKeyToken=null</value>
</data> </data>
<data name="&gt;&gt;BUT_playlog.Parent" xml:space="preserve"> <data name="&gt;&gt;BUT_playlog.Parent" xml:space="preserve">
<value>tabTLogs</value> <value>tabTLogs</value>
@ -1003,7 +1003,7 @@
<value>BUT_loadtelem</value> <value>BUT_loadtelem</value>
</data> </data>
<data name="&gt;&gt;BUT_loadtelem.Type" xml:space="preserve"> <data name="&gt;&gt;BUT_loadtelem.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner, Version=1.1.4497.35992, Culture=neutral, PublicKeyToken=null</value> <value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner, Version=1.1.4498.22301, Culture=neutral, PublicKeyToken=null</value>
</data> </data>
<data name="&gt;&gt;BUT_loadtelem.Parent" xml:space="preserve"> <data name="&gt;&gt;BUT_loadtelem.Parent" xml:space="preserve">
<value>tabTLogs</value> <value>tabTLogs</value>
@ -1192,7 +1192,7 @@
<value>lbl_hdop</value> <value>lbl_hdop</value>
</data> </data>
<data name="&gt;&gt;lbl_hdop.Type" xml:space="preserve"> <data name="&gt;&gt;lbl_hdop.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.MyLabel, ArdupilotMegaPlanner, Version=1.1.4497.35992, Culture=neutral, PublicKeyToken=null</value> <value>ArdupilotMega.Controls.MyLabel, ArdupilotMegaPlanner, Version=1.1.4498.22301, Culture=neutral, PublicKeyToken=null</value>
</data> </data>
<data name="&gt;&gt;lbl_hdop.Parent" xml:space="preserve"> <data name="&gt;&gt;lbl_hdop.Parent" xml:space="preserve">
<value>splitContainer1.Panel2</value> <value>splitContainer1.Panel2</value>
@ -1225,7 +1225,7 @@
<value>lbl_sats</value> <value>lbl_sats</value>
</data> </data>
<data name="&gt;&gt;lbl_sats.Type" xml:space="preserve"> <data name="&gt;&gt;lbl_sats.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.MyLabel, ArdupilotMegaPlanner, Version=1.1.4497.35992, Culture=neutral, PublicKeyToken=null</value> <value>ArdupilotMega.Controls.MyLabel, ArdupilotMegaPlanner, Version=1.1.4498.22301, Culture=neutral, PublicKeyToken=null</value>
</data> </data>
<data name="&gt;&gt;lbl_sats.Parent" xml:space="preserve"> <data name="&gt;&gt;lbl_sats.Parent" xml:space="preserve">
<value>splitContainer1.Panel2</value> <value>splitContainer1.Panel2</value>
@ -1255,7 +1255,7 @@
<value>lbl_winddir</value> <value>lbl_winddir</value>
</data> </data>
<data name="&gt;&gt;lbl_winddir.Type" xml:space="preserve"> <data name="&gt;&gt;lbl_winddir.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.MyLabel, ArdupilotMegaPlanner, Version=1.1.4497.35992, Culture=neutral, PublicKeyToken=null</value> <value>ArdupilotMega.Controls.MyLabel, ArdupilotMegaPlanner, Version=1.1.4498.22301, Culture=neutral, PublicKeyToken=null</value>
</data> </data>
<data name="&gt;&gt;lbl_winddir.Parent" xml:space="preserve"> <data name="&gt;&gt;lbl_winddir.Parent" xml:space="preserve">
<value>splitContainer1.Panel2</value> <value>splitContainer1.Panel2</value>
@ -1285,7 +1285,7 @@
<value>lbl_windvel</value> <value>lbl_windvel</value>
</data> </data>
<data name="&gt;&gt;lbl_windvel.Type" xml:space="preserve"> <data name="&gt;&gt;lbl_windvel.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.MyLabel, ArdupilotMegaPlanner, Version=1.1.4497.35992, Culture=neutral, PublicKeyToken=null</value> <value>ArdupilotMega.Controls.MyLabel, ArdupilotMegaPlanner, Version=1.1.4498.22301, Culture=neutral, PublicKeyToken=null</value>
</data> </data>
<data name="&gt;&gt;lbl_windvel.Parent" xml:space="preserve"> <data name="&gt;&gt;lbl_windvel.Parent" xml:space="preserve">
<value>splitContainer1.Panel2</value> <value>splitContainer1.Panel2</value>
@ -1457,7 +1457,7 @@
<value>gMapControl1</value> <value>gMapControl1</value>
</data> </data>
<data name="&gt;&gt;gMapControl1.Type" xml:space="preserve"> <data name="&gt;&gt;gMapControl1.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.myGMAP, ArdupilotMegaPlanner, Version=1.1.4497.35992, Culture=neutral, PublicKeyToken=null</value> <value>ArdupilotMega.Controls.myGMAP, ArdupilotMegaPlanner, Version=1.1.4498.22301, Culture=neutral, PublicKeyToken=null</value>
</data> </data>
<data name="&gt;&gt;gMapControl1.Parent" xml:space="preserve"> <data name="&gt;&gt;gMapControl1.Parent" xml:space="preserve">
<value>splitContainer1.Panel2</value> <value>splitContainer1.Panel2</value>
@ -1520,7 +1520,7 @@
<value>TXT_lat</value> <value>TXT_lat</value>
</data> </data>
<data name="&gt;&gt;TXT_lat.Type" xml:space="preserve"> <data name="&gt;&gt;TXT_lat.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.MyLabel, ArdupilotMegaPlanner, Version=1.1.4497.35992, Culture=neutral, PublicKeyToken=null</value> <value>ArdupilotMega.Controls.MyLabel, ArdupilotMegaPlanner, Version=1.1.4498.22301, Culture=neutral, PublicKeyToken=null</value>
</data> </data>
<data name="&gt;&gt;TXT_lat.Parent" xml:space="preserve"> <data name="&gt;&gt;TXT_lat.Parent" xml:space="preserve">
<value>panel1</value> <value>panel1</value>
@ -1577,7 +1577,7 @@
<value>label1</value> <value>label1</value>
</data> </data>
<data name="&gt;&gt;label1.Type" xml:space="preserve"> <data name="&gt;&gt;label1.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.MyLabel, ArdupilotMegaPlanner, Version=1.1.4497.35992, Culture=neutral, PublicKeyToken=null</value> <value>ArdupilotMega.Controls.MyLabel, ArdupilotMegaPlanner, Version=1.1.4498.22301, Culture=neutral, PublicKeyToken=null</value>
</data> </data>
<data name="&gt;&gt;label1.Parent" xml:space="preserve"> <data name="&gt;&gt;label1.Parent" xml:space="preserve">
<value>panel1</value> <value>panel1</value>
@ -1607,7 +1607,7 @@
<value>TXT_long</value> <value>TXT_long</value>
</data> </data>
<data name="&gt;&gt;TXT_long.Type" xml:space="preserve"> <data name="&gt;&gt;TXT_long.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.MyLabel, ArdupilotMegaPlanner, Version=1.1.4497.35992, Culture=neutral, PublicKeyToken=null</value> <value>ArdupilotMega.Controls.MyLabel, ArdupilotMegaPlanner, Version=1.1.4498.22301, Culture=neutral, PublicKeyToken=null</value>
</data> </data>
<data name="&gt;&gt;TXT_long.Parent" xml:space="preserve"> <data name="&gt;&gt;TXT_long.Parent" xml:space="preserve">
<value>panel1</value> <value>panel1</value>
@ -1637,7 +1637,7 @@
<value>TXT_alt</value> <value>TXT_alt</value>
</data> </data>
<data name="&gt;&gt;TXT_alt.Type" xml:space="preserve"> <data name="&gt;&gt;TXT_alt.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.MyLabel, ArdupilotMegaPlanner, Version=1.1.4497.35992, Culture=neutral, PublicKeyToken=null</value> <value>ArdupilotMega.Controls.MyLabel, ArdupilotMegaPlanner, Version=1.1.4498.22301, Culture=neutral, PublicKeyToken=null</value>
</data> </data>
<data name="&gt;&gt;TXT_alt.Parent" xml:space="preserve"> <data name="&gt;&gt;TXT_alt.Parent" xml:space="preserve">
<value>panel1</value> <value>panel1</value>
@ -1838,7 +1838,7 @@
<value>label6</value> <value>label6</value>
</data> </data>
<data name="&gt;&gt;label6.Type" xml:space="preserve"> <data name="&gt;&gt;label6.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.MyLabel, ArdupilotMegaPlanner, Version=1.1.4497.35992, Culture=neutral, PublicKeyToken=null</value> <value>ArdupilotMega.Controls.MyLabel, ArdupilotMegaPlanner, Version=1.1.4498.22301, Culture=neutral, PublicKeyToken=null</value>
</data> </data>
<data name="&gt;&gt;label6.Parent" xml:space="preserve"> <data name="&gt;&gt;label6.Parent" xml:space="preserve">
<value>$this</value> <value>$this</value>
@ -1916,6 +1916,6 @@
<value>FlightData</value> <value>FlightData</value>
</data> </data>
<data name="&gt;&gt;$this.Type" xml:space="preserve"> <data name="&gt;&gt;$this.Type" xml:space="preserve">
<value>System.Windows.Forms.MyUserControl, ArdupilotMegaPlanner, Version=1.1.4497.35992, Culture=neutral, PublicKeyToken=null</value> <value>System.Windows.Forms.MyUserControl, ArdupilotMegaPlanner, Version=1.1.4498.22301, Culture=neutral, PublicKeyToken=null</value>
</data> </data>
</root> </root>

View File

@ -22,7 +22,7 @@ using log4net;
using SharpKml.Base; using SharpKml.Base;
using SharpKml.Dom; using SharpKml.Dom;
using ArdupilotMega.Controls; using ArdupilotMega.Controls;
using ArdupilotMega.Utilities;
namespace ArdupilotMega.GCSViews namespace ArdupilotMega.GCSViews

View File

@ -9,7 +9,7 @@ using System.Windows.Forms;
using ArdupilotMega; using ArdupilotMega;
using System.IO.Ports; using System.IO.Ports;
using ArdupilotMega.Comms; using ArdupilotMega.Comms;
using ArdupilotMega.Utilities;
namespace ArdupilotMega.GCSViews namespace ArdupilotMega.GCSViews
{ {

View File

@ -13,6 +13,7 @@ using ArdupilotMega.Controls;
using System.ComponentModel; using System.ComponentModel;
using log4net; using log4net;
using ArdupilotMega.Comms; using ArdupilotMega.Comms;
using ArdupilotMega.Utilities;
namespace ArdupilotMega namespace ArdupilotMega
{ {
@ -678,7 +679,7 @@ namespace ArdupilotMega
continue; continue;
} }
log.Info(DateTime.Now.Millisecond + " got param " + (par.param_index) + " of " + (par.param_count - 2) + " name: " + paramID); log.Info(DateTime.Now.Millisecond + " got param " + (par.param_index) + " of " + (par.param_count - 2) + " name: " + paramID );
modifyParamForDisplay(true, paramID, ref par.param_value); modifyParamForDisplay(true, paramID, ref par.param_value);
param[paramID] = (par.param_value); param[paramID] = (par.param_value);
@ -1027,7 +1028,7 @@ namespace ArdupilotMega
public void requestDatastream(byte id, byte hzrate) public void requestDatastream(byte id, byte hzrate)
{ {
/*
double pps = 0; double pps = 0;
switch (id) switch (id)
@ -1118,7 +1119,7 @@ namespace ArdupilotMega
{ {
return; return;
} }
*/
log.InfoFormat("Request stream {0} at {1} hz", Enum.Parse(typeof(MAV_DATA_STREAM), id.ToString()), hzrate); log.InfoFormat("Request stream {0} at {1} hz", Enum.Parse(typeof(MAV_DATA_STREAM), id.ToString()), hzrate);
getDatastream(id, hzrate); getDatastream(id, hzrate);
@ -1148,7 +1149,7 @@ namespace ArdupilotMega
{ {
return true; return true;
} }
return false; return false;
} }

View File

@ -2,9 +2,7 @@
using System.Collections.Generic; using System.Collections.Generic;
using System.ComponentModel; using System.ComponentModel;
using System.Configuration; using System.Configuration;
using System.Data;
using System.Drawing; using System.Drawing;
using System.Linq;
using System.Text; using System.Text;
using System.Windows.Forms; using System.Windows.Forms;
using System.IO; using System.IO;
@ -12,15 +10,13 @@ using System.Xml;
using System.Collections; using System.Collections;
using System.Net; using System.Net;
using System.Text.RegularExpressions; using System.Text.RegularExpressions;
using System.Web;
using System.Diagnostics; using System.Diagnostics;
using System.Runtime.InteropServices; using System.Runtime.InteropServices;
using System.Speech.Synthesis; using System.Speech.Synthesis;
using System.Globalization; using System.Globalization;
using System.Threading; using System.Threading;
using System.Net.Sockets; using System.Net.Sockets;
using ArdupilotMega.Utilities; using ArdupilotMega.Utilities;
using ArdupilotMega.Utilities.Constants;
using IronPython.Hosting; using IronPython.Hosting;
using log4net; using log4net;
using ArdupilotMega.Controls; using ArdupilotMega.Controls;
@ -129,8 +125,8 @@ namespace ArdupilotMega
/// </summary> /// </summary>
GCSViews.FlightData FlightData; GCSViews.FlightData FlightData;
GCSViews.FlightPlanner FlightPlanner; GCSViews.FlightPlanner FlightPlanner;
GCSViews.Configuration Configuration; //GCSViews.Configuration Configuration;
//GCSViews.ConfigurationView.Configuration Configuration; GCSViews.ConfigurationView.Setup Configuration;
GCSViews.Simulation Simulation; GCSViews.Simulation Simulation;
GCSViews.Firmware Firmware; GCSViews.Firmware Firmware;
GCSViews.Terminal Terminal; GCSViews.Terminal Terminal;
@ -428,23 +424,19 @@ namespace ArdupilotMega
catch { } catch { }
} }
Configuration = new GCSViews.Configuration(); //Configuration = new GCSViews.Configuration();
//Configuration = new GCSViews.ConfigurationView.Configuration(); Configuration = new GCSViews.ConfigurationView.Setup();
UserControl temp = Configuration; UserControl temp = Configuration;
ThemeManager.ApplyThemeTo(temp); ThemeManager.ApplyThemeTo(temp);
//temp.Anchor = AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right | AnchorStyles.Top;
temp.Location = new Point(0, 0); temp.Location = new Point(0, 0);
temp.Dock = DockStyle.Fill; temp.Dock = DockStyle.Fill;
temp.Size = MyView.Size; temp.Size = MyView.Size;
//temp.Parent = MyView;
MyView.Controls.Add(temp); MyView.Controls.Add(temp);
} }
@ -1738,11 +1730,18 @@ namespace ArdupilotMega
static void DoUpdateWorker_DoWork(object sender, Controls.ProgressWorkerEventArgs e) static void DoUpdateWorker_DoWork(object sender, Controls.ProgressWorkerEventArgs e)
{ {
((ProgressReporterDialogue)sender).UpdateProgressAndStatus(-1, "Getting Base URL"); // TODO: Is this the right place?
MainV2.updateCheckMain((ProgressReporterDialogue)sender); #region Fetch Parameter Meta Data
var progressReporterDialogue = ((ProgressReporterDialogue) sender);
progressReporterDialogue.UpdateProgressAndStatus(-1, "Getting Updated Parameters");
// TODO: Is this the right place? ParameterMetaDataParser.GetParameterInformation();
ParameterMetaDataParser.GetParameterInformation();
#endregion Fetch Parameter Meta Data
progressReporterDialogue.UpdateProgressAndStatus(-1, "Getting Base URL");
MainV2.updateCheckMain(progressReporterDialogue);
} }
private static bool updateCheck(ProgressReporterDialogue frmProgressReporter, string baseurl, string subdir) private static bool updateCheck(ProgressReporterDialogue frmProgressReporter, string baseurl, string subdir)
@ -2043,7 +2042,7 @@ namespace ArdupilotMega
cfg.LoadXML("ArduCopterConfig.xml"); cfg.LoadXML("ArduCopterConfig.xml");
cfg.ShowDialog(); //cfg.ShowDialog();
return true; return true;
} }

View File

@ -26,6 +26,8 @@ using System.Xml;
using log4net; using log4net;
using ZedGraph; // Graphs using ZedGraph; // Graphs
using ArdupilotMega.Utilities;
using System.CodeDom.Compiler; using System.CodeDom.Compiler;
namespace ArdupilotMega namespace ArdupilotMega

View File

@ -60,7 +60,7 @@ namespace ArdupilotMega
static void Application_Idle(object sender, EventArgs e) static void Application_Idle(object sender, EventArgs e)
{ {
Console.Write("Idle\r"); // Console.Write("Idle\r");
} }
static void Application_ThreadException(object sender, System.Threading.ThreadExceptionEventArgs e) static void Application_ThreadException(object sender, System.Threading.ThreadExceptionEventArgs e)

View File

@ -214,10 +214,6 @@ namespace ArdupilotMega
{ {
if (sw != null) if (sw != null)
sw.Close(); sw.Close();
MainV2.cs.ratesensors = 3; // hardcode 3 hz
comPort.requestDatastream((byte)ArdupilotMega.MAVLink.MAV_DATA_STREAM.RAW_SENSORS, MainV2.cs.ratesensors); // request raw sensor
} }
catch { } catch { }
} }

View File

@ -294,7 +294,6 @@
// //
// RS4 // RS4
// //
resources.ApplyResources(this.RS4, "RS4");
this.RS4.FormattingEnabled = true; this.RS4.FormattingEnabled = true;
this.RS4.Items.AddRange(new object[] { this.RS4.Items.AddRange(new object[] {
resources.GetString("RS4.Items"), resources.GetString("RS4.Items"),
@ -318,12 +317,12 @@
resources.GetString("RS4.Items18"), resources.GetString("RS4.Items18"),
resources.GetString("RS4.Items19"), resources.GetString("RS4.Items19"),
resources.GetString("RS4.Items20")}); resources.GetString("RS4.Items20")});
resources.ApplyResources(this.RS4, "RS4");
this.RS4.Name = "RS4"; this.RS4.Name = "RS4";
this.toolTip1.SetToolTip(this.RS4, resources.GetString("RS4.ToolTip")); this.toolTip1.SetToolTip(this.RS4, resources.GetString("RS4.ToolTip"));
// //
// RS3 // RS3
// //
resources.ApplyResources(this.RS3, "RS3");
this.RS3.FormattingEnabled = true; this.RS3.FormattingEnabled = true;
this.RS3.Items.AddRange(new object[] { this.RS3.Items.AddRange(new object[] {
resources.GetString("RS3.Items"), resources.GetString("RS3.Items"),
@ -356,12 +355,12 @@
resources.GetString("RS3.Items27"), resources.GetString("RS3.Items27"),
resources.GetString("RS3.Items28"), resources.GetString("RS3.Items28"),
resources.GetString("RS3.Items29")}); resources.GetString("RS3.Items29")});
resources.ApplyResources(this.RS3, "RS3");
this.RS3.Name = "RS3"; this.RS3.Name = "RS3";
this.toolTip1.SetToolTip(this.RS3, resources.GetString("RS3.ToolTip")); this.toolTip1.SetToolTip(this.RS3, resources.GetString("RS3.ToolTip"));
// //
// RS2 // RS2
// //
resources.ApplyResources(this.RS2, "RS2");
this.RS2.FormattingEnabled = true; this.RS2.FormattingEnabled = true;
this.RS2.Items.AddRange(new object[] { this.RS2.Items.AddRange(new object[] {
resources.GetString("RS2.Items"), resources.GetString("RS2.Items"),
@ -374,12 +373,12 @@
resources.GetString("RS2.Items7"), resources.GetString("RS2.Items7"),
resources.GetString("RS2.Items8"), resources.GetString("RS2.Items8"),
resources.GetString("RS2.Items9")}); resources.GetString("RS2.Items9")});
resources.ApplyResources(this.RS2, "RS2");
this.RS2.Name = "RS2"; this.RS2.Name = "RS2";
this.toolTip1.SetToolTip(this.RS2, resources.GetString("RS2.ToolTip")); this.toolTip1.SetToolTip(this.RS2, resources.GetString("RS2.ToolTip"));
// //
// RS1 // RS1
// //
resources.ApplyResources(this.RS1, "RS1");
this.RS1.FormattingEnabled = true; this.RS1.FormattingEnabled = true;
this.RS1.Items.AddRange(new object[] { this.RS1.Items.AddRange(new object[] {
resources.GetString("RS1.Items"), resources.GetString("RS1.Items"),
@ -391,6 +390,7 @@
resources.GetString("RS1.Items6"), resources.GetString("RS1.Items6"),
resources.GetString("RS1.Items7"), resources.GetString("RS1.Items7"),
resources.GetString("RS1.Items8")}); resources.GetString("RS1.Items8")});
resources.ApplyResources(this.RS1, "RS1");
this.RS1.Name = "RS1"; this.RS1.Name = "RS1";
this.toolTip1.SetToolTip(this.RS1, resources.GetString("RS1.ToolTip")); this.toolTip1.SetToolTip(this.RS1, resources.GetString("RS1.ToolTip"));
// //
@ -458,17 +458,16 @@
// //
// RS12 // RS12
// //
resources.ApplyResources(this.RS12, "RS12");
this.RS12.FormattingEnabled = true; this.RS12.FormattingEnabled = true;
this.RS12.Items.AddRange(new object[] { this.RS12.Items.AddRange(new object[] {
resources.GetString("RS12.Items"), resources.GetString("RS12.Items"),
resources.GetString("RS12.Items1")}); resources.GetString("RS12.Items1")});
resources.ApplyResources(this.RS12, "RS12");
this.RS12.Name = "RS12"; this.RS12.Name = "RS12";
this.toolTip1.SetToolTip(this.RS12, resources.GetString("RS12.ToolTip")); this.toolTip1.SetToolTip(this.RS12, resources.GetString("RS12.ToolTip"));
// //
// RS11 // RS11
// //
resources.ApplyResources(this.RS11, "RS11");
this.RS11.FormattingEnabled = true; this.RS11.FormattingEnabled = true;
this.RS11.Items.AddRange(new object[] { this.RS11.Items.AddRange(new object[] {
resources.GetString("RS11.Items"), resources.GetString("RS11.Items"),
@ -481,12 +480,12 @@
resources.GetString("RS11.Items7"), resources.GetString("RS11.Items7"),
resources.GetString("RS11.Items8"), resources.GetString("RS11.Items8"),
resources.GetString("RS11.Items9")}); resources.GetString("RS11.Items9")});
resources.ApplyResources(this.RS11, "RS11");
this.RS11.Name = "RS11"; this.RS11.Name = "RS11";
this.toolTip1.SetToolTip(this.RS11, resources.GetString("RS11.ToolTip")); this.toolTip1.SetToolTip(this.RS11, resources.GetString("RS11.ToolTip"));
// //
// RS10 // RS10
// //
resources.ApplyResources(this.RS10, "RS10");
this.RS10.FormattingEnabled = true; this.RS10.FormattingEnabled = true;
this.RS10.Items.AddRange(new object[] { this.RS10.Items.AddRange(new object[] {
resources.GetString("RS10.Items"), resources.GetString("RS10.Items"),
@ -508,6 +507,7 @@
resources.GetString("RS10.Items16"), resources.GetString("RS10.Items16"),
resources.GetString("RS10.Items17"), resources.GetString("RS10.Items17"),
resources.GetString("RS10.Items18")}); resources.GetString("RS10.Items18")});
resources.ApplyResources(this.RS10, "RS10");
this.RS10.Name = "RS10"; this.RS10.Name = "RS10";
this.toolTip1.SetToolTip(this.RS10, resources.GetString("RS10.ToolTip")); this.toolTip1.SetToolTip(this.RS10, resources.GetString("RS10.ToolTip"));
// //
@ -548,7 +548,6 @@
// //
// RS8 // RS8
// //
resources.ApplyResources(this.RS8, "RS8");
this.RS8.FormattingEnabled = true; this.RS8.FormattingEnabled = true;
this.RS8.Items.AddRange(new object[] { this.RS8.Items.AddRange(new object[] {
resources.GetString("RS8.Items"), resources.GetString("RS8.Items"),
@ -560,11 +559,11 @@
resources.GetString("RS8.Items6"), resources.GetString("RS8.Items6"),
resources.GetString("RS8.Items7"), resources.GetString("RS8.Items7"),
resources.GetString("RS8.Items8")}); resources.GetString("RS8.Items8")});
resources.ApplyResources(this.RS8, "RS8");
this.RS8.Name = "RS8"; this.RS8.Name = "RS8";
// //
// RS9 // RS9
// //
resources.ApplyResources(this.RS9, "RS9");
this.RS9.FormattingEnabled = true; this.RS9.FormattingEnabled = true;
this.RS9.Items.AddRange(new object[] { this.RS9.Items.AddRange(new object[] {
resources.GetString("RS9.Items"), resources.GetString("RS9.Items"),
@ -576,6 +575,7 @@
resources.GetString("RS9.Items6"), resources.GetString("RS9.Items6"),
resources.GetString("RS9.Items7"), resources.GetString("RS9.Items7"),
resources.GetString("RS9.Items8")}); resources.GetString("RS9.Items8")});
resources.ApplyResources(this.RS9, "RS9");
this.RS9.Name = "RS9"; this.RS9.Name = "RS9";
// //
// RS0 // RS0
@ -632,8 +632,8 @@
// //
// lbl_status // lbl_status
// //
resources.ApplyResources(this.lbl_status, "lbl_status");
this.lbl_status.BackColor = System.Drawing.Color.Transparent; this.lbl_status.BackColor = System.Drawing.Color.Transparent;
resources.ApplyResources(this.lbl_status, "lbl_status");
this.lbl_status.Name = "lbl_status"; this.lbl_status.Name = "lbl_status";
// //
// BUT_upload // BUT_upload

View File

@ -117,10 +117,6 @@
<resheader name="writer"> <resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader> </resheader>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="Progressbar.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Left, Right</value>
</data>
<assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> <assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="Progressbar.Location" type="System.Drawing.Point, System.Drawing"> <data name="Progressbar.Location" type="System.Drawing.Point, System.Drawing">
<value>12, 389</value> <value>12, 389</value>
@ -767,9 +763,6 @@
<data name="&gt;&gt;S7.ZOrder" xml:space="preserve"> <data name="&gt;&gt;S7.ZOrder" xml:space="preserve">
<value>51</value> <value>51</value>
</data> </data>
<data name="RS7.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Right</value>
</data>
<data name="RS7.Location" type="System.Drawing.Point, System.Drawing"> <data name="RS7.Location" type="System.Drawing.Point, System.Drawing">
<value>499, 287</value> <value>499, 287</value>
</data> </data>
@ -795,9 +788,6 @@
<data name="&gt;&gt;RS7.ZOrder" xml:space="preserve"> <data name="&gt;&gt;RS7.ZOrder" xml:space="preserve">
<value>41</value> <value>41</value>
</data> </data>
<data name="RS6.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Right</value>
</data>
<data name="RS6.Location" type="System.Drawing.Point, System.Drawing"> <data name="RS6.Location" type="System.Drawing.Point, System.Drawing">
<value>499, 260</value> <value>499, 260</value>
</data> </data>
@ -823,9 +813,6 @@
<data name="&gt;&gt;RS6.ZOrder" xml:space="preserve"> <data name="&gt;&gt;RS6.ZOrder" xml:space="preserve">
<value>42</value> <value>42</value>
</data> </data>
<data name="RS5.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Right</value>
</data>
<data name="RS5.Location" type="System.Drawing.Point, System.Drawing"> <data name="RS5.Location" type="System.Drawing.Point, System.Drawing">
<value>499, 233</value> <value>499, 233</value>
</data> </data>
@ -851,9 +838,6 @@
<data name="&gt;&gt;RS5.ZOrder" xml:space="preserve"> <data name="&gt;&gt;RS5.ZOrder" xml:space="preserve">
<value>43</value> <value>43</value>
</data> </data>
<data name="RS4.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Right</value>
</data>
<data name="RS4.Items" xml:space="preserve"> <data name="RS4.Items" xml:space="preserve">
<value>0</value> <value>0</value>
</data> </data>
@ -942,9 +926,6 @@
<data name="&gt;&gt;RS4.ZOrder" xml:space="preserve"> <data name="&gt;&gt;RS4.ZOrder" xml:space="preserve">
<value>44</value> <value>44</value>
</data> </data>
<data name="RS3.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Right</value>
</data>
<data name="RS3.Items" xml:space="preserve"> <data name="RS3.Items" xml:space="preserve">
<value>1</value> <value>1</value>
</data> </data>
@ -1059,9 +1040,6 @@
<data name="&gt;&gt;RS3.ZOrder" xml:space="preserve"> <data name="&gt;&gt;RS3.ZOrder" xml:space="preserve">
<value>45</value> <value>45</value>
</data> </data>
<data name="RS2.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Right</value>
</data>
<data name="RS2.Items" xml:space="preserve"> <data name="RS2.Items" xml:space="preserve">
<value>250</value> <value>250</value>
</data> </data>
@ -1116,9 +1094,6 @@
<data name="&gt;&gt;RS2.ZOrder" xml:space="preserve"> <data name="&gt;&gt;RS2.ZOrder" xml:space="preserve">
<value>46</value> <value>46</value>
</data> </data>
<data name="RS1.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Right</value>
</data>
<data name="RS1.Items" xml:space="preserve"> <data name="RS1.Items" xml:space="preserve">
<value>115</value> <value>115</value>
</data> </data>
@ -1373,9 +1348,6 @@ which result in a valid packet CRC
<data name="&gt;&gt;S12.ZOrder" xml:space="preserve"> <data name="&gt;&gt;S12.ZOrder" xml:space="preserve">
<value>27</value> <value>27</value>
</data> </data>
<data name="RS12.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Right</value>
</data>
<data name="RS12.Items" xml:space="preserve"> <data name="RS12.Items" xml:space="preserve">
<value>0</value> <value>0</value>
</data> </data>
@ -1407,9 +1379,6 @@ which result in a valid packet CRC
<data name="&gt;&gt;RS12.ZOrder" xml:space="preserve"> <data name="&gt;&gt;RS12.ZOrder" xml:space="preserve">
<value>17</value> <value>17</value>
</data> </data>
<data name="RS11.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Right</value>
</data>
<data name="RS11.Items" xml:space="preserve"> <data name="RS11.Items" xml:space="preserve">
<value>10</value> <value>10</value>
</data> </data>
@ -1465,9 +1434,6 @@ which result in a valid packet CRC
<data name="&gt;&gt;RS11.ZOrder" xml:space="preserve"> <data name="&gt;&gt;RS11.ZOrder" xml:space="preserve">
<value>18</value> <value>18</value>
</data> </data>
<data name="RS10.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Right</value>
</data>
<data name="RS10.Items" xml:space="preserve"> <data name="RS10.Items" xml:space="preserve">
<value>5</value> <value>5</value>
</data> </data>
@ -1655,9 +1621,6 @@ which result in a valid packet CRC
<data name="&gt;&gt;S8.ZOrder" xml:space="preserve"> <data name="&gt;&gt;S8.ZOrder" xml:space="preserve">
<value>26</value> <value>26</value>
</data> </data>
<data name="RS8.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Right</value>
</data>
<data name="RS8.Items" xml:space="preserve"> <data name="RS8.Items" xml:space="preserve">
<value>902000</value> <value>902000</value>
</data> </data>
@ -1706,9 +1669,6 @@ which result in a valid packet CRC
<data name="&gt;&gt;RS8.ZOrder" xml:space="preserve"> <data name="&gt;&gt;RS8.ZOrder" xml:space="preserve">
<value>16</value> <value>16</value>
</data> </data>
<data name="RS9.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Right</value>
</data>
<data name="RS9.Items" xml:space="preserve"> <data name="RS9.Items" xml:space="preserve">
<value>902000</value> <value>902000</value>
</data> </data>
@ -1757,9 +1717,6 @@ which result in a valid packet CRC
<data name="&gt;&gt;RS9.ZOrder" xml:space="preserve"> <data name="&gt;&gt;RS9.ZOrder" xml:space="preserve">
<value>20</value> <value>20</value>
</data> </data>
<data name="RS0.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Right</value>
</data>
<data name="RS0.Location" type="System.Drawing.Point, System.Drawing"> <data name="RS0.Location" type="System.Drawing.Point, System.Drawing">
<value>499, 99</value> <value>499, 99</value>
</data> </data>
@ -1808,9 +1765,6 @@ which result in a valid packet CRC
<data name="&gt;&gt;label9.ZOrder" xml:space="preserve"> <data name="&gt;&gt;label9.ZOrder" xml:space="preserve">
<value>40</value> <value>40</value>
</data> </data>
<data name="label10.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Right</value>
</data>
<data name="label10.AutoSize" type="System.Boolean, mscorlib"> <data name="label10.AutoSize" type="System.Boolean, mscorlib">
<value>True</value> <value>True</value>
</data> </data>
@ -1838,9 +1792,6 @@ which result in a valid packet CRC
<data name="&gt;&gt;label10.ZOrder" xml:space="preserve"> <data name="&gt;&gt;label10.ZOrder" xml:space="preserve">
<value>39</value> <value>39</value>
</data> </data>
<data name="RTI.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Right</value>
</data>
<data name="RTI.Location" type="System.Drawing.Point, System.Drawing"> <data name="RTI.Location" type="System.Drawing.Point, System.Drawing">
<value>543, 25</value> <value>543, 25</value>
</data> </data>
@ -1937,9 +1888,6 @@ which result in a valid packet CRC
<data name="&gt;&gt;label12.ZOrder" xml:space="preserve"> <data name="&gt;&gt;label12.ZOrder" xml:space="preserve">
<value>34</value> <value>34</value>
</data> </data>
<data name="BUT_savesettings.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom</value>
</data>
<data name="BUT_savesettings.Enabled" type="System.Boolean, mscorlib"> <data name="BUT_savesettings.Enabled" type="System.Boolean, mscorlib">
<value>False</value> <value>False</value>
</data> </data>
@ -1959,7 +1907,7 @@ which result in a valid packet CRC
<value>BUT_savesettings</value> <value>BUT_savesettings</value>
</data> </data>
<data name="&gt;&gt;BUT_savesettings.Type" xml:space="preserve"> <data name="&gt;&gt;BUT_savesettings.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner, Version=1.1.4494.22181, Culture=neutral, PublicKeyToken=null</value> <value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner, Version=1.1.4498.26252, Culture=neutral, PublicKeyToken=null</value>
</data> </data>
<data name="&gt;&gt;BUT_savesettings.Parent" xml:space="preserve"> <data name="&gt;&gt;BUT_savesettings.Parent" xml:space="preserve">
<value>$this</value> <value>$this</value>
@ -1967,9 +1915,6 @@ which result in a valid packet CRC
<data name="&gt;&gt;BUT_savesettings.ZOrder" xml:space="preserve"> <data name="&gt;&gt;BUT_savesettings.ZOrder" xml:space="preserve">
<value>49</value> <value>49</value>
</data> </data>
<data name="BUT_getcurrent.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom</value>
</data>
<data name="BUT_getcurrent.Location" type="System.Drawing.Point, System.Drawing"> <data name="BUT_getcurrent.Location" type="System.Drawing.Point, System.Drawing">
<value>253, 319</value> <value>253, 319</value>
</data> </data>
@ -1986,7 +1931,7 @@ which result in a valid packet CRC
<value>BUT_getcurrent</value> <value>BUT_getcurrent</value>
</data> </data>
<data name="&gt;&gt;BUT_getcurrent.Type" xml:space="preserve"> <data name="&gt;&gt;BUT_getcurrent.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner, Version=1.1.4494.22181, Culture=neutral, PublicKeyToken=null</value> <value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner, Version=1.1.4498.26252, Culture=neutral, PublicKeyToken=null</value>
</data> </data>
<data name="&gt;&gt;BUT_getcurrent.Parent" xml:space="preserve"> <data name="&gt;&gt;BUT_getcurrent.Parent" xml:space="preserve">
<value>$this</value> <value>$this</value>
@ -1994,9 +1939,6 @@ which result in a valid packet CRC
<data name="&gt;&gt;BUT_getcurrent.ZOrder" xml:space="preserve"> <data name="&gt;&gt;BUT_getcurrent.ZOrder" xml:space="preserve">
<value>64</value> <value>64</value>
</data> </data>
<data name="lbl_status.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Left, Right</value>
</data>
<data name="lbl_status.Location" type="System.Drawing.Point, System.Drawing"> <data name="lbl_status.Location" type="System.Drawing.Point, System.Drawing">
<value>12, 361</value> <value>12, 361</value>
</data> </data>
@ -2018,9 +1960,6 @@ which result in a valid packet CRC
<data name="&gt;&gt;lbl_status.ZOrder" xml:space="preserve"> <data name="&gt;&gt;lbl_status.ZOrder" xml:space="preserve">
<value>67</value> <value>67</value>
</data> </data>
<data name="BUT_upload.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom</value>
</data>
<data name="BUT_upload.Location" type="System.Drawing.Point, System.Drawing"> <data name="BUT_upload.Location" type="System.Drawing.Point, System.Drawing">
<value>403, 319</value> <value>403, 319</value>
</data> </data>
@ -2037,7 +1976,7 @@ which result in a valid packet CRC
<value>BUT_upload</value> <value>BUT_upload</value>
</data> </data>
<data name="&gt;&gt;BUT_upload.Type" xml:space="preserve"> <data name="&gt;&gt;BUT_upload.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner, Version=1.1.4494.22181, Culture=neutral, PublicKeyToken=null</value> <value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner, Version=1.1.4498.26252, Culture=neutral, PublicKeyToken=null</value>
</data> </data>
<data name="&gt;&gt;BUT_upload.Parent" xml:space="preserve"> <data name="&gt;&gt;BUT_upload.Parent" xml:space="preserve">
<value>$this</value> <value>$this</value>
@ -2061,7 +2000,7 @@ which result in a valid packet CRC
<value>BUT_syncS2</value> <value>BUT_syncS2</value>
</data> </data>
<data name="&gt;&gt;BUT_syncS2.Type" xml:space="preserve"> <data name="&gt;&gt;BUT_syncS2.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner, Version=1.1.4494.22181, Culture=neutral, PublicKeyToken=null</value> <value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner, Version=1.1.4498.26252, Culture=neutral, PublicKeyToken=null</value>
</data> </data>
<data name="&gt;&gt;BUT_syncS2.Parent" xml:space="preserve"> <data name="&gt;&gt;BUT_syncS2.Parent" xml:space="preserve">
<value>$this</value> <value>$this</value>
@ -2085,7 +2024,7 @@ which result in a valid packet CRC
<value>BUT_syncS3</value> <value>BUT_syncS3</value>
</data> </data>
<data name="&gt;&gt;BUT_syncS3.Type" xml:space="preserve"> <data name="&gt;&gt;BUT_syncS3.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner, Version=1.1.4494.22181, Culture=neutral, PublicKeyToken=null</value> <value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner, Version=1.1.4498.26252, Culture=neutral, PublicKeyToken=null</value>
</data> </data>
<data name="&gt;&gt;BUT_syncS3.Parent" xml:space="preserve"> <data name="&gt;&gt;BUT_syncS3.Parent" xml:space="preserve">
<value>$this</value> <value>$this</value>
@ -2109,7 +2048,7 @@ which result in a valid packet CRC
<value>BUT_syncS5</value> <value>BUT_syncS5</value>
</data> </data>
<data name="&gt;&gt;BUT_syncS5.Type" xml:space="preserve"> <data name="&gt;&gt;BUT_syncS5.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner, Version=1.1.4494.22181, Culture=neutral, PublicKeyToken=null</value> <value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner, Version=1.1.4498.26252, Culture=neutral, PublicKeyToken=null</value>
</data> </data>
<data name="&gt;&gt;BUT_syncS5.Parent" xml:space="preserve"> <data name="&gt;&gt;BUT_syncS5.Parent" xml:space="preserve">
<value>$this</value> <value>$this</value>
@ -2120,6 +2059,7 @@ which result in a valid packet CRC
<data name="label13.AutoSize" type="System.Boolean, mscorlib"> <data name="label13.AutoSize" type="System.Boolean, mscorlib">
<value>True</value> <value>True</value>
</data> </data>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="label13.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms"> <data name="label13.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value> <value>NoControl</value>
</data> </data>
@ -2267,9 +2207,6 @@ which result in a valid packet CRC
<data name="&gt;&gt;label17.ZOrder" xml:space="preserve"> <data name="&gt;&gt;label17.ZOrder" xml:space="preserve">
<value>21</value> <value>21</value>
</data> </data>
<data name="label20.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Right</value>
</data>
<data name="label20.AutoSize" type="System.Boolean, mscorlib"> <data name="label20.AutoSize" type="System.Boolean, mscorlib">
<value>True</value> <value>True</value>
</data> </data>
@ -2300,9 +2237,6 @@ which result in a valid packet CRC
<data name="&gt;&gt;label20.ZOrder" xml:space="preserve"> <data name="&gt;&gt;label20.ZOrder" xml:space="preserve">
<value>11</value> <value>11</value>
</data> </data>
<data name="label21.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Right</value>
</data>
<data name="label21.AutoSize" type="System.Boolean, mscorlib"> <data name="label21.AutoSize" type="System.Boolean, mscorlib">
<value>True</value> <value>True</value>
</data> </data>
@ -2333,9 +2267,6 @@ which result in a valid packet CRC
<data name="&gt;&gt;label21.ZOrder" xml:space="preserve"> <data name="&gt;&gt;label21.ZOrder" xml:space="preserve">
<value>12</value> <value>12</value>
</data> </data>
<data name="label22.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Right</value>
</data>
<data name="label22.AutoSize" type="System.Boolean, mscorlib"> <data name="label22.AutoSize" type="System.Boolean, mscorlib">
<value>True</value> <value>True</value>
</data> </data>
@ -2366,9 +2297,6 @@ which result in a valid packet CRC
<data name="&gt;&gt;label22.ZOrder" xml:space="preserve"> <data name="&gt;&gt;label22.ZOrder" xml:space="preserve">
<value>13</value> <value>13</value>
</data> </data>
<data name="label23.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Right</value>
</data>
<data name="label23.AutoSize" type="System.Boolean, mscorlib"> <data name="label23.AutoSize" type="System.Boolean, mscorlib">
<value>True</value> <value>True</value>
</data> </data>
@ -2399,9 +2327,6 @@ which result in a valid packet CRC
<data name="&gt;&gt;label23.ZOrder" xml:space="preserve"> <data name="&gt;&gt;label23.ZOrder" xml:space="preserve">
<value>14</value> <value>14</value>
</data> </data>
<data name="label24.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Right</value>
</data>
<data name="label24.AutoSize" type="System.Boolean, mscorlib"> <data name="label24.AutoSize" type="System.Boolean, mscorlib">
<value>True</value> <value>True</value>
</data> </data>
@ -2432,9 +2357,6 @@ which result in a valid packet CRC
<data name="&gt;&gt;label24.ZOrder" xml:space="preserve"> <data name="&gt;&gt;label24.ZOrder" xml:space="preserve">
<value>15</value> <value>15</value>
</data> </data>
<data name="label25.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Right</value>
</data>
<data name="label25.AutoSize" type="System.Boolean, mscorlib"> <data name="label25.AutoSize" type="System.Boolean, mscorlib">
<value>True</value> <value>True</value>
</data> </data>
@ -2465,9 +2387,6 @@ which result in a valid packet CRC
<data name="&gt;&gt;label25.ZOrder" xml:space="preserve"> <data name="&gt;&gt;label25.ZOrder" xml:space="preserve">
<value>3</value> <value>3</value>
</data> </data>
<data name="label26.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Right</value>
</data>
<data name="label26.AutoSize" type="System.Boolean, mscorlib"> <data name="label26.AutoSize" type="System.Boolean, mscorlib">
<value>True</value> <value>True</value>
</data> </data>
@ -2498,9 +2417,6 @@ which result in a valid packet CRC
<data name="&gt;&gt;label26.ZOrder" xml:space="preserve"> <data name="&gt;&gt;label26.ZOrder" xml:space="preserve">
<value>4</value> <value>4</value>
</data> </data>
<data name="label27.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Right</value>
</data>
<data name="label27.AutoSize" type="System.Boolean, mscorlib"> <data name="label27.AutoSize" type="System.Boolean, mscorlib">
<value>True</value> <value>True</value>
</data> </data>
@ -2531,9 +2447,6 @@ which result in a valid packet CRC
<data name="&gt;&gt;label27.ZOrder" xml:space="preserve"> <data name="&gt;&gt;label27.ZOrder" xml:space="preserve">
<value>5</value> <value>5</value>
</data> </data>
<data name="label28.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Right</value>
</data>
<data name="label28.AutoSize" type="System.Boolean, mscorlib"> <data name="label28.AutoSize" type="System.Boolean, mscorlib">
<value>True</value> <value>True</value>
</data> </data>
@ -2564,9 +2477,6 @@ which result in a valid packet CRC
<data name="&gt;&gt;label28.ZOrder" xml:space="preserve"> <data name="&gt;&gt;label28.ZOrder" xml:space="preserve">
<value>6</value> <value>6</value>
</data> </data>
<data name="label29.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Right</value>
</data>
<data name="label29.AutoSize" type="System.Boolean, mscorlib"> <data name="label29.AutoSize" type="System.Boolean, mscorlib">
<value>True</value> <value>True</value>
</data> </data>
@ -2597,9 +2507,6 @@ which result in a valid packet CRC
<data name="&gt;&gt;label29.ZOrder" xml:space="preserve"> <data name="&gt;&gt;label29.ZOrder" xml:space="preserve">
<value>7</value> <value>7</value>
</data> </data>
<data name="label30.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Right</value>
</data>
<data name="label30.AutoSize" type="System.Boolean, mscorlib"> <data name="label30.AutoSize" type="System.Boolean, mscorlib">
<value>True</value> <value>True</value>
</data> </data>
@ -2630,9 +2537,6 @@ which result in a valid packet CRC
<data name="&gt;&gt;label30.ZOrder" xml:space="preserve"> <data name="&gt;&gt;label30.ZOrder" xml:space="preserve">
<value>8</value> <value>8</value>
</data> </data>
<data name="label31.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Right</value>
</data>
<data name="label31.AutoSize" type="System.Boolean, mscorlib"> <data name="label31.AutoSize" type="System.Boolean, mscorlib">
<value>True</value> <value>True</value>
</data> </data>
@ -2663,9 +2567,6 @@ which result in a valid packet CRC
<data name="&gt;&gt;label31.ZOrder" xml:space="preserve"> <data name="&gt;&gt;label31.ZOrder" xml:space="preserve">
<value>9</value> <value>9</value>
</data> </data>
<data name="label32.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Right</value>
</data>
<data name="label32.AutoSize" type="System.Boolean, mscorlib"> <data name="label32.AutoSize" type="System.Boolean, mscorlib">
<value>True</value> <value>True</value>
</data> </data>
@ -2715,7 +2616,7 @@ which result in a valid packet CRC
<value>BUT_syncS8</value> <value>BUT_syncS8</value>
</data> </data>
<data name="&gt;&gt;BUT_syncS8.Type" xml:space="preserve"> <data name="&gt;&gt;BUT_syncS8.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner, Version=1.1.4494.22181, Culture=neutral, PublicKeyToken=null</value> <value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner, Version=1.1.4498.26252, Culture=neutral, PublicKeyToken=null</value>
</data> </data>
<data name="&gt;&gt;BUT_syncS8.Parent" xml:space="preserve"> <data name="&gt;&gt;BUT_syncS8.Parent" xml:space="preserve">
<value>$this</value> <value>$this</value>
@ -2742,7 +2643,7 @@ which result in a valid packet CRC
<value>BUT_syncS9</value> <value>BUT_syncS9</value>
</data> </data>
<data name="&gt;&gt;BUT_syncS9.Type" xml:space="preserve"> <data name="&gt;&gt;BUT_syncS9.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner, Version=1.1.4494.22181, Culture=neutral, PublicKeyToken=null</value> <value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner, Version=1.1.4498.26252, Culture=neutral, PublicKeyToken=null</value>
</data> </data>
<data name="&gt;&gt;BUT_syncS9.Parent" xml:space="preserve"> <data name="&gt;&gt;BUT_syncS9.Parent" xml:space="preserve">
<value>$this</value> <value>$this</value>
@ -2769,7 +2670,7 @@ which result in a valid packet CRC
<value>BUT_syncS10</value> <value>BUT_syncS10</value>
</data> </data>
<data name="&gt;&gt;BUT_syncS10.Type" xml:space="preserve"> <data name="&gt;&gt;BUT_syncS10.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner, Version=1.1.4494.22181, Culture=neutral, PublicKeyToken=null</value> <value>ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner, Version=1.1.4498.26252, Culture=neutral, PublicKeyToken=null</value>
</data> </data>
<data name="&gt;&gt;BUT_syncS10.Parent" xml:space="preserve"> <data name="&gt;&gt;BUT_syncS10.Parent" xml:space="preserve">
<value>$this</value> <value>$this</value>
@ -2796,6 +2697,6 @@ which result in a valid packet CRC
<value>_3DRradio</value> <value>_3DRradio</value>
</data> </data>
<data name="&gt;&gt;$this.Type" xml:space="preserve"> <data name="&gt;&gt;$this.Type" xml:space="preserve">
<value>ArdupilotMega.Controls.BackstageView.BackStageViewContentPanel, ArdupilotMegaPlanner, Version=1.1.4494.22181, Culture=neutral, PublicKeyToken=null</value> <value>ArdupilotMega.Controls.BackstageView.BackStageViewContentPanel, ArdupilotMegaPlanner, Version=1.1.4498.26252, Culture=neutral, PublicKeyToken=null</value>
</data> </data>
</root> </root>

View File

@ -1,310 +1,310 @@
using System; using System;
using System.Runtime.InteropServices; using System.Runtime.InteropServices;
using System.Drawing; using System.Drawing;
using System.Drawing.Imaging; using System.Drawing.Imaging;
using System.IO; using System.IO;
using u32 = System.UInt32; using u32 = System.UInt32;
using u16 = System.UInt16; using u16 = System.UInt16;
using u8 = System.Byte; using u8 = System.Byte;
/// <summary> /// <summary>
/// based off ftp://pserver.samba.org/pub/unpacked/picturebook/avi.c /// based off ftp://pserver.samba.org/pub/unpacked/picturebook/avi.c
/// </summary> /// </summary>
public class AviWriter public class AviWriter
{ {
/* /*
avi debug: * LIST-root size:1233440040 pos:0 avi debug: * LIST-root size:1233440040 pos:0
avi debug: + RIFF-AVI size:1233440032 pos:0 avi debug: + RIFF-AVI size:1233440032 pos:0
avi debug: | + LIST-hdrl size:310 pos:12 avi debug: | + LIST-hdrl size:310 pos:12
avi debug: | | + avih size:56 pos:24 avi debug: | | + avih size:56 pos:24
avi debug: | | + LIST-strl size:124 pos:88 avi debug: | | + LIST-strl size:124 pos:88
avi debug: | | | + strh size:64 pos:100 avi debug: | | | + strh size:64 pos:100
avi debug: | | | + strf size:40 pos:172 avi debug: | | | + strf size:40 pos:172
avi debug: | | + LIST-strl size:102 pos:220 avi debug: | | + LIST-strl size:102 pos:220
avi debug: | | | + strh size:64 pos:232 avi debug: | | | + strh size:64 pos:232
avi debug: | | | + strf size:18 pos:304 avi debug: | | | + strf size:18 pos:304
avi debug: | + JUNK size:1698 pos:330 avi debug: | + JUNK size:1698 pos:330
avi debug: | + LIST-movi size:1232936964 pos:2036 avi debug: | + LIST-movi size:1232936964 pos:2036
avi debug: | + idx1 size:501024 pos:1232939008 avi debug: | + idx1 size:501024 pos:1232939008
avi debug: AVIH: 2 stream, flags HAS_INDEX avi debug: AVIH: 2 stream, flags HAS_INDEX
avi debug: stream[0] rate:1000000 scale:33333 samplesize:0 avi debug: stream[0] rate:1000000 scale:33333 samplesize:0
avi debug: stream[0] video(MJPG) 1280x720 24bpp 30.000300fps avi debug: stream[0] video(MJPG) 1280x720 24bpp 30.000300fps
*/ */
[StructLayout(LayoutKind.Sequential, Pack = 1)] [StructLayout(LayoutKind.Sequential, Pack = 1)]
public struct riff_head public struct riff_head
{ {
[MarshalAs( [MarshalAs(
UnmanagedType.ByValArray, UnmanagedType.ByValArray,
SizeConst = 4)] SizeConst = 4)]
public char[] riff; /* "RIFF" */ public char[] riff; /* "RIFF" */
public u32 size; public u32 size;
[MarshalAs( [MarshalAs(
UnmanagedType.ByValArray, UnmanagedType.ByValArray,
SizeConst = 4)] SizeConst = 4)]
public char[] avistr; /* "AVI " */ public char[] avistr; /* "AVI " */
}; };
[StructLayout(LayoutKind.Sequential, Pack = 1)] [StructLayout(LayoutKind.Sequential, Pack = 1)]
public struct stream_head public struct stream_head
{ /* 56 bytes */ { /* 56 bytes */
[MarshalAs( [MarshalAs(
UnmanagedType.ByValArray, UnmanagedType.ByValArray,
SizeConst = 4)] SizeConst = 4)]
public char[] strh; /* "strh" */ public char[] strh; /* "strh" */
public u32 size; public u32 size;
[MarshalAs( [MarshalAs(
UnmanagedType.ByValArray, UnmanagedType.ByValArray,
SizeConst = 4)] SizeConst = 4)]
public char[] vids; /* "vids" */ public char[] vids; /* "vids" */
[MarshalAs( [MarshalAs(
UnmanagedType.ByValArray, UnmanagedType.ByValArray,
SizeConst = 4)] SizeConst = 4)]
public char[] codec; /* codec name */ public char[] codec; /* codec name */
public u32 flags; public u32 flags;
public u32 reserved1; public u32 reserved1;
public u32 initialframes; public u32 initialframes;
public u32 scale; /* 1 */ public u32 scale; /* 1 */
public u32 rate; /* in frames per second */ public u32 rate; /* in frames per second */
public u32 start; public u32 start;
public u32 length; /* what units?? fps*nframes ?? */ public u32 length; /* what units?? fps*nframes ?? */
public u32 suggested_bufsize; public u32 suggested_bufsize;
public u32 quality; /* -1 */ public u32 quality; /* -1 */
public u32 samplesize; public u32 samplesize;
public short l; public short l;
public short t; public short t;
public short r; public short r;
public short b; public short b;
}; };
[StructLayout(LayoutKind.Sequential, Pack = 1)] [StructLayout(LayoutKind.Sequential, Pack = 1)]
public struct avi_head public struct avi_head
{ /* 64 bytes */ { /* 64 bytes */
[MarshalAs( [MarshalAs(
UnmanagedType.ByValArray, UnmanagedType.ByValArray,
SizeConst = 4)] SizeConst = 4)]
public char[] avih; /* "avih" */ public char[] avih; /* "avih" */
public u32 size; public u32 size;
public u32 time; /* microsec per frame? 1e6 / fps ?? */ public u32 time; /* microsec per frame? 1e6 / fps ?? */
public u32 maxbytespersec; public u32 maxbytespersec;
public u32 reserved1; public u32 reserved1;
public u32 flags; public u32 flags;
public u32 nframes; public u32 nframes;
public u32 initialframes; public u32 initialframes;
public u32 numstreams; /* 1 */ public u32 numstreams; /* 1 */
public u32 suggested_bufsize; public u32 suggested_bufsize;
public u32 width; public u32 width;
public u32 height; public u32 height;
public u32 scale; /* 1 */ public u32 scale; /* 1 */
public u32 rate; /* fps */ public u32 rate; /* fps */
public u32 start; public u32 start;
public u32 length; /* what units?? fps*nframes ?? */ public u32 length; /* what units?? fps*nframes ?? */
}; };
[StructLayout(LayoutKind.Sequential, Pack = 1)] [StructLayout(LayoutKind.Sequential, Pack = 1)]
public struct list_head public struct list_head
{ /* 12 bytes */ { /* 12 bytes */
[MarshalAs( [MarshalAs(
UnmanagedType.ByValArray, UnmanagedType.ByValArray,
SizeConst = 4)] SizeConst = 4)]
public char[] list; /* "LIST" */ public char[] list; /* "LIST" */
public u32 size; public u32 size;
[MarshalAs( [MarshalAs(
UnmanagedType.ByValArray, UnmanagedType.ByValArray,
SizeConst = 4)] SizeConst = 4)]
public char[] type; public char[] type;
}; };
[StructLayout(LayoutKind.Sequential, Pack = 1)] [StructLayout(LayoutKind.Sequential, Pack = 1)]
public struct db_head public struct db_head
{ {
[MarshalAs( [MarshalAs(
UnmanagedType.ByValArray, UnmanagedType.ByValArray,
SizeConst = 4)] SizeConst = 4)]
public char[] db; /* "00db" */ public char[] db; /* "00db" */
public u32 size; public u32 size;
}; };
[StructLayout(LayoutKind.Sequential, Pack = 1)] [StructLayout(LayoutKind.Sequential, Pack = 1)]
public struct frame_head public struct frame_head
{ /* 48 bytes */ { /* 48 bytes */
[MarshalAs( [MarshalAs(
UnmanagedType.ByValArray, UnmanagedType.ByValArray,
SizeConst = 4)] SizeConst = 4)]
public char[] strf; /* "strf" */ public char[] strf; /* "strf" */
public u32 size; public u32 size;
public UInt32 size2; /* repeat of previous field? */ public UInt32 size2; /* repeat of previous field? */
public Int32 width; public Int32 width;
public Int32 height; public Int32 height;
public Int16 planes; /* 1 */ public Int16 planes; /* 1 */
public Int16 bitcount; /* 24 */ public Int16 bitcount; /* 24 */
[MarshalAs( [MarshalAs(
UnmanagedType.ByValArray, UnmanagedType.ByValArray,
SizeConst = 4)] SizeConst = 4)]
public char[] codec; /* MJPG */ public char[] codec; /* MJPG */
public UInt32 unpackedsize; /* 3 * w * h */ public UInt32 unpackedsize; /* 3 * w * h */
public Int32 r1; public Int32 r1;
public Int32 r2; public Int32 r2;
public UInt32 clr_used; public UInt32 clr_used;
public UInt32 clr_important; public UInt32 clr_important;
}; };
[StructLayout(LayoutKind.Sequential, Pack = 1)] [StructLayout(LayoutKind.Sequential, Pack = 1)]
public struct BITMAPINFOHEADER public struct BITMAPINFOHEADER
{ {
public UInt32 biSize; public UInt32 biSize;
public Int32 biWidth; public Int32 biWidth;
public Int32 biHeight; public Int32 biHeight;
public Int16 biPlanes; public Int16 biPlanes;
public Int16 biBitCount; public Int16 biBitCount;
public UInt32 biCompression; public UInt32 biCompression;
public UInt32 biSizeImage; public UInt32 biSizeImage;
public Int32 biXPelsPerMeter; public Int32 biXPelsPerMeter;
public Int32 biYPelsPerMeter; public Int32 biYPelsPerMeter;
public UInt32 biClrUsed; public UInt32 biClrUsed;
public UInt32 biClrImportant; public UInt32 biClrImportant;
} }
static int nframes; static int nframes;
static uint totalsize; static uint totalsize;
System.IO.BufferedStream fd; System.IO.BufferedStream fd;
public void avi_close() public void avi_close()
{ {
if (fd != null) if (fd != null)
fd.Close(); fd.Close();
} }
/* start writing an AVI file */ /* start writing an AVI file */
public void avi_start(string filename) public void avi_start(string filename)
{ {
avi_close(); avi_close();
fd = new BufferedStream(File.Open(filename, FileMode.Create)); fd = new BufferedStream(File.Open(filename, FileMode.Create));
fd.Seek(2048,SeekOrigin.Begin); fd.Seek(2048,SeekOrigin.Begin);
nframes = 0; nframes = 0;
totalsize = 0; totalsize = 0;
} }
/* add a jpeg frame to an AVI file */ /* add a jpeg frame to an AVI file */
public void avi_add(u8[] buf, uint size) public void avi_add(u8[] buf, uint size)
{ {
Console.WriteLine(DateTime.Now.Millisecond + "avi frame"); Console.WriteLine(DateTime.Now.Millisecond + "avi frame");
db_head db = new db_head { db = "00dc".ToCharArray(), size = size }; db_head db = new db_head { db = "00dc".ToCharArray(), size = size };
fd.Write(StructureToByteArray(db), 0, Marshal.SizeOf(db)); fd.Write(StructureToByteArray(db), 0, Marshal.SizeOf(db));
fd.Write(buf, 0, (int)size); fd.Write(buf, 0, (int)size);
if (size % 2 == 1) if (size % 2 == 1)
{ {
size++; size++;
fd.Seek(1, SeekOrigin.Current); fd.Seek(1, SeekOrigin.Current);
} }
nframes++; nframes++;
totalsize += size; totalsize += size;
} }
void strcpy(ref char[] to,string orig) void strcpy(ref char[] to,string orig)
{ {
to = orig.ToCharArray(); to = orig.ToCharArray();
} }
/* finish writing the AVI file - filling in the header */ /* finish writing the AVI file - filling in the header */
public void avi_end(int width, int height, int fps) public void avi_end(int width, int height, int fps)
{ {
riff_head rh = new riff_head { riff = "RIFF".ToCharArray(), size = 0, avistr = "AVI ".ToCharArray() }; riff_head rh = new riff_head { riff = "RIFF".ToCharArray(), size = 0, avistr = "AVI ".ToCharArray() };
list_head lh1 = new list_head { list = "LIST".ToCharArray(), size = 0, type = "hdrl".ToCharArray() }; list_head lh1 = new list_head { list = "LIST".ToCharArray(), size = 0, type = "hdrl".ToCharArray() };
avi_head ah = new avi_head(); avi_head ah = new avi_head();
list_head lh2 = new list_head { list = "LIST".ToCharArray(), size = 0, type = "strl".ToCharArray() }; list_head lh2 = new list_head { list = "LIST".ToCharArray(), size = 0, type = "strl".ToCharArray() };
stream_head sh = new stream_head(); stream_head sh = new stream_head();
frame_head fh = new frame_head(); frame_head fh = new frame_head();
list_head junk = new list_head() { list = "JUNK".ToCharArray(), size = 0 }; list_head junk = new list_head() { list = "JUNK".ToCharArray(), size = 0 };
list_head lh3 = new list_head { list = "LIST".ToCharArray(), size = 0, type = "movi".ToCharArray() }; list_head lh3 = new list_head { list = "LIST".ToCharArray(), size = 0, type = "movi".ToCharArray() };
//bzero(&ah, sizeof(ah)); //bzero(&ah, sizeof(ah));
strcpy(ref ah.avih, "avih"); strcpy(ref ah.avih, "avih");
ah.time = (u32)(1e6 / fps); ah.time = (u32)(1e6 / fps);
ah.numstreams = 1; ah.numstreams = 1;
//ah.scale = (u32)(1e6 / fps); //ah.scale = (u32)(1e6 / fps);
//ah.rate = (u32)fps; //ah.rate = (u32)fps;
//ah.length = (u32)(nframes); //ah.length = (u32)(nframes);
ah.nframes = (u32)(nframes); ah.nframes = (u32)(nframes);
ah.width = (u32)width; ah.width = (u32)width;
ah.height = (u32)height; ah.height = (u32)height;
ah.flags = 0; ah.flags = 0;
ah.suggested_bufsize = (u32)(3 * width * height * fps); ah.suggested_bufsize = (u32)(3 * width * height * fps);
ah.maxbytespersec = (u32)(3 * width * height * fps); ah.maxbytespersec = (u32)(3 * width * height * fps);
//bzero(&sh, sizeof(sh)); //bzero(&sh, sizeof(sh));
strcpy(ref sh.strh, "strh"); strcpy(ref sh.strh, "strh");
strcpy(ref sh.vids, "vids"); strcpy(ref sh.vids, "vids");
strcpy(ref sh.codec, "MJPG"); strcpy(ref sh.codec, "MJPG");
sh.scale = (u32)(1e6 / fps); sh.scale = (u32)(1e6 / fps);
sh.rate = (u32)1000000; sh.rate = (u32)1000000;
sh.length = (u32)(nframes); sh.length = (u32)(nframes);
sh.suggested_bufsize = (u32)(3 * width * height * fps); sh.suggested_bufsize = (u32)(3 * width * height * fps);
unchecked unchecked
{ {
sh.quality = (uint)-1; sh.quality = (uint)-1;
} }
//bzero(&fh, sizeof(fh)); //bzero(&fh, sizeof(fh));
strcpy(ref fh.strf, "strf"); strcpy(ref fh.strf, "strf");
fh.width = width; fh.width = width;
fh.height = height; fh.height = height;
fh.planes = 1; fh.planes = 1;
fh.bitcount = 24; fh.bitcount = 24;
strcpy(ref fh.codec, "MJPG"); strcpy(ref fh.codec, "MJPG");
fh.unpackedsize = (u32)(3 * width * height); fh.unpackedsize = (u32)(3 * width * height);
rh.size = (u32)(Marshal.SizeOf(lh1) + Marshal.SizeOf(ah) + Marshal.SizeOf(lh2) + Marshal.SizeOf(sh) + rh.size = (u32)(Marshal.SizeOf(lh1) + Marshal.SizeOf(ah) + Marshal.SizeOf(lh2) + Marshal.SizeOf(sh) +
Marshal.SizeOf(fh) + Marshal.SizeOf(lh3) + Marshal.SizeOf(fh) + Marshal.SizeOf(lh3) +
nframes * Marshal.SizeOf((new db_head())) + nframes * Marshal.SizeOf((new db_head())) +
totalsize); totalsize);
lh1.size = (u32)(4 + Marshal.SizeOf(ah) + Marshal.SizeOf(lh2) + Marshal.SizeOf(sh) + Marshal.SizeOf(fh)); lh1.size = (u32)(4 + Marshal.SizeOf(ah) + Marshal.SizeOf(lh2) + Marshal.SizeOf(sh) + Marshal.SizeOf(fh));
ah.size = (u32)(Marshal.SizeOf(ah) - 8); ah.size = (u32)(Marshal.SizeOf(ah) - 8);
lh2.size = (u32)(4 + Marshal.SizeOf(sh) + Marshal.SizeOf(fh)); lh2.size = (u32)(4 + Marshal.SizeOf(sh) + Marshal.SizeOf(fh));
sh.size = (u32)(Marshal.SizeOf(sh) - 8); sh.size = (u32)(Marshal.SizeOf(sh) - 8);
fh.size = (u32)(Marshal.SizeOf(fh) - 8); fh.size = (u32)(Marshal.SizeOf(fh) - 8);
fh.size2 = fh.size; fh.size2 = fh.size;
lh3.size = (u32)(4 + lh3.size = (u32)(4 +
nframes * Marshal.SizeOf((new db_head())) + nframes * Marshal.SizeOf((new db_head())) +
totalsize); totalsize);
junk.size = 2048 - lh1.size - 12 - 12 - 12 - 4; // junk head, list head, rif head , 4 junk.size = 2048 - lh1.size - 12 - 12 - 12 - 4; // junk head, list head, rif head , 4
long pos = fd.Position; long pos = fd.Position;
fd.Seek(0, SeekOrigin.Begin); fd.Seek(0, SeekOrigin.Begin);
fd.Write(StructureToByteArray(rh),0, Marshal.SizeOf(rh)); fd.Write(StructureToByteArray(rh),0, Marshal.SizeOf(rh));
fd.Write(StructureToByteArray(lh1), 0, Marshal.SizeOf(lh1)); fd.Write(StructureToByteArray(lh1), 0, Marshal.SizeOf(lh1));
fd.Write(StructureToByteArray(ah), 0, Marshal.SizeOf(ah)); fd.Write(StructureToByteArray(ah), 0, Marshal.SizeOf(ah));
fd.Write(StructureToByteArray(lh2), 0, Marshal.SizeOf(lh2)); fd.Write(StructureToByteArray(lh2), 0, Marshal.SizeOf(lh2));
fd.Write(StructureToByteArray(sh), 0, Marshal.SizeOf(sh)); fd.Write(StructureToByteArray(sh), 0, Marshal.SizeOf(sh));
fd.Write(StructureToByteArray(fh), 0, Marshal.SizeOf(fh)); fd.Write(StructureToByteArray(fh), 0, Marshal.SizeOf(fh));
fd.Write(StructureToByteArray(junk), 0, Marshal.SizeOf(junk)); fd.Write(StructureToByteArray(junk), 0, Marshal.SizeOf(junk));
fd.Seek(2036, SeekOrigin.Begin); fd.Seek(2036, SeekOrigin.Begin);
fd.Write(StructureToByteArray(lh3), 0, Marshal.SizeOf(lh3)); fd.Write(StructureToByteArray(lh3), 0, Marshal.SizeOf(lh3));
fd.Seek(pos, SeekOrigin.Begin); fd.Seek(pos, SeekOrigin.Begin);
} }
byte[] StructureToByteArray(object obj) byte[] StructureToByteArray(object obj)
{ {
int len = Marshal.SizeOf(obj); int len = Marshal.SizeOf(obj);
byte[] arr = new byte[len]; byte[] arr = new byte[len];
IntPtr ptr = Marshal.AllocHGlobal(len); IntPtr ptr = Marshal.AllocHGlobal(len);
Marshal.StructureToPtr(obj, ptr, true); Marshal.StructureToPtr(obj, ptr, true);
Marshal.Copy(ptr, arr, 0, len); Marshal.Copy(ptr, arr, 0, len);
Marshal.FreeHGlobal(ptr); Marshal.FreeHGlobal(ptr);
return arr; return arr;
} }
} }

View File

@ -1,498 +1,498 @@
/**************************************************************************** /****************************************************************************
While the underlying libraries are covered by LGPL, this sample is released While the underlying libraries are covered by LGPL, this sample is released
as public domain. It is distributed in the hope that it will be useful, but as public domain. It is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
or FITNESS FOR A PARTICULAR PURPOSE. or FITNESS FOR A PARTICULAR PURPOSE.
*****************************************************************************/ *****************************************************************************/
using System; using System;
using System.Drawing; using System.Drawing;
using System.Drawing.Imaging; using System.Drawing.Imaging;
using System.Collections; using System.Collections;
using System.Runtime.InteropServices; using System.Runtime.InteropServices;
using System.Threading; using System.Threading;
using System.Diagnostics; using System.Diagnostics;
using System.Collections.Generic; using System.Collections.Generic;
using DirectShowLib; using DirectShowLib;
namespace WebCamService namespace WebCamService
{ {
public delegate void CamImage(Image camimage); public delegate void CamImage(Image camimage);
/// <summary> Summary description for MainForm. </summary> /// <summary> Summary description for MainForm. </summary>
public class Capture : ISampleGrabberCB, IDisposable public class Capture : ISampleGrabberCB, IDisposable
{ {
#region Member variables #region Member variables
/// <summary> graph builder interface. </summary> /// <summary> graph builder interface. </summary>
private IFilterGraph2 m_FilterGraph = null; private IFilterGraph2 m_FilterGraph = null;
private IMediaControl m_mediaCtrl = null; private IMediaControl m_mediaCtrl = null;
/// <summary> so we can wait for the async job to finish </summary> /// <summary> so we can wait for the async job to finish </summary>
private ManualResetEvent m_PictureReady = null; private ManualResetEvent m_PictureReady = null;
/// <summary> Set by async routine when it captures an image </summary> /// <summary> Set by async routine when it captures an image </summary>
private volatile bool m_bGotOne = false; private volatile bool m_bGotOne = false;
/// <summary> Indicates the status of the graph </summary> /// <summary> Indicates the status of the graph </summary>
private bool m_bRunning = false; private bool m_bRunning = false;
/// <summary> Dimensions of the image, calculated once in constructor. </summary> /// <summary> Dimensions of the image, calculated once in constructor. </summary>
private IntPtr m_handle = IntPtr.Zero; private IntPtr m_handle = IntPtr.Zero;
private int m_videoWidth; private int m_videoWidth;
private int m_videoHeight; private int m_videoHeight;
private int m_stride; private int m_stride;
public int m_Dropped = 0; public int m_Dropped = 0;
public Image image = null; public Image image = null;
IntPtr ip = IntPtr.Zero; IntPtr ip = IntPtr.Zero;
public event CamImage camimage; public event CamImage camimage;
System.Windows.Forms.Timer timer1 = new System.Windows.Forms.Timer(); System.Windows.Forms.Timer timer1 = new System.Windows.Forms.Timer();
#endregion #endregion
#region API #region API
[DllImport("Kernel32.dll", EntryPoint="RtlMoveMemory")] [DllImport("Kernel32.dll", EntryPoint="RtlMoveMemory")]
private static extern void CopyMemory(IntPtr Destination, IntPtr Source, int Length); private static extern void CopyMemory(IntPtr Destination, IntPtr Source, int Length);
#endregion #endregion
public Capture() public Capture()
{ {
} }
/// <summary> Use capture with selected media caps</summary> /// <summary> Use capture with selected media caps</summary>
public Capture(int iDeviceNum, AMMediaType media) public Capture(int iDeviceNum, AMMediaType media)
{ {
DsDevice[] capDevices; DsDevice[] capDevices;
// Get the collection of video devices // Get the collection of video devices
capDevices = DsDevice.GetDevicesOfCat(FilterCategory.VideoInputDevice); capDevices = DsDevice.GetDevicesOfCat(FilterCategory.VideoInputDevice);
if (iDeviceNum + 1 > capDevices.Length) if (iDeviceNum + 1 > capDevices.Length)
{ {
throw new Exception("No video capture devices found at that index!"); throw new Exception("No video capture devices found at that index!");
} }
try try
{ {
// Set up the capture graph // Set up the capture graph
SetupGraph(capDevices[iDeviceNum], media); SetupGraph(capDevices[iDeviceNum], media);
// tell the callback to ignore new images // tell the callback to ignore new images
m_PictureReady = new ManualResetEvent(false); m_PictureReady = new ManualResetEvent(false);
m_bGotOne = true; m_bGotOne = true;
m_bRunning = false; m_bRunning = false;
timer1.Interval = 1000 / 15; // 15 fps timer1.Interval = 1000 / 15; // 15 fps
timer1.Tick += new EventHandler(timer1_Tick); timer1.Tick += new EventHandler(timer1_Tick);
timer1.Start(); timer1.Start();
} }
catch catch
{ {
Dispose(); Dispose();
throw; throw;
} }
} }
/// <summary> release everything. </summary> /// <summary> release everything. </summary>
public void Dispose() public void Dispose()
{ {
timer1.Stop(); timer1.Stop();
if (camimage != null) if (camimage != null)
{ {
camimage(null); // clear last pic camimage(null); // clear last pic
} }
CloseInterfaces(); CloseInterfaces();
if (m_PictureReady != null) if (m_PictureReady != null)
{ {
m_PictureReady.Close(); m_PictureReady.Close();
m_PictureReady = null; m_PictureReady = null;
} }
} }
// Destructor // Destructor
~Capture() ~Capture()
{ {
Dispose(); Dispose();
} }
public int Width public int Width
{ {
get get
{ {
return m_videoWidth; return m_videoWidth;
} }
} }
public int Height public int Height
{ {
get get
{ {
return m_videoHeight; return m_videoHeight;
} }
} }
public int Stride public int Stride
{ {
get get
{ {
return m_stride; return m_stride;
} }
} }
/// <summary> capture the next image </summary> /// <summary> capture the next image </summary>
public IntPtr GetBitMap() public IntPtr GetBitMap()
{ {
if (m_handle == IntPtr.Zero) if (m_handle == IntPtr.Zero)
m_handle = Marshal.AllocCoTaskMem(m_stride * m_videoHeight); m_handle = Marshal.AllocCoTaskMem(m_stride * m_videoHeight);
try try
{ {
// get ready to wait for new image // get ready to wait for new image
m_PictureReady.Reset(); m_PictureReady.Reset();
m_bGotOne = false; m_bGotOne = false;
// If the graph hasn't been started, start it. // If the graph hasn't been started, start it.
Start(); Start();
// Start waiting // Start waiting
if ( ! m_PictureReady.WaitOne(5000, false) ) if ( ! m_PictureReady.WaitOne(5000, false) )
{ {
throw new Exception("Timeout waiting to get picture"); throw new Exception("Timeout waiting to get picture");
} }
//Pause(); //- we are effectivly pulling at 15 fps, so no need to pause //Pause(); //- we are effectivly pulling at 15 fps, so no need to pause
} }
catch catch
{ {
Marshal.FreeCoTaskMem(m_handle); Marshal.FreeCoTaskMem(m_handle);
throw; throw;
} }
// Got one // Got one
return m_handle; return m_handle;
} }
// Start the capture graph // Start the capture graph
public void Start() public void Start()
{ {
if (!m_bRunning) if (!m_bRunning)
{ {
int hr = m_mediaCtrl.Run(); int hr = m_mediaCtrl.Run();
DsError.ThrowExceptionForHR( hr ); DsError.ThrowExceptionForHR( hr );
m_bRunning = true; m_bRunning = true;
} }
} }
// Pause the capture graph. // Pause the capture graph.
// Running the graph takes up a lot of resources. Pause it when it // Running the graph takes up a lot of resources. Pause it when it
// isn't needed. // isn't needed.
public void Pause() public void Pause()
{ {
if (m_bRunning) if (m_bRunning)
{ {
int hr = m_mediaCtrl.Pause(); int hr = m_mediaCtrl.Pause();
DsError.ThrowExceptionForHR( hr ); DsError.ThrowExceptionForHR( hr );
m_bRunning = false; m_bRunning = false;
} }
} }
public static List<string> getDevices() public static List<string> getDevices()
{ {
List<string> list = new List<string>(); List<string> list = new List<string>();
DsDevice[] capDevices; DsDevice[] capDevices;
// Get the collection of video devices // Get the collection of video devices
capDevices = DsDevice.GetDevicesOfCat(FilterCategory.VideoInputDevice); capDevices = DsDevice.GetDevicesOfCat(FilterCategory.VideoInputDevice);
foreach (DsDevice dev in capDevices) foreach (DsDevice dev in capDevices)
{ {
list.Add(dev.Name); list.Add(dev.Name);
} }
return list; return list;
} }
public bool showhud = true; public bool showhud = true;
void timer1_Tick(object sender, EventArgs e) void timer1_Tick(object sender, EventArgs e)
{ {
try try
{ {
ip = this.GetBitMap(); ip = this.GetBitMap();
image = new Bitmap(this.Width, this.Height, this.Stride, PixelFormat.Format24bppRgb, ip); image = new Bitmap(this.Width, this.Height, this.Stride, PixelFormat.Format24bppRgb, ip);
image.RotateFlip(RotateFlipType.RotateNoneFlipY); image.RotateFlip(RotateFlipType.RotateNoneFlipY);
if (camimage != null) if (camimage != null)
{ {
camimage(image); camimage(image);
} }
} }
catch { Console.WriteLine("Grab bmp failed"); timer1.Enabled = false; this.CloseInterfaces(); System.Windows.Forms.CustomMessageBox.Show("Problem with capture device, grabbing frame took longer than 5 sec"); } catch { Console.WriteLine("Grab bmp failed"); timer1.Enabled = false; this.CloseInterfaces(); System.Windows.Forms.CustomMessageBox.Show("Problem with capture device, grabbing frame took longer than 5 sec"); }
} }
/// <summary> build the capture graph for grabber. </summary> /// <summary> build the capture graph for grabber. </summary>
private void SetupGraph(DsDevice dev, AMMediaType media) private void SetupGraph(DsDevice dev, AMMediaType media)
{ {
int hr; int hr;
ISampleGrabber sampGrabber = null; ISampleGrabber sampGrabber = null;
IBaseFilter capFilter = null; IBaseFilter capFilter = null;
ICaptureGraphBuilder2 capGraph = null; ICaptureGraphBuilder2 capGraph = null;
// Get the graphbuilder object // Get the graphbuilder object
m_FilterGraph = (IFilterGraph2) new FilterGraph(); m_FilterGraph = (IFilterGraph2) new FilterGraph();
m_mediaCtrl = m_FilterGraph as IMediaControl; m_mediaCtrl = m_FilterGraph as IMediaControl;
try try
{ {
// Get the ICaptureGraphBuilder2 // Get the ICaptureGraphBuilder2
capGraph = (ICaptureGraphBuilder2) new CaptureGraphBuilder2(); capGraph = (ICaptureGraphBuilder2) new CaptureGraphBuilder2();
// Get the SampleGrabber interface // Get the SampleGrabber interface
sampGrabber = (ISampleGrabber) new SampleGrabber(); sampGrabber = (ISampleGrabber) new SampleGrabber();
// Start building the graph // Start building the graph
hr = capGraph.SetFiltergraph( m_FilterGraph ); hr = capGraph.SetFiltergraph( m_FilterGraph );
DsError.ThrowExceptionForHR( hr ); DsError.ThrowExceptionForHR( hr );
// Add the video device // Add the video device
hr = m_FilterGraph.AddSourceFilterForMoniker(dev.Mon, null, "Video input", out capFilter); hr = m_FilterGraph.AddSourceFilterForMoniker(dev.Mon, null, "Video input", out capFilter);
DsError.ThrowExceptionForHR( hr ); DsError.ThrowExceptionForHR( hr );
// add video crossbar // add video crossbar
// thanks to Andrew Fernie - this is to get tv tuner cards working // thanks to Andrew Fernie - this is to get tv tuner cards working
IAMCrossbar crossbar = null; IAMCrossbar crossbar = null;
object o; object o;
hr = capGraph.FindInterface(PinCategory.Capture, MediaType.Video, capFilter, typeof(IAMCrossbar).GUID, out o); hr = capGraph.FindInterface(PinCategory.Capture, MediaType.Video, capFilter, typeof(IAMCrossbar).GUID, out o);
if (hr >= 0) if (hr >= 0)
{ {
crossbar = (IAMCrossbar)o; crossbar = (IAMCrossbar)o;
int oPin, iPin; int oPin, iPin;
int ovLink, ivLink; int ovLink, ivLink;
ovLink = ivLink = 0; ovLink = ivLink = 0;
crossbar.get_PinCounts(out oPin, out iPin); crossbar.get_PinCounts(out oPin, out iPin);
int pIdxRel; int pIdxRel;
PhysicalConnectorType tp; PhysicalConnectorType tp;
for (int i = 0; i < iPin; i++) for (int i = 0; i < iPin; i++)
{ {
crossbar.get_CrossbarPinInfo(true, i, out pIdxRel, out tp); crossbar.get_CrossbarPinInfo(true, i, out pIdxRel, out tp);
if (tp == PhysicalConnectorType.Video_Composite) ivLink = i; if (tp == PhysicalConnectorType.Video_Composite) ivLink = i;
} }
for (int i = 0; i < oPin; i++) for (int i = 0; i < oPin; i++)
{ {
crossbar.get_CrossbarPinInfo(false, i, out pIdxRel, out tp); crossbar.get_CrossbarPinInfo(false, i, out pIdxRel, out tp);
if (tp == PhysicalConnectorType.Video_VideoDecoder) ovLink = i; if (tp == PhysicalConnectorType.Video_VideoDecoder) ovLink = i;
} }
try try
{ {
crossbar.Route(ovLink, ivLink); crossbar.Route(ovLink, ivLink);
o = null; o = null;
} }
catch catch
{ {
throw new Exception("Failed to get IAMCrossbar"); throw new Exception("Failed to get IAMCrossbar");
} }
} }
//add AVI Decompressor //add AVI Decompressor
IBaseFilter pAVIDecompressor = (IBaseFilter)new AVIDec(); IBaseFilter pAVIDecompressor = (IBaseFilter)new AVIDec();
hr = m_FilterGraph.AddFilter(pAVIDecompressor, "AVI Decompressor"); hr = m_FilterGraph.AddFilter(pAVIDecompressor, "AVI Decompressor");
DsError.ThrowExceptionForHR(hr); DsError.ThrowExceptionForHR(hr);
// //
IBaseFilter baseGrabFlt = (IBaseFilter) sampGrabber; IBaseFilter baseGrabFlt = (IBaseFilter) sampGrabber;
ConfigureSampleGrabber(sampGrabber); ConfigureSampleGrabber(sampGrabber);
// Add the frame grabber to the graph // Add the frame grabber to the graph
hr = m_FilterGraph.AddFilter( baseGrabFlt, "Ds.NET Grabber" ); hr = m_FilterGraph.AddFilter( baseGrabFlt, "Ds.NET Grabber" );
DsError.ThrowExceptionForHR( hr ); DsError.ThrowExceptionForHR( hr );
SetConfigParms(capGraph, capFilter, media); SetConfigParms(capGraph, capFilter, media);
hr = capGraph.RenderStream(PinCategory.Capture, MediaType.Video, capFilter, pAVIDecompressor, baseGrabFlt); hr = capGraph.RenderStream(PinCategory.Capture, MediaType.Video, capFilter, pAVIDecompressor, baseGrabFlt);
if (hr < 0) if (hr < 0)
{ {
hr = capGraph.RenderStream(PinCategory.Capture, MediaType.Video, capFilter, null, baseGrabFlt); hr = capGraph.RenderStream(PinCategory.Capture, MediaType.Video, capFilter, null, baseGrabFlt);
} }
DsError.ThrowExceptionForHR( hr ); DsError.ThrowExceptionForHR( hr );
SaveSizeInfo(sampGrabber); SaveSizeInfo(sampGrabber);
} }
finally finally
{ {
if (capFilter != null) if (capFilter != null)
{ {
Marshal.ReleaseComObject(capFilter); Marshal.ReleaseComObject(capFilter);
capFilter = null; capFilter = null;
} }
if (sampGrabber != null) if (sampGrabber != null)
{ {
Marshal.ReleaseComObject(sampGrabber); Marshal.ReleaseComObject(sampGrabber);
sampGrabber = null; sampGrabber = null;
} }
if (capGraph != null) if (capGraph != null)
{ {
Marshal.ReleaseComObject(capGraph); Marshal.ReleaseComObject(capGraph);
capGraph = null; capGraph = null;
} }
} }
} }
private void SaveSizeInfo(ISampleGrabber sampGrabber) private void SaveSizeInfo(ISampleGrabber sampGrabber)
{ {
int hr; int hr;
// Get the media type from the SampleGrabber // Get the media type from the SampleGrabber
AMMediaType media = new AMMediaType(); AMMediaType media = new AMMediaType();
hr = sampGrabber.GetConnectedMediaType( media ); hr = sampGrabber.GetConnectedMediaType( media );
DsError.ThrowExceptionForHR( hr ); DsError.ThrowExceptionForHR( hr );
if( (media.formatType != FormatType.VideoInfo) || (media.formatPtr == IntPtr.Zero) ) if( (media.formatType != FormatType.VideoInfo) || (media.formatPtr == IntPtr.Zero) )
{ {
throw new NotSupportedException( "Unknown Grabber Media Format" ); throw new NotSupportedException( "Unknown Grabber Media Format" );
} }
// Grab the size info // Grab the size info
VideoInfoHeader videoInfoHeader = (VideoInfoHeader) Marshal.PtrToStructure( media.formatPtr, typeof(VideoInfoHeader) ); VideoInfoHeader videoInfoHeader = (VideoInfoHeader) Marshal.PtrToStructure( media.formatPtr, typeof(VideoInfoHeader) );
m_videoWidth = videoInfoHeader.BmiHeader.Width; m_videoWidth = videoInfoHeader.BmiHeader.Width;
m_videoHeight = videoInfoHeader.BmiHeader.Height; m_videoHeight = videoInfoHeader.BmiHeader.Height;
m_stride = m_videoWidth * (videoInfoHeader.BmiHeader.BitCount / 8); m_stride = m_videoWidth * (videoInfoHeader.BmiHeader.BitCount / 8);
DsUtils.FreeAMMediaType(media); DsUtils.FreeAMMediaType(media);
media = null; media = null;
} }
private void ConfigureSampleGrabber(ISampleGrabber sampGrabber) private void ConfigureSampleGrabber(ISampleGrabber sampGrabber)
{ {
AMMediaType media; AMMediaType media;
int hr; int hr;
// Set the media type to Video/RBG24 // Set the media type to Video/RBG24
media = new AMMediaType(); media = new AMMediaType();
media.majorType = MediaType.Video; media.majorType = MediaType.Video;
media.subType = MediaSubType.RGB24; media.subType = MediaSubType.RGB24;
media.formatType = FormatType.VideoInfo; media.formatType = FormatType.VideoInfo;
hr = sampGrabber.SetMediaType( media ); hr = sampGrabber.SetMediaType( media );
DsError.ThrowExceptionForHR( hr ); DsError.ThrowExceptionForHR( hr );
DsUtils.FreeAMMediaType(media); DsUtils.FreeAMMediaType(media);
media = null; media = null;
// Configure the samplegrabber // Configure the samplegrabber
hr = sampGrabber.SetCallback( this, 1 ); hr = sampGrabber.SetCallback( this, 1 );
DsError.ThrowExceptionForHR( hr ); DsError.ThrowExceptionForHR( hr );
} }
// Set the Framerate, and video size // Set the Framerate, and video size
private void SetConfigParms(ICaptureGraphBuilder2 capGraph, IBaseFilter capFilter, AMMediaType media) private void SetConfigParms(ICaptureGraphBuilder2 capGraph, IBaseFilter capFilter, AMMediaType media)
{ {
int hr; int hr;
object o; object o;
// Find the stream config interface // Find the stream config interface
hr = capGraph.FindInterface( hr = capGraph.FindInterface(
PinCategory.Capture, MediaType.Video, capFilter, typeof(IAMStreamConfig).GUID, out o ); PinCategory.Capture, MediaType.Video, capFilter, typeof(IAMStreamConfig).GUID, out o );
IAMStreamConfig videoStreamConfig = o as IAMStreamConfig; IAMStreamConfig videoStreamConfig = o as IAMStreamConfig;
if (videoStreamConfig == null) if (videoStreamConfig == null)
{ {
throw new Exception("Failed to get IAMStreamConfig"); throw new Exception("Failed to get IAMStreamConfig");
} }
// Set the new format // Set the new format
hr = videoStreamConfig.SetFormat( media ); hr = videoStreamConfig.SetFormat( media );
DsError.ThrowExceptionForHR( hr ); DsError.ThrowExceptionForHR( hr );
DsUtils.FreeAMMediaType(media); DsUtils.FreeAMMediaType(media);
media = null; media = null;
} }
/// <summary> Shut down capture </summary> /// <summary> Shut down capture </summary>
private void CloseInterfaces() private void CloseInterfaces()
{ {
int hr; int hr;
try try
{ {
if( m_mediaCtrl != null ) if( m_mediaCtrl != null )
{ {
// Stop the graph // Stop the graph
hr = m_mediaCtrl.Stop(); hr = m_mediaCtrl.Stop();
m_bRunning = false; m_bRunning = false;
} }
} }
catch (Exception ex) catch (Exception ex)
{ {
Debug.WriteLine(ex); Debug.WriteLine(ex);
} }
if (m_FilterGraph != null) if (m_FilterGraph != null)
{ {
Marshal.ReleaseComObject(m_FilterGraph); Marshal.ReleaseComObject(m_FilterGraph);
m_FilterGraph = null; m_FilterGraph = null;
} }
} }
/// <summary> sample callback, NOT USED. </summary> /// <summary> sample callback, NOT USED. </summary>
int ISampleGrabberCB.SampleCB( double SampleTime, IMediaSample pSample ) int ISampleGrabberCB.SampleCB( double SampleTime, IMediaSample pSample )
{ {
if (!m_bGotOne) if (!m_bGotOne)
{ {
// Set bGotOne to prevent further calls until we // Set bGotOne to prevent further calls until we
// request a new bitmap. // request a new bitmap.
m_bGotOne = true; m_bGotOne = true;
IntPtr pBuffer; IntPtr pBuffer;
pSample.GetPointer(out pBuffer); pSample.GetPointer(out pBuffer);
int iBufferLen = pSample.GetSize(); int iBufferLen = pSample.GetSize();
if (pSample.GetSize() > m_stride * m_videoHeight) if (pSample.GetSize() > m_stride * m_videoHeight)
{ {
throw new Exception("Buffer is wrong size"); throw new Exception("Buffer is wrong size");
} }
CopyMemory(m_handle, pBuffer, m_stride * m_videoHeight); CopyMemory(m_handle, pBuffer, m_stride * m_videoHeight);
// Picture is ready. // Picture is ready.
m_PictureReady.Set(); m_PictureReady.Set();
} }
Marshal.ReleaseComObject(pSample); Marshal.ReleaseComObject(pSample);
return 0; return 0;
} }
/// <summary> buffer callback, COULD BE FROM FOREIGN THREAD. </summary> /// <summary> buffer callback, COULD BE FROM FOREIGN THREAD. </summary>
int ISampleGrabberCB.BufferCB( double SampleTime, IntPtr pBuffer, int BufferLen ) int ISampleGrabberCB.BufferCB( double SampleTime, IntPtr pBuffer, int BufferLen )
{ {
if (!m_bGotOne) if (!m_bGotOne)
{ {
// The buffer should be long enought // The buffer should be long enought
if(BufferLen <= m_stride * m_videoHeight) if(BufferLen <= m_stride * m_videoHeight)
{ {
// Copy the frame to the buffer // Copy the frame to the buffer
CopyMemory(m_handle, pBuffer, m_stride * m_videoHeight); CopyMemory(m_handle, pBuffer, m_stride * m_videoHeight);
} }
else else
{ {
throw new Exception("Buffer is wrong size"); throw new Exception("Buffer is wrong size");
} }
// Set bGotOne to prevent further calls until we // Set bGotOne to prevent further calls until we
// request a new bitmap. // request a new bitmap.
m_bGotOne = true; m_bGotOne = true;
// Picture is ready. // Picture is ready.
m_PictureReady.Set(); m_PictureReady.Set();
} }
else else
{ {
m_Dropped++; m_Dropped++;
} }
return 0; return 0;
} }
} }
} }

View File

@ -115,6 +115,19 @@ namespace ArdupilotMega.Utilities
return displayText; return displayText;
} }
public static int GetValue<T>(string item)
{
var list = Translate<T>();
foreach (var kvp in list)
{
if (kvp.Value == item)
return kvp.Key;
}
return -1;
}
} }
} }

View File

@ -8,7 +8,7 @@ using System.Globalization;
using System.ComponentModel; using System.ComponentModel;
using System.Windows.Forms; using System.Windows.Forms;
namespace ArdupilotMega namespace ArdupilotMega.Utilities
{ {
static class CultureInfoEx static class CultureInfoEx
{ {

View File

@ -5,7 +5,7 @@ using System.Text;
using System.Speech.Synthesis; using System.Speech.Synthesis;
using log4net; using log4net;
namespace ArdupilotMega namespace ArdupilotMega.Utilities
{ {
public class Speech public class Speech
{ {

View File

@ -5,7 +5,7 @@ using System.Text;
using System.Net; using System.Net;
using System.Net.Sockets; using System.Net.Sockets;
namespace ArdupilotMega namespace ArdupilotMega.Utilities
{ {
static class TCPConsole static class TCPConsole
{ {

View File

@ -5,7 +5,7 @@ using ArdupilotMega.Controls.BackstageView;
using log4net; using log4net;
using ArdupilotMega.Controls; using ArdupilotMega.Controls;
namespace ArdupilotMega namespace ArdupilotMega.Utilities
{ {
/// <summary> /// <summary>
/// Helper class for the stylng 'theming' of forms and controls, and provides MessageBox /// Helper class for the stylng 'theming' of forms and controls, and provides MessageBox

View File

@ -56,14 +56,14 @@ When the sticks are fully deflected:
<FIELD> <FIELD>
<NAME>Dampen</NAME> <NAME>Dampen</NAME>
<PARAMNAME>STAB_D</PARAMNAME> <PARAMNAME>STAB_D</PARAMNAME>
<RANGEMIN>0.001</RANGEMIN> <RANGEMIN>0</RANGEMIN>
<RANGEMAX>5</RANGEMAX> <RANGEMAX>5</RANGEMAX>
<STEP>0.001</STEP> <STEP>0.001</STEP>
</FIELD> </FIELD>
<FIELD> <FIELD>
<NAME>Dynamic</NAME> <NAME>Dynamic</NAME>
<PARAMNAME>STAB_D_S</PARAMNAME> <PARAMNAME>STAB_D_S</PARAMNAME>
<RANGEMIN>0.001</RANGEMIN> <RANGEMIN>0</RANGEMIN>
<RANGEMAX>1</RANGEMAX> <RANGEMAX>1</RANGEMAX>
<STEP>0.001</STEP> <STEP>0.001</STEP>
</FIELD> </FIELD>
@ -201,5 +201,87 @@ A distance error of 100cm * P of .25 = 25 cm/s
<STEP>0.1</STEP> <STEP>0.1</STEP>
</FIELD> </FIELD>
</FIELDS> </FIELDS>
<SUBHEAD>WP Speed:</SUBHEAD>
<DESC>
How fast the copter should move towards the target. A larger value means a faster return to center, but can cause the copter to oscillate around the target.
in m/s
</DESC>
<FIELDS>
<FIELD>
<NAME>Speed</NAME>
<PARAMNAME>WP_SPEED_MAX</PARAMNAME>
<RANGEMIN>1</RANGEMIN>
<RANGEMAX>30</RANGEMAX>
<STEP>1</STEP>
</FIELD>
</FIELDS>
</Item>
<!-- Alt Hold -->
<Item>
<HEAD>Altitude Hold:</HEAD>
<SUBHEAD>Altitude Error:</SUBHEAD>
<DESC>
How fast the copter should go to reach the correct altitude.
</DESC>
<FIELDS>
<FIELD>
<NAME>P</NAME>
<PARAMNAME>THR_ALT_P</PARAMNAME>
<RANGEMIN>0.001</RANGEMIN>
<RANGEMAX>5</RANGEMAX>
<STEP>0.001</STEP>
</FIELD>
<FIELD>
<NAME>I</NAME>
<PARAMNAME>THR_ALT_I</PARAMNAME>
<RANGEMIN>0</RANGEMIN>
<RANGEMAX>5</RANGEMAX>
<STEP>0.001</STEP>
</FIELD>
<FIELD>
<NAME>IMAX</NAME>
<PARAMNAME>THR_ALT_IMAX</PARAMNAME>
<RANGEMIN>0</RANGEMIN>
<RANGEMAX>50</RANGEMAX>
<STEP>0.1</STEP>
</FIELD>
</FIELDS>
<SUBHEAD>Thrust Rate:</SUBHEAD>
<DESC>
How much thrust to give us the desired rate.
This will change depending on the weight and thrust of your copter.
</DESC>
<FIELDS>
<FIELD>
<NAME>P</NAME>
<PARAMNAME>THR_RATE_P</PARAMNAME>
<RANGEMIN>0.001</RANGEMIN>
<RANGEMAX>5</RANGEMAX>
<STEP>0.001</STEP>
</FIELD>
<FIELD>
<NAME>I</NAME>
<PARAMNAME>THR_RATE_I</PARAMNAME>
<RANGEMIN>0</RANGEMIN>
<RANGEMAX>5</RANGEMAX>
<STEP>0.001</STEP>
</FIELD>
<FIELD>
<NAME>D</NAME>
<PARAMNAME>THR_RATE_D</PARAMNAME>
<RANGEMIN>0</RANGEMIN>
<RANGEMAX>5</RANGEMAX>
<STEP>0.001</STEP>
</FIELD>
<FIELD>
<NAME>IMAX</NAME>
<PARAMNAME>THR_RATE_IMAX</PARAMNAME>
<RANGEMIN>0</RANGEMIN>
<RANGEMAX>50</RANGEMAX>
<STEP>0.1</STEP>
</FIELD>
</FIELDS>
</Item> </Item>
</AC> </AC>

View File

@ -1 +1 @@
1.1.4494.38818 1.1.4498.32482

View File

@ -17,6 +17,7 @@ using log4net;
using System.Security.Permissions; using System.Security.Permissions;
using ArdupilotMega.Arduino; using ArdupilotMega.Arduino;
using ArdupilotMega.Utilities;
namespace ArdupilotMega namespace ArdupilotMega
{ {