From 3c78f341780e109141d893fcb34077607d63d1fa Mon Sep 17 00:00:00 2001 From: Michael Oborne Date: Sun, 19 Aug 2012 16:38:58 +0800 Subject: [PATCH] Mission Planner 1.2.7 add wind from ap add wp every x m in grid mode fix hil problem fix control-s update mavlink format --- .../ArdupilotMegaPlanner/ArdupilotMega.csproj | 5 - Tools/ArdupilotMegaPlanner/CurrentState.cs | 15 ++- .../ConfigurationView/ConfigFriendlyParams.cs | 2 +- .../GCSViews/FlightPlanner.Designer.cs | 1 + .../GCSViews/FlightPlanner.cs | 83 +++++++++++++++- .../GCSViews/FlightPlanner.resx | 14 +-- .../GCSViews/Simulation.cs | 7 +- Tools/ArdupilotMegaPlanner/MainV2.cs | 4 +- .../Mavlink/MAVLinkTypes.cs | 99 +++++++++++-------- Tools/ArdupilotMegaPlanner/Msi/installer.wxs | 48 ++++----- Tools/ArdupilotMegaPlanner/Program.cs | 18 ++-- .../Properties/AssemblyInfo.cs | 2 +- 12 files changed, 202 insertions(+), 96 deletions(-) diff --git a/Tools/ArdupilotMegaPlanner/ArdupilotMega.csproj b/Tools/ArdupilotMegaPlanner/ArdupilotMega.csproj index 230d5f31d8..f7586c56c9 100644 --- a/Tools/ArdupilotMegaPlanner/ArdupilotMega.csproj +++ b/Tools/ArdupilotMegaPlanner/ArdupilotMega.csproj @@ -182,10 +182,6 @@ False - - False - Lib\Sharp3D.Math.dll - False @@ -290,7 +286,6 @@ ConfigMount.cs - diff --git a/Tools/ArdupilotMegaPlanner/CurrentState.cs b/Tools/ArdupilotMegaPlanner/CurrentState.cs index 100905f329..58fddbfaca 100644 --- a/Tools/ArdupilotMegaPlanner/CurrentState.cs +++ b/Tools/ArdupilotMegaPlanner/CurrentState.cs @@ -377,7 +377,7 @@ namespace ArdupilotMega if (DateTime.Now.Second != lastwindcalc.Second) { lastwindcalc = DateTime.Now; - dowindcalc(); + // dowindcalc(); } if (mavinterface.packets[MAVLink.MAVLINK_MSG_ID_STATUSTEXT] != null) // status text @@ -446,6 +446,17 @@ namespace ArdupilotMega //MAVLink.packets[MAVLink.MAVLINK_MSG_ID_HWSTATUS] = null; } + bytearray = mavinterface.packets[ArdupilotMega.MAVLink.MAVLINK_MSG_ID_WIND]; + if (bytearray != null) + { + var wind = bytearray.ByteArrayToStructure(6); + + wind_dir = wind.direction; + wind_vel = wind.speed; + + //MAVLink.packets[ArdupilotMega.MAVLink.MAVLINK_MSG_ID_SYS_STATUS] = null; + } + #if MAVLINK10 @@ -951,6 +962,8 @@ namespace ArdupilotMega alt = vfr.alt; // this might include baro + //Console.WriteLine(alt); + //climbrate = vfr.climb; if ((DateTime.Now - lastalt).TotalSeconds >= 0.2 && oldalt != alt) diff --git a/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigFriendlyParams.cs b/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigFriendlyParams.cs index 41c67c786d..cf470e7920 100644 --- a/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigFriendlyParams.cs +++ b/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigFriendlyParams.cs @@ -365,7 +365,7 @@ namespace ArdupilotMega.GCSViews.ConfigurationView for (int i = 0; i < descriptionParts.Length; i++) { returnDescription.Append(String.Format("{0} ", descriptionParts[i])); - if (i != 0 && i % 10 == 0) returnDescription.Append(Environment.NewLine); + if (i != 0 && i % 12 == 0) returnDescription.Append(Environment.NewLine); } } diff --git a/Tools/ArdupilotMegaPlanner/GCSViews/FlightPlanner.Designer.cs b/Tools/ArdupilotMegaPlanner/GCSViews/FlightPlanner.Designer.cs index 4f60927328..e4109f4283 100644 --- a/Tools/ArdupilotMegaPlanner/GCSViews/FlightPlanner.Designer.cs +++ b/Tools/ArdupilotMegaPlanner/GCSViews/FlightPlanner.Designer.cs @@ -591,6 +591,7 @@ this.comboBoxMapType.FormattingEnabled = true; this.comboBoxMapType.Name = "comboBoxMapType"; this.toolTip1.SetToolTip(this.comboBoxMapType, resources.GetString("comboBoxMapType.ToolTip")); + this.comboBoxMapType.SelectedIndexChanged += new System.EventHandler(this.comboBoxMapType_SelectedValueChanged); // // panelMap // diff --git a/Tools/ArdupilotMegaPlanner/GCSViews/FlightPlanner.cs b/Tools/ArdupilotMegaPlanner/GCSViews/FlightPlanner.cs index dfd1b83fd5..8963af6487 100644 --- a/Tools/ArdupilotMegaPlanner/GCSViews/FlightPlanner.cs +++ b/Tools/ArdupilotMegaPlanner/GCSViews/FlightPlanner.cs @@ -3221,8 +3221,8 @@ namespace ArdupilotMega.GCSViews string distance = (50 * MainV2.cs.multiplierdist).ToString("0"); Common.InputBox("Distance", "Distance between lines", ref distance); - //string overshoot = (30 * MainV2.cs.multiplierdist).ToString("0"); - //Common.InputBox("Overshoot", "Enter of line overshoot amount", ref overshoot); + string wpevery = (40 * MainV2.cs.multiplierdist).ToString("0"); + Common.InputBox("Every", "Put a WP every x distance (-1 for none)", ref wpevery); string angle = (90).ToString("0"); Common.InputBox("Angle", "Enter the line direction (0-180)", ref angle); @@ -3244,6 +3244,11 @@ namespace ArdupilotMega.GCSViews CustomMessageBox.Show("Invalid Distance"); return; } + if (!double.TryParse(wpevery, out tryme)) + { + CustomMessageBox.Show("Invalid Waypoint spacing"); + return; + } #if DEBUG //Commands.Rows.Clear(); @@ -3274,12 +3279,18 @@ namespace ArdupilotMega.GCSViews int count = 0; - double x = bottomleft.Lat - Math.Abs(fulllatdiff); - double y = bottomleft.Lng - Math.Abs(fulllngdiff); + double x = bottomleft.Lat - Math.Abs(fulllatdiff) - latlngdiff * 0.5; + double y = bottomleft.Lng - Math.Abs(fulllngdiff) - latlngdiff * 0.5; + + //callMe(x, y, 0); + + //callMe(topright.Lat + Math.Abs(latlngdiff),topright.Lng + Math.Abs(latlngdiff), 0); + + //return; log.InfoFormat("{0} < {1} {2} < {3}", x, (topright.Lat), y, (topright.Lng)); - while (x < (topright.Lat + Math.Abs(fulllatdiff)) && y < (topright.Lng + Math.Abs(fulllngdiff))) + while (x < (topright.Lat + Math.Abs(latlngdiff)) && y < (topright.Lng + Math.Abs(latlngdiff))) { if (double.Parse(angle) < 45) { @@ -3348,9 +3359,24 @@ namespace ArdupilotMega.GCSViews } if (!farestlatlong.IsZero) + { callMe(farestlatlong.Lat, farestlatlong.Lng, altitude); + } + if (!closestlatlong.IsZero && !farestlatlong.IsZero && double.Parse(wpevery) > 0) + { + for (int d = (int)double.Parse(wpevery); d < (MainMap.Manager.GetDistance(farestlatlong, closestlatlong) * 1000); d += (int)double.Parse(wpevery)) + { + ax = farestlatlong.Lat; + ay = farestlatlong.Lng; + + newpos(ref ax, ref ay, double.Parse(angle), -d); + callMe(ax, ay, altitude); + } + } if (!closestlatlong.IsZero) + { callMe(closestlatlong.Lat, closestlatlong.Lng - overshootdistlng, altitude); + } //callMe(x, topright.Lng, altitude); //callMe(x, bottomleft.Lng - overshootdistlng, altitude); @@ -3389,9 +3415,24 @@ namespace ArdupilotMega.GCSViews } } if (!closestlatlong.IsZero) + { callMe(closestlatlong.Lat, closestlatlong.Lng, altitude); + } + if (!closestlatlong.IsZero && !farestlatlong.IsZero && double.Parse(wpevery) > 0) + { + for (int d = (int)double.Parse(wpevery); d < (MainMap.Manager.GetDistance(farestlatlong, closestlatlong) * 1000); d += (int)double.Parse(wpevery)) + { + ax = closestlatlong.Lat; + ay = closestlatlong.Lng; + + newpos(ref ax, ref ay, double.Parse(angle), d); + callMe(ax, ay, altitude); + } + } if (!farestlatlong.IsZero) + { callMe(farestlatlong.Lat, farestlatlong.Lng + overshootdistlng, altitude); + } //callMe(x, bottomleft.Lng, altitude); //callMe(x, topright.Lng + overshootdistlng, altitude); } @@ -3414,6 +3455,38 @@ namespace ArdupilotMega.GCSViews } } + void newpos(ref double lat, ref double lon, double bearing, double distance) + { + // '''extrapolate latitude/longitude given a heading and distance + // thanks to http://www.movable-type.co.uk/scripts/latlong.html + // ''' + // from math import sin, asin, cos, atan2, radians, degrees + double radius_of_earth = 6378100.0;//# in meters + + double lat1 = radians(lat); + double lon1 = radians(lon); + double brng = radians(bearing); + double dr = distance / radius_of_earth; + + double lat2 = Math.Asin(Math.Sin(lat1) * Math.Cos(dr) + + Math.Cos(lat1) * Math.Sin(dr) * Math.Cos(brng)); + double lon2 = lon1 + Math.Atan2(Math.Sin(brng) * Math.Sin(dr) * Math.Cos(lat1), + Math.Cos(dr) - Math.Sin(lat1) * Math.Sin(lat2)); + + lat = degrees(lat2); + lon = degrees(lon2); + //return (degrees(lat2), degrees(lon2)); + } + + public static double radians(double val) + { + return val * deg2rad; + } + public static double degrees(double val) + { + return val * rad2deg; + } + private void zoomToToolStripMenuItem_Click(object sender, EventArgs e) { string place = "Perth Airport, Australia"; diff --git a/Tools/ArdupilotMegaPlanner/GCSViews/FlightPlanner.resx b/Tools/ArdupilotMegaPlanner/GCSViews/FlightPlanner.resx index 2f93baea0b..d3be25c6fd 100644 --- a/Tools/ArdupilotMegaPlanner/GCSViews/FlightPlanner.resx +++ b/Tools/ArdupilotMegaPlanner/GCSViews/FlightPlanner.resx @@ -322,7 +322,7 @@ 3, 55 - 35 + 45 610, 79 @@ -556,7 +556,7 @@ BUT_write - ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner10, Version=1.1.4611.35137, Culture=neutral, PublicKeyToken=null + ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner10, Version=1.1.4613.14163, Culture=neutral, PublicKeyToken=null panel5 @@ -583,7 +583,7 @@ BUT_read - ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner10, Version=1.1.4611.35137, Culture=neutral, PublicKeyToken=null + ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner10, Version=1.1.4613.14163, Culture=neutral, PublicKeyToken=null panel5 @@ -1147,7 +1147,7 @@ BUT_Add - ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner10, Version=1.1.4611.35137, Culture=neutral, PublicKeyToken=null + ArdupilotMega.Controls.MyButton, ArdupilotMegaPlanner10, Version=1.1.4613.14163, Culture=neutral, PublicKeyToken=null panelWaypoints @@ -1742,7 +1742,7 @@ MainMap - ArdupilotMega.Controls.myGMAP, ArdupilotMegaPlanner10, Version=1.1.4611.35137, Culture=neutral, PublicKeyToken=null + ArdupilotMega.Controls.myGMAP, ArdupilotMegaPlanner10, Version=1.1.4613.14163, Culture=neutral, PublicKeyToken=null panelMap @@ -1772,7 +1772,7 @@ trackBar1 - ArdupilotMega.Controls.MyTrackBar, ArdupilotMegaPlanner10, Version=1.1.4611.35137, Culture=neutral, PublicKeyToken=null + ArdupilotMega.Controls.MyTrackBar, ArdupilotMegaPlanner10, Version=1.1.4613.14163, Culture=neutral, PublicKeyToken=null panelMap @@ -2219,6 +2219,6 @@ FlightPlanner - System.Windows.Forms.MyUserControl, ArdupilotMegaPlanner10, Version=1.1.4611.35137, Culture=neutral, PublicKeyToken=null + System.Windows.Forms.MyUserControl, ArdupilotMegaPlanner10, Version=1.1.4613.14163, Culture=neutral, PublicKeyToken=null \ No newline at end of file diff --git a/Tools/ArdupilotMegaPlanner/GCSViews/Simulation.cs b/Tools/ArdupilotMegaPlanner/GCSViews/Simulation.cs index 1db74ef493..2b945ef5ea 100644 --- a/Tools/ArdupilotMegaPlanner/GCSViews/Simulation.cs +++ b/Tools/ArdupilotMegaPlanner/GCSViews/Simulation.cs @@ -1022,7 +1022,7 @@ namespace ArdupilotMega.GCSViews // Console.WriteLine(hilstate.alt); hilstate.pitch = (float)sitldata.pitchDeg * deg2rad; // (rad) - hilstate.pitchspeed = (float)sitldata.pitchRate * rad2deg; // (rad/s) + hilstate.pitchspeed = (float)sitldata.pitchRate * deg2rad; // (rad/s) hilstate.roll = (float)sitldata.rollDeg * deg2rad; // (rad) hilstate.rollspeed = (float)sitldata.rollRate * deg2rad; // (rad/s) hilstate.yaw = (float)sitldata.yawDeg * deg2rad; // (rad) @@ -1266,7 +1266,10 @@ namespace ArdupilotMega.GCSViews if (RAD_aerosimrc.Checked) { - updateScreenDisplay(aeroin.Model_fLatitude * deg2rad, aeroin.Model_fLongitude * deg2rad, aeroin.Model_fPosZ, aeroin.Model_fRoll, aeroin.Model_fPitch, aeroin.Model_fHeading, aeroin.Model_fHeading, roll_out, pitch_out, rudder_out, throttle_out); + if (heli) + updateScreenDisplay(aeroin.Model_fLatitude * deg2rad, aeroin.Model_fLongitude * deg2rad, aeroin.Model_fPosZ, aeroin.Model_fRoll, aeroin.Model_fPitch, aeroin.Model_fHeading, aeroin.Model_fHeading, roll_out, pitch_out, rudder_out, collective_out); + else + updateScreenDisplay(aeroin.Model_fLatitude * deg2rad, aeroin.Model_fLongitude * deg2rad, aeroin.Model_fPosZ, aeroin.Model_fRoll, aeroin.Model_fPitch, aeroin.Model_fHeading, aeroin.Model_fHeading, roll_out, pitch_out, rudder_out, throttle_out); } } } diff --git a/Tools/ArdupilotMegaPlanner/MainV2.cs b/Tools/ArdupilotMegaPlanner/MainV2.cs index f1338cabf5..5353948cf4 100644 --- a/Tools/ArdupilotMegaPlanner/MainV2.cs +++ b/Tools/ArdupilotMegaPlanner/MainV2.cs @@ -2071,11 +2071,11 @@ namespace ArdupilotMega frm.Show(); return true; } - if (keyData == (Keys.Control | Keys.S)) // screenshot + /*if (keyData == (Keys.Control | Keys.S)) // screenshot { ScreenShot(); return true; - } + }*/ if (keyData == (Keys.Control | Keys.G)) // nmea out { Form frm = new SerialOutput(); diff --git a/Tools/ArdupilotMegaPlanner/Mavlink/MAVLinkTypes.cs b/Tools/ArdupilotMegaPlanner/Mavlink/MAVLinkTypes.cs index 762d2b4835..c535ea00ce 100644 --- a/Tools/ArdupilotMegaPlanner/Mavlink/MAVLinkTypes.cs +++ b/Tools/ArdupilotMegaPlanner/Mavlink/MAVLinkTypes.cs @@ -8,9 +8,9 @@ namespace ArdupilotMega #if MAVLINK10 partial class MAVLink { - public const string MAVLINK_BUILD_DATE = "Thu Jul 26 18:28:25 2012"; + public const string MAVLINK_BUILD_DATE = "Sat Aug 18 07:50:27 2012"; public const string MAVLINK_WIRE_PROTOCOL_VERSION = "1.0"; - public const int MAVLINK_MAX_DIALECT_PAYLOAD_SIZE = 42; + public const int MAVLINK_MAX_DIALECT_PAYLOAD_SIZE = 101; public const int MAVLINK_LITTLE_ENDIAN = 1; public const int MAVLINK_BIG_ENDIAN = 0; @@ -25,11 +25,11 @@ namespace ArdupilotMega public const bool MAVLINK_NEED_BYTE_SWAP = (MAVLINK_ENDIAN == MAVLINK_LITTLE_ENDIAN); - public byte[] MAVLINK_MESSAGE_LENGTHS = new byte[] {9, 31, 12, 0, 14, 28, 3, 32, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 20, 2, 25, 23, 30, 101, 22, 26, 16, 14, 28, 32, 28, 28, 22, 22, 21, 6, 6, 37, 4, 4, 2, 2, 4, 2, 2, 3, 13, 12, 19, 17, 15, 15, 27, 25, 18, 18, 20, 20, 9, 34, 26, 46, 36, 0, 6, 4, 0, 21, 18, 0, 0, 0, 20, 0, 33, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 56, 42, 33, 0, 0, 0, 0, 0, 0, 0, 26, 32, 32, 20, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 8, 4, 12, 15, 13, 6, 15, 14, 0, 12, 3, 8, 28, 44, 3, 9, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 30, 18, 18, 51, 9, 0}; + public byte[] MAVLINK_MESSAGE_LENGTHS = new byte[] {9, 31, 12, 0, 14, 28, 3, 32, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 20, 2, 25, 23, 30, 101, 22, 26, 16, 14, 28, 32, 28, 28, 22, 22, 21, 6, 6, 37, 4, 4, 2, 2, 4, 2, 2, 3, 13, 12, 19, 17, 15, 15, 27, 25, 18, 18, 20, 20, 9, 34, 26, 46, 36, 0, 6, 4, 0, 21, 18, 0, 0, 0, 20, 0, 33, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 56, 42, 33, 0, 0, 0, 0, 0, 0, 0, 26, 32, 32, 20, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 8, 4, 12, 15, 13, 6, 15, 14, 0, 12, 3, 8, 28, 44, 3, 9, 22, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 30, 18, 18, 51, 9, 0}; - public byte[] MAVLINK_MESSAGE_CRCS = new byte[] {50, 124, 137, 0, 237, 217, 104, 119, 0, 0, 0, 89, 0, 0, 0, 0, 0, 0, 0, 0, 214, 159, 220, 168, 24, 23, 170, 144, 67, 115, 39, 246, 185, 104, 237, 244, 222, 212, 9, 254, 230, 28, 28, 132, 221, 232, 11, 153, 41, 39, 214, 223, 141, 33, 15, 3, 100, 24, 239, 238, 30, 240, 183, 130, 130, 0, 148, 21, 0, 52, 124, 0, 0, 0, 20, 0, 152, 143, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 231, 183, 63, 54, 0, 0, 0, 0, 0, 0, 0, 175, 102, 158, 208, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 134, 219, 208, 188, 84, 22, 19, 21, 134, 0, 78, 68, 189, 127, 111, 21, 21, 144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 204, 49, 170, 44, 83, 46, 0}; + public byte[] MAVLINK_MESSAGE_CRCS = new byte[] {50, 124, 137, 0, 237, 217, 104, 119, 0, 0, 0, 89, 0, 0, 0, 0, 0, 0, 0, 0, 214, 159, 220, 168, 24, 23, 170, 144, 67, 115, 39, 246, 185, 104, 237, 244, 222, 212, 9, 254, 230, 28, 28, 132, 221, 232, 11, 153, 41, 39, 214, 223, 141, 33, 15, 3, 100, 24, 239, 238, 30, 240, 183, 130, 130, 0, 148, 21, 0, 52, 124, 0, 0, 0, 20, 0, 152, 143, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 231, 183, 63, 54, 0, 0, 0, 0, 0, 0, 0, 175, 102, 158, 208, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 134, 219, 208, 188, 84, 22, 19, 21, 134, 0, 78, 68, 189, 127, 111, 21, 21, 144, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 204, 49, 170, 44, 83, 46, 0}; - public Type[] MAVLINK_MESSAGE_INFO = new Type[] {typeof( mavlink_heartbeat_t ), typeof( mavlink_sys_status_t ), typeof( mavlink_system_time_t ), null, typeof( mavlink_ping_t ), typeof( mavlink_change_operator_control_t ), typeof( mavlink_change_operator_control_ack_t ), typeof( mavlink_auth_key_t ), null, null, null, typeof( mavlink_set_mode_t ), null, null, null, null, null, null, null, null, typeof( mavlink_param_request_read_t ), typeof( mavlink_param_request_list_t ), typeof( mavlink_param_value_t ), typeof( mavlink_param_set_t ), typeof( mavlink_gps_raw_int_t ), typeof( mavlink_gps_status_t ), typeof( mavlink_scaled_imu_t ), typeof( mavlink_raw_imu_t ), typeof( mavlink_raw_pressure_t ), typeof( mavlink_scaled_pressure_t ), typeof( mavlink_attitude_t ), typeof( mavlink_attitude_quaternion_t ), typeof( mavlink_local_position_ned_t ), typeof( mavlink_global_position_int_t ), typeof( mavlink_rc_channels_scaled_t ), typeof( mavlink_rc_channels_raw_t ), typeof( mavlink_servo_output_raw_t ), typeof( mavlink_mission_request_partial_list_t ), typeof( mavlink_mission_write_partial_list_t ), typeof( mavlink_mission_item_t ), typeof( mavlink_mission_request_t ), typeof( mavlink_mission_set_current_t ), typeof( mavlink_mission_current_t ), typeof( mavlink_mission_request_list_t ), typeof( mavlink_mission_count_t ), typeof( mavlink_mission_clear_all_t ), typeof( mavlink_mission_item_reached_t ), typeof( mavlink_mission_ack_t ), typeof( mavlink_set_gps_global_origin_t ), typeof( mavlink_gps_global_origin_t ), typeof( mavlink_set_local_position_setpoint_t ), typeof( mavlink_local_position_setpoint_t ), typeof( mavlink_global_position_setpoint_int_t ), typeof( mavlink_set_global_position_setpoint_int_t ), typeof( mavlink_safety_set_allowed_area_t ), typeof( mavlink_safety_allowed_area_t ), typeof( mavlink_set_roll_pitch_yaw_thrust_t ), typeof( mavlink_set_roll_pitch_yaw_speed_thrust_t ), typeof( mavlink_roll_pitch_yaw_thrust_setpoint_t ), typeof( mavlink_roll_pitch_yaw_speed_thrust_setpoint_t ), typeof( mavlink_set_quad_motors_setpoint_t ), typeof( mavlink_set_quad_swarm_roll_pitch_yaw_thrust_t ), typeof( mavlink_nav_controller_output_t ), typeof( mavlink_set_quad_swarm_led_roll_pitch_yaw_thrust_t ), typeof( mavlink_state_correction_t ), null, typeof( mavlink_request_data_stream_t ), typeof( mavlink_data_stream_t ), null, typeof( mavlink_manual_control_t ), typeof( mavlink_rc_channels_override_t ), null, null, null, typeof( mavlink_vfr_hud_t ), null, typeof( mavlink_command_long_t ), typeof( mavlink_command_ack_t ), null, null, null, null, null, null, null, null, null, null, null, typeof( mavlink_local_position_ned_system_global_offset_t ), typeof( mavlink_hil_state_t ), typeof( mavlink_hil_controls_t ), typeof( mavlink_hil_rc_inputs_raw_t ), null, null, null, null, null, null, null, typeof( mavlink_optical_flow_t ), typeof( mavlink_global_vision_position_estimate_t ), typeof( mavlink_vision_position_estimate_t ), typeof( mavlink_vision_speed_estimate_t ), typeof( mavlink_vicon_position_estimate_t ), null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, typeof( mavlink_sensor_offsets_t ), typeof( mavlink_set_mag_offsets_t ), typeof( mavlink_meminfo_t ), typeof( mavlink_ap_adc_t ), typeof( mavlink_digicam_configure_t ), typeof( mavlink_digicam_control_t ), typeof( mavlink_mount_configure_t ), typeof( mavlink_mount_control_t ), typeof( mavlink_mount_status_t ), null, typeof( mavlink_fence_point_t ), typeof( mavlink_fence_fetch_point_t ), typeof( mavlink_fence_status_t ), typeof( mavlink_ahrs_t ), typeof( mavlink_simstate_t ), typeof( mavlink_hwstatus_t ), typeof( mavlink_radio_t ), typeof( mavlink_limits_status_t ), null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, typeof( mavlink_memory_vect_t ), typeof( mavlink_debug_vect_t ), typeof( mavlink_named_value_float_t ), typeof( mavlink_named_value_int_t ), typeof( mavlink_statustext_t ), typeof( mavlink_debug_t ), null}; + public Type[] MAVLINK_MESSAGE_INFO = new Type[] {typeof( mavlink_heartbeat_t ), typeof( mavlink_sys_status_t ), typeof( mavlink_system_time_t ), null, typeof( mavlink_ping_t ), typeof( mavlink_change_operator_control_t ), typeof( mavlink_change_operator_control_ack_t ), typeof( mavlink_auth_key_t ), null, null, null, typeof( mavlink_set_mode_t ), null, null, null, null, null, null, null, null, typeof( mavlink_param_request_read_t ), typeof( mavlink_param_request_list_t ), typeof( mavlink_param_value_t ), typeof( mavlink_param_set_t ), typeof( mavlink_gps_raw_int_t ), typeof( mavlink_gps_status_t ), typeof( mavlink_scaled_imu_t ), typeof( mavlink_raw_imu_t ), typeof( mavlink_raw_pressure_t ), typeof( mavlink_scaled_pressure_t ), typeof( mavlink_attitude_t ), typeof( mavlink_attitude_quaternion_t ), typeof( mavlink_local_position_ned_t ), typeof( mavlink_global_position_int_t ), typeof( mavlink_rc_channels_scaled_t ), typeof( mavlink_rc_channels_raw_t ), typeof( mavlink_servo_output_raw_t ), typeof( mavlink_mission_request_partial_list_t ), typeof( mavlink_mission_write_partial_list_t ), typeof( mavlink_mission_item_t ), typeof( mavlink_mission_request_t ), typeof( mavlink_mission_set_current_t ), typeof( mavlink_mission_current_t ), typeof( mavlink_mission_request_list_t ), typeof( mavlink_mission_count_t ), typeof( mavlink_mission_clear_all_t ), typeof( mavlink_mission_item_reached_t ), typeof( mavlink_mission_ack_t ), typeof( mavlink_set_gps_global_origin_t ), typeof( mavlink_gps_global_origin_t ), typeof( mavlink_set_local_position_setpoint_t ), typeof( mavlink_local_position_setpoint_t ), typeof( mavlink_global_position_setpoint_int_t ), typeof( mavlink_set_global_position_setpoint_int_t ), typeof( mavlink_safety_set_allowed_area_t ), typeof( mavlink_safety_allowed_area_t ), typeof( mavlink_set_roll_pitch_yaw_thrust_t ), typeof( mavlink_set_roll_pitch_yaw_speed_thrust_t ), typeof( mavlink_roll_pitch_yaw_thrust_setpoint_t ), typeof( mavlink_roll_pitch_yaw_speed_thrust_setpoint_t ), typeof( mavlink_set_quad_motors_setpoint_t ), typeof( mavlink_set_quad_swarm_roll_pitch_yaw_thrust_t ), typeof( mavlink_nav_controller_output_t ), typeof( mavlink_set_quad_swarm_led_roll_pitch_yaw_thrust_t ), typeof( mavlink_state_correction_t ), null, typeof( mavlink_request_data_stream_t ), typeof( mavlink_data_stream_t ), null, typeof( mavlink_manual_control_t ), typeof( mavlink_rc_channels_override_t ), null, null, null, typeof( mavlink_vfr_hud_t ), null, typeof( mavlink_command_long_t ), typeof( mavlink_command_ack_t ), null, null, null, null, null, null, null, null, null, null, null, typeof( mavlink_local_position_ned_system_global_offset_t ), typeof( mavlink_hil_state_t ), typeof( mavlink_hil_controls_t ), typeof( mavlink_hil_rc_inputs_raw_t ), null, null, null, null, null, null, null, typeof( mavlink_optical_flow_t ), typeof( mavlink_global_vision_position_estimate_t ), typeof( mavlink_vision_position_estimate_t ), typeof( mavlink_vision_speed_estimate_t ), typeof( mavlink_vicon_position_estimate_t ), null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, typeof( mavlink_sensor_offsets_t ), typeof( mavlink_set_mag_offsets_t ), typeof( mavlink_meminfo_t ), typeof( mavlink_ap_adc_t ), typeof( mavlink_digicam_configure_t ), typeof( mavlink_digicam_control_t ), typeof( mavlink_mount_configure_t ), typeof( mavlink_mount_control_t ), typeof( mavlink_mount_status_t ), null, typeof( mavlink_fence_point_t ), typeof( mavlink_fence_fetch_point_t ), typeof( mavlink_fence_status_t ), typeof( mavlink_ahrs_t ), typeof( mavlink_simstate_t ), typeof( mavlink_hwstatus_t ), typeof( mavlink_radio_t ), typeof( mavlink_limits_status_t ), typeof( mavlink_wind_t ), null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, typeof( mavlink_memory_vect_t ), typeof( mavlink_debug_vect_t ), typeof( mavlink_named_value_float_t ), typeof( mavlink_named_value_int_t ), typeof( mavlink_statustext_t ), typeof( mavlink_debug_t ), null}; public const byte MAVLINK_VERSION = 2; @@ -141,8 +141,10 @@ namespace ArdupilotMega NONE=0, /// Switched to guided mode to return point (fence point 0) | GUIDED=1, + /// Report fence breach, but don't take action | + REPORT=2, /// | - ENUM_END=2, + ENUM_END=3, }; @@ -490,7 +492,7 @@ namespace ArdupilotMega }; - /** @brief Data stream IDs. A data stream is not a fixed set of messages, but rather a recommendation to the autopilot software. Individual autopilots may or may not obey the recommended messages. */ + /** @brief Data stream IDs. A data stream is not a fixed set of messages, but rather a recommendation to the autopilot software. Individual autopilots may or may not obey the recommended messages. */ public enum MAV_DATA_STREAM { /// Enable all data streams | @@ -516,7 +518,7 @@ namespace ArdupilotMega }; - /** @brief The ROI (region of interest) for the vehicle. This can be be used by the vehicle for camera/vehicle attitude alignment (see MAV_CMD_NAV_ROI). */ + /** @brief The ROI (region of interest) for the vehicle. This can be be used by the vehicle for camera/vehicle attitude alignment (see MAV_CMD_NAV_ROI). */ public enum MAV_ROI { /// No region of interest. | @@ -912,7 +914,7 @@ namespace ArdupilotMega public const byte MAVLINK_MSG_ID_SIMSTATE = 164; - [StructLayout(LayoutKind.Sequential,Pack=1,Size=36)] + [StructLayout(LayoutKind.Sequential,Pack=1,Size=44)] public struct mavlink_simstate_t { /// Roll angle (rad) @@ -933,8 +935,11 @@ namespace ArdupilotMega public Single ygyro; /// Angular speed around Z axis rad/s public Single zgyro; - public Single lat; - public Single lng; + /// Latitude in degrees + public Single lat; + /// Longitude in degrees + public Single lng; + }; @@ -998,21 +1003,35 @@ namespace ArdupilotMega }; + public const byte MAVLINK_MSG_ID_WIND = 168; + [StructLayout(LayoutKind.Sequential,Pack=1,Size=12)] + public struct mavlink_wind_t + { + /// wind direction (degrees) + public Single direction; + /// wind speed in ground plane (m/s) + public Single speed; + /// vertical wind speed (m/s) + public Single speed_z; + + }; + + public const byte MAVLINK_MSG_ID_HEARTBEAT = 0; [StructLayout(LayoutKind.Sequential,Pack=1,Size=9)] public struct mavlink_heartbeat_t { - /// Navigation mode bitfield, see MAV_AUTOPILOT_CUSTOM_MODE ENUM for some examples. This field is autopilot-specific. + /// A bitfield for use for autopilot-specific flags. public UInt32 custom_mode; /// Type of the MAV (quadrotor, helicopter, etc., up to 15 types, defined in MAV_TYPE ENUM) public byte type; - /// Autopilot type / class. defined in MAV_CLASS ENUM + /// Autopilot type / class. defined in MAV_AUTOPILOT ENUM public byte autopilot; /// System mode bitfield, see MAV_MODE_FLAGS ENUM in mavlink/include/mavlink_types.h public byte base_mode; - /// System status flag, see MAV_STATUS ENUM + /// System status flag, see MAV_STATE ENUM public byte system_status; - /// MAVLink version + /// MAVLink version, not writable by user, gets added by protocol because of magic data type: uint8_t_mavlink_version public byte mavlink_version; }; @@ -1092,7 +1111,7 @@ namespace ArdupilotMega public byte version; /// Password / Key, depending on version plaintext or encrypted. 25 or less characters, NULL terminated. The characters may involve A-Z, a-z, 0-9, and "!?,.-" [MarshalAs(UnmanagedType.ByValArray,SizeConst=25)] - public string passkey; + public byte[] passkey; }; @@ -1117,7 +1136,7 @@ namespace ArdupilotMega { /// key [MarshalAs(UnmanagedType.ByValArray,SizeConst=32)] - public string key; + public byte[] key; }; @@ -1140,15 +1159,15 @@ namespace ArdupilotMega [StructLayout(LayoutKind.Sequential,Pack=1,Size=20)] public struct mavlink_param_request_read_t { - /// Parameter index. Send -1 to use the param ID field as identifier + /// Parameter index. Send -1 to use the param ID field as identifier (else the param id will be ignored) public Int16 param_index; /// System ID public byte target_system; /// Component ID public byte target_component; - /// Onboard parameter id + /// Onboard parameter id, terminated by NUL if the length is less than 16 human-readable chars and WITHOUT null termination (NUL) byte if the length is exactly 16 chars - applications have to provide 16+1 bytes storage if the ID is stored as string [MarshalAs(UnmanagedType.ByValArray,SizeConst=16)] - public string param_id; + public byte[] param_id; }; @@ -1175,10 +1194,10 @@ namespace ArdupilotMega public UInt16 param_count; /// Index of this onboard parameter public UInt16 param_index; - /// Onboard parameter id + /// Onboard parameter id, terminated by NUL if the length is less than 16 human-readable chars and WITHOUT null termination (NUL) byte if the length is exactly 16 chars - applications have to provide 16+1 bytes storage if the ID is stored as string [MarshalAs(UnmanagedType.ByValArray,SizeConst=16)] public byte[] param_id; - /// Onboard parameter type: see MAV_VAR enum + /// Onboard parameter type: see MAVLINK_TYPE enum in mavlink/mavlink_types.h public byte param_type; }; @@ -1194,10 +1213,10 @@ namespace ArdupilotMega public byte target_system; /// Component ID public byte target_component; - /// Onboard parameter id + /// Onboard parameter id, terminated by NUL if the length is less than 16 human-readable chars and WITHOUT null termination (NUL) byte if the length is exactly 16 chars - applications have to provide 16+1 bytes storage if the ID is stored as string [MarshalAs(UnmanagedType.ByValArray,SizeConst=16)] - public byte[] param_id; - /// Onboard parameter type: see MAV_VAR enum + public byte[] param_id; + /// Onboard parameter type: see MAVLINK_TYPE enum in mavlink/mavlink_types.h public byte param_type; }; @@ -1334,7 +1353,7 @@ namespace ArdupilotMega [StructLayout(LayoutKind.Sequential,Pack=1,Size=14)] public struct mavlink_scaled_pressure_t { - /// Timestamp (microseconds since UNIX epoch or microseconds since system boot) + /// Timestamp (milliseconds since system boot) public UInt32 time_boot_ms; /// Absolute pressure (hectopascal) public Single press_abs; @@ -1504,7 +1523,7 @@ namespace ArdupilotMega [StructLayout(LayoutKind.Sequential,Pack=1,Size=21)] public struct mavlink_servo_output_raw_t { - /// Timestamp (since UNIX epoch or microseconds since system boot) + /// Timestamp (microseconds since system boot) public UInt32 time_usec; /// Servo output 1 value, in microseconds public UInt16 servo1_raw; @@ -1950,16 +1969,16 @@ namespace ArdupilotMega { /// Desired roll angle in radians +-PI (+-32767) [MarshalAs(UnmanagedType.ByValArray,SizeConst=4)] - public Int16[] roll; + public Int16[] roll; /// Desired pitch angle in radians +-PI (+-32767) [MarshalAs(UnmanagedType.ByValArray,SizeConst=4)] - public Int16[] pitch; + public Int16[] pitch; /// Desired yaw angle in radians, scaled to int16 +-PI (+-32767) [MarshalAs(UnmanagedType.ByValArray,SizeConst=4)] - public Int16[] yaw; + public Int16[] yaw; /// Collective thrust, scaled to uint16 (0..65535) [MarshalAs(UnmanagedType.ByValArray,SizeConst=4)] - public UInt16[] thrust; + public UInt16[] thrust; /// ID of the quadrotor group (0 - 255, up to 256 groups supported) public byte group; /// ID of the flight mode (0 - 255, up to 256 modes supported) @@ -1998,16 +2017,16 @@ namespace ArdupilotMega { /// Desired roll angle in radians +-PI (+-32767) [MarshalAs(UnmanagedType.ByValArray,SizeConst=4)] - public Int16[] roll; + public Int16[] roll; /// Desired pitch angle in radians +-PI (+-32767) [MarshalAs(UnmanagedType.ByValArray,SizeConst=4)] - public Int16[] pitch; + public Int16[] pitch; /// Desired yaw angle in radians, scaled to int16 +-PI (+-32767) [MarshalAs(UnmanagedType.ByValArray,SizeConst=4)] - public Int16[] yaw; + public Int16[] yaw; /// Collective thrust, scaled to uint16 (0..65535) [MarshalAs(UnmanagedType.ByValArray,SizeConst=4)] - public UInt16[] thrust; + public UInt16[] thrust; /// ID of the quadrotor group (0 - 255, up to 256 groups supported) public byte group; /// ID of the flight mode (0 - 255, up to 256 modes supported) @@ -2464,7 +2483,7 @@ namespace ArdupilotMega public Single z; /// Name [MarshalAs(UnmanagedType.ByValArray,SizeConst=10)] - public string name; + public byte[] name; }; @@ -2479,7 +2498,7 @@ namespace ArdupilotMega public Single value; /// Name of the debug variable [MarshalAs(UnmanagedType.ByValArray,SizeConst=10)] - public string name; + public byte[] name; }; @@ -2494,7 +2513,7 @@ namespace ArdupilotMega public Int32 value; /// Name of the debug variable [MarshalAs(UnmanagedType.ByValArray,SizeConst=10)] - public string name; + public byte[] name; }; @@ -2503,11 +2522,11 @@ namespace ArdupilotMega [StructLayout(LayoutKind.Sequential,Pack=1,Size=51)] public struct mavlink_statustext_t { - /// Severity of status, 0 = info message, 255 = critical fault + /// Severity of status. Relies on the definitions within RFC-5424. See enum MAV_SEVERITY. public byte severity; /// Status text message, without null termination character [MarshalAs(UnmanagedType.ByValArray,SizeConst=50)] - public string text; + public byte[] text; }; diff --git a/Tools/ArdupilotMegaPlanner/Msi/installer.wxs b/Tools/ArdupilotMegaPlanner/Msi/installer.wxs index 89aaeaaa0e..f64c1d6291 100644 --- a/Tools/ArdupilotMegaPlanner/Msi/installer.wxs +++ b/Tools/ArdupilotMegaPlanner/Msi/installer.wxs @@ -2,14 +2,14 @@ - + - - + + @@ -31,7 +31,7 @@ - + @@ -113,11 +113,11 @@ - + - + @@ -128,20 +128,20 @@ - + - + - + @@ -155,7 +155,7 @@ - + @@ -167,13 +167,13 @@ - + - + @@ -184,7 +184,7 @@ - + @@ -195,33 +195,33 @@ - + - + - + - + - + - + @@ -230,28 +230,28 @@ - + - + - + - + - + diff --git a/Tools/ArdupilotMegaPlanner/Program.cs b/Tools/ArdupilotMegaPlanner/Program.cs index b47e55dc90..0a255a9d08 100644 --- a/Tools/ArdupilotMegaPlanner/Program.cs +++ b/Tools/ArdupilotMegaPlanner/Program.cs @@ -67,11 +67,11 @@ namespace ArdupilotMega { Thread.CurrentThread.Name = "Base Thread"; - Application.Run(new MainV2()); + Application.Run(new MainV2()); } catch (Exception ex) { - log.Fatal("Fatal app exception",ex); + log.Fatal("Fatal app exception", ex); Console.WriteLine(ex.ToString()); Console.ReadLine(); @@ -99,10 +99,12 @@ namespace ArdupilotMega log.Debug(ex.ToString()); - if (ex.Message == "Requested registry access is not allowed.") { + if (ex.Message == "Requested registry access is not allowed.") + { return; } - if (ex.Message == "The port is closed.") { + if (ex.Message == "The port is closed.") + { CustomMessageBox.Show("Serial connection has been lost"); return; } @@ -122,10 +124,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. { - CustomMessageBox.Show("You are missing some DLL's. Please extract the zip file somewhere. OR Use the update feature from the menu " + e.Exception.ToString() ); - // return; + CustomMessageBox.Show("You are missing some DLL's. Please extract the zip file somewhere. OR Use the update feature from the menu " + e.Exception.ToString()); + // return; } - DialogResult dr = CustomMessageBox.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 @@ -172,4 +174,4 @@ namespace ArdupilotMega } } } -} +} \ No newline at end of file diff --git a/Tools/ArdupilotMegaPlanner/Properties/AssemblyInfo.cs b/Tools/ArdupilotMegaPlanner/Properties/AssemblyInfo.cs index 9207ab89ed..71af2c4a50 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.1.*")] -[assembly: AssemblyFileVersion("1.2.6")] +[assembly: AssemblyFileVersion("1.2.7")] [assembly: NeutralResourcesLanguageAttribute("")]