APM Planner 1.1.38

add ap param support
fix dtr
fix firmware screen on mono
misc mono fix's
mods from mandrolic - partial.
Add spanish - issue 515
new sitl images for attitude hil - issue 513
This commit is contained in:
Michael Oborne committed 2012-02-20 19:30:47 +08:00
1 parent a3cb208468
commit 17c2eeb306
53 files changed
+5645 -1701

No files matched your search

+1 -1
View File
@@ -6,7 +6,7 @@ using System.IO;
namespace ArdupilotMega
{
public delegate void ProgressEventHandler(int progress);
public delegate void ProgressEventHandler(int progress,string status);
/// <summary>
/// Arduino STK interface
+82 -1
View File
@@ -196,6 +196,47 @@ namespace ArdupilotMega
return "";
}
public enum ap_var_type
{
AP_PARAM_NONE = 0,
AP_PARAM_INT8,
AP_PARAM_INT16,
AP_PARAM_INT32,
AP_PARAM_FLOAT,
AP_PARAM_VECTOR3F,
AP_PARAM_VECTOR6F,
AP_PARAM_MATRIX3F,
AP_PARAM_GROUP
};
static string[] type_names = new string[] {
"NONE", "INT8", "INT16", "INT32", "FLOAT", "VECTOR3F", "VECTOR6F","MATRIX6F", "GROUP"
};
static byte type_size(ap_var_type type)
{
switch (type) {
case ap_var_type.AP_PARAM_NONE:
case ap_var_type.AP_PARAM_GROUP:
return 0;
case ap_var_type.AP_PARAM_INT8:
return 1;
case ap_var_type.AP_PARAM_INT16:
return 2;
case ap_var_type.AP_PARAM_INT32:
return 4;
case ap_var_type.AP_PARAM_FLOAT:
return 4;
case ap_var_type.AP_PARAM_VECTOR3F:
return 3*4;
case ap_var_type.AP_PARAM_VECTOR6F:
return 6*4;
case ap_var_type.AP_PARAM_MATRIX3F:
return 3*3*4;
}
return 0;
}
/// <summary>
/// return the software id from eeprom
/// </summary>
@@ -223,7 +264,7 @@ namespace ArdupilotMega
byte[] buffer = port.download(1024 * 4);
port.Close();
if (buffer[0] != 'A' || buffer[1] != 'P') // this is the apvar header
if (buffer[0] != 'A' && buffer[0] != 'P' || buffer[1] != 'P' && buffer[1] != 'A') // this is the apvar header
{
return -1;
}
@@ -263,6 +304,46 @@ namespace ArdupilotMega
Console.WriteLine();
}
}
if (buffer[0] == 'P' && buffer[1] == 'A' && buffer[2] == 5) // ap param
{
int pos = 4;
byte key = 0;
while (pos < (1024 * 4))
{
key = buffer[pos];
pos++;
int group = buffer[pos];
pos++;
int type = buffer[pos];
pos++;
int size = type_size((ap_var_type)Enum.Parse(typeof(ap_var_type), type.ToString()));
Console.Write("{0:X4}: type {1} ({2}) key {3} group {4} size {5}\n ", pos - 2, type, type_names[type], key, group, size);
if (key == 0xff)
{
Console.WriteLine("end sentinal at {0}", pos - 2);
break;
}
if (key == 0)
{
//Array.Reverse(buffer, pos, 2);
return BitConverter.ToUInt16(buffer, pos);
}
for (int i = 0; i < size; i++)
{
Console.Write(" {0:X2}", buffer[pos]);
pos++;
}
Console.WriteLine();
}
}
}
return -1;
}
+1 -1
View File
@@ -219,7 +219,7 @@ namespace ArdupilotMega
if (Progress != null)
Progress((int)(((float)startaddress / (float)length) * 100));
Progress((int)(((float)startaddress / (float)length) * 100),"");
if (!sync())
{
+2 -2
View File
@@ -262,7 +262,7 @@ namespace ArdupilotMega
if (Progress != null)
Progress((int)(((float)startaddress / (float)length) * 100));
Progress((int)(((float)startaddress / (float)length) * 100),"");
if (command[1] != 0)
{
@@ -354,7 +354,7 @@ namespace ArdupilotMega
if (Progress != null)
Progress((int)(((float)startaddress / (float)length) * 100));
Progress((int)(((float)startaddress / (float)length) * 100),"");
if (command[1] != 0)
{
@@ -22,7 +22,7 @@
<UpdateMode>Background</UpdateMode>
<UpdateInterval>7</UpdateInterval>
<UpdateIntervalUnits>Days</UpdateIntervalUnits>
<UpdatePeriodically>false</UpdatePeriodically>
<UpdatePeriodically>true</UpdatePeriodically>
<UpdateRequired>false</UpdateRequired>
<MapFileExtensions>false</MapFileExtensions>
<TargetCulture>en-US</TargetCulture>
@@ -242,7 +242,7 @@
<Compile Include="CommsTCPSerial.cs" />
<Compile Include="CommsUdpSerial.cs" />
<Compile Include="Controls\ImageLabel.cs">
<SubType>Component</SubType>
<SubType>UserControl</SubType>
</Compile>
<Compile Include="Controls\ImageLabel.Designer.cs">
<DependentUpon>ImageLabel.cs</DependentUpon>
@@ -250,12 +250,20 @@
<Compile Include="Controls\myGMAP.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="Controls\ProgressReporter.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Controls\ProgressReporter.designer.cs">
<DependentUpon>ProgressReporter.cs</DependentUpon>
</Compile>
<Compile Include="Controls\XorPlus.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Controls\XorPlus.Designer.cs">
<DependentUpon>XorPlus.cs</DependentUpon>
</Compile>
<Compile Include="Mavlink\MavlinkCRC.cs" />
<Compile Include="Mavlink\MavlinkUtil.cs" />
<Compile Include="SerialInput.cs">
<SubType>Form</SubType>
</Compile>
@@ -301,7 +309,6 @@
<DependentUpon>JoystickSetup.cs</DependentUpon>
</Compile>
<Compile Include="MAVLinkTypes.cs" />
<Compile Include="MAVLinkTypesenum.cs" />
<Compile Include="Controls\MyButton.cs">
<SubType>Component</SubType>
</Compile>
@@ -312,7 +319,7 @@
<Compile Include="Controls\MyLabel.cs">
<SubType>Component</SubType>
</Compile>
<Compile Include="MyUserControl.cs">
<Compile Include="Controls\MyUserControl.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="ArduinoSTKv2.cs">
@@ -438,9 +445,54 @@
<EmbeddedResource Include="Controls\ImageLabel.resx">
<DependentUpon>ImageLabel.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Controls\ProgressReporter.resx">
<DependentUpon>ProgressReporter.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Controls\XorPlus.resx">
<DependentUpon>XorPlus.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="GCSViews\Configuration.es-ES.resx">
<DependentUpon>Configuration.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="GCSViews\Firmware.es-ES.resx">
<DependentUpon>Firmware.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="GCSViews\FlightData.es-ES.resx">
<DependentUpon>FlightData.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="GCSViews\FlightPlanner.es-ES.resx">
<DependentUpon>FlightPlanner.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="GCSViews\Help.es-ES.resx">
<DependentUpon>Help.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="GCSViews\Simulation.es-ES.resx">
<DependentUpon>Simulation.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="GCSViews\Terminal.es-ES.resx">
<DependentUpon>Terminal.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="JoystickSetup.es-ES.resx">
<DependentUpon>JoystickSetup.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Log.es-ES.resx">
<DependentUpon>Log.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="LogBrowse.es-ES.resx">
<DependentUpon>LogBrowse.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="MavlinkLog.es-ES.resx">
<DependentUpon>MavlinkLog.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="RAW_Sensor.es-ES.resx">
<DependentUpon>RAW_Sensor.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="SerialInput.es-ES.resx">
<DependentUpon>SerialInput.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="SerialInput.pl.resx">
<DependentUpon>SerialInput.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="SerialInput.resx">
<DependentUpon>SerialInput.cs</DependentUpon>
</EmbeddedResource>
@@ -713,6 +765,9 @@
<EmbeddedResource Include="SerialOutput.resx">
<DependentUpon>SerialOutput.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Setup\Setup.es-ES.resx">
<DependentUpon>Setup.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Setup\Setup.fr.resx">
<DependentUpon>Setup.cs</DependentUpon>
</EmbeddedResource>
@@ -12,9 +12,15 @@ namespace ArdupilotMega
public void toggleDTR()
{
DtrEnable = false;
System.Threading.Thread.Sleep(100);
DtrEnable = true;
base.DtrEnable = false;
base.RtsEnable = false;
System.Threading.Thread.Sleep(50);
base.DtrEnable = true;
base.RtsEnable = true;
System.Threading.Thread.Sleep(50);
}
}
}
+4 -2
View File
@@ -81,11 +81,11 @@ namespace System.IO.Ports
string host = "127.0.0.1";
if (Windows.Forms.DialogResult.Cancel == ArdupilotMega.Common.InputBox("remote host", "Enter host name/ip (ensure remote end is already started)", ref host))
{
return;
throw new Exception("Canceled by request");
}
if (Windows.Forms.DialogResult.Cancel == ArdupilotMega.Common.InputBox("remote Port", "Enter remote port", ref dest))
{
return;
throw new Exception("Canceled by request");
}
Port = dest;
@@ -94,6 +94,8 @@ namespace System.IO.Ports
client.NoDelay = true;
client.Client.NoDelay = true;
VerifyConnected();
return;
}
@@ -9,7 +9,7 @@ using System.Windows.Forms;
namespace ArdupilotMega
{
public partial class ImageLabel : ContainerControl
public partial class ImageLabel : UserControl //ContainerControl
{
public new event EventHandler Click;
@@ -18,6 +18,9 @@ namespace ArdupilotMega
public ImageLabel()
{
text = "";
picture = new Bitmap(640,480);
InitializeComponent();
}
+79 -38
View File
@@ -17,56 +17,97 @@ namespace ArdupilotMega
bool mouseover = false;
bool mousedown = false;
bool inOnPaint = false;
protected override void OnPaint(PaintEventArgs pevent)
{
//base.OnPaint(pevent);
Graphics gr = pevent.Graphics;
if (inOnPaint)
return;
Rectangle outside = new Rectangle(0,0,this.Width,this.Height);
inOnPaint = true;
LinearGradientBrush linear = new LinearGradientBrush(outside,Color.FromArgb(0x94,0xc1,0x1f),Color.FromArgb(0xcd,0xe2,0x96),LinearGradientMode.Vertical);
Pen mypen = new Pen(Color.FromArgb(0x79,0x94,0x29),2);
gr.FillRectangle(linear,outside);
gr.DrawRectangle(mypen,outside);
SolidBrush mybrush = new SolidBrush(Color.FromArgb(0x40,0x57,0x04));
if (mouseover)
try
{
SolidBrush brush = new SolidBrush(Color.FromArgb(73, 0x2b, 0x3a, 0x03));
Graphics gr = pevent.Graphics;
gr.FillRectangle(brush, 0, 0, this.Width, this.Height);
}
if (mousedown)
{
SolidBrush brush = new SolidBrush(Color.FromArgb(73, 0x2b, 0x3a, 0x03));
// gr.SmoothingMode = SmoothingMode.AntiAlias;
gr.FillRectangle(brush, 0, 0, this.Width, this.Height);
}
Rectangle outside = new Rectangle(0, 0, this.Width, this.Height);
if (!this.Enabled)
{
SolidBrush brush = new SolidBrush(Color.FromArgb(150, 0x2b, 0x3a, 0x03));
LinearGradientBrush linear = new LinearGradientBrush(outside, Color.FromArgb(0x94, 0xc1, 0x1f), Color.FromArgb(0xcd, 0xe2, 0x96), LinearGradientMode.Vertical);
gr.FillRectangle(brush, 0, 0, this.Width, this.Height);
Pen mypen = new Pen(Color.FromArgb(0x79, 0x94, 0x29), 2);
/*
gr.FillRectangle(new SolidBrush(Color.FromArgb(0x26, 0x27, 0x28)), outside);
GraphicsPath outline = new GraphicsPath();
float wid = this.Height / 5f;
float widright = wid + 1;
// tl
outline.AddArc(0, 0, wid, wid, 180, 90);
// top line
outline.AddLine(wid, 0, this.Width - widright, 0);
// tr
outline.AddArc(this.Width - widright, 0, wid, wid, 270, 90);
// br
outline.AddArc(this.Width - widright, this.Height - widright, wid, wid, 0, 90);
// bottom line
outline.AddLine(wid, this.Height - 1, this.Width - widright, this.Height - 1);
// bl
outline.AddArc(0, this.Height - widright, wid, wid, 90, 90);
gr.FillPath(linear, outline);
gr.DrawPath(mypen, outline);
*/
gr.FillRectangle(linear, outside);
gr.DrawRectangle(mypen, outside);
SolidBrush mybrush = new SolidBrush(Color.FromArgb(0x40, 0x57, 0x04));
if (mouseover)
{
SolidBrush brush = new SolidBrush(Color.FromArgb(73, 0x2b, 0x3a, 0x03));
gr.FillRectangle(brush, 0, 0, this.Width, this.Height);
}
if (mousedown)
{
SolidBrush brush = new SolidBrush(Color.FromArgb(73, 0x2b, 0x3a, 0x03));
gr.FillRectangle(brush, 0, 0, this.Width, this.Height);
}
if (!this.Enabled)
{
SolidBrush brush = new SolidBrush(Color.FromArgb(150, 0x2b, 0x3a, 0x03));
gr.FillRectangle(brush, 0, 0, this.Width, this.Height);
}
StringFormat stringFormat = new StringFormat();
stringFormat.Alignment = StringAlignment.Center;
stringFormat.LineAlignment = StringAlignment.Center;
string display = this.Text;
int amppos = display.IndexOf('&');
if (amppos != -1)
display = display.Remove(amppos, 1);
gr.DrawString(display, this.Font, mybrush, outside, stringFormat);
}
StringFormat stringFormat = new StringFormat();
stringFormat.Alignment = StringAlignment.Center;
stringFormat.LineAlignment = StringAlignment.Center;
string display = this.Text;
int amppos = display.IndexOf('&');
if (amppos != -1)
display = display.Remove(amppos,1);
gr.DrawString(display, this.Font, mybrush, outside, stringFormat);
catch { }
inOnPaint = false;
}
protected override void OnClick(EventArgs e)
@@ -1,19 +1,19 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace System.Windows.Forms
{
public class MyUserControl : System.Windows.Forms.UserControl
{
protected override void WndProc(ref Message m)
{
try
{
base.WndProc(ref m);
}
catch { }
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace System.Windows.Forms
{
public class MyUserControl : System.Windows.Forms.UserControl
{
protected override void WndProc(ref Message m)
{
try
{
base.WndProc(ref m);
}
catch { }
}
}
}
@@ -0,0 +1,64 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace ArdupilotMega
{
public partial class ProgressReporter : Form
{
bool cancel = false;
public ProgressReporter()
{
InitializeComponent();
cancel = false;
}
private void btnCancel_Click(object sender, EventArgs e)
{
cancel = true;
this.Close();
}
public void updateProgressAndStatus(int progress, string status)
{
//Console.WriteLine(progress + " " + status);
if (cancel)
{
throw new Exception("User Canceled");
}
if (this.IsDisposed)
{
return;
}
try
{
this.Invoke((MethodInvoker)delegate
{
lblProgressMessage.Text = status;
if (progress == -1)
{
this.progressBar1.Style = ProgressBarStyle.Marquee;
}
else
{
this.progressBar1.Style = ProgressBarStyle.Continuous;
this.progressBar1.Value = progress;
}
});
}
catch { }
System.Windows.Forms.Application.DoEvents();
}
}
}
@@ -0,0 +1,94 @@
using System.Windows.Forms;
namespace ArdupilotMega
{
partial class ProgressReporter
{
/// <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 Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.progressBar1 = new System.Windows.Forms.ProgressBar();
this.lblProgressMessage = new System.Windows.Forms.Label();
this.btnCancel = new System.Windows.Forms.Button();
this.SuspendLayout();
//
// progressBar1
//
this.progressBar1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.progressBar1.Location = new System.Drawing.Point(12, 82);
this.progressBar1.Name = "progressBar1";
this.progressBar1.Size = new System.Drawing.Size(277, 13);
this.progressBar1.TabIndex = 0;
//
// lblProgressMessage
//
this.lblProgressMessage.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.lblProgressMessage.Location = new System.Drawing.Point(13, 13);
this.lblProgressMessage.Name = "lblProgressMessage";
this.lblProgressMessage.Size = new System.Drawing.Size(276, 66);
this.lblProgressMessage.TabIndex = 1;
this.lblProgressMessage.Text = "label1";
//
// btnCancel
//
this.btnCancel.Location = new System.Drawing.Point(213, 109);
this.btnCancel.Name = "btnCancel";
this.btnCancel.Size = new System.Drawing.Size(75, 23);
this.btnCancel.TabIndex = 2;
this.btnCancel.Text = "Cancel";
this.btnCancel.UseVisualStyleBackColor = true;
this.btnCancel.Click += new System.EventHandler(this.btnCancel_Click);
//
// ProgressReporter
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(306, 144);
this.ControlBox = false;
this.Controls.Add(this.btnCancel);
this.Controls.Add(this.lblProgressMessage);
this.Controls.Add(this.progressBar1);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow;
this.MaximizeBox = false;
this.MinimizeBox = false;
this.Name = "ProgressReporter";
this.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Hide;
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
this.Text = "Progress";
this.ResumeLayout(false);
}
#endregion
private ProgressBar progressBar1;
private System.Windows.Forms.Label lblProgressMessage;
private Button btnCancel;
}
}
@@ -7,15 +7,19 @@ namespace ArdupilotMega
{
class myGMAP : GMap.NET.WindowsForms.GMapControl
{
public bool inOnPaint = false;
public bool inOnPaint = false;
string otherthread = "";
protected override void OnPaint(System.Windows.Forms.PaintEventArgs e)
{
if (inOnPaint)
{
Console.WriteLine("Was in onpaint Gmap th:" + System.Threading.Thread.CurrentThread.Name);
Console.WriteLine("Was in onpaint Gmap th:" + System.Threading.Thread.CurrentThread.Name + " in " + otherthread);
return;
}
otherthread = System.Threading.Thread.CurrentThread.Name;
inOnPaint = true;
try
File diff suppressed because it is too large. Load diff
@@ -1137,7 +1137,8 @@
resources.GetString("TUNE.Items16"),
resources.GetString("TUNE.Items17"),
resources.GetString("TUNE.Items18"),
resources.GetString("TUNE.Items19")});
resources.GetString("TUNE.Items19"),
resources.GetString("TUNE.Items20")});
resources.ApplyResources(this.TUNE, "TUNE");
this.TUNE.Name = "TUNE";
//
@@ -67,26 +67,30 @@ namespace ArdupilotMega.GCSViews
// fix for dup name
//XTRK_ANGLE_CD1.Name = "XTRK_ANGLE_CD";
XTRK_GAIN_SC1.Name = "XTRK_GAIN_SC";
// enable disable relevbant hardware tabs
if (MainV2.APMFirmware == MainV2.Firmwares.ArduPlane)
{
this.ConfigTabs.SuspendLayout();
ConfigTabs.SelectedIndex = 0;
TabAP.Enabled = true;
TabAC.Enabled = false;
this.ConfigTabs.ResumeLayout();
}
else
{
this.ConfigTabs.SuspendLayout();
ConfigTabs.SelectedIndex = 1;
TabAP.Enabled = false;
TabAC.Enabled = true;
this.ConfigTabs.ResumeLayout();
}
}
private void Configuration_Load(object sender, EventArgs e)
{
startup = true;
// enable disable relevbant hardware tabs
if (MainV2.APMFirmware == MainV2.Firmwares.ArduPlane)
{
ConfigTabs.SelectedIndex = 0;
TabAP.Enabled = true;
TabAC.Enabled = false;
}
else
{
ConfigTabs.SelectedIndex = 1;
TabAP.Enabled = false;
TabAC.Enabled = true;
}
// read tooltips
if (tooltips.Count == 0)
readToolTips();
@@ -167,7 +171,7 @@ namespace ArdupilotMega.GCSViews
// setup language selection
CultureInfo ci = null;
foreach (string name in new string[] { "en-US", "zh-Hans", "zh-TW", "ru-RU", "Fr", "Pl", "it-IT" })
foreach (string name in new string[] { "en-US", "zh-Hans", "zh-TW", "ru-RU", "Fr", "Pl", "it-IT", "es-ES" })
{
ci = MainV2.getcultureinfo(name);
if (ci != null)
@@ -931,10 +935,16 @@ namespace ArdupilotMega.GCSViews
((MyButton)sender).Enabled = false;
try
{
MainV2.comPort.getParamList();
}
catch { MessageBox.Show("Error: getting param list"); }
((MyButton)sender).Enabled = true;
startup = true;
Configuration_Load(null, null);
File diff suppressed because it is too large. Load diff
@@ -2703,6 +2703,9 @@
<data name="TUNE.Items19" xml:space="preserve">
<value>CH6_OPTFLOW_KD</value>
</data>
<data name="TUNE.Items20" xml:space="preserve">
<value>CH6_NAV_I</value>
</data>
<data name="TUNE.Location" type="System.Drawing.Point, System.Drawing">
<value>417, 336</value>
</data>
@@ -580,7 +580,7 @@ namespace ArdupilotMega.GCSViews
MainV2.givecomport = false;
}
void port_Progress(int progress)
void port_Progress(int progress,string status)
{
Console.WriteLine("Progress {0} ", progress);
this.progress.Value = progress;
@@ -0,0 +1,132 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="label2.Text" xml:space="preserve">
<value>Images by Max Levine</value>
</data>
<data name="label1.Text" xml:space="preserve">
<value>Por favor, haga clic en las imágenes de arriba para "versiones de vuelo"</value>
</data>
<data name="lbl_status.Text" xml:space="preserve">
<value>Estado</value>
</data>
<data name="BUT_setup.Text" xml:space="preserve">
<value>APM programa de instalación (plano y quad</value>
</data>
</root>
@@ -302,14 +302,7 @@ namespace ArdupilotMega.GCSViews
{
if (threadrun == 0) { return; }
this.BeginInvoke((System.Windows.Forms.MethodInvoker)delegate()
{
try
{
BUT_playlog.Text = "Pause";
}
catch { }
});
updatePlayPauseButton(true);
if (comPort.BaseStream.IsOpen)
MainV2.comPort.logreadmode = false;
@@ -355,17 +348,11 @@ namespace ArdupilotMega.GCSViews
}
else
{
if (threadrun == 0) { return; }
try
{
this.Invoke((System.Windows.Forms.MethodInvoker)delegate()
{
BUT_playlog.Text = "Play";
});
}
catch { }
updatePlayPauseButton(false);
}
try
{
//Console.WriteLine(DateTime.Now.Millisecond);
@@ -406,7 +393,7 @@ namespace ArdupilotMega.GCSViews
{
System.Threading.Thread.Sleep(1);
}
if (trackPoints.Count > int.Parse(MainV2.config["NUM_tracklength"].ToString()))
{
trackPoints.RemoveRange(0, trackPoints.Count - int.Parse(MainV2.config["NUM_tracklength"].ToString()));
@@ -426,10 +413,13 @@ namespace ArdupilotMega.GCSViews
FlightPlanner.pointlist.AddRange(MainV2.comPort.wps);
}
routes.Markers.Clear();
routes.Routes.Clear();
while (gMapControl1.inOnPaint == true)
{
System.Threading.Thread.Sleep(1);
}
updateClearRoutes();
route = new GMapRoute(trackPoints, "track");
//track.Stroke = Pens.Red;
@@ -493,8 +483,6 @@ namespace ArdupilotMega.GCSViews
gMapControl1.HoldInvalidation = false;
gMapControl1.Invalidate();
Application.DoEvents();
}
tracklast = DateTime.Now;
@@ -505,9 +493,47 @@ namespace ArdupilotMega.GCSViews
Console.WriteLine("FD Main loop exit");
}
// to prevent cross thread calls while in a draw and exception
private void updateClearRoutes()
{
// not async
this.Invoke((System.Windows.Forms.MethodInvoker)delegate()
{
routes.Markers.Clear();
routes.Routes.Clear();
});
}
private void updatePlayPauseButton(bool playing)
{
if (playing)
{
this.BeginInvoke((System.Windows.Forms.MethodInvoker)delegate()
{
try
{
BUT_playlog.Text = "Pause";
}
catch { }
});
}
else
{
this.BeginInvoke((System.Windows.Forms.MethodInvoker)delegate()
{
try
{
BUT_playlog.Text = "Play";
}
catch { }
});
}
}
private void updateBindingSource()
{
this.Invoke((System.Windows.Forms.MethodInvoker)delegate()
this.BeginInvoke((System.Windows.Forms.MethodInvoker)delegate()
{
MainV2.cs.UpdateCurrentSettings(bindingSource1);
});
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
@@ -0,0 +1,129 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="richTextBox1.Text" xml:space="preserve">
<value />
</data>
<data name="CHK_showconsole.Text" xml:space="preserve">
<value>Mostrar Consola (reiniciar)</value>
</data>
<data name="BUT_updatecheck.Text" xml:space="preserve">
<value>Comprobar Actualizaciones</value>
</data>
</root>
@@ -11,6 +11,7 @@ using System.Xml; // config file
using System.Runtime.InteropServices; // dll imports
using ZedGraph; // Graphs
using ArdupilotMega;
using ArdupilotMega.Mavlink;
using System.Reflection;
using System.Drawing.Drawing2D;
@@ -636,7 +637,7 @@ namespace ArdupilotMega.GCSViews
if (hzcounttime.Second != DateTime.Now.Second)
{
Console.WriteLine("SIM hz {0}", hzcount);
//Console.WriteLine("SIM hz {0}", hzcount);
hzcount = 0;
hzcounttime = DateTime.Now;
}
@@ -873,15 +874,7 @@ namespace ArdupilotMega.GCSViews
{
//FlightGear
object imudata = new fgIMUData();
MAVLink.ByteArrayToStructureEndian(data, ref imudata, 0);
imudata = (fgIMUData)(imudata);
fgIMUData imudata2 = (fgIMUData)imudata;
fgIMUData imudata2 = data.ByteArrayToStructureBigEndian<fgIMUData>(0);
if (imudata2.magic != 0x4c56414d)
return;
@@ -931,13 +924,7 @@ namespace ArdupilotMega.GCSViews
}
else if (receviedbytes == 658)
{
aeroin = new TDataFromAeroSimRC();
object temp = aeroin;
MAVLink.ByteArrayToStructure(data, ref temp, 0);
aeroin = (TDataFromAeroSimRC)(temp);
aeroin = data.ByteArrayToStructure<TDataFromAeroSimRC>(0);
att.pitch = (aeroin.Model_fPitch);
att.roll = (aeroin.Model_fRoll * -1);
@@ -1005,13 +992,7 @@ namespace ArdupilotMega.GCSViews
else if (receviedbytes == 408)
{
FGNetFDM fdm = new FGNetFDM();
object temp = fdm;
MAVLink.ByteArrayToStructureEndian(data, ref temp, 0);
fdm = (FGNetFDM)(temp);
FGNetFDM fdm = data.ByteArrayToStructureBigEndian<FGNetFDM>(0);
lastfdmdata = fdm;
File diff suppressed because it is too large. Load diff
@@ -0,0 +1,138 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="BUTtests.Text" xml:space="preserve">
<value>Tests</value>
</data>
<data name="Logs.Text" xml:space="preserve">
<value>Descargar Log</value>
</data>
<data name="BUTradiosetup.Text" xml:space="preserve">
<value>Ajustar Radio</value>
</data>
<data name="TXT_terminal.Text" xml:space="preserve">
<value />
</data>
<data name="BUT_logbrowse.Text" xml:space="preserve">
<value>Buscar Log</value>
</data>
<data name="BUTsetupshow.Text" xml:space="preserve">
<value>Mostrar Ajustes</value>
</data>
</root>
-152
View File
@@ -1,152 +0,0 @@
namespace ArdupilotMega.GCSViews
{
partial class test
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Component Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.panel3 = new BSE.Windows.Forms.Panel();
this.splitter1 = new BSE.Windows.Forms.Splitter();
this.panel1 = new BSE.Windows.Forms.Panel();
this.splitter2 = new BSE.Windows.Forms.Splitter();
this.SuspendLayout();
//
// panel3
//
this.panel3.AssociatedSplitter = this.splitter1;
this.panel3.BackColor = System.Drawing.Color.Transparent;
this.panel3.CaptionFont = new System.Drawing.Font("Segoe UI", 11.75F, System.Drawing.FontStyle.Bold);
this.panel3.CaptionHeight = 27;
this.panel3.CustomColors.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(184)))), ((int)(((byte)(184)))), ((int)(((byte)(184)))));
this.panel3.CustomColors.CaptionCloseIcon = System.Drawing.SystemColors.ControlText;
this.panel3.CustomColors.CaptionExpandIcon = System.Drawing.SystemColors.ControlText;
this.panel3.CustomColors.CaptionGradientBegin = System.Drawing.Color.FromArgb(((int)(((byte)(252)))), ((int)(((byte)(252)))), ((int)(((byte)(252)))));
this.panel3.CustomColors.CaptionGradientEnd = System.Drawing.SystemColors.ButtonFace;
this.panel3.CustomColors.CaptionGradientMiddle = System.Drawing.Color.FromArgb(((int)(((byte)(248)))), ((int)(((byte)(248)))), ((int)(((byte)(248)))));
this.panel3.CustomColors.CaptionSelectedGradientBegin = System.Drawing.Color.FromArgb(((int)(((byte)(194)))), ((int)(((byte)(224)))), ((int)(((byte)(255)))));
this.panel3.CustomColors.CaptionSelectedGradientEnd = System.Drawing.Color.FromArgb(((int)(((byte)(194)))), ((int)(((byte)(224)))), ((int)(((byte)(255)))));
this.panel3.CustomColors.CaptionText = System.Drawing.SystemColors.ControlText;
this.panel3.CustomColors.CollapsedCaptionText = System.Drawing.SystemColors.ControlText;
this.panel3.CustomColors.ContentGradientBegin = System.Drawing.SystemColors.ButtonFace;
this.panel3.CustomColors.ContentGradientEnd = System.Drawing.Color.FromArgb(((int)(((byte)(252)))), ((int)(((byte)(252)))), ((int)(((byte)(252)))));
this.panel3.CustomColors.InnerBorderColor = System.Drawing.SystemColors.Window;
this.panel3.Dock = System.Windows.Forms.DockStyle.Left;
this.panel3.ForeColor = System.Drawing.SystemColors.ControlText;
this.panel3.Image = null;
this.panel3.LinearGradientMode = System.Drawing.Drawing2D.LinearGradientMode.Vertical;
this.panel3.Location = new System.Drawing.Point(0, 0);
this.panel3.MinimumSize = new System.Drawing.Size(27, 27);
this.panel3.Name = "panel3";
this.panel3.PanelStyle = BSE.Windows.Forms.PanelStyle.Default;
this.panel3.ShowExpandIcon = true;
this.panel3.Size = new System.Drawing.Size(194, 461);
this.panel3.TabIndex = 4;
this.panel3.Text = "panel3";
this.panel3.ToolTipTextCloseIcon = null;
this.panel3.ToolTipTextExpandIconPanelCollapsed = null;
this.panel3.ToolTipTextExpandIconPanelExpanded = null;
//
// splitter1
//
this.splitter1.BackColor = System.Drawing.Color.Transparent;
this.splitter1.Location = new System.Drawing.Point(194, 0);
this.splitter1.Name = "splitter1";
this.splitter1.Size = new System.Drawing.Size(3, 461);
this.splitter1.TabIndex = 6;
this.splitter1.TabStop = false;
//
// panel1
//
this.panel1.AssociatedSplitter = this.splitter2;
this.panel1.BackColor = System.Drawing.Color.Transparent;
this.panel1.CaptionFont = new System.Drawing.Font("Segoe UI", 11.75F, System.Drawing.FontStyle.Bold);
this.panel1.CaptionHeight = 27;
this.panel1.CustomColors.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(184)))), ((int)(((byte)(184)))), ((int)(((byte)(184)))));
this.panel1.CustomColors.CaptionCloseIcon = System.Drawing.SystemColors.ControlText;
this.panel1.CustomColors.CaptionExpandIcon = System.Drawing.SystemColors.ControlText;
this.panel1.CustomColors.CaptionGradientBegin = System.Drawing.Color.FromArgb(((int)(((byte)(252)))), ((int)(((byte)(252)))), ((int)(((byte)(252)))));
this.panel1.CustomColors.CaptionGradientEnd = System.Drawing.SystemColors.ButtonFace;
this.panel1.CustomColors.CaptionGradientMiddle = System.Drawing.Color.FromArgb(((int)(((byte)(248)))), ((int)(((byte)(248)))), ((int)(((byte)(248)))));
this.panel1.CustomColors.CaptionSelectedGradientBegin = System.Drawing.Color.FromArgb(((int)(((byte)(194)))), ((int)(((byte)(224)))), ((int)(((byte)(255)))));
this.panel1.CustomColors.CaptionSelectedGradientEnd = System.Drawing.Color.FromArgb(((int)(((byte)(194)))), ((int)(((byte)(224)))), ((int)(((byte)(255)))));
this.panel1.CustomColors.CaptionText = System.Drawing.SystemColors.ControlText;
this.panel1.CustomColors.CollapsedCaptionText = System.Drawing.SystemColors.ControlText;
this.panel1.CustomColors.ContentGradientBegin = System.Drawing.SystemColors.ButtonFace;
this.panel1.CustomColors.ContentGradientEnd = System.Drawing.Color.FromArgb(((int)(((byte)(252)))), ((int)(((byte)(252)))), ((int)(((byte)(252)))));
this.panel1.CustomColors.InnerBorderColor = System.Drawing.SystemColors.Window;
this.panel1.Dock = System.Windows.Forms.DockStyle.Right;
this.panel1.ForeColor = System.Drawing.SystemColors.ControlText;
this.panel1.Image = null;
this.panel1.LinearGradientMode = System.Drawing.Drawing2D.LinearGradientMode.Vertical;
this.panel1.Location = new System.Drawing.Point(808, 0);
this.panel1.MinimumSize = new System.Drawing.Size(27, 27);
this.panel1.Name = "panel1";
this.panel1.PanelStyle = BSE.Windows.Forms.PanelStyle.Default;
this.panel1.ShowExpandIcon = true;
this.panel1.Size = new System.Drawing.Size(200, 461);
this.panel1.TabIndex = 7;
this.panel1.Text = "panel1";
this.panel1.ToolTipTextCloseIcon = null;
this.panel1.ToolTipTextExpandIconPanelCollapsed = null;
this.panel1.ToolTipTextExpandIconPanelExpanded = null;
//
// splitter2
//
this.splitter2.BackColor = System.Drawing.Color.Transparent;
this.splitter2.Dock = System.Windows.Forms.DockStyle.Right;
this.splitter2.Location = new System.Drawing.Point(805, 0);
this.splitter2.Name = "splitter2";
this.splitter2.Size = new System.Drawing.Size(3, 461);
this.splitter2.TabIndex = 8;
this.splitter2.TabStop = false;
//
// test
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.Controls.Add(this.splitter2);
this.Controls.Add(this.panel1);
this.Controls.Add(this.splitter1);
this.Controls.Add(this.panel3);
this.MinimumSize = new System.Drawing.Size(1008, 461);
this.Name = "test";
this.Size = new System.Drawing.Size(1008, 461);
this.Load += new System.EventHandler(this.test_Load);
this.ResumeLayout(false);
}
#endregion
private BSE.Windows.Forms.Panel panel3;
private BSE.Windows.Forms.Splitter splitter1;
private BSE.Windows.Forms.Panel panel1;
private BSE.Windows.Forms.Splitter splitter2;
}
}
@@ -1,27 +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;
namespace ArdupilotMega.GCSViews
{
public partial class test : UserControl
{
public test()
{
InitializeComponent();
}
private void test_Load(object sender, EventArgs e)
{
panel3.Expand = false;
panel1.Expand = false;
}
}
}
+4 -1
View File
@@ -241,6 +241,7 @@ namespace hud
}
bool inOnPaint = false;
string otherthread = "";
protected override void OnPaint(PaintEventArgs e)
{
@@ -265,10 +266,12 @@ namespace hud
if (inOnPaint)
{
Console.WriteLine("Was in onpaint Hud th:" + System.Threading.Thread.CurrentThread.Name);
Console.WriteLine("Was in onpaint Hud th:" + System.Threading.Thread.CurrentThread.Name + " in " + otherthread);
return;
}
otherthread = System.Threading.Thread.CurrentThread.Name;
inOnPaint = true;
starttime = DateTime.Now;
File diff suppressed because it is too large. Load diff
+138
View File
@@ -0,0 +1,138 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="$this.Text" xml:space="preserve">
<value>Log</value>
</data>
<data name="BUT_DLall.Text" xml:space="preserve">
<value>Descargar todos los Logs</value>
</data>
<data name="BUT_redokml.Text" xml:space="preserve">
<value>Recrear KML</value>
</data>
<data name="BUT_DLthese.Text" xml:space="preserve">
<value>Descargar este Log</value>
</data>
<data name="BUT_clearlogs.Text" xml:space="preserve">
<value>Limpiar Logs</value>
</data>
<data name="BUT_firstperson.Text" xml:space="preserve">
<value>KML Primera Persona</value>
</data>
</root>
@@ -0,0 +1,141 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="BUT_loadlog.Text" xml:space="preserve">
<value>Cargar un Log</value>
</data>
<data name="$this.Text" xml:space="preserve">
<value>Mostrar Log</value>
</data>
<data name="Graphit.Text" xml:space="preserve">
<value>Gráfico de estos datos</value>
</data>
<data name="Graphit.ToolTip" xml:space="preserve">
<value>Gráficos de la celda actual puso de relieve</value>
</data>
<data name="BUT_loadlog.ToolTip" xml:space="preserve">
<value>Cargar un archivo diferente de Log</value>
</data>
<data name="BUT_cleargraph.ToolTip" xml:space="preserve">
<value>Borrar todos los datos del gráfico</value>
</data>
<data name="BUT_cleargraph.Text" xml:space="preserve">
<value>Limpiar Gráfico</value>
</data>
</root>
File diff suppressed because it is too large. Load diff
@@ -1,13 +0,0 @@
using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;
namespace ArdupilotMega
{
partial class MAVLink
{
}
}
+8 -9
View File
@@ -760,19 +760,19 @@ namespace ArdupilotMega
byte[] buffer = port.download(20);
port.Close();
if (buffer[0] != 'A' || buffer[1] != 'P') // this is the apvar header
if ((buffer[0] == 'A' || buffer[0] == 'P') && (buffer[1] == 'A' || buffer[1] == 'P')) // this is the apvar header
{
Console.WriteLine("Valid eeprom contents");
}
else
{
MessageBox.Show("You dont appear to have uploaded a firmware yet,\n\nPlease goto the firmware page and upload one.");
return;
}
else
{
Console.WriteLine("Valid eeprom contents");
}
}
}
catch { }
MessageBox.Show("Can not establish a connection\n\n" + ex.ToString());
//MessageBox.Show("Can not establish a connection\n\n" + ex.ToString());
return;
}
}
@@ -1632,9 +1632,9 @@ namespace ArdupilotMega
MainV2.instance.Invoke((MethodInvoker)delegate
{
loadinglabel.Text = text;
});
Application.DoEvents();
Application.DoEvents();
});
}
private static void checkForUpdate()
@@ -1881,7 +1881,6 @@ namespace ArdupilotMega
while (dataStream.CanRead)
{
Application.DoEvents();
try
{
if (dt.Second != DateTime.Now.Second)
@@ -0,0 +1,48 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ArdupilotMega.Mavlink
{
class MavlinkCRC
{
const int X25_INIT_CRC = 0xffff;
const int X25_VALIDATE_CRC = 0xf0b8;
public static ushort crc_accumulate(byte b, ushort crc)
{
unchecked
{
byte ch = (byte)(b ^ (byte)(crc & 0x00ff));
ch = (byte)(ch ^ (ch << 4));
return (ushort)((crc >> 8) ^ (ch << 8) ^ (ch << 3) ^ (ch >> 4));
}
}
public static ushort crc_calculate(byte[] pBuffer, int length)
{
if (length < 1)
{
return 0xffff;
}
// For a "message" of length bytes contained in the unsigned char array
// pointed to by pBuffer, calculate the CRC
// crcCalculate(unsigned char* pBuffer, int length, unsigned short* checkConst) < not needed
ushort crcTmp;
int i;
crcTmp = X25_INIT_CRC;
for (i = 1; i < length; i++) // skips header U
{
crcTmp = crc_accumulate(pBuffer[i], crcTmp);
//Console.WriteLine(crcTmp + " " + pBuffer[i] + " " + length);
}
return (crcTmp);
}
}
}
File diff suppressed because it is too large. Load diff
@@ -0,0 +1,129 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="$this.Text" xml:space="preserve">
<value>Log</value>
</data>
<data name="BUT_redokml.Text" xml:space="preserve">
<value>Crear KML</value>
</data>
<data name="BUT_humanreadable.Text" xml:space="preserve">
<value>Convertir a Texto</value>
</data>
</root>
@@ -34,5 +34,5 @@ using System.Resources;
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.1.37")]
[assembly: AssemblyFileVersion("1.1.38")]
[assembly: NeutralResourcesLanguageAttribute("")]
File diff suppressed because it is too large. Load diff
@@ -0,0 +1,123 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="textBox1.Text" xml:space="preserve">
<value>Lo que esto hace. 1. se las actuales coordenadas GPS de un GPS NMEA. 2. envía un WP modo guiado a la AP cada 2 segundos. Como Usar 1. conectar con la AP. 2. el despegue, el modo de prueba guiada está trabajando. 3. abrir este y escoja su puerto com, y la velocidad de su NMEA GPS. 4. ahora debe estar siguiéndote.</value>
</data>
</root>
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
@@ -0,0 +1,88 @@
<?xml version="1.0"?>
<PropertyList>
<!--Airframe-->
<path>plus_quad2.ac</path>
<offsets>
<z-m>0.0</z-m>
<y-m>0</y-m>
<x-m>0.0</x-m>
<pitch-deg>0</pitch-deg>
<heading-deg>180</heading-deg>
</offsets>
<!--Propeller Right-->
<animation>
<type>noshadow</type>
<object-name>prop0</object-name>
</animation>
<animation>
<type>spin</type>
<object-name>prop0</object-name>
<property>/controls/engines/engine[0]/throttle</property>
<factor>12000</factor>
<axis>
<x1-m>0.000</x1-m>
<y1-m>-0.288</y1-m>
<z1-m>0.046</z1-m>
<x2-m>0.000</x2-m>
<y2-m>-0.288</y2-m>
<z2-m>0.012</z2-m>
</axis>
</animation>
<!--Propeller Left-->
<animation>
<type>noshadow</type>
<object-name>prop1</object-name>
</animation>
<animation>
<type>spin</type>
<object-name>prop1</object-name>
<property>/controls/engines/engine[1]/throttle</property>
<factor>12000</factor>
<axis>
<x1-m>0.000</x1-m>
<y1-m>0.288</y1-m>
<z1-m>0.046</z1-m>
<x2-m>0.000</x2-m>
<y2-m>0.288</y2-m>
<z2-m>0.012</z2-m>
</axis>
</animation>
<!--Propeller Front-->
<animation>
<type>noshadow</type>
<object-name>prop2</object-name>
</animation>
<animation>
<type>spin</type>
<object-name>prop2</object-name>
<property>/controls/engines/engine[2]/throttle</property>
<factor>12000</factor>
<axis>
<x1-m>0.288</x1-m>
<y1-m>0.000</y1-m>
<z1-m>0.046</z1-m>
<x2-m>0.288</x2-m>
<y2-m>0.000</y2-m>
<z2-m>0.012</z2-m>
</axis>
</animation>
<!--Propeller Back-->
<animation>
<type>noshadow</type>
<object-name>prop3</object-name>
</animation>
<animation>
<type>spin</type>
<object-name>prop3</object-name>
<property>/controls/engines/engine[3]/throttle</property>
<factor>12000</factor>
<axis>
<x1-m>-0.288</x1-m>
<y1-m>0.000</y1-m>
<z1-m>0.046</z1-m>
<x2-m>-0.288</x2-m>
<y2-m>0.000</y2-m>
<z2-m>0.012</z2-m>
</axis>
</animation>
</PropertyList>
@@ -0,0 +1,40 @@
round10 = func(v) {
if (v == nil) return 0;
return 0.1*int(v*10);
}
round100 = func(v) {
if (v == nil) return 0;
return 0.01*int(v*100);
}
var update_quad = func( ) {
asl_ft = getprop("/position/altitude-ft");
ground = getprop("/position/ground-elev-ft");
agl_m = (asl_ft - ground) * 0.3048;
setprop("/apm/altitude", round10(agl_m));
setprop("/apm/pitch", round10(getprop("/orientation/pitch-deg")));
setprop("/apm/roll", round10(getprop("/orientation/roll-deg")));
setprop("/apm/heading", round10(getprop("/orientation/heading-deg")));
# airspeed-kt is actually in feet per second (FDM NET bug)
setprop("/apm/airspeed", round10(0.3048*getprop("/velocities/airspeed-kt")));
setprop("/apm/motor_right", round10(getprop("/engines/engine[0]/rpm")/10.0));
setprop("/apm/motor_left", round10(getprop("/engines/engine[1]/rpm")/10.0));
setprop("/apm/motor_front", round10(getprop("/engines/engine[2]/rpm")/10.0));
setprop("/apm/motor_back", round10(getprop("/engines/engine[3]/rpm")/10.0));
}
var main_loop = func {
update_quad();
settimer(main_loop, 0);
}
setlistener("/sim/signals/fdm-initialized",
func {
main_loop();
});
File diff suppressed because it is too large. Load diff