From f399ada86f74d173ece6a5b7b676af094e89369b Mon Sep 17 00:00:00 2001 From: Michael Oborne Date: Fri, 9 Mar 2012 23:18:12 +0800 Subject: [PATCH] APM Planner 1.1.50 rename messagebox to custommessagebox mag calibration now working. > hardware setup tab --- Tools/ArdupilotMegaPlanner/Antenna/Maestro.cs | 6 +- Tools/ArdupilotMegaPlanner/Antenna/Tracker.cs | 4 +- Tools/ArdupilotMegaPlanner/ArduinoDetect.cs | 2 +- .../ArdupilotMegaPlanner/ArdupilotMega.csproj | 7 +- Tools/ArdupilotMegaPlanner/Camera.cs | 4 +- Tools/ArdupilotMegaPlanner/Capture.cs | 2 +- Tools/ArdupilotMegaPlanner/Common.cs | 8 +- Tools/ArdupilotMegaPlanner/CommsUdpSerial.cs | 2 +- .../Controls/CustomMessageBox.cs | 242 ++ .../ArdupilotMegaPlanner/Controls/MyButton.cs | 5 +- .../Controls/ProgressReporterDialogue.cs | 2 +- .../ArdupilotMegaPlanner/ElevationProfile.cs | 6 +- .../GCSViews/Configuration.cs | 16 +- .../ArdupilotMegaPlanner/GCSViews/Firmware.cs | 40 +- .../GCSViews/FlightData.cs | 38 +- .../GCSViews/FlightPlanner.Designer.cs | 6 - .../GCSViews/FlightPlanner.cs | 108 +- .../GCSViews/Simulation.cs | 2 +- .../ArdupilotMegaPlanner/GCSViews/Terminal.cs | 2 +- Tools/ArdupilotMegaPlanner/Joystick.cs | 12 +- Tools/ArdupilotMegaPlanner/JoystickSetup.cs | 4 +- Tools/ArdupilotMegaPlanner/Log.cs | 6 +- Tools/ArdupilotMegaPlanner/LogBrowse.cs | 10 +- Tools/ArdupilotMegaPlanner/MAVLink.cs | 9 +- Tools/ArdupilotMegaPlanner/MagCalib.cs | 324 +- Tools/ArdupilotMegaPlanner/MainV2.cs | 37 +- Tools/ArdupilotMegaPlanner/Program.cs | 18 +- .../Properties/AssemblyInfo.cs | 2 +- Tools/ArdupilotMegaPlanner/RAW_Sensor.cs | 45 +- .../Radio/3DRradio.Designer.cs | 37 +- Tools/ArdupilotMegaPlanner/Radio/3DRradio.cs | 26 +- .../ArdupilotMegaPlanner/Radio/3DRradio.resx | 120 + Tools/ArdupilotMegaPlanner/ResEdit.cs | 10 +- Tools/ArdupilotMegaPlanner/Script.cs | 2 +- Tools/ArdupilotMegaPlanner/SerialInput.cs | 8 +- Tools/ArdupilotMegaPlanner/SerialOutput.cs | 6 +- .../Setup/Setup.Designer.cs | 66 +- Tools/ArdupilotMegaPlanner/Setup/Setup.cs | 180 +- Tools/ArdupilotMegaPlanner/Setup/Setup.resx | 2805 +++++++++++++---- .../bin/Release/ArdupilotMegaPlanner.pdb | Bin 1000960 -> 1003008 bytes Tools/ArdupilotMegaPlanner/georefimage.cs | 2 +- Tools/ArdupilotMegaPlanner/temp.cs | 64 +- Tools/ArdupilotMegaPlanner/test.cs | 1 + 43 files changed, 3173 insertions(+), 1123 deletions(-) create mode 100644 Tools/ArdupilotMegaPlanner/Controls/CustomMessageBox.cs create mode 100644 Tools/ArdupilotMegaPlanner/test.cs diff --git a/Tools/ArdupilotMegaPlanner/Antenna/Maestro.cs b/Tools/ArdupilotMegaPlanner/Antenna/Maestro.cs index f69c713875..635b5048bb 100644 --- a/Tools/ArdupilotMegaPlanner/Antenna/Maestro.cs +++ b/Tools/ArdupilotMegaPlanner/Antenna/Maestro.cs @@ -36,13 +36,13 @@ namespace ArdupilotMega.Antenna if ((PanStartRange - PanEndRange) == 0) { - System.Windows.Forms.MessageBox.Show("Invalid Pan Range", "Error"); + System.Windows.Forms.CustomMessageBox.Show("Invalid Pan Range", "Error"); return false; } if ((TiltStartRange - TiltEndRange) == 0) { - System.Windows.Forms.MessageBox.Show("Invalid Tilt Range", "Error"); + System.Windows.Forms.CustomMessageBox.Show("Invalid Tilt Range", "Error"); return false; } @@ -50,7 +50,7 @@ namespace ArdupilotMega.Antenna { ComPort.Open(); } - catch (Exception ex) { System.Windows.Forms.MessageBox.Show("Connect failed " + ex.Message,"Error"); return false; } + catch (Exception ex) { System.Windows.Forms.CustomMessageBox.Show("Connect failed " + ex.Message,"Error"); return false; } return true; } diff --git a/Tools/ArdupilotMegaPlanner/Antenna/Tracker.cs b/Tools/ArdupilotMegaPlanner/Antenna/Tracker.cs index 65f2f8c242..5c1ee337bc 100644 --- a/Tools/ArdupilotMegaPlanner/Antenna/Tracker.cs +++ b/Tools/ArdupilotMegaPlanner/Antenna/Tracker.cs @@ -54,7 +54,7 @@ namespace ArdupilotMega.Antenna BaudRate = int.Parse(CMB_baudrate.Text) }; } - catch (Exception ex) { MessageBox.Show("Bad Port settings " + ex.Message); return; } + catch (Exception ex) { CustomMessageBox.Show("Bad Port settings " + ex.Message); return; } try { @@ -67,7 +67,7 @@ namespace ArdupilotMega.Antenna tracker.TrimTilt = TRK_tilttrim.Value; } - catch (Exception ex) { MessageBox.Show("Bad User input " + ex.Message); return; } + catch (Exception ex) { CustomMessageBox.Show("Bad User input " + ex.Message); return; } if (tracker.Init()) { diff --git a/Tools/ArdupilotMegaPlanner/ArduinoDetect.cs b/Tools/ArdupilotMegaPlanner/ArduinoDetect.cs index 62e86d3639..bbd132643b 100644 --- a/Tools/ArdupilotMegaPlanner/ArduinoDetect.cs +++ b/Tools/ArdupilotMegaPlanner/ArduinoDetect.cs @@ -178,7 +178,7 @@ namespace ArdupilotMega } else { - if (DialogResult.Yes == MessageBox.Show("Is this a APM 2?", "APM 2", MessageBoxButtons.YesNo)) + if (DialogResult.Yes == CustomMessageBox.Show("Is this a APM 2?", "APM 2", MessageBoxButtons.YesNo)) { return "2560-2"; } diff --git a/Tools/ArdupilotMegaPlanner/ArdupilotMega.csproj b/Tools/ArdupilotMegaPlanner/ArdupilotMega.csproj index 2846b45652..80b938dd1c 100644 --- a/Tools/ArdupilotMegaPlanner/ArdupilotMega.csproj +++ b/Tools/ArdupilotMegaPlanner/ArdupilotMega.csproj @@ -166,6 +166,10 @@ False + + False + Lib\netDxf.dll + False @@ -218,7 +222,7 @@ Tracker.cs - + Form @@ -442,6 +446,7 @@ + Tracker.cs diff --git a/Tools/ArdupilotMegaPlanner/Camera.cs b/Tools/ArdupilotMegaPlanner/Camera.cs index 6964565f1c..f1aaa912d2 100644 --- a/Tools/ArdupilotMegaPlanner/Camera.cs +++ b/Tools/ArdupilotMegaPlanner/Camera.cs @@ -182,7 +182,7 @@ namespace ArdupilotMega xmlwriter.Close(); } - catch (Exception ex) { MessageBox.Show(ex.ToString()); } + catch (Exception ex) { CustomMessageBox.Show(ex.ToString()); } } else { @@ -279,7 +279,7 @@ namespace ArdupilotMega camera.sensorheight = float.Parse(TXT_sensheight.Text); camera.sensorwidth = float.Parse(TXT_senswidth.Text); } - catch { MessageBox.Show("One of your entries is not a valid number"); return; } + catch { CustomMessageBox.Show("One of your entries is not a valid number"); return; } cameras[CMB_camera.Text] = camera; diff --git a/Tools/ArdupilotMegaPlanner/Capture.cs b/Tools/ArdupilotMegaPlanner/Capture.cs index bb1c5b0863..022f40fe37 100644 --- a/Tools/ArdupilotMegaPlanner/Capture.cs +++ b/Tools/ArdupilotMegaPlanner/Capture.cs @@ -227,7 +227,7 @@ namespace WebCamService camimage(image); } } - catch { Console.WriteLine("Grab bmp failed"); timer1.Enabled = false; this.CloseInterfaces(); System.Windows.Forms.MessageBox.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"); } } /// build the capture graph for grabber. diff --git a/Tools/ArdupilotMegaPlanner/Common.cs b/Tools/ArdupilotMegaPlanner/Common.cs index 74f101f290..5f8e8df3ff 100644 --- a/Tools/ArdupilotMegaPlanner/Common.cs +++ b/Tools/ArdupilotMegaPlanner/Common.cs @@ -525,7 +525,7 @@ namespace ArdupilotMega mode.mode = (byte)MAVLink.MAV_MODE.MAV_MODE_TEST2; break; default: - MessageBox.Show("No Mode Changed " + (int)Enum.Parse(Common.getModes(), modein)); + CustomMessageBox.Show("No Mode Changed " + (int)Enum.Parse(Common.getModes(), modein)); return false; } } @@ -553,12 +553,12 @@ namespace ArdupilotMega mode.mode = (byte)MAVLink.MAV_MODE.MAV_MODE_AUTO; break; default: - MessageBox.Show("No Mode Changed " + (int)Enum.Parse(Common.getModes(), modein)); + CustomMessageBox.Show("No Mode Changed " + (int)Enum.Parse(Common.getModes(), modein)); return false; } } } - catch { System.Windows.Forms.MessageBox.Show("Failed to find Mode"); return false; } + catch { System.Windows.Forms.CustomMessageBox.Show("Failed to find Mode"); return false; } return true; } @@ -574,7 +574,7 @@ namespace ArdupilotMega // Create a request using a URL that can receive a post. WebRequest request = WebRequest.Create(url); - request.Timeout = 5000; + request.Timeout = 10000; // Set the Method property of the request to POST. request.Method = "GET"; // Get the response. diff --git a/Tools/ArdupilotMegaPlanner/CommsUdpSerial.cs b/Tools/ArdupilotMegaPlanner/CommsUdpSerial.cs index 628a3616ec..3556c12f67 100644 --- a/Tools/ArdupilotMegaPlanner/CommsUdpSerial.cs +++ b/Tools/ArdupilotMegaPlanner/CommsUdpSerial.cs @@ -143,7 +143,7 @@ namespace System.IO.Ports client.Close(); } log.Info(ex.ToString()); - System.Windows.Forms.MessageBox.Show("Please check your Firewall settings\nPlease try running this command\n1. Run the following command in an elevated command prompt to disable Windows Firewall temporarily:\n \nNetsh advfirewall set allprofiles state off\n \nNote: This is just for test; please turn it back on with the command 'Netsh advfirewall set allprofiles state on'.\n"); + System.Windows.Forms.CustomMessageBox.Show("Please check your Firewall settings\nPlease try running this command\n1. Run the following command in an elevated command prompt to disable Windows Firewall temporarily:\n \nNetsh advfirewall set allprofiles state off\n \nNote: This is just for test; please turn it back on with the command 'Netsh advfirewall set allprofiles state on'.\n"); throw new Exception("The socket/serialproxy is closed " + e); } } diff --git a/Tools/ArdupilotMegaPlanner/Controls/CustomMessageBox.cs b/Tools/ArdupilotMegaPlanner/Controls/CustomMessageBox.cs new file mode 100644 index 0000000000..fda4573224 --- /dev/null +++ b/Tools/ArdupilotMegaPlanner/Controls/CustomMessageBox.cs @@ -0,0 +1,242 @@ +using System; +using System.Drawing; +using System.Windows.Forms; +using ArdupilotMega.Controls; +using System.Text; +using ArdupilotMega; + +namespace System.Windows.Forms +{ + public static class CustomMessageBox + { + const int FORM_Y_MARGIN = 10; + const int FORM_X_MARGIN = 16; + + static DialogResult _state = DialogResult.None; + + public static DialogResult Show(string text) + { + return Show(text, string.Empty, MessageBoxButtons.OK, MessageBoxIcon.None); + } + + public static DialogResult Show(string text, string caption) + { + return Show(text, caption, MessageBoxButtons.OK, MessageBoxIcon.None); + } + + public static DialogResult Show(string text, string caption, MessageBoxButtons buttons) + { + return Show(text, caption, buttons, MessageBoxIcon.None); + } + + public static DialogResult Show(string text, string caption, MessageBoxButtons buttons, MessageBoxIcon icon) + { + if (text == null) + text = ""; + + if (caption == null) + caption = ""; + + // ensure we are always in a known state + _state = DialogResult.None; + + // convert to nice wrapped lines. + text = AddNewLinesToText(text); + // get pixel width and height + Size textSize = TextRenderer.MeasureText(text, SystemFonts.DefaultFont); + // allow for icon + if (icon != MessageBoxIcon.None) + textSize.Width += SystemIcons.Question.Width; + + var msgBoxFrm = new Form + { + FormBorderStyle = FormBorderStyle.FixedDialog, + ShowInTaskbar = false, + StartPosition = FormStartPosition.CenterScreen, + Text = caption, + MaximizeBox = false, + MinimizeBox = false, + Width = textSize.Width + 50, + Height = textSize.Height + 100, + TopMost = true, + }; + + Rectangle screenRectangle = msgBoxFrm.RectangleToScreen(msgBoxFrm.ClientRectangle); + int titleHeight = screenRectangle.Top - msgBoxFrm.Top; + + var lblMessage = new Label + { + Left = 58, + Top = 15, + Width = textSize.Width + 10, + Height = textSize.Height + 10, + Text = text + }; + + msgBoxFrm.Controls.Add(lblMessage); + + var actualIcon = getMessageBoxIcon(icon); + + if (actualIcon == null) + { + lblMessage.Location = new Point(FORM_X_MARGIN, FORM_Y_MARGIN); + } + else + { + var iconPbox = new PictureBox + { + Image = actualIcon.ToBitmap(), + Location = new Point(FORM_X_MARGIN, FORM_Y_MARGIN) + }; + msgBoxFrm.Controls.Add(iconPbox); + } + + + AddButtonsToForm(msgBoxFrm, buttons); + + // display even if theme fails + try + { + ThemeManager.ApplyThemeTo(msgBoxFrm); + } + catch { } + + if (System.Windows.Forms.Application.OpenForms.Count > 0) + { + msgBoxFrm.StartPosition = FormStartPosition.Manual; + Form parentForm = System.Windows.Forms.Application.OpenForms[0]; + // center of first form + msgBoxFrm.Location = new Point(parentForm.Location.X + parentForm.Width / 2 - msgBoxFrm.Width / 2, + parentForm.Location.Y + parentForm.Height / 2 - msgBoxFrm.Height / 2); + DialogResult test = msgBoxFrm.ShowDialog(); + } + else + { + DialogResult test = msgBoxFrm.ShowDialog(); + } + + DialogResult answer = _state; + + return answer; + } + + static void msgBoxFrm_FormClosing(object sender, FormClosingEventArgs e) + { + throw new NotImplementedException(); + } + + // from http://stackoverflow.com/questions/2512781/winforms-big-paragraph-tooltip/2512895#2512895 + private static int maximumSingleLineTooltipLength = 85; + + private static string AddNewLinesToText(string text) + { + if (text.Length < maximumSingleLineTooltipLength) + return text; + int lineLength = maximumSingleLineTooltipLength; + StringBuilder sb = new StringBuilder(); + int currentLinePosition = 0; + for (int textIndex = 0; textIndex < text.Length; textIndex++) + { + // If we have reached the target line length and the next + // character is whitespace then begin a new line. + if (currentLinePosition >= lineLength && + char.IsWhiteSpace(text[textIndex])) + { + sb.Append(Environment.NewLine); + currentLinePosition = 0; + } + // If we have just started a new line, skip all the whitespace. + if (currentLinePosition == 0) + while (textIndex < text.Length && char.IsWhiteSpace(text[textIndex])) + textIndex++; + // Append the next character. + if (textIndex < text.Length) sb.Append(text[textIndex]); + currentLinePosition++; + } + return sb.ToString(); + } + + private static void AddButtonsToForm(Form msgBoxFrm, MessageBoxButtons buttons) + { + Rectangle screenRectangle = msgBoxFrm.RectangleToScreen(msgBoxFrm.ClientRectangle); + int titleHeight = screenRectangle.Top - msgBoxFrm.Top; + + var t = Type.GetType("Mono.Runtime"); + if ((t != null)) + titleHeight = 25; + + switch (buttons) + { + case MessageBoxButtons.OK: + var but = new MyButton + { + Size = new Size(75, 23), + Text = "OK", + Left = msgBoxFrm.Width - 75 - FORM_X_MARGIN, + Top = msgBoxFrm.Height - 23 - FORM_Y_MARGIN - titleHeight + }; + + but.Click += delegate { _state = DialogResult.OK; msgBoxFrm.Close(); }; + msgBoxFrm.Controls.Add(but); + msgBoxFrm.AcceptButton = but; + break; + + case MessageBoxButtons.YesNo: + + if (msgBoxFrm.Width < (75 * 2 + FORM_X_MARGIN * 3)) + msgBoxFrm.Width = (75 * 2 + FORM_X_MARGIN * 3); + + var butyes = new MyButton + { + Size = new Size(75, 23), + Text = "Yes", + Left = msgBoxFrm.Width - 75 * 2 - FORM_X_MARGIN * 2, + Top = msgBoxFrm.Height - 23 - FORM_Y_MARGIN - titleHeight + }; + + butyes.Click += delegate { _state = DialogResult.Yes; msgBoxFrm.Close(); }; + msgBoxFrm.Controls.Add(butyes); + msgBoxFrm.AcceptButton = butyes; + + var butno = new MyButton + { + Size = new Size(75, 23), + Text = "No", + Left = msgBoxFrm.Width - 75 - FORM_X_MARGIN, + Top = msgBoxFrm.Height - 23 - FORM_Y_MARGIN - titleHeight + }; + + butno.Click += delegate { _state = DialogResult.No; msgBoxFrm.Close(); }; + msgBoxFrm.Controls.Add(butno); + msgBoxFrm.CancelButton = butno; + break; + + default: + throw new NotImplementedException("Only MessageBoxButtons.OK and YesNo supported at this time"); + } + } + + /// + /// Get system icon for MessageBoxIcon. + /// + /// The MessageBoxIcon value. + /// SystemIcon type Icon. + private static Icon getMessageBoxIcon(MessageBoxIcon icon) + { + switch (icon) + { + case MessageBoxIcon.Asterisk: + return SystemIcons.Asterisk; + case MessageBoxIcon.Error: + return SystemIcons.Error; + case MessageBoxIcon.Exclamation: + return SystemIcons.Exclamation; + case MessageBoxIcon.Question: + return SystemIcons.Question; + default: + return null; + } + } + + } +} \ No newline at end of file diff --git a/Tools/ArdupilotMegaPlanner/Controls/MyButton.cs b/Tools/ArdupilotMegaPlanner/Controls/MyButton.cs index 8eb9d97e84..9faaeb8441 100644 --- a/Tools/ArdupilotMegaPlanner/Controls/MyButton.cs +++ b/Tools/ArdupilotMegaPlanner/Controls/MyButton.cs @@ -23,7 +23,8 @@ namespace ArdupilotMega public Color BGGradBot = Color.FromArgb(0xcd, 0xe2, 0x96); - public new Color ForeColor = Color.FromArgb(0x40, 0x57, 0x04); + // i want to ignore forecolor + public Color TextColor = Color.FromArgb(0x40, 0x57, 0x04); public Color Outline = Color.FromArgb(0x79, 0x94, 0x29); @@ -79,7 +80,7 @@ namespace ArdupilotMega gr.DrawRectangle(mypen, outside); - SolidBrush mybrush = new SolidBrush(ForeColor); + SolidBrush mybrush = new SolidBrush(TextColor); if (mouseover) { diff --git a/Tools/ArdupilotMegaPlanner/Controls/ProgressReporterDialogue.cs b/Tools/ArdupilotMegaPlanner/Controls/ProgressReporterDialogue.cs index 85757abd5e..683b995004 100644 --- a/Tools/ArdupilotMegaPlanner/Controls/ProgressReporterDialogue.cs +++ b/Tools/ArdupilotMegaPlanner/Controls/ProgressReporterDialogue.cs @@ -211,7 +211,7 @@ namespace ArdupilotMega.Controls + Environment.NewLine + Environment.NewLine + this.workerException.StackTrace; - MessageBox.Show(message,"Exception Details",MessageBoxButtons.OK,MessageBoxIcon.Information); + CustomMessageBox.Show(message,"Exception Details",MessageBoxButtons.OK,MessageBoxIcon.Information); } } diff --git a/Tools/ArdupilotMegaPlanner/ElevationProfile.cs b/Tools/ArdupilotMegaPlanner/ElevationProfile.cs index cae52f80a4..ca7d702ff1 100644 --- a/Tools/ArdupilotMegaPlanner/ElevationProfile.cs +++ b/Tools/ArdupilotMegaPlanner/ElevationProfile.cs @@ -28,7 +28,7 @@ namespace ArdupilotMega if (planlocs.Count <= 1) { - MessageBox.Show("Please plan something first"); + CustomMessageBox.Show("Please plan something first"); return; } @@ -113,7 +113,7 @@ namespace ArdupilotMega if (list.Count <= 2 || coords.Length > (2048 - 256) || distance > 50000) { - MessageBox.Show("To many/few WP's or to Big a Distance " + (distance/1000) + "km"); + CustomMessageBox.Show("To many/few WP's or to Big a Distance " + (distance/1000) + "km"); return answer; } @@ -145,7 +145,7 @@ namespace ArdupilotMega } } } - catch { MessageBox.Show("Error getting GE data"); } + catch { CustomMessageBox.Show("Error getting GE data"); } return answer; } diff --git a/Tools/ArdupilotMegaPlanner/GCSViews/Configuration.cs b/Tools/ArdupilotMegaPlanner/GCSViews/Configuration.cs index 04287df16e..08f7cf31c4 100644 --- a/Tools/ArdupilotMegaPlanner/GCSViews/Configuration.cs +++ b/Tools/ArdupilotMegaPlanner/GCSViews/Configuration.cs @@ -590,7 +590,7 @@ namespace ArdupilotMega.GCSViews string line = sr.ReadLine(); if (line.Contains("NOTE:")) - MessageBox.Show(line, "Saved Note"); + CustomMessageBox.Show(line, "Saved Note"); int index = line.IndexOf(','); @@ -711,7 +711,7 @@ namespace ArdupilotMega.GCSViews catch { } } - catch { MessageBox.Show("Set " + value + " Failed"); } + catch { CustomMessageBox.Show("Set " + value + " Failed"); } } } @@ -724,7 +724,7 @@ namespace ArdupilotMega.GCSViews { if (!MainV2.comPort.BaseStream.IsOpen) { - MessageBox.Show("Please Connect First"); + CustomMessageBox.Show("Please Connect First"); ConfigTabs.SelectedIndex = 0; } else @@ -764,7 +764,7 @@ namespace ArdupilotMega.GCSViews BUT_videostart.Enabled = false; } - catch (Exception ex) { MessageBox.Show("Camera Fail: " + ex.Message); } + catch (Exception ex) { CustomMessageBox.Show("Camera Fail: " + ex.Message); } } @@ -818,7 +818,7 @@ namespace ArdupilotMega.GCSViews } catch (Exception ex) { - MessageBox.Show("Can not add video source\n" + ex.ToString()); + CustomMessageBox.Show("Can not add video source\n" + ex.ToString()); return; } @@ -951,7 +951,7 @@ namespace ArdupilotMega.GCSViews } - catch { MessageBox.Show("Error: getting param list"); } + catch { CustomMessageBox.Show("Error: getting param list"); } ((MyButton)sender).Enabled = true; @@ -1122,7 +1122,7 @@ namespace ArdupilotMega.GCSViews string line = sr.ReadLine(); if (line.Contains("NOTE:")) - MessageBox.Show(line, "Saved Note"); + CustomMessageBox.Show(line, "Saved Note"); int index = line.IndexOf(','); @@ -1155,7 +1155,7 @@ namespace ArdupilotMega.GCSViews { if (startup) return; - MessageBox.Show("You need to restart the planner for this to take effect"); + CustomMessageBox.Show("You need to restart the planner for this to take effect"); MainV2.config["CHK_GDIPlus"] = CHK_GDIPlus.Checked.ToString(); } diff --git a/Tools/ArdupilotMegaPlanner/GCSViews/Firmware.cs b/Tools/ArdupilotMegaPlanner/GCSViews/Firmware.cs index ab5651f73a..643994b2db 100644 --- a/Tools/ArdupilotMegaPlanner/GCSViews/Firmware.cs +++ b/Tools/ArdupilotMegaPlanner/GCSViews/Firmware.cs @@ -141,7 +141,7 @@ namespace ArdupilotMega.GCSViews } catch (Exception ex) { - MessageBox.Show("Failed to get Firmware List : " + ex.Message); + CustomMessageBox.Show("Failed to get Firmware List : " + ex.Message); } log.Info("FW load done"); @@ -211,12 +211,12 @@ namespace ArdupilotMega.GCSViews // none found if (items.Count == 0) { - MessageBox.Show("The requested firmware was not found."); + CustomMessageBox.Show("The requested firmware was not found."); return; } else if (items.Count == 1) // 1 found so accept it { - DialogResult dr = MessageBox.Show("Are you sure you want to upload " + items[0].name + "?", "Continue", MessageBoxButtons.YesNo); + DialogResult dr = CustomMessageBox.Show("Are you sure you want to upload " + items[0].name + "?", "Continue", MessageBoxButtons.YesNo); if (dr == System.Windows.Forms.DialogResult.Yes) { update(items[0]); @@ -239,7 +239,7 @@ namespace ArdupilotMega.GCSViews { if (select.frame == "+" && temp.name.Contains("Plus")) { - DialogResult dr = MessageBox.Show("Are you sure you want to upload " + items[a].name + "?", "Continue", MessageBoxButtons.YesNo); + DialogResult dr = CustomMessageBox.Show("Are you sure you want to upload " + items[a].name + "?", "Continue", MessageBoxButtons.YesNo); if (dr == System.Windows.Forms.DialogResult.Yes) { update(items[a]); @@ -248,7 +248,7 @@ namespace ArdupilotMega.GCSViews } else if (select.frame == "X" && temp.name.Contains("X")) { - DialogResult dr = MessageBox.Show("Are you sure you want to upload " + items[a].name + "?", "Continue", MessageBoxButtons.YesNo); + DialogResult dr = CustomMessageBox.Show("Are you sure you want to upload " + items[a].name + "?", "Continue", MessageBoxButtons.YesNo); if (dr == System.Windows.Forms.DialogResult.Yes) { update(items[a]); @@ -261,7 +261,7 @@ namespace ArdupilotMega.GCSViews } else { - MessageBox.Show("Something has gone wrong, to many firmware choices"); + CustomMessageBox.Show("Something has gone wrong, to many firmware choices"); return; } } @@ -318,7 +318,7 @@ namespace ArdupilotMega.GCSViews { if (softwares.Count == 0) { - MessageBox.Show("No valid options"); + CustomMessageBox.Show("No valid options"); return; } @@ -330,7 +330,7 @@ namespace ArdupilotMega.GCSViews if (board == "") { - MessageBox.Show("Cant detect your APM version. Please check your cabling"); + CustomMessageBox.Show("Cant detect your APM version. Please check your cabling"); return; } @@ -344,9 +344,9 @@ namespace ArdupilotMega.GCSViews if (apmformat_version != -1 && apmformat_version != temp.k_format_version) { - if (DialogResult.No == MessageBox.Show("Epprom changed, all your setting will be lost during the update,\nDo you wish to continue?", "Epprom format changed (" + apmformat_version + " vs " + temp.k_format_version + ")", MessageBoxButtons.YesNo)) + if (DialogResult.No == CustomMessageBox.Show("Epprom changed, all your setting will be lost during the update,\nDo you wish to continue?", "Epprom format changed (" + apmformat_version + " vs " + temp.k_format_version + ")", MessageBoxButtons.YesNo)) { - MessageBox.Show("Please connect and backup your config in the configuration tab."); + CustomMessageBox.Show("Please connect and backup your config in the configuration tab."); return; } } @@ -370,7 +370,7 @@ namespace ArdupilotMega.GCSViews } else { - MessageBox.Show("Invalid Board Type"); + CustomMessageBox.Show("Invalid Board Type"); return; } @@ -426,7 +426,7 @@ namespace ArdupilotMega.GCSViews this.Refresh(); log.Info("Downloaded"); } - catch (Exception ex) { lbl_status.Text = "Failed download"; MessageBox.Show("Failed to download new firmware : " + ex.ToString()); return; } + catch (Exception ex) { lbl_status.Text = "Failed download"; CustomMessageBox.Show("Failed to download new firmware : " + ex.ToString()); return; } UploadFlash(Path.GetDirectoryName(Application.ExecutablePath) + Path.DirectorySeparatorChar + @"firmware.hex", board); } @@ -451,7 +451,7 @@ namespace ArdupilotMega.GCSViews sr.Dispose(); } lbl_status.Text = "Failed read HEX"; - MessageBox.Show("Failed to read firmware.hex : " + ex.Message); + CustomMessageBox.Show("Failed to read firmware.hex : " + ex.Message); return; } ArduinoComms port = new ArduinoSTK(); @@ -460,7 +460,7 @@ namespace ArdupilotMega.GCSViews { if (FLASH.Length > 126976) { - MessageBox.Show("Firmware is to big for a 1280, Please upgrade!!"); + CustomMessageBox.Show("Firmware is to big for a 1280, Please upgrade!!"); return; } //port = new ArduinoSTK(); @@ -539,7 +539,7 @@ namespace ArdupilotMega.GCSViews { if (FLASH[s] != flashverify[s]) { - MessageBox.Show("Upload succeeded, but verify failed: exp " + FLASH[s].ToString("X") + " got " + flashverify[s].ToString("X") + " at " + s); + CustomMessageBox.Show("Upload succeeded, but verify failed: exp " + FLASH[s].ToString("X") + " got " + flashverify[s].ToString("X") + " at " + s); break; } } @@ -549,7 +549,7 @@ namespace ArdupilotMega.GCSViews else { lbl_status.Text = "Failed upload"; - MessageBox.Show("Communication Error - no connection"); + CustomMessageBox.Show("Communication Error - no connection"); } port.Close(); @@ -588,7 +588,7 @@ namespace ArdupilotMega.GCSViews catch (Exception ex) { lbl_status.Text = "Failed upload"; - MessageBox.Show("Check port settings or Port in use? " + ex); + CustomMessageBox.Show("Check port settings or Port in use? " + ex); port.Close(); } flashing = false; @@ -655,7 +655,7 @@ namespace ArdupilotMega.GCSViews if (checksumact != checksum) { - MessageBox.Show("The hex file loaded is invalid, please try again."); + CustomMessageBox.Show("The hex file loaded is invalid, please try again."); throw new Exception("Checksum Failed - Invalid Hex"); } } @@ -664,7 +664,7 @@ namespace ArdupilotMega.GCSViews if (!hitend) { - MessageBox.Show("The hex file did no contain an end flag. aborting"); + CustomMessageBox.Show("The hex file did no contain an end flag. aborting"); throw new Exception("No end flag in file"); } @@ -678,7 +678,7 @@ namespace ArdupilotMega.GCSViews if (flashing == true) { e.Cancel = true; - MessageBox.Show("Cant exit while updating"); + CustomMessageBox.Show("Cant exit while updating"); } } diff --git a/Tools/ArdupilotMegaPlanner/GCSViews/FlightData.cs b/Tools/ArdupilotMegaPlanner/GCSViews/FlightData.cs index 2e55ef0f2f..f6a6c224c9 100644 --- a/Tools/ArdupilotMegaPlanner/GCSViews/FlightData.cs +++ b/Tools/ArdupilotMegaPlanner/GCSViews/FlightData.cs @@ -781,7 +781,7 @@ namespace ArdupilotMega.GCSViews Directory.CreateDirectory(Path.GetDirectoryName(Application.ExecutablePath) + Path.DirectorySeparatorChar + @"logs"); swlog = new StreamWriter(Path.GetDirectoryName(Application.ExecutablePath) + Path.DirectorySeparatorChar + @"logs" + Path.DirectorySeparatorChar + DateTime.Now.ToString("yyyy-MM-dd hh-mm") + " telem.log"); } - catch { MessageBox.Show("Log creation error"); } + catch { CustomMessageBox.Show("Log creation error"); } } private void BUTactiondo_Click(object sender, EventArgs e) @@ -795,7 +795,7 @@ namespace ArdupilotMega.GCSViews comPort.doAction((MAVLink.MAV_ACTION)Enum.Parse(typeof(MAVLink.MAV_ACTION), "MAV_ACTION_" + CMB_action.Text)); #endif } - catch { MessageBox.Show("The Command failed to execute"); } + catch { CustomMessageBox.Show("The Command failed to execute"); } ((Button)sender).Enabled = true; } @@ -811,7 +811,7 @@ namespace ArdupilotMega.GCSViews //System.Threading.Thread.Sleep(100); //comPort.doAction(MAVLink.MAV_ACTION.MAV_ACTION_SET_AUTO); // set auto } - catch { MessageBox.Show("The command failed to execute"); } + catch { CustomMessageBox.Show("The command failed to execute"); } ((Button)sender).Enabled = true; } @@ -872,7 +872,7 @@ namespace ArdupilotMega.GCSViews { if (!MainV2.comPort.BaseStream.IsOpen) { - MessageBox.Show("Please Connect First"); + CustomMessageBox.Show("Please Connect First"); return; } @@ -892,13 +892,13 @@ namespace ArdupilotMega.GCSViews int intalt = (int)(100 * MainV2.cs.multiplierdist); if (!int.TryParse(alt, out intalt)) { - MessageBox.Show("Bad Alt"); + CustomMessageBox.Show("Bad Alt"); return; } if (gotolocation.Lat == 0 || gotolocation.Lng == 0) { - MessageBox.Show("Bad Lat/Long"); + CustomMessageBox.Show("Bad Lat/Long"); return; } @@ -919,7 +919,7 @@ namespace ArdupilotMega.GCSViews MainV2.givecomport = false; } - catch (Exception ex) { MainV2.givecomport = false; MessageBox.Show("Error sending command : " + ex.Message); } + catch (Exception ex) { MainV2.givecomport = false; CustomMessageBox.Show("Error sending command : " + ex.Message); } } @@ -1009,7 +1009,7 @@ namespace ArdupilotMega.GCSViews tracklog.Minimum = 0; tracklog.Maximum = 100; } - catch { MessageBox.Show("Error: Failed to write log file"); } + catch { CustomMessageBox.Show("Error: Failed to write log file"); } } } @@ -1112,7 +1112,7 @@ namespace ArdupilotMega.GCSViews ((Button)sender).Enabled = false; comPort.setWPCurrent((ushort)CMB_setwp.SelectedIndex); // set nav to } - catch { MessageBox.Show("The command failed to execute"); } + catch { CustomMessageBox.Show("The command failed to execute"); } ((Button)sender).Enabled = true; } @@ -1143,7 +1143,7 @@ namespace ArdupilotMega.GCSViews comPort.doAction(MAVLink.MAV_ACTION.MAV_ACTION_SET_AUTO); #endif } - catch { MessageBox.Show("The Command failed to execute"); } + catch { CustomMessageBox.Show("The Command failed to execute"); } ((Button)sender).Enabled = true; } @@ -1158,7 +1158,7 @@ namespace ArdupilotMega.GCSViews comPort.doAction(MAVLink.MAV_ACTION.MAV_ACTION_RETURN); #endif } - catch { MessageBox.Show("The Command failed to execute"); } + catch { CustomMessageBox.Show("The Command failed to execute"); } ((Button)sender).Enabled = true; } @@ -1173,7 +1173,7 @@ namespace ArdupilotMega.GCSViews comPort.doAction(MAVLink.MAV_ACTION.MAV_ACTION_SET_MANUAL); #endif } - catch { MessageBox.Show("The Command failed to execute"); } + catch { CustomMessageBox.Show("The Command failed to execute"); } ((Button)sender).Enabled = true; } @@ -1356,7 +1356,7 @@ namespace ArdupilotMega.GCSViews { stopRecordToolStripMenuItem_Click(sender, e); - MessageBox.Show("Output avi will be saved to the log folder"); + CustomMessageBox.Show("Output avi will be saved to the log folder"); aviwriter = new AviWriter(); Directory.CreateDirectory(Path.GetDirectoryName(Application.ExecutablePath) + Path.DirectorySeparatorChar + @"logs"); @@ -1552,7 +1552,7 @@ namespace ArdupilotMega.GCSViews } else { - MessageBox.Show("Max 10 at a time."); + CustomMessageBox.Show("Max 10 at a time."); ((CheckBox)sender).Checked = false; } ThemeManager.ApplyThemeTo(this); @@ -1635,7 +1635,7 @@ namespace ArdupilotMega.GCSViews { if (!MainV2.comPort.BaseStream.IsOpen) { - MessageBox.Show("Please Connect First"); + CustomMessageBox.Show("Please Connect First"); return; } @@ -1645,13 +1645,13 @@ namespace ArdupilotMega.GCSViews int intalt = (int)(100 * MainV2.cs.multiplierdist); if (!int.TryParse(alt, out intalt)) { - MessageBox.Show("Bad Alt"); + CustomMessageBox.Show("Bad Alt"); return; } if (gotolocation.Lat == 0 || gotolocation.Lng == 0) { - MessageBox.Show("Bad Lat/Long"); + CustomMessageBox.Show("Bad Lat/Long"); return; } @@ -1735,7 +1735,7 @@ print 'Roll complete' "; - MessageBox.Show("This is Very ALPHA"); + CustomMessageBox.Show("This is Very ALPHA"); Form scriptedit = new Form(); @@ -1757,7 +1757,7 @@ print 'Roll complete' scriptedit.ShowDialog(); - if (DialogResult.Yes == MessageBox.Show("Run Script", "Run this script?", MessageBoxButtons.YesNo)) + if (DialogResult.Yes == CustomMessageBox.Show("Run Script", "Run this script?", MessageBoxButtons.YesNo)) { Script scr = new Script(); diff --git a/Tools/ArdupilotMegaPlanner/GCSViews/FlightPlanner.Designer.cs b/Tools/ArdupilotMegaPlanner/GCSViews/FlightPlanner.Designer.cs index 4f77a22a7e..acadb4b905 100644 --- a/Tools/ArdupilotMegaPlanner/GCSViews/FlightPlanner.Designer.cs +++ b/Tools/ArdupilotMegaPlanner/GCSViews/FlightPlanner.Designer.cs @@ -339,7 +339,6 @@ // // BUT_write // - this.BUT_write.ForeColor = System.Drawing.SystemColors.ControlText; resources.ApplyResources(this.BUT_write, "BUT_write"); this.BUT_write.Name = "BUT_write"; this.BUT_write.UseVisualStyleBackColor = true; @@ -347,7 +346,6 @@ // // BUT_read // - this.BUT_read.ForeColor = System.Drawing.SystemColors.ControlText; resources.ApplyResources(this.BUT_read, "BUT_read"); this.BUT_read.Name = "BUT_read"; this.BUT_read.UseVisualStyleBackColor = true; @@ -355,7 +353,6 @@ // // SaveFile // - this.SaveFile.ForeColor = System.Drawing.SystemColors.ControlText; resources.ApplyResources(this.SaveFile, "SaveFile"); this.SaveFile.Name = "SaveFile"; this.SaveFile.UseVisualStyleBackColor = true; @@ -363,7 +360,6 @@ // // BUT_loadwpfile // - this.BUT_loadwpfile.ForeColor = System.Drawing.SystemColors.ControlText; resources.ApplyResources(this.BUT_loadwpfile, "BUT_loadwpfile"); this.BUT_loadwpfile.Name = "BUT_loadwpfile"; this.BUT_loadwpfile.UseVisualStyleBackColor = true; @@ -608,7 +604,6 @@ // // button1 // - this.button1.ForeColor = System.Drawing.SystemColors.ControlText; resources.ApplyResources(this.button1, "button1"); this.button1.Name = "button1"; this.toolTip1.SetToolTip(this.button1, resources.GetString("button1.ToolTip")); @@ -617,7 +612,6 @@ // // BUT_Add // - this.BUT_Add.ForeColor = System.Drawing.SystemColors.ControlText; resources.ApplyResources(this.BUT_Add, "BUT_Add"); this.BUT_Add.Name = "BUT_Add"; this.toolTip1.SetToolTip(this.BUT_Add, resources.GetString("BUT_Add.ToolTip")); diff --git a/Tools/ArdupilotMegaPlanner/GCSViews/FlightPlanner.cs b/Tools/ArdupilotMegaPlanner/GCSViews/FlightPlanner.cs index 5aac614ce6..b6aeb84394 100644 --- a/Tools/ArdupilotMegaPlanner/GCSViews/FlightPlanner.cs +++ b/Tools/ArdupilotMegaPlanner/GCSViews/FlightPlanner.cs @@ -98,13 +98,13 @@ namespace ArdupilotMega.GCSViews // if (!hashdefines.ContainsKey("WP_START_BYTE")) { - MessageBox.Show("Your Ardupilot Mega project defines.h is Invalid"); + CustomMessageBox.Show("Your Ardupilot Mega project defines.h is Invalid"); //return false; } } catch (Exception) { - MessageBox.Show("Can't open file!"); + CustomMessageBox.Show("Can't open file!"); return false; } return true; @@ -180,7 +180,7 @@ namespace ArdupilotMega.GCSViews } if (wp_count == byte.MaxValue) { - MessageBox.Show("To many Waypoints!!!"); + CustomMessageBox.Show("To many Waypoints!!!"); break; } } @@ -200,7 +200,7 @@ namespace ArdupilotMega.GCSViews } catch (Exception ex) { - MessageBox.Show("Can't open file! " + ex.ToString()); + CustomMessageBox.Show("Can't open file! " + ex.ToString()); return false; } return true; @@ -260,7 +260,7 @@ namespace ArdupilotMega.GCSViews { if (selectedrow > Commands.RowCount) { - MessageBox.Show("Invalid coord, How did you do this?"); + CustomMessageBox.Show("Invalid coord, How did you do this?"); return; } DataGridViewTextBoxCell cell; @@ -286,13 +286,13 @@ namespace ArdupilotMega.GCSViews if (result == 0 || pass == false) { - MessageBox.Show("You must have a home altitude"); + CustomMessageBox.Show("You must have a home altitude"); return; } int results1; if (!int.TryParse(TXT_DefaultAlt.Text, out results1)) { - MessageBox.Show("Your default alt is not valid"); + CustomMessageBox.Show("Your default alt is not valid"); return; } } @@ -332,7 +332,7 @@ namespace ArdupilotMega.GCSViews if (float.Parse(TXT_homealt.Text) + int.Parse(TXT_DefaultAlt.Text) < alt) // calced height is less that GE ground height { - MessageBox.Show("Altitude appears to be low!! (you will fly into a hill)\nGoogle Ground height: " + alt + " Meters\nYour height: " + ((float.Parse(TXT_homealt.Text) + int.Parse(TXT_DefaultAlt.Text))) + " Meters"); + CustomMessageBox.Show("Altitude appears to be low!! (you will fly into a hill)\nGoogle Ground height: " + alt + " Meters\nYour height: " + ((float.Parse(TXT_homealt.Text) + int.Parse(TXT_DefaultAlt.Text))) + " Meters"); cell.Style.BackColor = Color.Red; } else @@ -346,7 +346,7 @@ namespace ArdupilotMega.GCSViews } else { - MessageBox.Show("Invalid Home or wp Alt"); + CustomMessageBox.Show("Invalid Home or wp Alt"); cell.Style.BackColor = Color.Red; } @@ -772,7 +772,7 @@ namespace ArdupilotMega.GCSViews for (int i = 1; i <= 7; i++) Commands.Columns[i].HeaderText = "setme"; } - catch (Exception ex) { MessageBox.Show(ex.ToString()); } + catch (Exception ex) { CustomMessageBox.Show(ex.ToString()); } } /// @@ -797,7 +797,7 @@ namespace ArdupilotMega.GCSViews //Console.WriteLine("editformat " + option + " value " + cmd); ChangeColumnHeader(cmd); } - catch (Exception ex) { MessageBox.Show(ex.ToString()); } + catch (Exception ex) { CustomMessageBox.Show(ex.ToString()); } } private void Commands_RowsAdded(object sender, DataGridViewRowsAddedEventArgs e) @@ -1179,7 +1179,7 @@ namespace ArdupilotMega.GCSViews } sw.Close(); } - catch (Exception) { MessageBox.Show("Error writing file"); } + catch (Exception) { CustomMessageBox.Show("Error writing file"); } } } @@ -1248,7 +1248,7 @@ namespace ArdupilotMega.GCSViews log.Info("Done"); } - catch (Exception ex) { error = 1; MessageBox.Show("Error : " + ex.ToString()); } + catch (Exception ex) { error = 1; CustomMessageBox.Show("Error : " + ex.ToString()); } try { this.BeginInvoke((MethodInvoker)delegate() @@ -1282,7 +1282,7 @@ namespace ArdupilotMega.GCSViews { if (CHK_altmode.Checked) { - if (DialogResult.No == MessageBox.Show("Absolute Alt is ticked are you sure?", "Alt Mode", MessageBoxButtons.YesNo)) + if (DialogResult.No == CustomMessageBox.Show("Absolute Alt is ticked are you sure?", "Alt Mode", MessageBoxButtons.YesNo)) { CHK_altmode.Checked = false; } @@ -1298,7 +1298,7 @@ namespace ArdupilotMega.GCSViews { if (!double.TryParse(Commands[b, a].Value.ToString(), out answer)) { - MessageBox.Show("There are errors in your mission"); + CustomMessageBox.Show("There are errors in your mission"); return; } } @@ -1501,7 +1501,7 @@ namespace ArdupilotMega.GCSViews { if (cellhome.Value.ToString() != TXT_homelat.Text && cellhome.Value.ToString() != "0") { - DialogResult dr = MessageBox.Show("Reset Home to loaded coords", "Reset Home Coords", MessageBoxButtons.YesNo); + DialogResult dr = CustomMessageBox.Show("Reset Home to loaded coords", "Reset Home Coords", MessageBoxButtons.YesNo); if (dr == DialogResult.Yes) { @@ -1633,7 +1633,7 @@ namespace ArdupilotMega.GCSViews } if (isNumber > 127) { - MessageBox.Show("The value can only be between 0 and 127"); + CustomMessageBox.Show("The value can only be between 0 and 127"); TXT_WPRad.Text = "127"; } writeKML(); @@ -1656,7 +1656,7 @@ namespace ArdupilotMega.GCSViews } if (isNumber > 127) { - MessageBox.Show("The value can only be between 0 and 127"); + CustomMessageBox.Show("The value can only be between 0 and 127"); TXT_loiterrad.Text = "127"; } } @@ -1712,7 +1712,7 @@ namespace ArdupilotMega.GCSViews writeKML(); } } - catch (Exception) { MessageBox.Show("Row error"); } + catch (Exception) { CustomMessageBox.Show("Row error"); } } private void Commands_DefaultValuesNeeded(object sender, DataGridViewRowEventArgs e) @@ -1792,7 +1792,7 @@ namespace ArdupilotMega.GCSViews string header = sr.ReadLine(); if (header == null || !header.Contains("QGC WPL 110")) { - MessageBox.Show("Invalid Waypoint file"); + CustomMessageBox.Show("Invalid Waypoint file"); return; } while (!error && !sr.EndOfStream) @@ -1839,11 +1839,11 @@ namespace ArdupilotMega.GCSViews wp_count++; } - catch { MessageBox.Show("Line invalid\n" + line); } + catch { CustomMessageBox.Show("Line invalid\n" + line); } if (wp_count == byte.MaxValue) { - MessageBox.Show("To many Waypoints!!!"); + CustomMessageBox.Show("To many Waypoints!!!"); break; } @@ -1859,7 +1859,7 @@ namespace ArdupilotMega.GCSViews } catch (Exception ex) { - MessageBox.Show("Can't open file! " + ex.ToString()); + CustomMessageBox.Show("Can't open file! " + ex.ToString()); } } @@ -2252,7 +2252,7 @@ namespace ArdupilotMega.GCSViews FlightData.mymap.MapType = (MapType)comboBoxMapType.SelectedItem; MainV2.config["MapType"] = comboBoxMapType.Text; } - catch { MessageBox.Show("Map change failed. try zomming out first."); } + catch { CustomMessageBox.Show("Map change failed. try zomming out first."); } } private void Commands_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e) @@ -2324,7 +2324,7 @@ namespace ArdupilotMega.GCSViews private void TXT_homelat_Enter(object sender, EventArgs e) { sethome = true; - MessageBox.Show("Click on the Map to set Home "); + CustomMessageBox.Show("Click on the Map to set Home "); } private void Planner_Resize(object sender, EventArgs e) @@ -2345,7 +2345,7 @@ namespace ArdupilotMega.GCSViews private void CHK_altmode_CheckedChanged(object sender, EventArgs e) { if (Commands.RowCount > 0 && !quickadd) - MessageBox.Show("You will need to change your altitudes"); + CustomMessageBox.Show("You will need to change your altitudes"); } protected override void OnPaint(PaintEventArgs pe) @@ -2391,7 +2391,7 @@ namespace ArdupilotMega.GCSViews RectLatLng area = MainMap.SelectedArea; if (area.IsEmpty) { - DialogResult res = MessageBox.Show("No ripp area defined, ripp displayed on screen?", "Rip", MessageBoxButtons.YesNo); + DialogResult res = CustomMessageBox.Show("No ripp area defined, ripp displayed on screen?", "Rip", MessageBoxButtons.YesNo); if (res == DialogResult.Yes) { area = MainMap.CurrentViewArea; @@ -2400,7 +2400,7 @@ namespace ArdupilotMega.GCSViews if (!area.IsEmpty) { - DialogResult res = MessageBox.Show("Ready ripp at Zoom = " + (int)MainMap.Zoom + " ?", "GMap.NET", MessageBoxButtons.YesNo); + DialogResult res = CustomMessageBox.Show("Ready ripp at Zoom = " + (int)MainMap.Zoom + " ?", "GMap.NET", MessageBoxButtons.YesNo); for (int i = 1; i <= MainMap.MaxZoom; i++) { @@ -2422,7 +2422,7 @@ namespace ArdupilotMega.GCSViews } else { - MessageBox.Show("Select map area holding ALT", "GMap.NET", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); + CustomMessageBox.Show("Select map area holding ALT", "GMap.NET", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } } @@ -2485,7 +2485,7 @@ namespace ArdupilotMega.GCSViews if (drawnpolygon == null || drawnpolygon.Points.Count == 0) { - MessageBox.Show("Right click the map to draw a polygon", "Area", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); + CustomMessageBox.Show("Right click the map to draw a polygon", "Area", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); return; } GMapPolygon area = drawnpolygon; @@ -2520,17 +2520,17 @@ namespace ArdupilotMega.GCSViews if (!double.TryParse(angle, out tryme)) { - MessageBox.Show("Invalid Angle"); + CustomMessageBox.Show("Invalid Angle"); return; } if (!double.TryParse(alt, out tryme)) { - MessageBox.Show("Invalid Alt"); + CustomMessageBox.Show("Invalid Alt"); return; } if (!double.TryParse(distance, out tryme)) { - MessageBox.Show("Invalid Distance"); + CustomMessageBox.Show("Invalid Distance"); return; } @@ -2691,7 +2691,7 @@ namespace ArdupilotMega.GCSViews if (Commands.RowCount > 150) { - MessageBox.Show("Stopping at 150 WP's"); + CustomMessageBox.Show("Stopping at 150 WP's"); break; } } @@ -2713,7 +2713,7 @@ namespace ArdupilotMega.GCSViews } else { - MessageBox.Show("If you're at the field, connect to your APM and wait for GPS lock. Then click 'Home Location' link to set home to your location"); + CustomMessageBox.Show("If you're at the field, connect to your APM and wait for GPS lock. Then click 'Home Location' link to set home to your location"); } } @@ -2771,7 +2771,7 @@ namespace ArdupilotMega.GCSViews polygons.Markers.Add(new GMapMarkerGoogleRed(start)); MainMap.Invalidate(); - MessageBox.Show("Distance: " + FormatDistance(MainMap.Manager.GetDistance(startmeasure, start), true) + " AZ: " + (MainMap.Manager.GetBearing(startmeasure, start).ToString("0"))); + CustomMessageBox.Show("Distance: " + FormatDistance(MainMap.Manager.GetDistance(startmeasure, start), true) + " AZ: " + (MainMap.Manager.GetBearing(startmeasure, start).ToString("0"))); polygons.Polygons.Remove(line); polygons.Markers.Clear(); startmeasure = new PointLatLng(); @@ -2794,7 +2794,7 @@ namespace ArdupilotMega.GCSViews { if (polygongridmode == false) { - MessageBox.Show("You will remain in polygon mode until you clear the polygon or create a grid/upload a fence"); + CustomMessageBox.Show("You will remain in polygon mode until you clear the polygon or create a grid/upload a fence"); } polygongridmode = true; @@ -2909,7 +2909,7 @@ namespace ArdupilotMega.GCSViews MainMap.Invalidate(); } catch { - MessageBox.Show("Remove point Failed. Please try again."); + CustomMessageBox.Show("Remove point Failed. Please try again."); } } } @@ -2981,7 +2981,7 @@ namespace ArdupilotMega.GCSViews GeoCoderStatusCode status = MainMap.SetCurrentPositionByKeywords(place); if (status != GeoCoderStatusCode.G_GEO_SUCCESS) { - MessageBox.Show("Google Maps Geocoder can't find: '" + place + "', reason: " + status.ToString(), "GMap.NET", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); + CustomMessageBox.Show("Google Maps Geocoder can't find: '" + place + "', reason: " + status.ToString(), "GMap.NET", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } else { @@ -3017,7 +3017,7 @@ namespace ArdupilotMega.GCSViews parser.ElementAdded += parser_ElementAdded; parser.ParseString(kml, true); - if (DialogResult.Yes == MessageBox.Show("Do you want to load this into the flight data screen?", "Load data", MessageBoxButtons.YesNo)) + if (DialogResult.Yes == CustomMessageBox.Show("Do you want to load this into the flight data screen?", "Load data", MessageBoxButtons.YesNo)) { foreach (var temp in kmlpolygons.Polygons) { @@ -3030,7 +3030,7 @@ namespace ArdupilotMega.GCSViews } } - catch (Exception ex) { MessageBox.Show("Bad KML File :" + ex.ToString()); } + catch (Exception ex) { CustomMessageBox.Show("Bad KML File :" + ex.ToString()); } } } @@ -3064,25 +3064,25 @@ namespace ArdupilotMega.GCSViews //FENCE_TOTAL if (MainV2.comPort.param["FENCE_ACTION"] == null) { - MessageBox.Show("Not Supported"); + CustomMessageBox.Show("Not Supported"); return; } if (drawnpolygon == null) { - MessageBox.Show("No polygon to upload"); + CustomMessageBox.Show("No polygon to upload"); return; } if (geofence.Markers.Count == 0) { - MessageBox.Show("No return location set"); + CustomMessageBox.Show("No return location set"); return; } if (drawnpolygon.Points.Count == 0) { - MessageBox.Show("No polygon drawn"); + CustomMessageBox.Show("No polygon drawn"); return; } @@ -3093,7 +3093,7 @@ namespace ArdupilotMega.GCSViews // check it if (!pnpoly(plll.ToArray(), geofence.Markers[0].Position.Lat, geofence.Markers[0].Position.Lng)) { - MessageBox.Show("Your return location is outside the polygon"); + CustomMessageBox.Show("Your return location is outside the polygon"); return; } @@ -3108,13 +3108,13 @@ namespace ArdupilotMega.GCSViews if (!int.TryParse(minalts, out minalt)) { - MessageBox.Show("Bad Min Alt"); + CustomMessageBox.Show("Bad Min Alt"); return; } if (!int.TryParse(maxalts, out maxalt)) { - MessageBox.Show("Bad Max Alt"); + CustomMessageBox.Show("Bad Max Alt"); return; } @@ -3125,7 +3125,7 @@ namespace ArdupilotMega.GCSViews } catch { - MessageBox.Show("Failed to set min/max fence alt"); + CustomMessageBox.Show("Failed to set min/max fence alt"); return; } @@ -3136,7 +3136,7 @@ namespace ArdupilotMega.GCSViews } catch { - MessageBox.Show("Failed to set FENCE_ACTION"); + CustomMessageBox.Show("Failed to set FENCE_ACTION"); return; } @@ -3192,13 +3192,13 @@ namespace ArdupilotMega.GCSViews if (MainV2.comPort.param["FENCE_ACTION"] == null || MainV2.comPort.param["FENCE_TOTAL"] == null) { - MessageBox.Show("Not Supported"); + CustomMessageBox.Show("Not Supported"); return; } if (int.Parse(MainV2.comPort.param["FENCE_TOTAL"].ToString()) <= 1) { - MessageBox.Show("Nothing to download"); + CustomMessageBox.Show("Nothing to download"); return; } @@ -3320,7 +3320,7 @@ namespace ArdupilotMega.GCSViews { if (geofence.Markers.Count == 0) { - MessageBox.Show("Please set a return location"); + CustomMessageBox.Show("Please set a return location"); return; } @@ -3362,7 +3362,7 @@ namespace ArdupilotMega.GCSViews sw.Close(); } - catch { MessageBox.Show("Failed to write fence file"); } + catch { CustomMessageBox.Show("Failed to write fence file"); } } } diff --git a/Tools/ArdupilotMegaPlanner/GCSViews/Simulation.cs b/Tools/ArdupilotMegaPlanner/GCSViews/Simulation.cs index 6a313ca07d..e0491361e3 100644 --- a/Tools/ArdupilotMegaPlanner/GCSViews/Simulation.cs +++ b/Tools/ArdupilotMegaPlanner/GCSViews/Simulation.cs @@ -274,7 +274,7 @@ namespace ArdupilotMega.GCSViews if (MainV2.comPort.BaseStream.IsOpen == false) { - MessageBox.Show("Please connect first"); + CustomMessageBox.Show("Please connect first"); return; } diff --git a/Tools/ArdupilotMegaPlanner/GCSViews/Terminal.cs b/Tools/ArdupilotMegaPlanner/GCSViews/Terminal.cs index fb5d258c30..24aeb9fdd1 100644 --- a/Tools/ArdupilotMegaPlanner/GCSViews/Terminal.cs +++ b/Tools/ArdupilotMegaPlanner/GCSViews/Terminal.cs @@ -152,7 +152,7 @@ namespace ArdupilotMega.GCSViews comPort.Write(Encoding.ASCII.GetBytes(cmd + "\r"), 0, cmd.Length + 1); } } - catch { MessageBox.Show("Error writing to com port"); } + catch { CustomMessageBox.Show("Error writing to com port"); } } } /* diff --git a/Tools/ArdupilotMegaPlanner/Joystick.cs b/Tools/ArdupilotMegaPlanner/Joystick.cs index 40ea6ce81d..a79db6ede6 100644 --- a/Tools/ArdupilotMegaPlanner/Joystick.cs +++ b/Tools/ArdupilotMegaPlanner/Joystick.cs @@ -117,7 +117,7 @@ namespace ArdupilotMega joystick.Acquire(); - System.Windows.Forms.MessageBox.Show("Please ensure you have calibrated your joystick in Windows first"); + System.Windows.Forms.CustomMessageBox.Show("Please ensure you have calibrated your joystick in Windows first"); joystick.Poll(); @@ -133,7 +133,7 @@ namespace ArdupilotMega values["Slider1"] = obj.GetSlider()[0]; values["Slider2"] = obj.GetSlider()[1]; - System.Windows.Forms.MessageBox.Show("Please move the joystick axis you want assigned to this function after clicking ok"); + System.Windows.Forms.CustomMessageBox.Show("Please move the joystick axis you want assigned to this function after clicking ok"); DateTime start = DateTime.Now; @@ -178,7 +178,7 @@ namespace ArdupilotMega } } - System.Windows.Forms.MessageBox.Show("No valid option was detected"); + System.Windows.Forms.CustomMessageBox.Show("No valid option was detected"); return joystickaxis.None; } @@ -210,7 +210,7 @@ namespace ArdupilotMega joystick.Poll(); - System.Windows.Forms.MessageBox.Show("Please press the joystick button you want assigned to this function after clicking ok"); + System.Windows.Forms.CustomMessageBox.Show("Please press the joystick button you want assigned to this function after clicking ok"); DateTime start = DateTime.Now; @@ -228,7 +228,7 @@ namespace ArdupilotMega } } - System.Windows.Forms.MessageBox.Show("No valid option was detected"); + System.Windows.Forms.CustomMessageBox.Show("No valid option was detected"); return -1; } @@ -332,7 +332,7 @@ namespace ArdupilotMega MainV2.comPort.setMode(mode); } - catch { System.Windows.Forms.MessageBox.Show("Failed to change Modes"); } + catch { System.Windows.Forms.CustomMessageBox.Show("Failed to change Modes"); } }); } } diff --git a/Tools/ArdupilotMegaPlanner/JoystickSetup.cs b/Tools/ArdupilotMegaPlanner/JoystickSetup.cs index 012475894d..9d491c7a68 100644 --- a/Tools/ArdupilotMegaPlanner/JoystickSetup.cs +++ b/Tools/ArdupilotMegaPlanner/JoystickSetup.cs @@ -34,7 +34,7 @@ namespace ArdupilotMega CMB_joysticks.Items.Add(device.ProductName); } } - catch { MessageBox.Show("Error geting joystick list: do you have the directx redist installed?"); this.Close(); return; } + catch { CustomMessageBox.Show("Error geting joystick list: do you have the directx redist installed?"); this.Close(); return; } if (CMB_joysticks.Items.Count > 0) CMB_joysticks.SelectedIndex = 0; @@ -134,7 +134,7 @@ namespace ArdupilotMega { joy.setButton(f, int.Parse(this.Controls.Find("cmbbutton" + name, false)[0].Text), this.Controls.Find("cmbaction" + name, false)[0].Text); } - catch { MessageBox.Show("Set Button "+ name + " Failed"); } + catch { CustomMessageBox.Show("Set Button "+ name + " Failed"); } } joy.start(CMB_joysticks.Text); diff --git a/Tools/ArdupilotMegaPlanner/Log.cs b/Tools/ArdupilotMegaPlanner/Log.cs index 17f5c72f74..53953f1449 100644 --- a/Tools/ArdupilotMegaPlanner/Log.cs +++ b/Tools/ArdupilotMegaPlanner/Log.cs @@ -77,7 +77,7 @@ namespace ArdupilotMega catch (Exception ex) { log.Error("Error opening comport", ex); - MessageBox.Show("Error opening comport"); + CustomMessageBox.Show("Error opening comport"); } var t11 = new System.Threading.Thread(delegate() @@ -312,7 +312,7 @@ namespace ArdupilotMega log.Info("exit while"); } - catch (Exception ex) { MessageBox.Show("Error reading data" + ex.ToString()); } + catch (Exception ex) { CustomMessageBox.Show("Error reading data" + ex.ToString()); } } string lastline = ""; @@ -899,7 +899,7 @@ namespace ArdupilotMega tr.Close(); } - catch (Exception ex) { MessageBox.Show("Error processing log. Is it still downloading? " + ex.Message); continue; } + catch (Exception ex) { CustomMessageBox.Show("Error processing log. Is it still downloading? " + ex.Message); continue; } writeKMLFirstPerson(logfile + ".kml"); diff --git a/Tools/ArdupilotMegaPlanner/LogBrowse.cs b/Tools/ArdupilotMegaPlanner/LogBrowse.cs index df1f7e349c..8d9dfa0b57 100644 --- a/Tools/ArdupilotMegaPlanner/LogBrowse.cs +++ b/Tools/ArdupilotMegaPlanner/LogBrowse.cs @@ -52,7 +52,7 @@ namespace ArdupilotMega dataGridView1.DataSource = m_dtCSV; } - catch (Exception ex) { MessageBox.Show("Failed to read File: " + ex.ToString()); } + catch (Exception ex) { CustomMessageBox.Show("Failed to read File: " + ex.ToString()); } foreach (DataGridViewColumn column in dataGridView1.Columns) { @@ -256,7 +256,7 @@ namespace ArdupilotMega { if (dataGridView1.RowCount == 0 || dataGridView1.ColumnCount == 0) { - MessageBox.Show("Please load a valid file"); + CustomMessageBox.Show("Please load a valid file"); return; } @@ -267,7 +267,7 @@ namespace ArdupilotMega if (col == 0) { - MessageBox.Show("Please pick another column, Highlight the cell you wish to graph"); + CustomMessageBox.Show("Please pick another column, Highlight the cell you wish to graph"); return; } @@ -307,11 +307,11 @@ namespace ArdupilotMega } else { - MessageBox.Show("Max of 5"); + CustomMessageBox.Show("Max of 5"); break; } } - catch { error++; log.Info("Bad Data : " + type + " " + col + " " + a); if (error >= 500) { MessageBox.Show("There is to much bad data - failing"); break; } } + catch { error++; log.Info("Bad Data : " + type + " " + col + " " + a); if (error >= 500) { CustomMessageBox.Show("There is to much bad data - failing"); break; } } } a++; } diff --git a/Tools/ArdupilotMegaPlanner/MAVLink.cs b/Tools/ArdupilotMegaPlanner/MAVLink.cs index 576cdead7f..2b181fbf75 100644 --- a/Tools/ArdupilotMegaPlanner/MAVLink.cs +++ b/Tools/ArdupilotMegaPlanner/MAVLink.cs @@ -472,13 +472,6 @@ namespace ArdupilotMega return true; } - public bool setParam(string paramname, object flag) - { - int value = (int)(float)param[paramname]; - - return setParam(paramname, value | (int)flag); - } - /// /// Set parameter on apm /// @@ -1917,7 +1910,7 @@ namespace ArdupilotMega MainV2.comPort.generatePacket((byte)MAVLink.MAVLINK_MSG_ID_SET_MODE, mode); } } - catch { System.Windows.Forms.MessageBox.Show("Failed to change Modes"); } + catch { System.Windows.Forms.CustomMessageBox.Show("Failed to change Modes"); } #endif } diff --git a/Tools/ArdupilotMegaPlanner/MagCalib.cs b/Tools/ArdupilotMegaPlanner/MagCalib.cs index 3db2921682..ca36613cfd 100644 --- a/Tools/ArdupilotMegaPlanner/MagCalib.cs +++ b/Tools/ArdupilotMegaPlanner/MagCalib.cs @@ -5,23 +5,24 @@ using System.Text; using System.Windows.Forms; using System.IO; using System.Collections; +using netDxf; +using netDxf.Entities; +using netDxf.Tables; +using netDxf.Header; +using System.Reflection; +using log4net; namespace ArdupilotMega { public class MagCalib { + private static readonly ILog log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); - //alglib.lsfit. - - public static void doWork() + /// + /// Self contained process tlog and save/display offsets + /// + public static void ProcessLog() { - // based of tridge's work - - Tuple offset = new Tuple(0, 0, 0); - List> data = new List>(); - - Hashtable filter = new Hashtable(); - OpenFileDialog openFileDialog1 = new OpenFileDialog(); openFileDialog1.Filter = "*.tlog|*.tlog"; openFileDialog1.FilterIndex = 2; @@ -37,100 +38,225 @@ namespace ArdupilotMega if (openFileDialog1.ShowDialog() == DialogResult.OK) { - foreach (string logfile in openFileDialog1.FileNames) - { - MAVLink mine = new MAVLink(); - mine.logplaybackfile = new BinaryReader(File.Open(logfile, FileMode.Open, FileAccess.Read, FileShare.Read)); - mine.logreadmode = true; + double[] ans = getOffsets(openFileDialog1.FileName); - mine.packets.Initialize(); // clear - - // gather data - while (mine.logplaybackfile.BaseStream.Position < mine.logplaybackfile.BaseStream.Length) - { - // bar moves to 100 % in this step - //progressBar1.Value = (int)((float)mine.logplaybackfile.BaseStream.Position / (float)mine.logplaybackfile.BaseStream.Length * 100.0f / 1.0f); - - //progressBar1.Refresh(); - //Application.DoEvents(); - - byte[] packetraw = mine.readPacket(); - - var packet = mine.DebugPacket(packetraw); - - if (packet == null) - continue; - - if (packet.GetType() == typeof(MAVLink.__mavlink_sensor_offsets_t)) - { - offset = new Tuple( - ((MAVLink.__mavlink_sensor_offsets_t)packet).mag_ofs_x, - ((MAVLink.__mavlink_sensor_offsets_t)packet).mag_ofs_y, - ((MAVLink.__mavlink_sensor_offsets_t)packet).mag_ofs_z); - } - else if (packet.GetType() == typeof(MAVLink.__mavlink_raw_imu_t)) - { - int div = 20; - - string item = (int)(((MAVLink.__mavlink_raw_imu_t)packet).xmag / div) + "," + - (int)(((MAVLink.__mavlink_raw_imu_t)packet).ymag / div) + "," + - (int)(((MAVLink.__mavlink_raw_imu_t)packet).zmag / div); - - if (filter.ContainsKey(item)) - { - filter[item] = (int)filter[item] + 1; - - if ((int)filter[item] > 3) - continue; - } - else - { - filter[item] = 1; - } - - - data.Add(new Tuple( - ((MAVLink.__mavlink_raw_imu_t)packet).xmag - offset.Item1, - ((MAVLink.__mavlink_raw_imu_t)packet).ymag - offset.Item2, - ((MAVLink.__mavlink_raw_imu_t)packet).zmag - offset.Item3)); - } - - } - - Console.WriteLine("Extracted " + data.Count + " data points"); - Console.WriteLine("Current offset: " + offset); - - mine.logreadmode = false; - mine.logplaybackfile.Close(); - mine.logplaybackfile = null; - - double[] x = new double[] { 0, 0, 0, 0 }; - double epsg = 0.0000000001; - double epsf = 0; - double epsx = 0; - int maxits = 0; - alglib.minlmstate state; - alglib.minlmreport rep; - - alglib.minlmcreatev(data.Count, x, 100, out state); - alglib.minlmsetcond(state, epsg, epsf, epsx, maxits); - alglib.minlmoptimize(state, sphere_error, null, data); - alglib.minlmresults(state, out x, out rep); - - System.Console.WriteLine("{0}", rep.terminationtype); // EXPECTED: 4 - System.Console.WriteLine("{0}", alglib.ap.format(x, 2)); // EXPECTED: [-3,+3] - //System.Console.ReadLine(); - - - // return; - - - } + SaveOffsets(ans); } } - public static void sphere_error(double[] xi, double[] fi, object obj) + /// + /// Processes a tlog to get the offsets - creates dxf of data + /// + /// Filename + /// Offsets + public static double[] getOffsets(string fn) + { + // based of tridge's work + string logfile = fn; + + // old method + float minx = 0; + float maxx = 0; + float miny = 0; + float maxy = 0; + float minz = 0; + float maxz = 0; + + // this is for a dxf + Polyline3dVertex vertex; + List vertexes = new List(); + + // data storage + Tuple offset = new Tuple(0, 0, 0); + List> data = new List>(); + + Hashtable filter = new Hashtable(); + + log.Info("Start log: " + DateTime.Now); + + MAVLink mine = new MAVLink(); + mine.logplaybackfile = new BinaryReader(File.Open(logfile, FileMode.Open, FileAccess.Read, FileShare.Read)); + mine.logreadmode = true; + + mine.packets.Initialize(); // clear + + // gather data + while (mine.logplaybackfile.BaseStream.Position < mine.logplaybackfile.BaseStream.Length) + { + byte[] packetraw = mine.readPacket(); + + var packet = mine.DebugPacket(packetraw, false); + + // this is for packets we dont know about + if (packet == null) + continue; + + if (packet.GetType() == typeof(MAVLink.__mavlink_sensor_offsets_t)) + { + offset = new Tuple( + ((MAVLink.__mavlink_sensor_offsets_t)packet).mag_ofs_x, + ((MAVLink.__mavlink_sensor_offsets_t)packet).mag_ofs_y, + ((MAVLink.__mavlink_sensor_offsets_t)packet).mag_ofs_z); + } + else if (packet.GetType() == typeof(MAVLink.__mavlink_raw_imu_t)) + { + int div = 20; + + // fox dxf + vertex = new Polyline3dVertex(new Vector3f( + ((MAVLink.__mavlink_raw_imu_t)packet).xmag - offset.Item1, + ((MAVLink.__mavlink_raw_imu_t)packet).ymag - offset.Item2, + ((MAVLink.__mavlink_raw_imu_t)packet).zmag - offset.Item3) + ); + vertexes.Add(vertex); + + + // for old method + setMinorMax(((MAVLink.__mavlink_raw_imu_t)packet).xmag - offset.Item1, ref minx, ref maxx); + setMinorMax(((MAVLink.__mavlink_raw_imu_t)packet).ymag - offset.Item2, ref miny, ref maxy); + setMinorMax(((MAVLink.__mavlink_raw_imu_t)packet).zmag - offset.Item3, ref minz, ref maxz); + + // for new lease sq + string item = (int)(((MAVLink.__mavlink_raw_imu_t)packet).xmag / div) + "," + + (int)(((MAVLink.__mavlink_raw_imu_t)packet).ymag / div) + "," + + (int)(((MAVLink.__mavlink_raw_imu_t)packet).zmag / div); + + if (filter.ContainsKey(item)) + { + filter[item] = (int)filter[item] + 1; + + if ((int)filter[item] > 3) + continue; + } + else + { + filter[item] = 1; + } + + + data.Add(new Tuple( + ((MAVLink.__mavlink_raw_imu_t)packet).xmag - offset.Item1, + ((MAVLink.__mavlink_raw_imu_t)packet).ymag - offset.Item2, + ((MAVLink.__mavlink_raw_imu_t)packet).zmag - offset.Item3)); + + } + + } + + log.Info("Log Processed " + DateTime.Now); + + Console.WriteLine("Extracted " + data.Count + " data points"); + Console.WriteLine("Current offset: " + offset); + + mine.logreadmode = false; + mine.logplaybackfile.Close(); + mine.logplaybackfile = null; + + double[] x = LeastSq(data); + + System.Console.WriteLine("Old Method {0} {1} {2}", -(maxx + minx) / 2, -(maxy + miny) / 2, -(maxz + minz) / 2); + + log.Info("Least Sq Done " + DateTime.Now); + + // create a dxf for those who want to "see" the calibration + DxfDocument dxf = new DxfDocument(); + + Polyline3d polyline = new Polyline3d(vertexes, true); + polyline.Layer = new Layer("polyline3d"); + polyline.Layer.Color.Index = 24; + dxf.AddEntity(polyline); + + Point pnt = new Point(new Vector3f(-offset.Item1, -offset.Item2, -offset.Item3)); + pnt.Layer = new Layer("old offset"); + pnt.Layer.Color.Index = 22; + dxf.AddEntity(pnt); + + pnt = new Point(new Vector3f(-(float)x[0], -(float)x[1], -(float)x[2])); + pnt.Layer = new Layer("new offset"); + pnt.Layer.Color.Index = 21; + dxf.AddEntity(pnt); + + dxf.Save("magoffset.dxf", DxfVersion.AutoCad2000); + + log.Info("dxf Done " + DateTime.Now); + + Array.Resize(ref x, 3); + + return x; + } + + /// + /// Does the least sq adjustment to find the center of the sphere + /// + /// list of x,y,z data + /// offsets + public static double[] LeastSq(List> data) + { + double[] x = new double[] { 0, 0, 0, 0 }; + double epsg = 0.0000000001; + double epsf = 0; + double epsx = 0; + int maxits = 0; + alglib.minlmstate state; + alglib.minlmreport rep; + + alglib.minlmcreatev(data.Count, x, 100, out state); + alglib.minlmsetcond(state, epsg, epsf, epsx, maxits); + alglib.minlmoptimize(state, sphere_error, null, data); + alglib.minlmresults(state, out x, out rep); + + log.InfoFormat("{0}", rep.terminationtype); + log.InfoFormat("{0}", alglib.ap.format(x, 2)); + + return x; + } + + /// + /// saves the offests to eeprom, os displays if cant + /// + /// offsets + public static void SaveOffsets(double[] ofs) + { + if (MainV2.comPort.param.ContainsKey("COMPASS_OFS_X")) + { + try + { + // disable learning + MainV2.comPort.setParam("COMPASS_LEARN", 0); + // set values + MainV2.comPort.setParam("COMPASS_OFS_X", (float)ofs[0]); + MainV2.comPort.setParam("COMPASS_OFS_Y", (float)ofs[1]); + MainV2.comPort.setParam("COMPASS_OFS_Z", (float)ofs[2]); + } + catch { + CustomMessageBox.Show("Set Compass offset failed"); + return; + } + + CustomMessageBox.Show("New offsets are " + ofs[0].ToString("0") + " " + ofs[1].ToString("0") + " " + ofs[2].ToString("0") +"\nThese have been saved for you.", "New Mag Offsets"); + } + else + { + CustomMessageBox.Show("New offsets are " + ofs[0].ToString("0") + " " + ofs[1].ToString("0") + " " + ofs[2].ToString("0") + "\n\nPlease write these down for manual entry", "New Mag Offsets"); + } + } + /// + /// Min or max finder + /// + /// value to process + /// current min + /// current max + private static void setMinorMax(float value, ref float min, ref float max) + { + if (value > max) + max = value; + if (value < min) + min = value; + } + + + static void sphere_error(double[] xi, double[] fi, object obj) { double xofs = xi[0]; double yofs = xi[1]; diff --git a/Tools/ArdupilotMegaPlanner/MainV2.cs b/Tools/ArdupilotMegaPlanner/MainV2.cs index f7cb7c990e..26e42632e2 100644 --- a/Tools/ArdupilotMegaPlanner/MainV2.cs +++ b/Tools/ArdupilotMegaPlanner/MainV2.cs @@ -171,7 +171,7 @@ namespace ArdupilotMega // preload Python.CreateEngine(); } - catch (Exception e) { MessageBox.Show("A Major error has occured : " + e.ToString()); this.Close(); } + catch (Exception e) { CustomMessageBox.Show("A Major error has occured : " + e.ToString()); this.Close(); } if (MainV2.config["CHK_GDIPlus"] != null) GCSViews.FlightData.myhud.UseOpenGL = !bool.Parse(MainV2.config["CHK_GDIPlus"].ToString()); @@ -232,7 +232,7 @@ namespace ArdupilotMega if (cs.rateattitude == 0) // initilised to 10, configured above from save { - MessageBox.Show("NOTE: your attitude rate is 0, the hud will not work\nChange in Configuration > Planner > Telemetry Rates"); + CustomMessageBox.Show("NOTE: your attitude rate is 0, the hud will not work\nChange in Configuration > Planner > Telemetry Rates"); } @@ -249,7 +249,7 @@ namespace ArdupilotMega if (Framework < 3.5) { - MessageBox.Show("This program requires .NET Framework 3.5. You currently have " + Framework); + CustomMessageBox.Show("This program requires .NET Framework 3.5. You currently have " + Framework); } } @@ -303,7 +303,7 @@ namespace ArdupilotMega } string name = "ss" + DateTime.Now.ToString("hhmmss") + ".jpg"; bitmap.Save(Path.GetDirectoryName(Application.ExecutablePath) + Path.DirectorySeparatorChar + name, System.Drawing.Imaging.ImageFormat.Jpeg); - MessageBox.Show("Screenshot saved to " + name); + CustomMessageBox.Show("Screenshot saved to " + name); } } @@ -475,7 +475,7 @@ namespace ArdupilotMega if (comPort.BaseStream.IsOpen && cs.groundspeed > 4) { - if (DialogResult.No == MessageBox.Show("Your model is still moving are you sure you want to disconnect?", "Disconnect", MessageBoxButtons.YesNo)) + if (DialogResult.No == CustomMessageBox.Show("Your model is still moving are you sure you want to disconnect?", "Disconnect", MessageBoxButtons.YesNo)) { return; } @@ -538,9 +538,9 @@ namespace ArdupilotMega try { Directory.CreateDirectory(Path.GetDirectoryName(Application.ExecutablePath) + Path.DirectorySeparatorChar + @"logs"); - comPort.logfile = new BinaryWriter(File.Open(Path.GetDirectoryName(Application.ExecutablePath) + Path.DirectorySeparatorChar + @"logs" + Path.DirectorySeparatorChar + DateTime.Now.ToString("yyyy-MM-dd hh-mm-ss") + ".tlog", FileMode.CreateNew)); + comPort.logfile = new BinaryWriter(File.Open(Path.GetDirectoryName(Application.ExecutablePath) + Path.DirectorySeparatorChar + @"logs" + Path.DirectorySeparatorChar + DateTime.Now.ToString("yyyy-MM-dd hh-mm-ss") + ".tlog", FileMode.CreateNew,FileAccess.ReadWrite,FileShare.Read)); } - catch { MessageBox.Show("Failed to create log - wont log this session"); } // soft fail + catch { CustomMessageBox.Show("Failed to create log - wont log this session"); } // soft fail comPort.BaseStream.PortName = CMB_serialport.Text; comPort.Open(true); @@ -605,7 +605,7 @@ namespace ArdupilotMega } else { - MessageBox.Show("You dont appear to have uploaded a firmware yet,\n\nPlease goto the firmware page and upload one."); + CustomMessageBox.Show("You dont appear to have uploaded a firmware yet,\n\nPlease goto the firmware page and upload one."); return; } } @@ -733,7 +733,7 @@ namespace ArdupilotMega //appconfig.Save(); } - catch (Exception ex) { MessageBox.Show(ex.ToString()); } + catch (Exception ex) { CustomMessageBox.Show(ex.ToString()); } } else { @@ -1071,6 +1071,9 @@ namespace ArdupilotMega MenuFlightData_Click(sender, e); + // for long running tasks using own threads. + // for short use threadpool + try { listener = new TcpListener(IPAddress.Any, 56781); @@ -1085,7 +1088,7 @@ namespace ArdupilotMega catch (Exception ex) { log.Error("Error starting TCP listener thread: ", ex); - MessageBox.Show(ex.ToString()); + CustomMessageBox.Show(ex.ToString()); } var t12 = new Thread(new ThreadStart(joysticksend)) @@ -1493,7 +1496,7 @@ namespace ArdupilotMega catch (Exception ex) { log.Error("Update Failed", ex); - MessageBox.Show("Update Failed " + ex.Message); + CustomMessageBox.Show("Update Failed " + ex.Message); } } @@ -1556,13 +1559,7 @@ namespace ArdupilotMega if (fi.Length != response.ContentLength || response.Headers[HttpResponseHeader.ETag] != CurrentEtag) { - using (var sw = new StreamWriter(path + ".etag")) - { - sw.WriteLine(response.Headers[HttpResponseHeader.ETag]); - sw.Close(); - } shouldGetFile = true; - log.Info("Newer file found: " + path + " " + fi.Length + " vs " + response.ContentLength); } } else @@ -1576,7 +1573,7 @@ namespace ArdupilotMega if (shouldGetFile) { - var dr = MessageBox.Show("Update Found\n\nDo you wish to update now?", "Update Now", MessageBoxButtons.YesNo); + var dr = CustomMessageBox.Show("Update Found\n\nDo you wish to update now?", "Update Now", MessageBoxButtons.YesNo); if (dr == DialogResult.Yes) { DoUpdate(); @@ -1858,7 +1855,7 @@ namespace ArdupilotMega { MainV2.comPort.Open(false); } - catch (Exception ex) { MessageBox.Show(ex.ToString()); } + catch (Exception ex) { CustomMessageBox.Show(ex.ToString()); } return true; } if (keyData == (Keys.Control | Keys.Y)) // for ryan beall @@ -1871,7 +1868,7 @@ namespace ArdupilotMega #else MainV2.comPort.doAction(MAVLink.MAV_ACTION.MAV_ACTION_STORAGE_WRITE); #endif - MessageBox.Show("Done MAV_ACTION_STORAGE_WRITE"); + CustomMessageBox.Show("Done MAV_ACTION_STORAGE_WRITE"); return true; } if (keyData == (Keys.Control | Keys.J)) // for jani diff --git a/Tools/ArdupilotMegaPlanner/Program.cs b/Tools/ArdupilotMegaPlanner/Program.cs index d80b848cdf..ec406309d2 100644 --- a/Tools/ArdupilotMegaPlanner/Program.cs +++ b/Tools/ArdupilotMegaPlanner/Program.cs @@ -33,9 +33,11 @@ namespace ArdupilotMega CodeGen.runCode("Sin(0.55)"); - //MagCalib.doWork(); + int wt = 0, ct = 0; + ThreadPool.GetMaxThreads(out wt, out ct); + log.Info("Max Threads: " + wt); - //return; + //MagCalib.ProcessLog(); //MessageBox.Show("NOTE: This version may break advanced mission scripting"); @@ -66,17 +68,17 @@ namespace ArdupilotMega log.Debug(ex.ToString()); if (ex.Message == "The port is closed.") { - MessageBox.Show("Serial connection has been lost"); + CustomMessageBox.Show("Serial connection has been lost"); return; } if (ex.Message == "A device attached to the system is not functioning.") { - MessageBox.Show("Serial connection has been lost"); + CustomMessageBox.Show("Serial connection has been lost"); return; } if (e.Exception.GetType() == typeof(MissingMethodException)) { - MessageBox.Show("Please Update - Some older library dlls are causing problems\n" + e.Exception.Message); + CustomMessageBox.Show("Please Update - Some older library dlls are causing problems\n" + e.Exception.Message); return; } if (e.Exception.GetType() == typeof(ObjectDisposedException) || e.Exception.GetType() == typeof(InvalidOperationException)) // something is trying to update while the form, is closing. @@ -85,10 +87,10 @@ namespace ArdupilotMega } if (e.Exception.GetType() == typeof(FileNotFoundException) || e.Exception.GetType() == typeof(BadImageFormatException)) // i get alot of error from people who click the exe from inside a zip file. { - MessageBox.Show("You are missing some DLL's. Please extract the zip file somewhere. OR Use the update feature from the menu"); + CustomMessageBox.Show("You are missing some DLL's. Please extract the zip file somewhere. OR Use the update feature from the menu"); return; } - DialogResult dr = MessageBox.Show("An error has occurred\n"+ex.ToString() + "\n\nReport this Error???", "Send Error", MessageBoxButtons.YesNo); + DialogResult dr = CustomMessageBox.Show("An error has occurred\n"+ex.ToString() + "\n\nReport this Error???", "Send Error", MessageBoxButtons.YesNo); if (DialogResult.Yes == dr) { try @@ -130,7 +132,7 @@ namespace ArdupilotMega } catch { - MessageBox.Show("Error sending Error report!! Youre most likerly are not on the internet"); + CustomMessageBox.Show("Error sending Error report!! Youre most likerly are not on the internet"); } } } diff --git a/Tools/ArdupilotMegaPlanner/Properties/AssemblyInfo.cs b/Tools/ArdupilotMegaPlanner/Properties/AssemblyInfo.cs index 14484783e3..bb1b4de8b3 100644 --- a/Tools/ArdupilotMegaPlanner/Properties/AssemblyInfo.cs +++ b/Tools/ArdupilotMegaPlanner/Properties/AssemblyInfo.cs @@ -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.49")] +[assembly: AssemblyFileVersion("1.1.50")] [assembly: NeutralResourcesLanguageAttribute("")] diff --git a/Tools/ArdupilotMegaPlanner/RAW_Sensor.cs b/Tools/ArdupilotMegaPlanner/RAW_Sensor.cs index f3109aa829..04c2427d1b 100644 --- a/Tools/ArdupilotMegaPlanner/RAW_Sensor.cs +++ b/Tools/ArdupilotMegaPlanner/RAW_Sensor.cs @@ -190,47 +190,6 @@ namespace ArdupilotMega else { list6.Clear(); } } - public static string CustomMessageBox(string title, string promptText, string buttontext1, string buttontext2) - { - Form form = new Form(); - System.Windows.Forms.Label label = new System.Windows.Forms.Label(); - Button button1 = new Button(); - Button button2 = new Button(); - - form.Text = title; - label.Text = promptText; - - button1.Text = buttontext1; - button2.Text = buttontext2; - button1.DialogResult = DialogResult.OK; - button2.DialogResult = DialogResult.Cancel; - - label.SetBounds(9, 10, 372, 13); - button1.SetBounds(228, 72, 75, 23); - button2.SetBounds(309, 72, 75, 23); - - label.AutoSize = true; - button1.Anchor = AnchorStyles.Bottom | AnchorStyles.Right; - button2.Anchor = AnchorStyles.Bottom | AnchorStyles.Right; - - form.ClientSize = new Size(396, 107); - form.Controls.AddRange(new Control[] { label, button1, button2 }); - form.ClientSize = new Size(Math.Max(300, label.Right + 10), form.ClientSize.Height); - form.FormBorderStyle = FormBorderStyle.FixedDialog; - form.StartPosition = FormStartPosition.CenterScreen; - form.MinimizeBox = false; - form.MaximizeBox = false; - form.AcceptButton = button1; - form.CancelButton = button2; - - DialogResult dialogResult = form.ShowDialog(); - if (dialogResult == DialogResult.OK) - { - return buttontext1; - } - return buttontext2; - } - private void ACM_Setup_Load(object sender, EventArgs e) { @@ -274,7 +233,7 @@ namespace ArdupilotMega if (!comPort.BaseStream.IsOpen && !MainV2.comPort.logreadmode) { - MessageBox.Show("Please connect first"); + CustomMessageBox.Show("Please connect first"); this.Close(); } @@ -292,7 +251,7 @@ namespace ArdupilotMega } catch { - MessageBox.Show("Comport open failed"); + CustomMessageBox.Show("Comport open failed"); return; } timer1.Start(); diff --git a/Tools/ArdupilotMegaPlanner/Radio/3DRradio.Designer.cs b/Tools/ArdupilotMegaPlanner/Radio/3DRradio.Designer.cs index 18605e5c01..62c057b626 100644 --- a/Tools/ArdupilotMegaPlanner/Radio/3DRradio.Designer.cs +++ b/Tools/ArdupilotMegaPlanner/Radio/3DRradio.Designer.cs @@ -29,6 +29,7 @@ private void InitializeComponent() { this.components = new System.ComponentModel.Container(); + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(_3DRradio)); this.Progressbar = new System.Windows.Forms.ProgressBar(); this.S1 = new System.Windows.Forms.ComboBox(); this.label1 = new System.Windows.Forms.Label(); @@ -97,7 +98,7 @@ this.S1.Name = "S1"; this.S1.Size = new System.Drawing.Size(80, 21); this.S1.TabIndex = 4; - this.toolTip1.SetToolTip(this.S1, "Serial Baud Rate 57 = 57600"); + this.toolTip1.SetToolTip(this.S1, "Serial baud rate in rounded kbps. So 57 means 57600. \r\n"); // // label1 // @@ -149,7 +150,9 @@ this.S2.Name = "S2"; this.S2.Size = new System.Drawing.Size(80, 21); this.S2.TabIndex = 9; - this.toolTip1.SetToolTip(this.S2, "the inter-radio data rate in rounded kbps. So 128 means"); + this.toolTip1.SetToolTip(this.S2, "AIR_SPEED is the inter-radio data rate in rounded kbps. So 128 means 128kbps. Max" + + " is 192, min is 2. I would not recommend values below 16 as the frequency hoppin" + + "g and tdm sync times get too long. "); // // label4 // @@ -198,7 +201,7 @@ this.S3.Name = "S3"; this.S3.Size = new System.Drawing.Size(80, 21); this.S3.TabIndex = 11; - this.toolTip1.SetToolTip(this.S3, "a 16 bit \'network ID\'. This is used to seed the frequency"); + this.toolTip1.SetToolTip(this.S3, resources.GetString("S3.ToolTip")); // // label5 // @@ -238,7 +241,8 @@ this.S4.Name = "S4"; this.S4.Size = new System.Drawing.Size(80, 21); this.S4.TabIndex = 13; - this.toolTip1.SetToolTip(this.S4, "the transmit power in dBm. 20dBm is 100mW. It is useful to"); + this.toolTip1.SetToolTip(this.S4, "TXPOWER is the transmit power in dBm. 20dBm is 100mW. It is useful to set this to" + + " lower levels for short range testing.\r\n"); // // label6 // @@ -255,7 +259,7 @@ this.S5.Name = "S5"; this.S5.Size = new System.Drawing.Size(80, 21); this.S5.TabIndex = 15; - this.toolTip1.SetToolTip(this.S5, "to enable/disable the golay error correcting code. It defaults"); + this.toolTip1.SetToolTip(this.S5, resources.GetString("S5.ToolTip")); // // label7 // @@ -272,7 +276,7 @@ this.S6.Name = "S6"; this.S6.Size = new System.Drawing.Size(80, 21); this.S6.TabIndex = 17; - this.toolTip1.SetToolTip(this.S6, "enables/disables MAVLink packet framing. This tries to align"); + this.toolTip1.SetToolTip(this.S6, resources.GetString("S6.ToolTip")); // // label8 // @@ -289,7 +293,7 @@ this.S7.Name = "S7"; this.S7.Size = new System.Drawing.Size(80, 21); this.S7.TabIndex = 19; - this.toolTip1.SetToolTip(this.S7, "enables/disables \"opportunistic resend\". When enabled the"); + this.toolTip1.SetToolTip(this.S7, resources.GetString("S7.ToolTip")); // // RS7 // @@ -297,7 +301,7 @@ this.RS7.Name = "RS7"; this.RS7.Size = new System.Drawing.Size(80, 21); this.RS7.TabIndex = 29; - this.toolTip1.SetToolTip(this.RS7, "enables/disables \"opportunistic resend\". When enabled the"); + this.toolTip1.SetToolTip(this.RS7, resources.GetString("RS7.ToolTip")); // // RS6 // @@ -305,7 +309,7 @@ this.RS6.Name = "RS6"; this.RS6.Size = new System.Drawing.Size(80, 21); this.RS6.TabIndex = 28; - this.toolTip1.SetToolTip(this.RS6, "enables/disables MAVLink packet framing. This tries to align"); + this.toolTip1.SetToolTip(this.RS6, resources.GetString("RS6.ToolTip")); // // RS5 // @@ -313,7 +317,7 @@ this.RS5.Name = "RS5"; this.RS5.Size = new System.Drawing.Size(80, 21); this.RS5.TabIndex = 27; - this.toolTip1.SetToolTip(this.RS5, "to enable/disable the golay error correcting code. It defaults"); + this.toolTip1.SetToolTip(this.RS5, resources.GetString("RS5.ToolTip")); // // RS4 // @@ -344,7 +348,8 @@ this.RS4.Name = "RS4"; this.RS4.Size = new System.Drawing.Size(80, 21); this.RS4.TabIndex = 26; - this.toolTip1.SetToolTip(this.RS4, "the transmit power in dBm. 20dBm is 100mW. It is useful to"); + this.toolTip1.SetToolTip(this.RS4, "TXPOWER is the transmit power in dBm. 20dBm is 100mW. It is useful to set this to" + + " lower levels for short range testing.\r\n"); // // RS3 // @@ -384,7 +389,7 @@ this.RS3.Name = "RS3"; this.RS3.Size = new System.Drawing.Size(80, 21); this.RS3.TabIndex = 25; - this.toolTip1.SetToolTip(this.RS3, "a 16 bit \'network ID\'. This is used to seed the frequency"); + this.toolTip1.SetToolTip(this.RS3, resources.GetString("RS3.ToolTip")); // // RS2 // @@ -401,7 +406,9 @@ this.RS2.Name = "RS2"; this.RS2.Size = new System.Drawing.Size(80, 21); this.RS2.TabIndex = 24; - this.toolTip1.SetToolTip(this.RS2, "the inter-radio data rate in rounded kbps. So 128 means"); + this.toolTip1.SetToolTip(this.RS2, "AIR_SPEED is the inter-radio data rate in rounded kbps. So 128 means 128kbps. Max" + + " is 192, min is 2. I would not recommend values below 16 as the frequency hoppin" + + "g and tdm sync times get too long. "); // // RS1 // @@ -420,7 +427,7 @@ this.RS1.Name = "RS1"; this.RS1.Size = new System.Drawing.Size(80, 21); this.RS1.TabIndex = 22; - this.toolTip1.SetToolTip(this.RS1, "Serial Baud Rate 57 = 57600"); + this.toolTip1.SetToolTip(this.RS1, "Serial baud rate in rounded kbps. So 57 means 57600. \r\n"); // // RS0 // @@ -472,6 +479,7 @@ this.RSSI.ReadOnly = true; this.RSSI.Size = new System.Drawing.Size(194, 58); this.RSSI.TabIndex = 34; + this.toolTip1.SetToolTip(this.RSSI, resources.GetString("RSSI.ToolTip")); // // label11 // @@ -605,6 +613,7 @@ this.Controls.Add(this.lbl_status); this.Controls.Add(this.Progressbar); this.Controls.Add(this.BUT_upload); + this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); this.MaximizeBox = false; this.MinimizeBox = false; this.MinimumSize = new System.Drawing.Size(334, 482); diff --git a/Tools/ArdupilotMegaPlanner/Radio/3DRradio.cs b/Tools/ArdupilotMegaPlanner/Radio/3DRradio.cs index b0bb0a8a93..cd1791859a 100644 --- a/Tools/ArdupilotMegaPlanner/Radio/3DRradio.cs +++ b/Tools/ArdupilotMegaPlanner/Radio/3DRradio.cs @@ -59,7 +59,7 @@ namespace ArdupilotMega comPort.Open(); } - catch { MessageBox.Show("Invalid ComPort or in use"); return; } + catch { CustomMessageBox.Show("Invalid ComPort or in use"); return; } bool bootloadermode = false; @@ -99,7 +99,7 @@ namespace ArdupilotMega { iHex.load(firmwarefile); } - catch { MessageBox.Show("Bad Firmware File"); goto exit; } + catch { CustomMessageBox.Show("Bad Firmware File"); goto exit; } if (!bootloadermode) { @@ -118,16 +118,16 @@ namespace ArdupilotMega { uploader.upload(comPort, iHex); } - catch (Exception ex) { MessageBox.Show("Upload Failed " + ex.Message); } + catch (Exception ex) { CustomMessageBox.Show("Upload Failed " + ex.Message); } } else { - MessageBox.Show("Failed to download new firmware"); + CustomMessageBox.Show("Failed to download new firmware"); } } else { - MessageBox.Show("Failed to identify Radio"); + CustomMessageBox.Show("Failed to identify Radio"); } exit: @@ -198,7 +198,7 @@ namespace ArdupilotMega } - catch { MessageBox.Show("Invalid ComPort or in use"); return; } + catch { CustomMessageBox.Show("Invalid ComPort or in use"); return; } lbl_status.Text = "Connecting"; @@ -242,7 +242,7 @@ namespace ArdupilotMega } else { - MessageBox.Show("Set Command error"); + CustomMessageBox.Show("Set Command error"); } } } @@ -258,7 +258,7 @@ namespace ArdupilotMega } else { - MessageBox.Show("Set Command error"); + CustomMessageBox.Show("Set Command error"); } } } @@ -309,7 +309,7 @@ namespace ArdupilotMega } else { - MessageBox.Show("Set Command error"); + CustomMessageBox.Show("Set Command error"); } } } @@ -325,7 +325,7 @@ namespace ArdupilotMega } else { - MessageBox.Show("Set Command error"); + CustomMessageBox.Show("Set Command error"); } } } @@ -351,7 +351,7 @@ namespace ArdupilotMega doCommand(comPort, "ATZ"); lbl_status.Text = "Fail"; - MessageBox.Show("Failed to enter command mode"); + CustomMessageBox.Show("Failed to enter command mode"); } @@ -374,7 +374,7 @@ namespace ArdupilotMega } - catch { MessageBox.Show("Invalid ComPort or in use"); return; } + catch { CustomMessageBox.Show("Invalid ComPort or in use"); return; } lbl_status.Text = "Connecting"; @@ -479,7 +479,7 @@ namespace ArdupilotMega doCommand(comPort, "ATO"); lbl_status.Text = "Fail"; - MessageBox.Show("Failed to enter command mode"); + CustomMessageBox.Show("Failed to enter command mode"); } comPort.Close(); diff --git a/Tools/ArdupilotMegaPlanner/Radio/3DRradio.resx b/Tools/ArdupilotMegaPlanner/Radio/3DRradio.resx index 271670364a..5194d642e6 100644 --- a/Tools/ArdupilotMegaPlanner/Radio/3DRradio.resx +++ b/Tools/ArdupilotMegaPlanner/Radio/3DRradio.resx @@ -120,4 +120,124 @@ 17, 17 + + 17, 17 + + + NETID is a 16 bit 'network ID'. This is used to seed the frequency hopping sequence and to identify packets as coming from the right radio. Make sure you use a different NETID from anyone else running the same sort of radio in the area. + + + ECC is to enable/disable the golay error correcting code. It defaults to off. If you enable it then you packets take twice as many bytes to send, so you lose half your air bandwidth, but it can correct up to 3 bit errors per 12 bits of data. Use this for long range, usually in combination with a lower air data rate. The golay decode takes 20 microsecond per transmitted byte (40 microseconds per user data byte) which means you will also be a bit CPU constrained at the highest air data rates. So you usually use golay at 128kbps or less. + + + + MAVLINK enables/disables MAVLink packet framing. This tries to align radio packets to MAVLink packet boundaries, which makes a big difference to what happens to the MAVLink stream when you lose a packet. + + + + OPPRESEND enables/disables "opportunistic resend". When enabled the radio will send a packet twice if the serial input buffer has less than 256 bytes in it. The 2nd send is marked as a resend and discarded by the receiving radio if it got the first packet OK. This makes a big difference to the link quality, especially for uplink commands. + + + + OPPRESEND enables/disables "opportunistic resend". When enabled the radio will send a packet twice if the serial input buffer has less than 256 bytes in it. The 2nd send is marked as a resend and discarded by the receiving radio if it got the first packet OK. This makes a big difference to the link quality, especially for uplink commands. + + + + MAVLINK enables/disables MAVLink packet framing. This tries to align radio packets to MAVLink packet boundaries, which makes a big difference to what happens to the MAVLink stream when you lose a packet. + + + + ECC is to enable/disable the golay error correcting code. It defaults to off. If you enable it then you packets take twice as many bytes to send, so you lose half your air bandwidth, but it can correct up to 3 bit errors per 12 bits of data. Use this for long range, usually in combination with a lower air data rate. The golay decode takes 20 microsecond per transmitted byte (40 microseconds per user data byte) which means you will also be a bit CPU constrained at the highest air data rates. So you usually use golay at 128kbps or less. + + + + NETID is a 16 bit 'network ID'. This is used to seed the frequency hopping sequence and to identify packets as coming from the right radio. Make sure you use a different NETID from anyone else running the same sort of radio in the area. + + + see the spec for a RSSI to dBm graph. The numbers at the end are: +txe: number of transmit errors (eg. transmit timeouts) +rxe: number of receive errors (crc error, framing error etc) +stx: number of serial transmit overflows +rrx: number of serial receive overflows +ecc: number of 12 bit words successfully corrected by the golay code +which result in a valid packet CRC + + + + + + 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= + + \ No newline at end of file diff --git a/Tools/ArdupilotMegaPlanner/ResEdit.cs b/Tools/ArdupilotMegaPlanner/ResEdit.cs index 40e7eed05b..5a1baced21 100644 --- a/Tools/ArdupilotMegaPlanner/ResEdit.cs +++ b/Tools/ArdupilotMegaPlanner/ResEdit.cs @@ -184,21 +184,21 @@ namespace resedit { sw.Write("" + row.Cells[colFile.Index].Value.ToString() + "" + row.Cells[colInternal.Index].Value.ToString() + "" + row.Cells[colOtherLang.Index].Value.ToString() + ""); } - catch (Exception ex) { try { MessageBox.Show("Failed to save " + row.Cells[colOtherLang.Index].Value.ToString() + " " + ex.ToString()); } catch { } } + catch (Exception ex) { try { CustomMessageBox.Show("Failed to save " + row.Cells[colOtherLang.Index].Value.ToString() + " " + ex.ToString()); } catch { } } } if (writer != null) writer.Close(); sw.Write(""); sw.Close(); - MessageBox.Show("Saved"); + CustomMessageBox.Show("Saved"); } private void button3_Click(object sender, EventArgs e) { if (!File.Exists("translation/output.html")) { - MessageBox.Show("No existing translation has been done"); + CustomMessageBox.Show("No existing translation has been done"); return; } @@ -230,7 +230,7 @@ namespace resedit sr1.Close(); - MessageBox.Show("Modified "+a+" entries"); + CustomMessageBox.Show("Modified "+a+" entries"); } private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) @@ -292,7 +292,7 @@ namespace resedit catch { } } - MessageBox.Show("Loaded Existing"); + CustomMessageBox.Show("Loaded Existing"); } } } diff --git a/Tools/ArdupilotMegaPlanner/Script.cs b/Tools/ArdupilotMegaPlanner/Script.cs index 82b7c9346e..60d5ea4fa1 100644 --- a/Tools/ArdupilotMegaPlanner/Script.cs +++ b/Tools/ArdupilotMegaPlanner/Script.cs @@ -82,7 +82,7 @@ namespace ArdupilotMega } catch (Exception e) { - System.Windows.Forms.MessageBox.Show("Error running script " + e.Message); + System.Windows.Forms.CustomMessageBox.Show("Error running script " + e.Message); } } diff --git a/Tools/ArdupilotMegaPlanner/SerialInput.cs b/Tools/ArdupilotMegaPlanner/SerialInput.cs index ba9c84fbd3..4955b4ba3a 100644 --- a/Tools/ArdupilotMegaPlanner/SerialInput.cs +++ b/Tools/ArdupilotMegaPlanner/SerialInput.cs @@ -45,13 +45,13 @@ namespace ArdupilotMega { comPort.PortName = CMB_serialport.Text; } - catch { MessageBox.Show("Invalid PortName"); return; } + catch { CustomMessageBox.Show("Invalid PortName"); return; } try { comPort.BaudRate = int.Parse(CMB_baudrate.Text); - } catch {MessageBox.Show("Invalid BaudRate"); return;} + } catch {CustomMessageBox.Show("Invalid BaudRate"); return;} try { comPort.Open(); - } catch {MessageBox.Show("Error Connecting\nif using com0com please rename the ports to COM??"); return;} + } catch {CustomMessageBox.Show("Error Connecting\nif using com0com please rename the ports to COM??"); return;} string alt = "100"; @@ -70,7 +70,7 @@ namespace ArdupilotMega intalt = (int)(100 * MainV2.cs.multiplierdist); if (!int.TryParse(alt, out intalt)) { - MessageBox.Show("Bad Alt"); + CustomMessageBox.Show("Bad Alt"); return; } diff --git a/Tools/ArdupilotMegaPlanner/SerialOutput.cs b/Tools/ArdupilotMegaPlanner/SerialOutput.cs index 57f0bbe2e2..95f9254c32 100644 --- a/Tools/ArdupilotMegaPlanner/SerialOutput.cs +++ b/Tools/ArdupilotMegaPlanner/SerialOutput.cs @@ -43,13 +43,13 @@ namespace ArdupilotMega { comPort.PortName = CMB_serialport.Text; } - catch { MessageBox.Show("Invalid PortName"); return; } + catch { CustomMessageBox.Show("Invalid PortName"); return; } try { comPort.BaudRate = int.Parse(CMB_baudrate.Text); - } catch {MessageBox.Show("Invalid BaudRate"); return;} + } catch {CustomMessageBox.Show("Invalid BaudRate"); return;} try { comPort.Open(); - } catch {MessageBox.Show("Error Connecting\nif using com0com please rename the ports to COM??"); return;} + } catch {CustomMessageBox.Show("Error Connecting\nif using com0com please rename the ports to COM??"); return;} t12 = new System.Threading.Thread(new System.Threading.ThreadStart(mainloop)) { diff --git a/Tools/ArdupilotMegaPlanner/Setup/Setup.Designer.cs b/Tools/ArdupilotMegaPlanner/Setup/Setup.Designer.cs index fef84a1f1b..41b6ab6aad 100644 --- a/Tools/ArdupilotMegaPlanner/Setup/Setup.Designer.cs +++ b/Tools/ArdupilotMegaPlanner/Setup/Setup.Designer.cs @@ -123,6 +123,9 @@ this.pictureBoxQuad = new System.Windows.Forms.PictureBox(); this.BUT_levelac2 = new ArdupilotMega.MyButton(); this.tabHeli = new System.Windows.Forms.TabPage(); + this.groupBox5 = new System.Windows.Forms.GroupBox(); + this.H1_ENABLE = new System.Windows.Forms.RadioButton(); + this.CCPM = new System.Windows.Forms.RadioButton(); this.BUT_HS4save = new ArdupilotMega.MyButton(); this.BUT_swash_manual = new ArdupilotMega.MyButton(); this.groupBox3 = new System.Windows.Forms.GroupBox(); @@ -176,9 +179,7 @@ this.tabReset = new System.Windows.Forms.TabPage(); this.BUT_reset = new ArdupilotMega.MyButton(); this.toolTip1 = new System.Windows.Forms.ToolTip(this.components); - this.CCPM = new System.Windows.Forms.RadioButton(); - this.groupBox5 = new System.Windows.Forms.GroupBox(); - this.H1_ENABLE = new System.Windows.Forms.RadioButton(); + this.BUT_MagCalibration = new ArdupilotMega.MyButton(); this.tabControl1.SuspendLayout(); this.tabRadioIn.SuspendLayout(); this.groupBoxElevons.SuspendLayout(); @@ -196,6 +197,7 @@ ((System.ComponentModel.ISupportInitialize)(this.pictureBoxQuadX)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.pictureBoxQuad)).BeginInit(); this.tabHeli.SuspendLayout(); + this.groupBox5.SuspendLayout(); this.groupBox3.SuspendLayout(); this.groupBox2.SuspendLayout(); this.groupBox1.SuspendLayout(); @@ -204,7 +206,6 @@ ((System.ComponentModel.ISupportInitialize)(this.HS2_TRIM)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.HS1_TRIM)).BeginInit(); this.tabReset.SuspendLayout(); - this.groupBox5.SuspendLayout(); this.SuspendLayout(); // // tabControl1 @@ -656,7 +657,8 @@ // // tabHardware // - this.tabHardware.BackColor = System.Drawing.Color.DarkRed; + this.tabHardware.BackColor = System.Drawing.SystemColors.Control; + this.tabHardware.Controls.Add(this.BUT_MagCalibration); this.tabHardware.Controls.Add(this.label27); this.tabHardware.Controls.Add(this.CMB_sonartype); this.tabHardware.Controls.Add(this.CHK_enableoptflow); @@ -1018,6 +1020,29 @@ this.tabHeli.UseVisualStyleBackColor = true; this.tabHeli.Click += new System.EventHandler(this.tabHeli_Click); // + // groupBox5 + // + this.groupBox5.Controls.Add(this.H1_ENABLE); + this.groupBox5.Controls.Add(this.CCPM); + resources.ApplyResources(this.groupBox5, "groupBox5"); + this.groupBox5.Name = "groupBox5"; + this.groupBox5.TabStop = false; + // + // H1_ENABLE + // + resources.ApplyResources(this.H1_ENABLE, "H1_ENABLE"); + this.H1_ENABLE.Name = "H1_ENABLE"; + this.H1_ENABLE.TabStop = true; + this.H1_ENABLE.UseVisualStyleBackColor = true; + this.H1_ENABLE.CheckedChanged += new System.EventHandler(this.H1_ENABLE_CheckedChanged); + // + // CCPM + // + resources.ApplyResources(this.CCPM, "CCPM"); + this.CCPM.Name = "CCPM"; + this.CCPM.TabStop = true; + this.CCPM.UseVisualStyleBackColor = true; + // // BUT_HS4save // resources.ApplyResources(this.BUT_HS4save, "BUT_HS4save"); @@ -1559,28 +1584,12 @@ this.BUT_reset.UseVisualStyleBackColor = true; this.BUT_reset.Click += new System.EventHandler(this.BUT_reset_Click); // - // CCPM + // BUT_MagCalibration // - resources.ApplyResources(this.CCPM, "CCPM"); - this.CCPM.Name = "CCPM"; - this.CCPM.TabStop = true; - this.CCPM.UseVisualStyleBackColor = true; - // - // groupBox5 - // - this.groupBox5.Controls.Add(this.H1_ENABLE); - this.groupBox5.Controls.Add(this.CCPM); - resources.ApplyResources(this.groupBox5, "groupBox5"); - this.groupBox5.Name = "groupBox5"; - this.groupBox5.TabStop = false; - // - // H1_ENABLE - // - resources.ApplyResources(this.H1_ENABLE, "H1_ENABLE"); - this.H1_ENABLE.Name = "H1_ENABLE"; - this.H1_ENABLE.TabStop = true; - this.H1_ENABLE.UseVisualStyleBackColor = true; - this.H1_ENABLE.CheckedChanged += new System.EventHandler(this.H1_ENABLE_CheckedChanged); + resources.ApplyResources(this.BUT_MagCalibration, "BUT_MagCalibration"); + this.BUT_MagCalibration.Name = "BUT_MagCalibration"; + this.BUT_MagCalibration.UseVisualStyleBackColor = true; + this.BUT_MagCalibration.Click += new System.EventHandler(this.BUT_MagCalibration_Click); // // Setup // @@ -1616,6 +1625,8 @@ ((System.ComponentModel.ISupportInitialize)(this.pictureBoxQuad)).EndInit(); this.tabHeli.ResumeLayout(false); this.tabHeli.PerformLayout(); + this.groupBox5.ResumeLayout(false); + this.groupBox5.PerformLayout(); this.groupBox3.ResumeLayout(false); this.groupBox3.PerformLayout(); this.groupBox2.ResumeLayout(false); @@ -1627,8 +1638,6 @@ ((System.ComponentModel.ISupportInitialize)(this.HS2_TRIM)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.HS1_TRIM)).EndInit(); this.tabReset.ResumeLayout(false); - this.groupBox5.ResumeLayout(false); - this.groupBox5.PerformLayout(); this.ResumeLayout(false); } @@ -1784,6 +1793,7 @@ private System.Windows.Forms.GroupBox groupBox5; private System.Windows.Forms.RadioButton H1_ENABLE; private System.Windows.Forms.RadioButton CCPM; + private MyButton BUT_MagCalibration; } } \ No newline at end of file diff --git a/Tools/ArdupilotMegaPlanner/Setup/Setup.cs b/Tools/ArdupilotMegaPlanner/Setup/Setup.cs index fa9c3992eb..3537a9c809 100644 --- a/Tools/ArdupilotMegaPlanner/Setup/Setup.cs +++ b/Tools/ArdupilotMegaPlanner/Setup/Setup.cs @@ -159,7 +159,7 @@ namespace ArdupilotMega.Setup return; } - MessageBox.Show("Ensure your transmitter is on and receiver is powered and connected\nEnsure your motor does not have power/no props!!!"); + CustomMessageBox.Show("Ensure your transmitter is on and receiver is powered and connected\nEnsure your motor does not have power/no props!!!"); byte oldrc = MainV2.cs.raterc; byte oldatt = MainV2.cs.rateattitude; @@ -245,7 +245,7 @@ namespace ArdupilotMega.Setup } } - MessageBox.Show("Ensure all your sticks are centered and throttle is down, and click ok to continue"); + CustomMessageBox.Show("Ensure all your sticks are centered and throttle is down, and click ok to continue"); MainV2.cs.UpdateCurrentSettings(currentStateBindingSource, true, MainV2.comPort); @@ -274,7 +274,7 @@ namespace ArdupilotMega.Setup if (rctrim[a] < 1195 || rctrim[a] > 1205) MainV2.comPort.setParam("RC" + (a + 1).ToString("0") + "_TRIM", rctrim[a]); } - catch { MessageBox.Show("Failed to set Channel " + (a + 1).ToString()); } + catch { CustomMessageBox.Show("Failed to set Channel " + (a + 1).ToString()); } data = data + "CH" + (a + 1) + " " + rcmin[a] + " | " + rcmax[a] + "\n"; } @@ -299,7 +299,7 @@ namespace ArdupilotMega.Setup Configuration.startup = false; } - MessageBox.Show("Here are the detected radio options\nNOTE Channels not connected are displayed as 1500 +-2\nNormal values are around 1100 | 1900\nChannel:Min | Max \n" + data, "Radio"); + CustomMessageBox.Show("Here are the detected radio options\nNOTE Channels not connected are displayed as 1500 +-2\nNormal values are around 1100 | 1900\nChannel:Min | Max \n" + data, "Radio"); BUT_Calibrateradio.Text = "Please goto the next tab"; } @@ -336,7 +336,7 @@ namespace ArdupilotMega.Setup CHK_revch3.Checked = MainV2.comPort.param["RC3_REV"].ToString() == "-1"; CHK_revch4.Checked = MainV2.comPort.param["RC4_REV"].ToString() == "-1"; } - catch (Exception ex) { MessageBox.Show("Missing RC rev Param "+ex.ToString()); } + catch (Exception ex) { CustomMessageBox.Show("Missing RC rev Param "+ex.ToString()); } startup = false; } @@ -605,7 +605,7 @@ namespace ArdupilotMega.Setup MainV2.comPort.setParam("SIMPLE", value); } } - catch { MessageBox.Show("Failed to set Flight modes"); } + catch { CustomMessageBox.Show("Failed to set Flight modes"); } BUT_SaveModes.Text = "Complete"; } @@ -635,7 +635,7 @@ namespace ArdupilotMega.Setup { if (MainV2.comPort.param["COMPASS_DEC"] == null) { - MessageBox.Show("Not Available"); + CustomMessageBox.Show("Not Available"); } else { @@ -655,14 +655,14 @@ namespace ArdupilotMega.Setup dec -= ((mins) / 60.0f); } } - catch { MessageBox.Show("Invalid input!"); return; } + catch { CustomMessageBox.Show("Invalid input!"); return; } TXT_declination.Text = dec.ToString(); MainV2.comPort.setParam("COMPASS_DEC", dec * deg2rad); } } - catch { MessageBox.Show("Set COMPASS_DEC Failed"); } + catch { CustomMessageBox.Show("Set COMPASS_DEC Failed"); } } @@ -674,14 +674,14 @@ namespace ArdupilotMega.Setup { if (MainV2.comPort.param["MAG_ENABLE"] == null) { - MessageBox.Show("Not Available"); + CustomMessageBox.Show("Not Available"); } else { MainV2.comPort.setParam("MAG_ENABLE", ((CheckBox)sender).Checked == true ? 1 : 0); } } - catch { MessageBox.Show("Set MAG_ENABLE Failed"); } + catch { CustomMessageBox.Show("Set MAG_ENABLE Failed"); } } //((CheckBox)sender).Checked = !((CheckBox)sender).Checked; @@ -695,14 +695,14 @@ namespace ArdupilotMega.Setup { if (MainV2.comPort.param["SONAR_ENABLE"] == null) { - MessageBox.Show("Not Available"); + CustomMessageBox.Show("Not Available"); } else { MainV2.comPort.setParam("SONAR_ENABLE", ((CheckBox)sender).Checked == true ? 1 : 0); } } - catch { MessageBox.Show("Set SONAR_ENABLE Failed"); } + catch { CustomMessageBox.Show("Set SONAR_ENABLE Failed"); } } private void CHK_enableairspeed_CheckedChanged(object sender, EventArgs e) @@ -713,14 +713,14 @@ namespace ArdupilotMega.Setup { if (MainV2.comPort.param["ARSPD_ENABLE"] == null) { - MessageBox.Show("Not Available on " + MainV2.cs.firmware.ToString()); + CustomMessageBox.Show("Not Available on " + MainV2.cs.firmware.ToString()); } else { MainV2.comPort.setParam("ARSPD_ENABLE", ((CheckBox)sender).Checked == true ? 1 : 0); } } - catch { MessageBox.Show("Set ARSPD_ENABLE Failed"); } + catch { CustomMessageBox.Show("Set ARSPD_ENABLE Failed"); } } private void CHK_enablebattmon_CheckedChanged(object sender, EventArgs e) { @@ -738,7 +738,7 @@ namespace ArdupilotMega.Setup CMB_batmontype.SelectedIndex = 1; } } - catch { MessageBox.Show("Set BATT_MONITOR Failed"); } + catch { CustomMessageBox.Show("Set BATT_MONITOR Failed"); } } private void TXT_battcapacity_Validating(object sender, CancelEventArgs e) { @@ -753,14 +753,14 @@ namespace ArdupilotMega.Setup { if (MainV2.comPort.param["BATT_CAPACITY"] == null) { - MessageBox.Show("Not Available"); + CustomMessageBox.Show("Not Available"); } else { MainV2.comPort.setParam("BATT_CAPACITY", float.Parse(TXT_battcapacity.Text)); } } - catch { MessageBox.Show("Set BATT_CAPACITY Failed"); } + catch { CustomMessageBox.Show("Set BATT_CAPACITY Failed"); } } private void CMB_batmontype_SelectedIndexChanged(object sender, EventArgs e) { @@ -770,7 +770,7 @@ namespace ArdupilotMega.Setup { if (MainV2.comPort.param["BATT_MONITOR"] == null) { - MessageBox.Show("Not Available"); + CustomMessageBox.Show("Not Available"); } else { @@ -804,7 +804,7 @@ namespace ArdupilotMega.Setup MainV2.comPort.setParam("BATT_MONITOR", selection); } } - catch { MessageBox.Show("Set BATT_MONITOR Failed"); } + catch { CustomMessageBox.Show("Set BATT_MONITOR Failed"); } } private void TXT_inputvoltage_Validating(object sender, CancelEventArgs e) { @@ -819,14 +819,14 @@ namespace ArdupilotMega.Setup { if (MainV2.comPort.param["INPUT_VOLTS"] == null) { - MessageBox.Show("Not Available"); + CustomMessageBox.Show("Not Available"); } else { MainV2.comPort.setParam("INPUT_VOLTS", float.Parse(TXT_inputvoltage.Text)); } } - catch { MessageBox.Show("Set INPUT_VOLTS Failed"); } + catch { CustomMessageBox.Show("Set INPUT_VOLTS Failed"); } } private void TXT_measuredvoltage_Validating(object sender, CancelEventArgs e) { @@ -847,20 +847,20 @@ namespace ArdupilotMega.Setup float new_divider = (measuredvoltage * divider) / voltage; TXT_divider.Text = new_divider.ToString(); } - catch { MessageBox.Show("Invalid number entered"); return; } + catch { CustomMessageBox.Show("Invalid number entered"); return; } try { if (MainV2.comPort.param["VOLT_DIVIDER"] == null) { - MessageBox.Show("Not Available"); + CustomMessageBox.Show("Not Available"); } else { MainV2.comPort.setParam("VOLT_DIVIDER", float.Parse(TXT_divider.Text)); } } - catch { MessageBox.Show("Set VOLT_DIVIDER Failed"); } + catch { CustomMessageBox.Show("Set VOLT_DIVIDER Failed"); } } private void TXT_divider_Validating(object sender, CancelEventArgs e) { @@ -875,14 +875,14 @@ namespace ArdupilotMega.Setup { if (MainV2.comPort.param["VOLT_DIVIDER"] == null) { - MessageBox.Show("Not Available"); + CustomMessageBox.Show("Not Available"); } else { MainV2.comPort.setParam("VOLT_DIVIDER", float.Parse(TXT_divider.Text)); } } - catch { MessageBox.Show("Set VOLT_DIVIDER Failed"); } + catch { CustomMessageBox.Show("Set VOLT_DIVIDER Failed"); } } private void TXT_ampspervolt_Validating(object sender, CancelEventArgs e) { @@ -897,14 +897,14 @@ namespace ArdupilotMega.Setup { if (MainV2.comPort.param["AMP_PER_VOLT"] == null) { - MessageBox.Show("Not Available"); + CustomMessageBox.Show("Not Available"); } else { MainV2.comPort.setParam("AMP_PER_VOLT", float.Parse(TXT_ampspervolt.Text)); } } - catch { MessageBox.Show("Set AMP_PER_VOLT Failed"); } + catch { CustomMessageBox.Show("Set AMP_PER_VOLT Failed"); } } private void BUT_reset_Click(object sender, EventArgs e) @@ -913,7 +913,7 @@ namespace ArdupilotMega.Setup { MainV2.comPort.setParam("SYSID_SW_MREV", UInt16.MaxValue); } - catch { MessageBox.Show("Set SYSID_SW_MREV Failed"); return; } + catch { CustomMessageBox.Show("Set SYSID_SW_MREV Failed"); return; } MainV2.givecomport = true; @@ -931,7 +931,7 @@ namespace ArdupilotMega.Setup comPortT.DtrEnable = true; comPortT.Open(); } - catch (Exception ex) { MainV2.givecomport = false; MessageBox.Show("Invalid Comport Settings : " + ex.Message); return; } + catch (Exception ex) { MainV2.givecomport = false; CustomMessageBox.Show("Invalid Comport Settings : " + ex.Message); return; } BUT_reset.Text = "Rebooting (17 sec)"; BUT_reset.Refresh(); @@ -958,7 +958,7 @@ namespace ArdupilotMega.Setup } catch { - MessageBox.Show("Failed to re-connect : Please try again"); + CustomMessageBox.Show("Failed to re-connect : Please try again"); this.Close(); } @@ -985,9 +985,9 @@ namespace ArdupilotMega.Setup try { MainV2.comPort.setParam("FRAME", 0f); - MessageBox.Show("Set to +"); + CustomMessageBox.Show("Set to +"); } - catch { MessageBox.Show("Set frame failed"); } + catch { CustomMessageBox.Show("Set frame failed"); } } private void pictureBoxQuadX_Click(object sender, EventArgs e) @@ -995,16 +995,16 @@ namespace ArdupilotMega.Setup try { MainV2.comPort.setParam("FRAME", 1f); - MessageBox.Show("Set to x"); + CustomMessageBox.Show("Set to x"); } - catch { MessageBox.Show("Set frame failed"); } + catch { CustomMessageBox.Show("Set frame failed"); } } private void Setup_Load(object sender, EventArgs e) { if (!MainV2.comPort.BaseStream.IsOpen) { - MessageBox.Show("Please Connect First"); + CustomMessageBox.Show("Please Connect First"); this.Close(); } else @@ -1033,7 +1033,7 @@ namespace ArdupilotMega.Setup MainV2.comPort.setParam("HSV_MAN", 0); // randy request - last } - catch { MessageBox.Show("Set " + ((TextBox)sender).Name + " failed"); } + catch { CustomMessageBox.Show("Set " + ((TextBox)sender).Name + " failed"); } } private void TXT_srvpos2_Validating(object sender, CancelEventArgs e) @@ -1055,7 +1055,7 @@ namespace ArdupilotMega.Setup System.Threading.Thread.Sleep(100); MainV2.comPort.setParam("HSV_MAN", 0); // randy request - last } - catch { MessageBox.Show("Set " + ((TextBox)sender).Name + " failed"); } + catch { CustomMessageBox.Show("Set " + ((TextBox)sender).Name + " failed"); } } private void TXT_srvpos3_Validating(object sender, CancelEventArgs e) @@ -1077,12 +1077,12 @@ namespace ArdupilotMega.Setup System.Threading.Thread.Sleep(100); MainV2.comPort.setParam("HSV_MAN", 0); // randy request - last } - catch { MessageBox.Show("Set " + ((TextBox)sender).Name + " failed"); } + catch { CustomMessageBox.Show("Set " + ((TextBox)sender).Name + " failed"); } } private void BUT_0collective_Click(object sender, EventArgs e) { - MessageBox.Show("Make sure your blades are at 0 degrees"); + CustomMessageBox.Show("Make sure your blades are at 0 degrees"); try { @@ -1091,7 +1091,7 @@ namespace ArdupilotMega.Setup COL_MID.Text = MainV2.comPort.param["COL_MID_"].ToString(); } - catch { MessageBox.Show("Set COL_MID_ failed"); } + catch { CustomMessageBox.Show("Set COL_MID_ failed"); } } private void HS1_REV_CheckedChanged(object sender, EventArgs e) @@ -1191,7 +1191,7 @@ namespace ArdupilotMega.Setup { MainV2.comPort.setParam(((TextBox)sender).Name, test); } - catch { MessageBox.Show("Failed to set Gyro Gain"); } + catch { CustomMessageBox.Show("Failed to set Gyro Gain"); } } private void GYR_ENABLE__CheckedChanged(object sender, EventArgs e) @@ -1216,7 +1216,7 @@ namespace ArdupilotMega.Setup } catch { - MessageBox.Show("Failed to level : ac2 2.0.37+ is required"); + CustomMessageBox.Show("Failed to level : ac2 2.0.37+ is required"); } } @@ -1227,7 +1227,7 @@ namespace ArdupilotMega.Setup //System.Diagnostics.Process.Start("http://www.ngdc.noaa.gov/geomagmodels/Declination.jsp"); System.Diagnostics.Process.Start("http://www.magnetic-declination.com/"); } - catch { MessageBox.Show("Webpage open failed... do you have a virus?\nhttp://www.magnetic-declination.com/"); } + catch { CustomMessageBox.Show("Webpage open failed... do you have a virus?\nhttp://www.magnetic-declination.com/"); } } void reverseChannel(string name, bool normalreverse, Control progressbar) @@ -1252,16 +1252,16 @@ namespace ArdupilotMega.Setup try { MainV2.comPort.setParam("SWITCH_ENABLE", 0); - MessageBox.Show("Disabled Dip Switchs"); + CustomMessageBox.Show("Disabled Dip Switchs"); } - catch { MessageBox.Show("Error Disableing Dip Switch"); } + catch { CustomMessageBox.Show("Error Disableing Dip Switch"); } } try { int i = normalreverse == false ? 1 : -1; MainV2.comPort.setParam(name, i); } - catch { MessageBox.Show("Error Reversing"); } + catch { CustomMessageBox.Show("Error Reversing"); } } private void CHK_revch1_CheckedChanged(object sender, EventArgs e) @@ -1313,7 +1313,7 @@ namespace ArdupilotMega.Setup BUT_0collective.Enabled = true; } } - catch { MessageBox.Show("Failed to set HSV_MAN"); } + catch { CustomMessageBox.Show("Failed to set HSV_MAN"); } } private void BUT_HS4save_Click(object sender, EventArgs e) @@ -1342,7 +1342,7 @@ namespace ArdupilotMega.Setup HS4_MIN.Enabled = true; } } - catch { MessageBox.Show("Failed to set HSV_MAN"); } + catch { CustomMessageBox.Show("Failed to set HSV_MAN"); } } private void tabHeli_Click(object sender, EventArgs e) @@ -1444,14 +1444,14 @@ namespace ArdupilotMega.Setup { if (MainV2.comPort.param["FLOW_ENABLE"] == null) { - MessageBox.Show("Not Available on " + MainV2.cs.firmware.ToString()); + CustomMessageBox.Show("Not Available on " + MainV2.cs.firmware.ToString()); } else { MainV2.comPort.setParam("FLOW_ENABLE", ((CheckBox)sender).Checked == true ? 1 : 0); } } - catch { MessageBox.Show("Set FLOW_ENABLE Failed"); } + catch { CustomMessageBox.Show("Set FLOW_ENABLE Failed"); } } private void CMB_sonartype_SelectedIndexChanged(object sender, EventArgs e) @@ -1462,14 +1462,14 @@ namespace ArdupilotMega.Setup { if (MainV2.comPort.param["SONAR_TYPE"] == null) { - MessageBox.Show("Not Available on " + MainV2.cs.firmware.ToString()); + CustomMessageBox.Show("Not Available on " + MainV2.cs.firmware.ToString()); } else { MainV2.comPort.setParam("SONAR_TYPE", ((ComboBox)sender).SelectedIndex); } } - catch { MessageBox.Show("Set SONAR_TYPE Failed"); } + catch { CustomMessageBox.Show("Set SONAR_TYPE Failed"); } } private void CHK_mixmode_CheckedChanged(object sender, EventArgs e) @@ -1480,14 +1480,14 @@ namespace ArdupilotMega.Setup { if (MainV2.comPort.param["ELEVON_MIXING"] == null) { - MessageBox.Show("Not Available on " + MainV2.cs.firmware.ToString()); + CustomMessageBox.Show("Not Available on " + MainV2.cs.firmware.ToString()); } else { MainV2.comPort.setParam("ELEVON_MIXING", ((CheckBox)sender).Checked == true ? 1 : 0); } } - catch { MessageBox.Show("Set ELEVON_MIXING Failed"); } + catch { CustomMessageBox.Show("Set ELEVON_MIXING Failed"); } } private void CHK_elevonrev_CheckedChanged(object sender, EventArgs e) @@ -1498,14 +1498,14 @@ namespace ArdupilotMega.Setup { if (MainV2.comPort.param["ELEVON_REVERSE"] == null) { - MessageBox.Show("Not Available on " + MainV2.cs.firmware.ToString()); + CustomMessageBox.Show("Not Available on " + MainV2.cs.firmware.ToString()); } else { MainV2.comPort.setParam("ELEVON_REVERSE", ((CheckBox)sender).Checked == true ? 1 : 0); } } - catch { MessageBox.Show("Set ELEVON_REVERSE Failed"); } + catch { CustomMessageBox.Show("Set ELEVON_REVERSE Failed"); } } private void CHK_elevonch1rev_CheckedChanged(object sender, EventArgs e) @@ -1516,14 +1516,14 @@ namespace ArdupilotMega.Setup { if (MainV2.comPort.param["ELEVON_CH1_REV"] == null) { - MessageBox.Show("Not Available on " + MainV2.cs.firmware.ToString()); + CustomMessageBox.Show("Not Available on " + MainV2.cs.firmware.ToString()); } else { MainV2.comPort.setParam("ELEVON_CH1_REV", ((CheckBox)sender).Checked == true ? 1 : 0); } } - catch { MessageBox.Show("Set ELEVON_CH1_REV Failed"); } + catch { CustomMessageBox.Show("Set ELEVON_CH1_REV Failed"); } } private void CHK_elevonch2rev_CheckedChanged(object sender, EventArgs e) @@ -1534,14 +1534,14 @@ namespace ArdupilotMega.Setup { if (MainV2.comPort.param["ELEVON_CH2_REV"] == null) { - MessageBox.Show("Not Available on " + MainV2.cs.firmware.ToString()); + CustomMessageBox.Show("Not Available on " + MainV2.cs.firmware.ToString()); } else { MainV2.comPort.setParam("ELEVON_CH2_REV", ((CheckBox)sender).Checked == true ? 1 : 0); } } - catch { MessageBox.Show("Set ELEVON_CH2_REV Failed"); } + catch { CustomMessageBox.Show("Set ELEVON_CH2_REV Failed"); } } private void CMB_batmonsensortype_SelectedIndexChanged(object sender, EventArgs e) @@ -1625,14 +1625,66 @@ namespace ArdupilotMega.Setup { if (MainV2.comPort.param["H1_ENABLE"] == null) { - MessageBox.Show("Not Available on " + MainV2.cs.firmware.ToString()); + CustomMessageBox.Show("Not Available on " + MainV2.cs.firmware.ToString()); } else { MainV2.comPort.setParam("H1_ENABLE", ((RadioButton)sender).Checked == true ? 1 : 0); } } - catch { MessageBox.Show("Set H1_ENABLE Failed"); } + catch { CustomMessageBox.Show("Set H1_ENABLE Failed"); } + } + + private void BUT_MagCalibration_Click(object sender, EventArgs e) + { + if (DialogResult.Yes == CustomMessageBox.Show("Use live data, or a log\n\nYes for Live data", "Mag Calibration", MessageBoxButtons.YesNo)) + { + List> data = new List>(); + + byte backupratesens = MainV2.cs.ratesensors; + + MainV2.cs.ratesensors = 10; + + MainV2.comPort.requestDatastream((byte)MAVLink.MAV_DATA_STREAM.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"); + + DateTime deadline = DateTime.Now.AddSeconds(30); + + float oldmx = 0; + float oldmy = 0; + float oldmz = 0; + + while (deadline > DateTime.Now) + { + Application.DoEvents(); + + if (oldmx != MainV2.cs.mx && + oldmy != MainV2.cs.my && + oldmz != MainV2.cs.mz) + { + data.Add(new Tuple( + MainV2.cs.mx - (float)MainV2.cs.mag_ofs_x, + MainV2.cs.my - (float)MainV2.cs.mag_ofs_y, + MainV2.cs.mz - (float)MainV2.cs.mag_ofs_z)); + + oldmx = MainV2.cs.mx; + oldmy = MainV2.cs.my; + oldmz = MainV2.cs.mz; + } + } + + MainV2.cs.ratesensors = backupratesens; + + double[] ans = MagCalib.LeastSq(data); + + MagCalib.SaveOffsets(ans); + + } + else + { + MagCalib.ProcessLog(); + } } } } \ No newline at end of file diff --git a/Tools/ArdupilotMegaPlanner/Setup/Setup.resx b/Tools/ArdupilotMegaPlanner/Setup/Setup.resx index 6bda482d71..16be1cd25e 100644 --- a/Tools/ArdupilotMegaPlanner/Setup/Setup.resx +++ b/Tools/ArdupilotMegaPlanner/Setup/Setup.resx @@ -117,15 +117,1788 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + groupBoxElevons + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabRadioIn + + + 0 + + + CHK_revch3 + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabRadioIn + + + 1 + + + CHK_revch4 + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabRadioIn + + + 2 + + + CHK_revch2 + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabRadioIn + + + 3 + + + CHK_revch1 + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabRadioIn + + + 4 + + + BUT_Calibrateradio + + + ArdupilotMega.MyButton, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + + + tabRadioIn + + + 5 + + + BAR8 + + + ArdupilotMega.HorizontalProgressBar2, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + + + tabRadioIn + + + 6 + + + BAR7 + + + ArdupilotMega.HorizontalProgressBar2, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + + + tabRadioIn + + + 7 + + + BAR6 + + + ArdupilotMega.HorizontalProgressBar2, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + + + tabRadioIn + + + 8 + + + BAR5 + + + ArdupilotMega.HorizontalProgressBar2, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + + + tabRadioIn + + + 9 + + + BARpitch + + + ArdupilotMega.VerticalProgressBar2, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + + + tabRadioIn + + + 10 + + + BARthrottle + + + ArdupilotMega.VerticalProgressBar2, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + + + tabRadioIn + + + 11 + + + BARyaw + + + ArdupilotMega.HorizontalProgressBar2, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + + + tabRadioIn + + + 12 + + + BARroll + + + ArdupilotMega.HorizontalProgressBar2, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + + + tabRadioIn + + + 13 + + + + 4, 22 + + + + 3, 3, 3, 3 + + + 666, 393 + + + 0 + + + Radio Input + + + tabRadioIn + + + System.Windows.Forms.TabPage, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabControl1 + + + 0 + + + CB_simple6 + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabModes + + + 0 + + + CB_simple5 + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabModes + + + 1 + + + CB_simple4 + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabModes + + + 2 + + + CB_simple3 + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabModes + + + 3 + + + CB_simple2 + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabModes + + + 4 + + + CB_simple1 + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabModes + + + 5 + + + label14 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabModes + + + 6 + + + LBL_flightmodepwm + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabModes + + + 7 + + + label13 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabModes + + + 8 + + + lbl_currentmode + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabModes + + + 9 + + + label12 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabModes + + + 10 + + + label11 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabModes + + + 11 + + + label10 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabModes + + + 12 + + + label9 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabModes + + + 13 + + + label8 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabModes + + + 14 + + + label7 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabModes + + + 15 + + + label6 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabModes + + + 16 + + + CMB_fmode6 + + + System.Windows.Forms.ComboBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabModes + + + 17 + + + label5 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabModes + + + 18 + + + CMB_fmode5 + + + System.Windows.Forms.ComboBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabModes + + + 19 + + + label4 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabModes + + + 20 + + + CMB_fmode4 + + + System.Windows.Forms.ComboBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabModes + + + 21 + + + label3 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabModes + + + 22 + + + CMB_fmode3 + + + System.Windows.Forms.ComboBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabModes + + + 23 + + + label2 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabModes + + + 24 + + + CMB_fmode2 + + + System.Windows.Forms.ComboBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabModes + + + 25 + + + label1 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabModes + + + 26 + + + CMB_fmode1 + + + System.Windows.Forms.ComboBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabModes + + + 27 + + + BUT_SaveModes + + + ArdupilotMega.MyButton, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + + + tabModes + + + 28 + + + 4, 22 + + + 666, 393 + + + 3 + + + Modes + + + tabModes + + + System.Windows.Forms.TabPage, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabControl1 + + + 1 + + + 405, 25 + + + 75, 23 + + + 33 + + + Calibration + + + BUT_MagCalibration + + + ArdupilotMega.MyButton, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + + + tabHardware + + + 0 + + + NoControl + + + 510, 57 + + + 150, 20 + + + 32 + + + in Degrees eg 2° 3' W is -2.3 + + + label27 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabHardware + + + 1 + + + XL-EZ0 + + + LV-EZ0 + + + XL-EZL0 + + + 308, 134 + + + 121, 21 + + + 31 + + + CMB_sonartype + + + System.Windows.Forms.ComboBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabHardware + + + 2 + + + NoControl + + + 162, 297 + + + 134, 19 + + + 30 + + + Enable Optical Flow + + + CHK_enableoptflow + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabHardware + + + 3 + + + Zoom + + + NoControl + + + 78, 271 + + + 75, 75 + + + 29 + + + pictureBox2 + + + System.Windows.Forms.PictureBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabHardware + + + 4 + + + True + + + NoControl + + + 390, 80 + + + 104, 13 + + + 28 + + + Declination WebSite + + + linkLabelmagdec + + + System.Windows.Forms.LinkLabel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabHardware + + + 5 + + + NoControl + + + 305, 57 + + + 72, 16 + + + 23 + + + Declination + + + label100 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabHardware + + + 6 + + + 383, 57 + + + 121, 20 + + + 20 + + + Magnetic Declination (-20.0 to 20.0) eg 2° 3' W is -2.3 + + + TXT_declination + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabHardware + + + 7 + + + NoControl + + + 162, 214 + + + 103, 17 + + + 24 + + + Enable Airspeed + + + CHK_enableairspeed + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabHardware + + + 8 + + + NoControl + + + 159, 136 + + + 90, 17 + + + 25 + + + Enable Sonar + + + CHK_enablesonar + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabHardware + + + 9 + + + NoControl + + + 162, 56 + + + 105, 17 + + + 27 + + + Enable Compass + + + CHK_enablecompass + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabHardware + + + 10 + + + Zoom + + + NoControl + + + 78, 188 + + + 75, 75 + + + 3 + + + pictureBox4 + + + System.Windows.Forms.PictureBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabHardware + + + 11 + + + Zoom + + + NoControl + + + 78, 106 + + + 75, 75 + + + 2 + + + pictureBox3 + + + System.Windows.Forms.PictureBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabHardware + + + 12 + + + Zoom + + + + + + NoControl + + + + + + 78, 25 + + + 75, 75 + + + 0 + + + pictureBox1 + + + System.Windows.Forms.PictureBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabHardware + + + 13 + + + 4, 22 + + + 3, 3, 3, 3 + + + 666, 393 + + + 1 + + + Hardware + + + tabHardware + + + System.Windows.Forms.TabPage, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabControl1 + + + 2 + + + groupBox4 + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabBattery + + + 0 + + + label47 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabBattery + + + 1 + + + CMB_batmonsensortype + + + System.Windows.Forms.ComboBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabBattery + + + 2 + + + textBox3 + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabBattery + + + 3 + + + label29 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabBattery + + + 4 + + + label30 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabBattery + + + 5 + + + TXT_battcapacity + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabBattery + + + 6 + + + CMB_batmontype + + + System.Windows.Forms.ComboBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabBattery + + + 7 + + + pictureBox5 + + + System.Windows.Forms.PictureBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabBattery + + + 8 + + + 4, 22 + + + 2, 2, 2, 2 + + + 666, 393 + + + 6 + + + Battery + + + tabBattery + + + System.Windows.Forms.TabPage, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabControl1 + + + 3 + + + label28 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabArducopter + + + 0 + + + label16 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabArducopter + + + 1 + + + label15 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabArducopter + + + 2 + + + pictureBoxQuadX + + + System.Windows.Forms.PictureBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabArducopter + + + 3 + + + pictureBoxQuad + + + System.Windows.Forms.PictureBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabArducopter + + + 4 + + + BUT_levelac2 + + + ArdupilotMega.MyButton, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + + + tabArducopter + + + 5 + + + 4, 22 + + + 666, 393 + + + 2 + + + ArduCopter2 + + + tabArducopter + + + System.Windows.Forms.TabPage, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabControl1 + + + 4 + + + groupBox5 + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabHeli + + + 0 + + + BUT_HS4save + + + ArdupilotMega.MyButton, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + + + tabHeli + + + 1 + + + BUT_swash_manual + + + ArdupilotMega.MyButton, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + + + tabHeli + + + 2 + + + groupBox3 + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabHeli + + + 3 + + + label44 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabHeli + + + 4 + + + label43 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabHeli + + + 5 + + + label42 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabHeli + + + 6 + + + groupBox2 + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabHeli + + + 7 + + + groupBox1 + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabHeli + + + 8 + + + HS4_TRIM + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabHeli + + + 9 + + + HS3_TRIM + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabHeli + + + 10 + + + HS2_TRIM + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabHeli + + + 11 + + + HS1_TRIM + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabHeli + + + 12 + + + label39 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabHeli + + + 13 + + + label38 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabHeli + + + 14 + + + label37 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabHeli + + + 15 + + + label36 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabHeli + + + 16 + + + label26 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabHeli + + + 17 + + + PIT_MAX + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabHeli + + + 18 + + + label25 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabHeli + + + 19 + + + ROL_MAX + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabHeli + + + 20 + + + label23 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabHeli + + + 21 + + + label22 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabHeli + + + 22 + + + HS4_REV + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabHeli + + + 23 + + + label20 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabHeli + + + 24 + + + label19 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabHeli + + + 25 + + + label18 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabHeli + + + 26 + + + SV3_POS + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabHeli + + + 27 + + + SV2_POS + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabHeli + + + 28 + + + SV1_POS + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabHeli + + + 29 + + + HS3_REV + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabHeli + + + 30 + + + HS2_REV + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabHeli + + + 31 + + + HS1_REV + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabHeli + + + 32 + + + label17 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabHeli + + + 33 + + + HS4 + + + ArdupilotMega.HorizontalProgressBar2, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + + + tabHeli + + + 34 + + + HS3 + + + ArdupilotMega.VerticalProgressBar2, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + + + tabHeli + + + 35 + + + Gservoloc + + + AGaugeApp.AGauge, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + + + tabHeli + + + 36 + + + 4, 22 + + + 666, 393 + + + 5 + + + AC2 Heli + + + tabHeli + + + System.Windows.Forms.TabPage, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabControl1 + + + 5 + + + Fill + + + 0, 0 + + + 674, 419 + + + 93 + + + tabControl1 + + + System.Windows.Forms.TabControl, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 0 + + + CHK_mixmode + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBoxElevons + + + 0 + + + CHK_elevonch2rev + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBoxElevons + + + 1 + + + CHK_elevonrev + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBoxElevons + + + 2 + + + CHK_elevonch1rev + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBoxElevons + + + 3 + + + 21, 349 + + + 409, 42 + + + 111 + + + Elevon Config + + + groupBoxElevons + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabRadioIn + + + 0 + True - NoControl - 13, 19 @@ -255,30 +2028,6 @@ 3 - - 21, 349 - - - 409, 42 - - - 111 - - - Elevon Config - - - groupBoxElevons - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tabRadioIn - - - 0 - True @@ -450,6 +2199,9 @@ 6 + + 17, 17 + 446, 185 @@ -597,33 +2349,6 @@ 13 - - 4, 22 - - - 3, 3, 3, 3 - - - 666, 393 - - - 0 - - - Radio Input - - - tabRadioIn - - - System.Windows.Forms.TabPage, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tabControl1 - - - 0 - True @@ -1455,417 +3180,150 @@ 28 - - 4, 22 + + label31 - - 666, 393 - - - 3 - - - Modes - - - tabModes - - - System.Windows.Forms.TabPage, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tabControl1 - - - 1 - - - NoControl - - - 510, 57 - - - 150, 20 - - - 32 - - - in Degrees eg 2° 3' W is -2.3 - - - label27 - - + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - tabHardware + + groupBox4 - + 0 - - XL-EZ0 + + label32 - - LV-EZ0 - - - XL-EZL0 - - - 308, 134 - - - 121, 21 - - - 31 - - - CMB_sonartype - - - System.Windows.Forms.ComboBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tabHardware - - - 1 - - - NoControl - - - 162, 297 - - - 134, 19 - - - 30 - - - Enable Optical Flow - - - CHK_enableoptflow - - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tabHardware - - - 2 - - - Zoom - - - NoControl - - - 78, 271 - - - 75, 75 - - - 29 - - - pictureBox2 - - - System.Windows.Forms.PictureBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tabHardware - - - 3 - - - True - - - NoControl - - - 390, 80 - - - 104, 13 - - - 28 - - - Declination WebSite - - - linkLabelmagdec - - - System.Windows.Forms.LinkLabel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tabHardware - - - 4 - - - NoControl - - - 305, 57 - - - 72, 16 - - - 23 - - - Declination - - - label100 - - + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - tabHardware + + groupBox4 - - 5 + + 1 - - 383, 57 + + label33 - - 121, 20 + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - 20 + + groupBox4 - - Magnetic Declination (-20.0 to 20.0) eg 2° 3' W is -2.3 + + 2 - - TXT_declination + + TXT_ampspervolt - + System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - tabHardware + + groupBox4 - - 6 - - - NoControl - - - 162, 214 - - - 103, 17 - - - 24 - - - Enable Airspeed - - - CHK_enableairspeed - - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tabHardware - - - 7 - - - NoControl - - - 159, 136 - - - 90, 17 - - - 25 - - - Enable Sonar - - - CHK_enablesonar - - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tabHardware - - - 8 - - - NoControl - - - 162, 56 - - - 105, 17 - - - 27 - - - Enable Compass - - - CHK_enablecompass - - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tabHardware - - - 9 - - - Zoom - - - NoControl - - - 78, 188 - - - 75, 75 - - + 3 - - pictureBox4 + + label34 - - System.Windows.Forms.PictureBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - tabHardware + + groupBox4 - - 10 + + 4 - - Zoom + + TXT_divider - - NoControl + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - 78, 106 + + groupBox4 - - 75, 75 + + 5 - - 2 + + label35 - - pictureBox3 + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - System.Windows.Forms.PictureBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + groupBox4 - - tabHardware + + 6 - - 11 + + TXT_voltage - - Zoom + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - + + groupBox4 - - NoControl + + 7 - - + + TXT_inputvoltage - - 78, 25 + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - 75, 75 + + groupBox4 - + + 8 + + + TXT_measuredvoltage + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox4 + + + 9 + + + 31, 177 + + + 238, 131 + + + 41 + + + Calibration + + + groupBox4 + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabBattery + + 0 - - pictureBox1 - - - System.Windows.Forms.PictureBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tabHardware - - - 12 - - - 4, 22 - - - 3, 3, 3, 3 - - - 666, 393 - - - 1 - - - Hardware - - - tabHardware - - - System.Windows.Forms.TabPage, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tabControl1 - - - 2 - True @@ -2151,30 +3609,6 @@ 9 - - 31, 177 - - - 238, 131 - - - 41 - - - Calibration - - - groupBox4 - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tabBattery - - - 0 - NoControl @@ -2406,33 +3840,6 @@ Then subtract 0.3v from that value and enter it in field #1 at left. 8 - - 4, 22 - - - 2, 2, 2, 2 - - - 666, 393 - - - 6 - - - Battery - - - tabBattery - - - System.Windows.Forms.TabPage, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tabControl1 - - - 3 - True @@ -2605,29 +4012,53 @@ will work with hexa's etc 5 - - 4, 22 + + H1_ENABLE - - 666, 393 + + System.Windows.Forms.RadioButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - 2 + + groupBox5 - - ArduCopter2 + + 0 - - tabArducopter + + CCPM - - System.Windows.Forms.TabPage, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + System.Windows.Forms.RadioButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - tabControl1 + + groupBox5 - - 4 + + 1 + + + 253, 6 + + + 120, 43 + + + 137 + + + Swash Type + + + groupBox5 + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabHeli + + + 0 True @@ -2686,30 +4117,6 @@ will work with hexa's etc 1 - - 253, 6 - - - 120, 43 - - - 137 - - - Swash Type - - - groupBox5 - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tabHeli - - - 0 - NoControl @@ -2764,6 +4171,78 @@ will work with hexa's etc 2 + + label46 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox3 + + + 0 + + + label45 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox3 + + + 1 + + + GYR_ENABLE + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox3 + + + 2 + + + GYR_GAIN + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox3 + + + 3 + + + 433, 309 + + + 101, 63 + + + 135 + + + Gyro + + + groupBox3 + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabHeli + + + 3 + True @@ -2875,30 +4354,6 @@ will work with hexa's etc 3 - - 433, 309 - - - 101, 63 - - - 135 - - - Gyro - - - groupBox3 - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tabHeli - - - 3 - True @@ -2989,6 +4444,75 @@ will work with hexa's etc 6 + + label24 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox2 + + + 0 + + + HS4_MIN + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox2 + + + 1 + + + HS4_MAX + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox2 + + + 2 + + + label40 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox2 + + + 3 + + + 433, 181 + + + 169, 78 + + + 130 + + + groupBox2 + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabHeli + + + 7 + True @@ -3103,26 +4627,98 @@ will work with hexa's etc 3 - - 433, 181 + + label41 - - 169, 78 + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - 130 + + groupBox1 - - groupBox2 + + 0 - + + label21 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox1 + + + 1 + + + COL_MIN + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox1 + + + 2 + + + COL_MID + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox1 + + + 3 + + + COL_MAX + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox1 + + + 4 + + + BUT_0collective + + + ArdupilotMega.MyButton, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + + + groupBox1 + + + 5 + + + 293, 90 + + + 80, 209 + + + 129 + + + groupBox1 + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - + tabHeli - - 7 + + 8 True @@ -3295,27 +4891,6 @@ will work with hexa's etc 5 - - 293, 90 - - - 80, 209 - - - 129 - - - groupBox1 - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tabHeli - - - 8 - 535, 279 @@ -4060,69 +5635,6 @@ will work with hexa's etc 36 - - 4, 22 - - - 666, 393 - - - 5 - - - AC2 Heli - - - tabHeli - - - System.Windows.Forms.TabPage, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tabControl1 - - - 5 - - - Fill - - - 0, 0 - - - 674, 419 - - - 93 - - - tabControl1 - - - System.Windows.Forms.TabControl, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 0 - - - NoControl - - - 214, 161 - - - 195, 23 - - - 0 - - - Reset APM Hardware to Default - BUT_reset @@ -4153,6 +5665,33 @@ will work with hexa's etc System.Windows.Forms.TabPage, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + NoControl + + + 214, 161 + + + 195, 23 + + + 0 + + + Reset APM Hardware to Default + + + BUT_reset + + + ArdupilotMega.MyButton, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + + + tabReset + + + 0 + True diff --git a/Tools/ArdupilotMegaPlanner/bin/Release/ArdupilotMegaPlanner.pdb b/Tools/ArdupilotMegaPlanner/bin/Release/ArdupilotMegaPlanner.pdb index 83ab9bf5e9c3808c65f565d94b26d28beb7dc9f5..3b01042cf479a70bb7fb27fd7e4d21ecb96ad8ef 100644 GIT binary patch delta 220231 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 R7<8LH=$U<_K_P1lM#u38)?h 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

#eJMQ|X>`$P0vehEuHbyNpa(;L|w!d5CfuWa#vl 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

rr36G=~inK3#6!Z>Sj< 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 K7&6*9