private void BUT_compare_Click(object sender, EventArgs e) { var param2 = new Hashtable(); using (var ofd = new OpenFileDialog { AddExtension = true, DefaultExt = ".param", RestoreDirectory = true, Filter = "Param List|*.param;*.parm" }) { var dr = ofd.ShowDialog(); if (dr == DialogResult.OK) { param2 = ParamFile.loadParamFile(ofd.FileName); var paramCompareForm = new ParamCompare(null, MainV2.comPort.MAV.param, param2); paramCompareForm.dtlvcallback += paramCompareForm_dtlvcallback; ThemeManager.ApplyThemeTo(paramCompareForm); paramCompareForm.ShowDialog(); } } }
private void BUT_paramfileload_Click(object sender, EventArgs e) { var filepath = Settings.GetUserDataDirectory() + CMB_paramfiles.Text; try { var data = GitHubContent.GetFileContent("ardupilot", "ardupilot", ((GitHubContent.FileInfo)CMB_paramfiles.SelectedValue).path); File.WriteAllBytes(filepath, data); var param2 = ParamFile.loadParamFile(filepath); var paramCompareForm = new ParamCompare(null, MainV2.comPort.MAV.param, param2); paramCompareForm.dtlvcallback += paramCompareForm_dtlvcallback; ThemeManager.ApplyThemeTo(paramCompareForm); if (paramCompareForm.ShowDialog() == DialogResult.OK) { CustomMessageBox.Show("Loaded parameters, please make sure you write them!", "Loaded"); } // no activate the user needs to click write. //this.Activate(); } catch (Exception ex) { CustomMessageBox.Show("Failed to load file.\n" + ex); } }
private void BUT_paramfileload_Click(object sender, EventArgs e) { string filepath = Application.StartupPath + Path.DirectorySeparatorChar + CMB_paramfiles.Text; if (CMB_paramfiles.SelectedValue == null) { CustomMessageBox.Show("Please select an option first"); return; } byte[] data = GitHubContent.GetFileContent("diydrones", "ardupilot", ((GitHubContent.FileInfo)CMB_paramfiles.SelectedValue).path); File.WriteAllBytes(filepath, data); Hashtable param2 = Utilities.ParamFile.loadParamFile(filepath); Form paramCompareForm = new ParamCompare(null, MainV2.comPort.MAV.param, param2); ThemeManager.ApplyThemeTo(paramCompareForm); if (paramCompareForm.ShowDialog() == DialogResult.OK) { CustomMessageBox.Show("Loaded parameters!", "Loaded"); } if (OnChange != null) { OnChange(null, null); return; } this.Activate(); }
private void BUT_compare_Click(object sender, EventArgs e) { Hashtable param2 = new Hashtable(); OpenFileDialog ofd = new OpenFileDialog(); ofd.AddExtension = true; ofd.DefaultExt = ".param"; ofd.RestoreDirectory = true; ofd.Filter = "Param List|*.param;*.parm"; DialogResult dr = ofd.ShowDialog(); if (dr == DialogResult.OK) { StreamReader sr = new StreamReader(ofd.OpenFile()); while (!sr.EndOfStream) { string line = sr.ReadLine(); if (line.Contains("NOTE:")) { MessageBox.Show(line, "Saved Note"); } int index = line.IndexOf(','); if (index == -1) { continue; } string name = line.Substring(0, index); float value = float.Parse(line.Substring(index + 1), new System.Globalization.CultureInfo("en-US")); MAVLink.modifyParamForDisplay(true, name, ref value); if (name == "SYSID_SW_MREV") { continue; } if (name == "WP_TOTAL") { continue; } if (name == "CMD_TOTAL") { continue; } param2[name] = value; } sr.Close(); ParamCompare temp = new ParamCompare(this, param, param2); MainV2.fixtheme(temp); temp.ShowDialog(); } }
private void BUT_paramfileload_Click(object sender, EventArgs e) { string filepath = Application.StartupPath + Path.DirectorySeparatorChar + CMB_paramfiles.Text; byte[] data = GitHubContent.GetFileContent("diydrones", "ardupilot", ((GitHubContent.FileInfo)CMB_paramfiles.SelectedValue).path); File.WriteAllBytes(filepath, data); Hashtable param2 = Utilities.ParamFile.loadParamFile(filepath); Form paramCompareForm = new ParamCompare(Params, MainV2.comPort.MAV.param, param2); ThemeManager.ApplyThemeTo(paramCompareForm); paramCompareForm.ShowDialog(); CustomMessageBox.Show("Loaded parameters, please make sure you write them!", "Loaded"); this.Activate(); }
public bool UpdateParamsOnVehicle() { // Get the values in _diff and write paremeters back to vehicle _params_to_update.Clear(); foreach (KeyValuePair <string, ParamPair> entry in _diff) { _params_to_update.Add(entry.Key, entry.Value.inVault); Form paramCompareForm = new ParamCompare(null, MainV2.comPort.MAV.param, _params_to_update); paramCompareForm.Text = "Update parameters from VAULT"; ThemeManager.ApplyThemeTo(paramCompareForm); var button = paramCompareForm.Controls.Find("BUT_save", true).FirstOrDefault() as MissionPlanner.Controls.MyButton; button.Text = "Write to FC"; var dgv = paramCompareForm.Controls.Find("Params", true).FirstOrDefault() as System.Windows.Forms.DataGridView; dgv.Columns[1].HeaderText = "On Vehicle"; dgv.Columns[2].HeaderText = "From Vault"; paramCompareForm.ShowDialog(); } return(true); }
private void BUT_compare_Click(object sender, EventArgs e) { Hashtable param2 = new Hashtable(); OpenFileDialog ofd = new OpenFileDialog(); ofd.AddExtension = true; ofd.DefaultExt = ".param"; ofd.RestoreDirectory = true; ofd.Filter = "Param List|*.param;*.parm"; DialogResult dr = ofd.ShowDialog(); if (dr == DialogResult.OK) { param2 = loadParamFile(ofd.FileName); ParamCompare temp = new ParamCompare(Params, param, param2); ThemeManager.ApplyThemeTo(temp); temp.ShowDialog(); } }
private void but_iris_Click(object sender, EventArgs e) { try { string filepath = Application.StartupPath + Path.DirectorySeparatorChar + "Iris.param"; if (Common.getFilefromNet("https://github.com/diydrones/ardupilot/raw/master/Tools/Frame_params/Iris.param", filepath)) { Hashtable param2 = Utilities.ParamFile.loadParamFile(filepath); Form paramCompareForm = new ParamCompare(Params, MainV2.comPort.MAV.param, param2); ThemeManager.ApplyThemeTo(paramCompareForm); paramCompareForm.ShowDialog(); CustomMessageBox.Show("Loaded parameters, please make sure you write them!", "Loaded"); } else { CustomMessageBox.Show("Error getting Iris param file"); } } catch (Exception ex) { CustomMessageBox.Show("Error getting Iris param file" + ex.ToString()); } }
private void BUT_compare_Click(object sender, EventArgs e) { var param2 = new Dictionary <string, double>(); using (var ofd = new OpenFileDialog { AddExtension = true, DefaultExt = ".param", RestoreDirectory = true, Filter = ParamFile.FileMask }) { var dr = ofd.ShowDialog(); if (dr == DialogResult.OK) { param2 = ParamFile.loadParamFile(ofd.FileName); Form paramCompareForm = new ParamCompare(Params, MainV2.comPort.MAV.param, param2); ThemeManager.ApplyThemeTo(paramCompareForm); paramCompareForm.ShowDialog(); } } }
private void BUT_compare_Click(object sender, EventArgs e) { Hashtable param2 = new Hashtable(); var ofd = new OpenFileDialog { AddExtension = true, DefaultExt = ".param", RestoreDirectory = true, Filter = "Param List|*.param;*.parm" }; var dr = ofd.ShowDialog(); if (dr == DialogResult.OK) { param2 = loadParamFile(ofd.FileName); Form paramCompareForm = new ParamCompare(Params, MainV2.comPort.param, param2); ThemeManager.ApplyThemeTo(paramCompareForm); paramCompareForm.ShowDialog(); } }
private void BUT_compare_Click(object sender, EventArgs e) { Hashtable param2 = new Hashtable(); OpenFileDialog ofd = new OpenFileDialog(); ofd.AddExtension = true; ofd.DefaultExt = ".param"; ofd.RestoreDirectory = true; ofd.Filter = "Param List|*.param;*.parm"; DialogResult dr = ofd.ShowDialog(); if (dr == DialogResult.OK) { StreamReader sr = new StreamReader(ofd.OpenFile()); while (!sr.EndOfStream) { string line = sr.ReadLine(); if (line.Contains("NOTE:")) MessageBox.Show(line, "Saved Note"); int index = line.IndexOf(','); if (index == -1) continue; string name = line.Substring(0, index); float value = float.Parse(line.Substring(index + 1), new System.Globalization.CultureInfo("en-US")); MAVLink.modifyParamForDisplay(true, name, ref value); if (name == "SYSID_SW_MREV") continue; if (name == "WP_TOTAL") continue; if (name == "CMD_TOTAL") continue; param2[name] = value; } sr.Close(); ParamCompare temp = new ParamCompare(this, param, param2); MainV2.fixtheme(temp); temp.ShowDialog(); } }
private void BUT_paramfileload_Click(object sender, EventArgs e) { string filepath = Application.StartupPath + Path.DirectorySeparatorChar + CMB_paramfiles.Text; try { byte[] data = GitHubContent.GetFileContent("diydrones", "ardupilot", ((GitHubContent.FileInfo)CMB_paramfiles.SelectedValue).path); File.WriteAllBytes(filepath, data); Hashtable param2 = Utilities.ParamFile.loadParamFile(filepath); ParamCompare paramCompareForm = new ParamCompare(null, MainV2.comPort.MAV.param, param2); paramCompareForm.dtlvcallback += paramCompareForm_dtlvcallback; ThemeManager.ApplyThemeTo(paramCompareForm); if (paramCompareForm.ShowDialog() == DialogResult.OK) { CustomMessageBox.Show("Loaded parameters, please make sure you write them!", "Loaded"); } // no activate the user needs to click write. //this.Activate(); } catch (Exception ex) { CustomMessageBox.Show("Failed to load file.\n" + ex); } }
private void BUT_compare_Click(object sender, EventArgs e) { Hashtable param2 = new Hashtable(); var ofd = new OpenFileDialog { AddExtension = true, DefaultExt = ".param", RestoreDirectory = true, Filter = "Param List|*.param;*.parm" }; var dr = ofd.ShowDialog(); if (dr == DialogResult.OK) { param2 = Utilities.ParamFile.loadParamFile(ofd.FileName); ParamCompare paramCompareForm = new ParamCompare(null, MainV2.comPort.MAV.param, param2); paramCompareForm.dtlvcallback += paramCompareForm_dtlvcallback; ThemeManager.ApplyThemeTo(paramCompareForm); paramCompareForm.ShowDialog(); } }
private void btn_docalc_Click(object sender, EventArgs e) { //Convert for sanity check prop_size = t_prop.Text.ConvertToDouble(); batt_cells = t_cellcount.Text.ConvertToDouble(); batt_cell_max_voltage = t_cellmax.Text.ConvertToDouble(); batt_cell_min_voltage = t_cellmin.Text.ConvertToDouble(); if (prop_size <= 0) { CustomMessageBox.Show("Prop size must be larger than zero.", "ERROR!"); return; } if (batt_cells < 1) { CustomMessageBox.Show("Battery cell count must be at least 1.", "ERROR!"); return; } calc_values(); if (cb_tmotor.Checked) { mot_thst_expo = 0.2; } var atc_prefix = "ATC"; var mot_prefix = "MOT"; if (MainV2.comPort.MAV.cs.firmware == Firmwares.ArduPlane) { atc_prefix = "Q_A"; mot_prefix = "Q_M"; } var new_params = new Dictionary <string, double>(); //Fill up the list of params to change new_params.Add("ACRO_YAW_P", acro_yaw_p); new_params.Add(atc_prefix + "_ACCEL_P_MAX", atc_accel_p_max); new_params.Add(atc_prefix + "_ACCEL_R_MAX", atc_accel_r_max); new_params.Add(atc_prefix + "_ACCEL_Y_MAX", atc_accel_y_max); //Filters has different name in 4.x and in 3.x if (MainV2.comPort.MAV.cs.version.Major == 4) { new_params.Add(atc_prefix + "_RAT_PIT_FLTD", atc_rat_pit_fltd); new_params.Add(atc_prefix + "_RAT_PIT_FLTE", atc_rat_pit_flte); new_params.Add(atc_prefix + "_RAT_PIT_FLTT", atc_rat_pit_fltt); new_params.Add(atc_prefix + "_RAT_RLL_FLTD", atc_rat_rll_fltd); new_params.Add(atc_prefix + "_RAT_RLL_FLTE", atc_rat_rll_flte); new_params.Add(atc_prefix + "_RAT_RLL_FLTT", atc_rat_rll_fltt); new_params.Add(atc_prefix + "_RAT_YAW_FLTD", atc_rat_yaw_fltd); new_params.Add(atc_prefix + "_RAT_YAW_FLTE", atc_rat_yaw_flte); new_params.Add(atc_prefix + "_RAT_YAW_FLTT", atc_rat_yaw_fltt); } else { new_params.Add(atc_prefix + "_RAT_PIT_FILT", atc_rat_pit_fltd); new_params.Add(atc_prefix + "_RAT_RLL_FILT", atc_rat_rll_fltd); new_params.Add(atc_prefix + "_RAT_YAW_FILT", atc_rat_yaw_flte); } new_params.Add(atc_prefix + "_THR_MIX_MAN", atc_thr_mix_man); new_params.Add("INS_ACCEL_FILTER", ins_accel_filter); new_params.Add("INS_GYRO_FILTER", ins_gyro_filter); new_params.Add(mot_prefix + "_THST_EXPO", mot_thst_expo); new_params.Add(mot_prefix + "_THST_HOVER", mot_thst_hover); new_params.Add("BATT_ARM_VOLT", batt_arm_volt); new_params.Add("BATT_CRT_VOLT", batt_crt_volt); new_params.Add("BATT_LOW_VOLT", batt_low_volt); new_params.Add(mot_prefix + "_BAT_VOLT_MAX", mot_bat_volt_max); new_params.Add(mot_prefix + "_BAT_VOLT_MIN", mot_bat_volt_min); if (cb_tmotor.Checked) { new_params.Add(mot_prefix + "_PWM_MIN", 1100); new_params.Add(mot_prefix + "_PWM_MAX", 1940); } if (cb_suggested.Checked && MainV2.comPort.MAV.cs.version.Major == 4 && (MainV2.comPort.MAV.cs.firmware != Firmwares.ArduPlane)) { new_params.Add("BATT_FS_CRT_ACT", 1); new_params.Add("BATT_FS_LOW_ACT", 2); new_params.Add("FENCE_ACTION", 3); new_params.Add("FENCE_ALT_MAX", 120); new_params.Add("FENCE_ENABLE", 1); new_params.Add("FENCE_RADIUS", 150); new_params.Add("FENCE_TYPE", 7); } Form paramCompareForm = new ParamCompare(null, MainV2.comPort.MAV.param, new_params); ThemeManager.ApplyThemeTo(paramCompareForm); MissionPlanner.Controls.MyButton button = paramCompareForm.Controls.Find("BUT_save", true).FirstOrDefault() as MissionPlanner.Controls.MyButton; button.Text = "Write to FC"; paramCompareForm.StartPosition = FormStartPosition.CenterParent; paramCompareForm.ShowDialog(); if (paramCompareForm.DialogResult == DialogResult.OK) { CustomMessageBox.Show("Initial Parameters succesfully updated.\r\nCheck parameters before flight!\r\n\r\nAfter test flight :\r\n\tSet ATC_THR_MIX_MAN to 0.5\r\n\tSet PSC_ACCZ_P to MOT_THST_HOVER\r\n\tSet PSC_ACCZ_I to 2*MOT_THST_HOVER\r\n\r\nHappy flying!", "Initial parameter calculator"); } }
// Main void do_parameters(object sender, EventArgs e) { var new_params = new Dictionary <string, double>(); double prop = 9; double cellcount = 4; double cellmax = 4.2; double cellmin = 3.3; //Add intro and some warnings CustomMessageBox.Show("This plugin will calculate some initial parameters based on battery and prop size for a new copter setup.\r\n\r\n" + "Please make sure that before running this plugin and updating calculated parameters:\r\n" + "ALL INITIAL SETUPS ARE DONE (Calibrations, frame settings, motor tests)\r\n" + "BATTERY VOLTAGE MONITORING IS SET AND WORKING\r\n\r\n" + "Note: INS_GYRO_FILTER with a value other than 20 is optional and probably only for small frames/props " + "At first you can keep it at 20\r\n", "Initial Parameter Calculator"); //Check environment if (!Host.cs.connected) { CustomMessageBox.Show("Please connect first!", "Initial paremeter calculator", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } if (Host.cs.firmware != ArduPilot.Firmwares.ArduCopter2) { CustomMessageBox.Show("Initial parameter calculation works with Arducopter only!", "Initial paremeter calculator", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } // Get input parameters if (MissionPlanner.Controls.InputBox.Show("Initial parameter calculator", "Enter airscrew size in inch", ref prop) != DialogResult.OK) { return; } if (MissionPlanner.Controls.InputBox.Show("Initial parameter calculator", "Enter battery cellcount", ref cellcount) != DialogResult.OK) { return; } if (MissionPlanner.Controls.InputBox.Show("Initial parameter calculator", "Enter battery cell fully charged voltage\r\nLiPo - 4.2, LipoHV - 4.35, LiIon - 4.1 or 4.2", ref cellmax) != DialogResult.OK) { return; } if (MissionPlanner.Controls.InputBox.Show("Initial parameter calculator", "Enter battery cell fully discharged voltage\r\nLiPo/LipoHV - 3.3, LiIon - 2.8", ref cellmin) != DialogResult.OK) { return; } //Ok we have all input and we are connected to an ArduCopter //Convert for sanity check prop_size = prop.ConvertToDouble(); batt_cells = cellcount.ConvertToDouble(); batt_cell_max_voltage = cellmax.ConvertToDouble(); batt_cell_min_voltage = cellmin.ConvertToDouble(); if (prop_size <= 0 || batt_cells < 1) { CustomMessageBox.Show("Invalid input data!", "Initial paremeter calculator", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } //Do calculation calc_values(); //Fill up the list of params to change new_params.Add("ACRO_YAW_P", acro_yaw_p); new_params.Add("ATC_ACCEL_P_MAX", atc_accel_p_max); new_params.Add("ATC_ACCEL_R_MAX", atc_accel_r_max); new_params.Add("ATC_ACCEL_Y_MAX", atc_accel_y_max); //Filters has different name in 4.x and in 3.x if (Host.cs.version.Major == 4) { new_params.Add("ATC_RAT_PIT_FLTD", atc_rat_pit_fltd); new_params.Add("ATC_RAT_PIT_FLTE", atc_rat_pit_flte); new_params.Add("ATC_RAT_PIT_FLTT", atc_rat_pit_fltt); new_params.Add("ATC_RAT_RLL_FLTD", atc_rat_rll_fltd); new_params.Add("ATC_RAT_RLL_FLTE", atc_rat_rll_flte); new_params.Add("ATC_RAT_RLL_FLTT", atc_rat_rll_fltt); new_params.Add("ATC_RAT_YAW_FLTD", atc_rat_yaw_fltd); new_params.Add("ATC_RAT_YAW_FLTE", atc_rat_yaw_flte); new_params.Add("ATC_RAT_YAW_FLTT", atc_rat_yaw_fltt); } else { new_params.Add("ATC_RAT_PIT_FILT", atc_rat_pit_fltd); new_params.Add("ATC_RAT_RLL_FILT", atc_rat_rll_fltd); new_params.Add("ATC_RAT_YAW_FILT", atc_rat_yaw_flte); } new_params.Add("ATC_THR_MIX_MAN", atc_thr_mix_man); new_params.Add("INS_ACCEL_FILTER", ins_accel_filter); new_params.Add("INS_GYRO_FILTER", ins_gyro_filter); new_params.Add("MOT_THST_EXPO", mot_thst_expo); new_params.Add("MOT_THST_HOVER", mot_thst_hover); new_params.Add("BATT_ARM_VOLT", batt_arm_volt); new_params.Add("BATT_CRT_VOLT", batt_crt_volt); new_params.Add("BATT_LOW_VOLT", batt_low_volt); new_params.Add("MOT_BAT_VOLT_MAX", mot_bat_volt_max); new_params.Add("MOT_BAT_VOLT_MIN", mot_bat_volt_min); Form paramCompareForm = new ParamCompare(null, MainV2.comPort.MAV.param, new_params); ThemeManager.ApplyThemeTo(paramCompareForm); button = paramCompareForm.Controls.Find("BUT_save", true).FirstOrDefault() as MissionPlanner.Controls.MyButton; button.Text = "Write to FC"; paramCompareForm.ShowDialog(); CustomMessageBox.Show("Initial Parameters succesfully updated.\r\nCheck parameters before flight!\r\n\r\nAfter test flight :\r\n\tSet ATC_THR_MIX_MAN to 0.5\r\n\tSet PSC_ACCZ_P to MOT_THST_HOVER\r\n\tSet PSC_ACCZ_I to 2*MOT_THST_HOVER\r\n\r\nHappy flying!", "Initial parameter calculator"); }
private void BUT_compare_Click(object sender, EventArgs e) { var param2 = new Hashtable(); using (var ofd = new OpenFileDialog { AddExtension = true, DefaultExt = ".param", RestoreDirectory = true, Filter = "Param List|*.param;*.parm" }) { var dr = ofd.ShowDialog(); if (dr == DialogResult.OK) { param2 = ParamFile.loadParamFile(ofd.FileName); Form paramCompareForm = new ParamCompare(Params, MainV2.comPort.MAV.param, param2); ThemeManager.ApplyThemeTo(paramCompareForm); paramCompareForm.ShowDialog(); } } }
private void BUT_paramfileload_Click(object sender, EventArgs e) { var filepath = Settings.GetUserDataDirectory() + CMB_paramfiles.Text; try { var data = GitHubContent.GetFileContent("ardupilot", "ardupilot", ((GitHubContent.FileInfo) CMB_paramfiles.SelectedValue).path); File.WriteAllBytes(filepath, data); var param2 = ParamFile.loadParamFile(filepath); var paramCompareForm = new ParamCompare(null, MainV2.comPort.MAV.param, param2); paramCompareForm.dtlvcallback += paramCompareForm_dtlvcallback; ThemeManager.ApplyThemeTo(paramCompareForm); if (paramCompareForm.ShowDialog() == DialogResult.OK) { CustomMessageBox.Show("Loaded parameters, please make sure you write them!", "Loaded"); } // no activate the user needs to click write. //this.Activate(); } catch (Exception ex) { CustomMessageBox.Show("Failed to load file.\n" + ex); } }