/// <summary> /// neue Logdatei erstellen /// </summary> public static void newLog(FormMain mainForm) { // Dateiname ermitteln string fileName = Path.Combine(mainForm.pfad, "DebugLog.txt"); // StreamWriter-Instanz für die Datei erzeugen StreamWriter sw = null; try { //datei wird überschrieben oder neu erzeugt sw = new StreamWriter(fileName, false, Encoding.GetEncoding("windows-1252")); } catch (Exception e) { MessageBox.Show(mainForm.errorLabels.GetString("errorLog") + "\r\n" + e.ToString(), "Error!", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } // Datei zeilenweise schreiben sw.WriteLine(DateTime.Now + ": UAVPSet Version: " + Assembly.GetExecutingAssembly().GetName().Version.ToString() + " starts\r\n"); // StreamWriter schließen sw.Close(); }
FormMain mainForm; //Mainform um auf Log-TAB und Statusleiste zugreifen zu können #endregion Fields #region Constructors /// <summary> /// Initialisierung der Klasse /// </summary> /// <param name="mainForm">MainForm</param> public Configuration(FormMain mainForm) { InitializeComponent(); //com Ports zuweisen zu pull-down string[] aviableComPorts = ComPorts.readPorts(); foreach (string aviableComPort in aviableComPorts) { comPortComboBox.Items.Add(aviableComPort); } this.mainForm = mainForm; //in lokale Variable speichern // Alle werte aus den Settings den Steuerelementen zuweisen comPortComboBox.Text = Properties.Settings.Default.comPort; //ComPort loglevelComboBox.SelectedIndex = Properties.Settings.Default.logLevel; //LogLevel 1..Debug splashCheckBox.Checked = Properties.Settings.Default.spash; //soll Splash angezeigt werden timeOutMaskedTextBox.Text = Properties.Settings.Default.time.ToString(); //Timeout bei PIC read writeSleepMaskedTextBox.Text = Properties.Settings.Default.writeSleep.ToString(); //waren auf PIC Antwort beim Brennen //***** TONY readSleepMaskedText.Text = Properties.Settings.Default.iReadSleep.ToString(); //delay between each read askBurnPicCheckBox.Checked = Properties.Settings.Default.askBurnPic; //Sicherheitsabfrage beim Brennen bitsSComboBox.Text = Properties.Settings.Default.baudRate.ToString(); //bits per second paritaetComboBox.Text = Properties.Settings.Default.parity; // parität stopBitsComboBox.Text = Properties.Settings.Default.stopBits; // stopbits flussComboBox.Text = Properties.Settings.Default.handshake; //flusssteuerung languageComboBox.Text = Properties.Settings.Default.language; //sprachsteuerung versionComboBox.Text = Properties.Settings.Default.version; //PIC Version autoDisCheckBox.Checked = Properties.Settings.Default.focus; //auto disconnect bei Focusverlust }
public ViewParameter(ParameterSets parameterSets, FormMain mainForm) { InitializeComponent(); this.parameterSets = parameterSets; this.mainForm = mainForm; fillParameter(); errorLabels = new ResourceManager("UAVP.UAVPSet.Resources.error", this.GetType().Assembly); }
/// <summary> /// Sendet ein x an den Pic /// für Testprogramm um weiter zu kommen /// </summary> /// <param name="mainForm"></param> public ArrayList anyKey(FormMain mainForm) { string key = "x"; bool con = true; // wenn noch keine Verbindung besteht automatisch öffnen if (!sp.IsOpen) { con = connect(mainForm, false, true); } else { sp.DiscardInBuffer(); } // Puffer leeren wenn Boad neu gestartet wird kommt info sonst in den buffer ArrayList ret = new ArrayList(); // wenn verbindung nicht ok if (con == false) { return ret; } string temp; try { // keine Zeiteinsparung mit write statt writeline - ende mit > leichter erfassbar. // deshalb wieder auf writeline umgestellt sp.Write(key); // log über sendekey if (Properties.Settings.Default.logLevel > 0) { Log.write(mainForm, labels.GetString("writeParameter") + key, 1); } //***** TONY Thread.Sleep(Properties.Settings.Default.iReadSleep); temp = sp.ReadLine(); // > kommt wenn nichts mehr kommt - aber nur bei writeLine! // für was war T: ??? // auf ERR abfragen wenn der PIC sich im B status befindet if (temp == "ERR\r") { Log.write(mainForm, "Board is in Bootloader Status!", 1); ret.Add(temp); mainForm.picBootModus = true; MessageBox.Show(errorLabels.GetString("picBurnMode"), "Info!", MessageBoxButtons.OK, MessageBoxIcon.Warning); return ret; } while (temp != ">") // T wird nur für Receiver benötigt wenn nur write und nicht writeline // || temp.Substring(0,1) == "T") { ret.Add(temp); //***** TONY Thread.Sleep(Properties.Settings.Default.iReadSleep); temp = sp.ReadLine(); // log schreiben wenn debuglevel if (Properties.Settings.Default.logLevel > 0) { Log.write(mainForm, temp, 1); } } } catch (Exception e) { if (con == false) { MessageBox.Show(errorLabels.GetString("askPic"), "Error!", MessageBoxButtons.OK, MessageBoxIcon.Error); } Log.write(mainForm, e.ToString(), 1); } return ret; }
/// <summary> /// lesen welches SET aktiv am PIC ist /// </summary> /// <param name="mainForm"></param> public void parameterSet(FormMain mainForm) { // pic fragen ArrayList setup = askPic(mainForm, "S"); // logausgabe if (Properties.Settings.Default.logLevel > 0) { foreach (string output in setup) { Log.write(mainForm, output, 1); } } else { // wenn keine Verbindung besteht gibt es kein setup[5] if (setup.Count > 4) { Log.write(mainForm, setup[5].ToString(), 0); } else { Log.write(mainForm, "Error: Setup <= 4", 1); } } if (setup.Count <= 4) { return; } //Parameterset auslesen int chanelSet = 0; foreach (string chanel in setup) { if (chanel.Length > 22) { if (chanel.Substring(0, 22) == "Selected parameter set") { chanelSet = Convert.ToInt16(chanel.ToString().Substring(24, 1)) - 1; } } } // aktives TAB selectieren mainForm.tabControlParameter.SelectedIndex = chanelSet; if (mainForm.tabControlParameter.SelectedIndex == 0) { mainForm.tabPageParameterSet1.Text = labels.GetString("paraSetAktiv1"); mainForm.tabPageParameterSet2.Text = labels.GetString("paraSet2"); } else { mainForm.tabPageParameterSet1.Text = labels.GetString("paraSet1"); mainForm.tabPageParameterSet2.Text = labels.GetString("paraSetAktiv2"); } }
/// <summary> /// Starten der Debugsoftware /// </summary> /// <param name="mainForm"></param> public void debugSoftware(FormMain mainForm) { //sp.Close(); // übergabe der Connection klasse DebugSoftware debugSoftware = new DebugSoftware(mainForm, this); debugSoftware.ShowDialog(); }
/// <summary> /// Klasse um verbindung zu schließen und infos in Mainform umzustellen /// </summary> /// <param name="mainForm"></param> public void closeConnection(FormMain mainForm) { // wenn bereits verbunden dann info und Verbindung trennen mainForm.infoleisteToolStripStatusLabel.Text = labels.GetString("disconnected"); Log.write(mainForm, labels.GetString("disconnected"), 0); mainForm.infoleisteToolStripStatusLabel.Text = labels.GetString("disconnected"); mainForm.listViewJobs.Items[0].Text = labels.GetString("disconnected"); mainForm.listViewJobs.Items[0].ForeColor = Color.Black; sp.Close(); }
public Neutral(FormMain mainForm) { InitializeComponent(); this.mainForm = mainForm; }
/// <summary> /// Funtkion um Logtext zu schreiben /// </summary> /// <param name="mainForm"></param> /// <param name="logtext"></param> /// <param name="level"></param> public static void write(FormMain mainForm, string logtext, int level) { // ausgabe nur wenn eingestellter Loglevel größer ist if (Properties.Settings.Default.logLevel >= level && logtext != null) { // bei den pic zeilen wird ein \n mitgegeben - bei anderen nicht // deshalb immer löschen und komplett hinzufügen string temp = logtext; if ((temp.Substring(logtext.Length - 1) == "\r") && (logtext.Length >= 1)) { logtext = logtext.Substring(0, logtext.Length - 1); } mainForm.logTextBox.Text += DateTime.Now + ": "+ logtext + "\r\n"; // auf das ende der Textbox scrollen mainForm.logTextBox.SelectionStart = mainForm.logTextBox.Text.Length; mainForm.logTextBox.ScrollToCaret(); if (level == 1) { // Dateiname ermitteln string fileName = Path.Combine(mainForm.pfad, "DebugLog.txt"); // StreamWriter-Instanz für die Datei erzeugen StreamWriter sw = null; try { sw = new StreamWriter(fileName, true, Encoding.GetEncoding("windows-1252")); } catch (Exception e) { MessageBox.Show(mainForm.errorLabels.GetString("errorLog") + "\r\n" + e.ToString(), "Error!", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } // Datei zeilenweise schreiben sw.WriteLine(DateTime.Now + ": " + logtext + "\r\n"); // StreamWriter schließen sw.Close(); } } }
/// <summary> /// werte an Pic schreiben /// </summary> /// <param name="mainForm"></param> /// <param name="parameter"></param> public void writeParameters(FormMain mainForm, ParameterSets parameter) { bool err = true; mainForm.writeUpdate = true; // Verbindung öffnen wenn noch nicht verbunden if (!sp.IsOpen) { err = connect(mainForm, false, true); } // wenn fehler if (err == false) { return; } // Progressbar einblenden und Cursor auf wait setzen mainForm.toolStripProgressBar.Visible = true; mainForm.Cursor = Cursors.WaitCursor; mainForm.Enabled = false; // wenn Prameter Set 1 if (mainForm.tabControlParameter.SelectedIndex == 0) { // alle Parameter schreiben foreach (ParameterSets.ParameterSetsStruc value in parameter.parameterForm1) { // wenn fehler beim schreiben dann aussteigen if (err = parameterWrite(mainForm, value) == false) { break; } } } else { // wenn SET 2 // alle Parameter schreiben foreach (ParameterSets.ParameterSetsStruc value in parameter.parameterForm2) { // wenn fehler beim schreiben dann aussteigen if (err = parameterWrite(mainForm, value) == false) { break; } } } // Progressbar ausblenden und Cursor auf default setzen mainForm.toolStripProgressBar.Value = 0; mainForm.toolStripProgressBar.Visible = false; mainForm.Cursor = Cursors.Default; mainForm.Enabled = true; mainForm.infoleisteToolStripStatusLabel.Text = labels.GetString("writeOk"); Log.write(mainForm, labels.GetString("writeOk"), 0); //nochmals alle parameter lesen und prüfen ob mit werten gleich mainForm.writeUpdate = true; readParameters(mainForm, parameter); mainForm.writeUpdate = false; }
/// <summary> /// lesen der Parameter /// </summary> /// <param name="mainForm"></param> /// <param name="parameter"></param> public void readParameters(FormMain mainForm, ParameterSets parameter) { // Cursor auf wait setzen mainForm.Cursor = Cursors.WaitCursor; // Abfrage der Prameter mit L und speichern in array ArrayList para = askPic(mainForm, "L"); // wenn Loglevel auf debug - deshalb mit if damit foreach nicht so oft aufgerufen wird if (Properties.Settings.Default.logLevel > 0) { foreach (string output in para) { Log.write(mainForm, output, 1); } } else { // standardausgabe if (para.Count > 0) { try { Log.write(mainForm, para[1].ToString(), 0); } catch { Log.write(mainForm, "Fehler beim schreiben Para.Count - PICConnect.cs line 223", 1); } } } //wenn fehler in Verbindung if (para.Count == 0) { // Cursor auf default setzen mainForm.Cursor = Cursors.Default; return; } // springen auf richtiges TAB mainForm.tabControlParameter.SelectedIndex = Convert.ToInt16(para[1].ToString().Substring(24, 1)) - 1; // markieren des TABS if (mainForm.tabControlParameter.SelectedIndex == 0) { mainForm.tabPageParameterSet1.Text = labels.GetString("paraSetAktiv1"); mainForm.tabPageParameterSet2.Text = labels.GetString("paraSet2"); } else { mainForm.tabPageParameterSet1.Text = labels.GetString("paraSet1"); mainForm.tabPageParameterSet2.Text = labels.GetString("paraSetAktiv2"); } // wenn tab Parameter Set 1 gelesen wird if (mainForm.tabControlParameter.SelectedIndex == 0) { // alle Chapter löschen for (int i = 0; i < parameter.parameterPic1.Length; i++) { parameter.parameterPic1[i].Chapter = ""; } // durchgehen des arrays und in Prameter Struc speichern for (int i = 0; i < para.Count - 2; i++) { //Log.write(mainForm, para[i].ToString(), 0); // + in den Parametern ausschneiden if (para[i + 2].ToString().Substring(15, 1) == "+") { para[i + 2] = Convert.ToInt16(para[i + 2].ToString().Substring(16, 3)); } else { para[i + 2] = Convert.ToInt16(para[i + 2].ToString().Substring(15, 4)); } parameter.parameterPic1[i].Command = "Register " + (i + 1).ToString(); parameter.parameterPic1[i].Value = para[i + 2].ToString(); parameter.parameterPic1[i].Chapter = "ChannelSet"; } // ganzes Form mit den Daten updaten parameter.updateForm(parameter.parameterPic1, mainForm); } else { // alle Chapter löschen for (int i = 0; i < parameter.parameterPic2.Length; i++) { parameter.parameterPic2[i].Chapter = ""; } // gleiches wenn Parameter Set 2 gelesen wird // durchgehen des arrays und in Prameter Struc speichern for (int i = 0; i < para.Count - 2; i++) { Log.write(mainForm, para[i].ToString(), 0); // + in den Parametern ausschneiden if (para[i + 2].ToString().Substring(15, 1) == "+") { para[i + 2] = Convert.ToInt16(para[i + 2].ToString().Substring(16, 3)); } else { para[i + 2] = Convert.ToInt16(para[i + 2].ToString().Substring(15, 4)); } parameter.parameterPic2[i].Command = "Register " + (i + 1).ToString(); parameter.parameterPic2[i].Value = para[i + 2].ToString(); parameter.parameterPic2[i].Chapter = "ChannelSet"; } // ganzes Form mit den Daten updaten parameter.updateForm(parameter.parameterPic2, mainForm); } // Cursor auf default setzen mainForm.Cursor = Cursors.Default; }
public Receiver(FormMain mainForm) { InitializeComponent(); this.mainForm = mainForm; }
/// <summary> /// verbinden mit PIC /// </summary> /// <param name="mainForm"></param> public bool connect(FormMain mainForm, bool testSoftware) { // wenn Verbindung noch nicht offen ist if (!sp.IsOpen) { //TODO: wird zur Zeit noch nicht aus den Einstellungen übernommen (nur Port und Timeout) sp.PortName = Properties.Settings.Default.comPort; sp.BaudRate = 38400; sp.StopBits = StopBits.One; sp.DataBits = 8; sp.Parity = Parity.None; sp.Handshake = Handshake.None; sp.ReadTimeout = Convert.ToInt16(Properties.Settings.Default.time); Log.write(mainForm, Properties.Settings.Default.comPort, 1); try { sp.Open(); // testen der Verbindung über ? ArrayList test = testComm(mainForm); // schreiben in Status und log if (test.Count > 0) { mainForm.infoleisteToolStripStatusLabel.Text = labels.GetString("picConnected"); Log.write(mainForm, labels.GetString("picConnected"), 0); // austauschen text und textfarbe bei listview mainForm.listViewJobs.Items[0].Text = labels.GetString("listviewConnected"); mainForm.listViewJobs.Items[0].ForeColor = Color.Green; //nur abfragen wenn sich Ufo nicht im Boot Status befindet // dann kommt bei der Statusabfrage ein Error if (test[0].ToString() != "ERR\r") { if (test[1].ToString().Substring(0, 14) == "Profi-Ufo TEST" && testSoftware == false) { MessageBox.Show(errorLabels.GetString("testSoft"), "Info", MessageBoxButtons.OK, MessageBoxIcon.Information); Log.write(mainForm, errorLabels.GetString("testSoft"), 1); } } } else { MessageBox.Show(errorLabels.GetString("askPic"), "Error!", MessageBoxButtons.OK, MessageBoxIcon.Error); closeConnection(mainForm); return(false); } } catch (Exception e) { MessageBox.Show(errorLabels.GetString("connect") + "\r\n" + e.ToString(), "Error!", MessageBoxButtons.OK, MessageBoxIcon.Error); Log.write(mainForm, e.ToString(), 1); closeConnection(mainForm); return(false); } } else { // wenn bereits verbunden dann info und Verbindung trennen closeConnection(mainForm); } return(true); }
/// <summary> /// allgemeine Funktion die von jedem Steuerelement aufgerufen werden kann /// </summary> /// <param name="mainForm"></param> static public void info(FormMain mainForm) { // RollAchse Hilfe // Setting 1 if (mainForm.rollProp1NumericUpDown.Focused) { mainForm.infoTextBox.Text = mainForm.help.GetString("Proportional"); } if (mainForm.rollDiff1NumericUpDown.Focused) { mainForm.infoTextBox.Text = mainForm.help.GetString("Differenzial"); } if (mainForm.rollInt1NumericUpDown.Focused) { mainForm.infoTextBox.Text = mainForm.help.GetString("Integral"); } if (mainForm.rollLimit1NumericUpDown.Focused) { mainForm.infoTextBox.Text = mainForm.help.GetString("Limiter"); } if (mainForm.rollIntLimit1NumericUpDown.Focused) { mainForm.infoTextBox.Text = mainForm.help.GetString("IntegralLimiter"); } if (mainForm.rollMa1NumericUpDown.Focused) { mainForm.infoTextBox.Text = mainForm.help.GetString("EbenenAusgleich"); } if (mainForm.rollA1NumericUpDown.Focused) { mainForm.infoTextBox.Text = mainForm.help.GetString("Neutral"); } //Setting 2 if (mainForm.rollProp2NumericUpDown.Focused) { mainForm.infoTextBox.Text = mainForm.help.GetString("Proportional"); } if (mainForm.rollDiff2NumericUpDown.Focused) { mainForm.infoTextBox.Text = mainForm.help.GetString("Differenzial"); } if (mainForm.rollInt2NumericUpDown.Focused) { mainForm.infoTextBox.Text = mainForm.help.GetString("Integral"); } if (mainForm.rollLimit2NumericUpDown.Focused) { mainForm.infoTextBox.Text = mainForm.help.GetString("Limiter"); } if (mainForm.rollIntLimit2NumericUpDown.Focused) { mainForm.infoTextBox.Text = mainForm.help.GetString("IntegralLimiter"); } if (mainForm.rollMa2NumericUpDown.Focused) { mainForm.infoTextBox.Text = mainForm.help.GetString("EbenenAusgleich"); } if (mainForm.rollA2NumericUpDown.Focused) { mainForm.infoTextBox.Text = mainForm.help.GetString("Neutral"); } // NickAchse Hilfe // Setting 1 if (mainForm.nickProp1NumericUpDown.Focused) { mainForm.infoTextBox.Text = mainForm.help.GetString("Proportional"); } if (mainForm.nickDiff1NumericUpDown.Focused) { mainForm.infoTextBox.Text = mainForm.help.GetString("Differenzial"); } if (mainForm.nickInt1NumericUpDown.Focused) { mainForm.infoTextBox.Text = mainForm.help.GetString("Integral"); } if (mainForm.nickLimit1NumericUpDown.Focused) { mainForm.infoTextBox.Text = mainForm.help.GetString("Limiter"); } if (mainForm.nickIntLimit1NumericUpDown.Focused) { mainForm.infoTextBox.Text = mainForm.help.GetString("IntegralLimiter"); } if (mainForm.nickMa1NumericUpDown.Focused) { mainForm.infoTextBox.Text = mainForm.help.GetString("EbenenAusgleich"); } if (mainForm.nickA1NumericUpDown.Focused) { mainForm.infoTextBox.Text = mainForm.help.GetString("Neutral"); } // Setting 2 if (mainForm.nickProp2NumericUpDown.Focused) { mainForm.infoTextBox.Text = mainForm.help.GetString("Proportional"); } if (mainForm.nickDiff2NumericUpDown.Focused) { mainForm.infoTextBox.Text = mainForm.help.GetString("Differenzial"); } if (mainForm.nickInt2NumericUpDown.Focused) { mainForm.infoTextBox.Text = mainForm.help.GetString("Integral"); } if (mainForm.nickLimit2NumericUpDown.Focused) { mainForm.infoTextBox.Text = mainForm.help.GetString("Limiter"); } if (mainForm.nickIntLimit2NumericUpDown.Focused) { mainForm.infoTextBox.Text = mainForm.help.GetString("IntegralLimiter"); } if (mainForm.nickMa2NumericUpDown.Focused) { mainForm.infoTextBox.Text = mainForm.help.GetString("EbenenAusgleich"); } if (mainForm.nickA2NumericUpDown.Focused) { mainForm.infoTextBox.Text = mainForm.help.GetString("Neutral"); } // GierAchse Hilfe // Setting 1 if (mainForm.gierProp1NumericUpDown.Focused) { mainForm.infoTextBox.Text = mainForm.help.GetString("Proportional"); } if (mainForm.gierDiff1NumericUpDown.Focused) { mainForm.infoTextBox.Text = mainForm.help.GetString("Differenzial"); } if (mainForm.gierInt1NumericUpDown.Focused) { mainForm.infoTextBox.Text = mainForm.help.GetString("Integral"); } if (mainForm.gierLimit1NumericUpDown.Focused) { mainForm.infoTextBox.Text = mainForm.help.GetString("Limiter"); } if (mainForm.gierIntLimit1NumericUpDown.Focused) { mainForm.infoTextBox.Text = mainForm.help.GetString("IntegralLimiter"); } if (mainForm.gierMa1NumericUpDown.Focused) { mainForm.infoTextBox.Text = mainForm.help.GetString("EbenenAusgleich"); } if (mainForm.gierA1NumericUpDown.Focused) { mainForm.infoTextBox.Text = mainForm.help.GetString("Neutral"); } // Setting 2 if (mainForm.gierProp2NumericUpDown.Focused) { mainForm.infoTextBox.Text = mainForm.help.GetString("Proportional"); } if (mainForm.gierDiff2NumericUpDown.Focused) { mainForm.infoTextBox.Text = mainForm.help.GetString("Differenzial"); } if (mainForm.gierInt2NumericUpDown.Focused) { mainForm.infoTextBox.Text = mainForm.help.GetString("Integral"); } if (mainForm.gierLimit2NumericUpDown.Focused) { mainForm.infoTextBox.Text = mainForm.help.GetString("Limiter"); } if (mainForm.gierIntLimit2NumericUpDown.Focused) { mainForm.infoTextBox.Text = mainForm.help.GetString("IntegralLimiter"); } if (mainForm.gierMa2NumericUpDown.Focused) { mainForm.infoTextBox.Text = mainForm.help.GetString("EbenenAusgleich"); } if (mainForm.gierA2NumericUpDown.Focused) { mainForm.infoTextBox.Text = mainForm.help.GetString("Neutral"); } // Sonstiges // Setting 1 if (mainForm.bit01CheckBox.Focused) { mainForm.infoTextBox.Text = mainForm.help.GetString("XModus"); } if (mainForm.bit11CheckBox.Focused) { mainForm.infoTextBox.Text = mainForm.help.GetString("GasKanal"); } if (mainForm.bit21CheckBox.Focused) { mainForm.infoTextBox.Text = mainForm.help.GetString("Integrierzustand"); } if (mainForm.bit31CheckBox.Focused) { mainForm.infoTextBox.Text = mainForm.help.GetString("HalbRollNick"); } if (mainForm.bit41CheckBox.Focused) { mainForm.infoTextBox.Text = mainForm.help.GetString("EmpfaengerImpulse"); } if (mainForm.impulseAusgabe1NumericUpDown.Focused) { mainForm.infoTextBox.Text = mainForm.help.GetString("Impuls"); } if (mainForm.leerlaufgas1NumericUpDown.Focused) { mainForm.infoTextBox.Text = mainForm.help.GetString("Leerlaufgas"); } if (mainForm.kamera1NumericUpDown.Focused) { mainForm.infoTextBox.Text = mainForm.help.GetString("Kameraausgleich"); } if (mainForm.compass1NumericUpDown.Focused) { mainForm.infoTextBox.Text = mainForm.help.GetString("Kompass"); } if (mainForm.akku1NumericUpDown.Focused) { mainForm.infoTextBox.Text = mainForm.help.GetString("Unterspannung"); } // Setting 2 if (mainForm.bit02CheckBox.Focused) { mainForm.infoTextBox.Text = mainForm.help.GetString("XModus"); } if (mainForm.bit12CheckBox.Focused) { mainForm.infoTextBox.Text = mainForm.help.GetString("GasKanal"); } if (mainForm.bit22CheckBox.Focused) { mainForm.infoTextBox.Text = mainForm.help.GetString("Integrierzustand"); } if (mainForm.bit32CheckBox.Focused) { mainForm.infoTextBox.Text = mainForm.help.GetString("HalbRollNick"); } if (mainForm.bit42CheckBox.Focused) { mainForm.infoTextBox.Text = mainForm.help.GetString("EmpfaengerImpulse"); } if (mainForm.impulseAusgabe2NumericUpDown.Focused) { mainForm.infoTextBox.Text = mainForm.help.GetString("Impuls"); } if (mainForm.leerlaufgas2NumericUpDown.Focused) { mainForm.infoTextBox.Text = mainForm.help.GetString("Leerlaufgas"); } if (mainForm.kamera2NumericUpDown.Focused) { mainForm.infoTextBox.Text = mainForm.help.GetString("Kameraausgleich"); } if (mainForm.compass2NumericUpDown.Focused) { mainForm.infoTextBox.Text = mainForm.help.GetString("Kompass"); } if (mainForm.akku2NumericUpDown.Focused) { mainForm.infoTextBox.Text = mainForm.help.GetString("Unterspannung"); } }
/// <summary> /// Verbindung mit PIC über ? testen /// </summary> /// <param name="mainForm"></param> /// <returns></returns> public ArrayList testComm(FormMain mainForm) { ArrayList ret = askPic(mainForm, "S"); Log.write(mainForm, "Function testCom:", 1); // logausgabe if (Properties.Settings.Default.logLevel > 0) { foreach (string output in ret) { Log.write(mainForm, output, 1); } } return ret; }
/// <summary> /// werte an Pic schreiben /// </summary> /// <param name="mainForm"></param> /// <param name="parameter"></param> public void writeParameters(FormMain mainForm, ParameterSets parameter) { bool err = true; mainForm.writeUpdate = true; // Verbindung öffnen wenn noch nicht verbunden if (!sp.IsOpen) { err = connect(mainForm, false, true); } // wenn fehler if (err == false) { return; } // Progressbar einblenden und Cursor auf wait setzen mainForm.toolStripProgressBar.Visible = true; mainForm.Cursor = Cursors.WaitCursor; mainForm.Enabled = false; // wenn Prameter Set 1 if (mainForm.tabControlParameter.SelectedIndex == 0) { // alle Parameter schreiben foreach(ParameterSets.ParameterSetsStruc value in parameter.parameterForm1) { // wenn fehler beim schreiben dann aussteigen if (err = parameterWrite(mainForm, value) == false) { break; } } } else { // wenn SET 2 // alle Parameter schreiben foreach (ParameterSets.ParameterSetsStruc value in parameter.parameterForm2) { // wenn fehler beim schreiben dann aussteigen if (err = parameterWrite(mainForm, value) == false) { break; } } } // Progressbar ausblenden und Cursor auf default setzen mainForm.toolStripProgressBar.Value = 0; mainForm.toolStripProgressBar.Visible = false; mainForm.Cursor = Cursors.Default; mainForm.Enabled = true; mainForm.infoleisteToolStripStatusLabel.Text = labels.GetString("writeOk"); Log.write(mainForm, labels.GetString("writeOk"), 0); //nochmals alle parameter lesen und prüfen ob mit werten gleich mainForm.writeUpdate = true; readParameters(mainForm, parameter); mainForm.writeUpdate = false; }
/// <summary> /// SChreiben der Parameter für Funktion writeParameter /// </summary> /// <param name="mainForm"></param> /// <param name="value"></param> private bool parameterWrite(FormMain mainForm, ParameterSets.ParameterSetsStruc value) { mainForm.Cursor = Cursors.WaitCursor; try { string temp; //sp.Write("M"); // nur ein Write hatte nicht zuverlässig funktioniert // für ein write müsste das readline durch read ersetzt und anders ausgewertet werden sp.WriteLine("M"); // log über sendekey if (Properties.Settings.Default.logLevel > 0) { Log.write(mainForm, "send: \"M\" for Parameter: " + Convert.ToInt16(value.Command.Substring(9)).ToString("00"), 1); } //***** TONY Thread.Sleep(Properties.Settings.Default.iReadSleep); temp = sp.ReadLine(); // alle inputs durchgehen //while (temp != ">M\r") // hier auf Parameter warten - es ist sonst immer zu einem timeout gekommen while (temp != "Register ") { //***** TONY Thread.Sleep(Properties.Settings.Default.iReadSleep); temp = sp.ReadLine(); // log schreiben wenn debuglevel if (Properties.Settings.Default.logLevel > 0) { Log.write(mainForm, temp + "first write M", 1); } } // default sleep - seit Version 3.15 notwendig :-( Thread.Sleep(10); ////Hier der Code für ein write ////sp.WriteLine(Convert.ToInt16(value.Command.Substring(9)).ToString("00")); ////temp = sp.ReadLine(); ////while (temp != (Convert.ToInt16(value.Command.Substring(9)).ToString("00") + " = ")) ////{ //// temp = sp.ReadLine(); //// // log schreiben wenn debuglevel //// if (Properties.Settings.Default.logLevel > 0) //// { //// Log.write(mainForm, temp, 1); //// } ////} ////sp.WriteLine(Convert.ToInt16(value.Value).ToString("00")); // schreiben auf einmal if (Properties.Settings.Default.logLevel > 0) { Log.write(mainForm, value.Command.Substring(9).ToString() + " = " + value.Value, 1); } sp.Write(Convert.ToInt16(value.Command.Substring(9)).ToString("00")); // default sleep - seit Version 3.15 notwendig :-( Thread.Sleep(10); if (Properties.Settings.Default.logLevel > 0) { Log.write(mainForm, "Write: " + Convert.ToInt16(value.Command.Substring(9)).ToString("00").ToString(), 1); } sp.Write(Convert.ToInt16(value.Value).ToString("00")); if (Properties.Settings.Default.logLevel > 0) { Log.write(mainForm, "Write: " + Convert.ToInt16(value.Value).ToString("00").ToString(), 1); } //***** TONY Thread.Sleep(Properties.Settings.Default.iReadSleep); // default sleep - seit Version 3.15 notwendig :-( Thread.Sleep(10); temp = sp.ReadLine(); if (temp != Convert.ToInt16(value.Command.Substring(9)).ToString("00") + " = " + Convert.ToInt16(value.Value).ToString("00") + "\r") { throw (new Exception()); } ////Hier der Code für ein write ////while (temp != ">") ////{ //// temp = sp.ReadLine(); //// // log schreiben wenn debuglevel //// if (Properties.Settings.Default.logLevel > 0) //// { //// Log.write(mainForm, temp, 1); //// } ////} // log über sendekey Log.write(mainForm, (labels.GetString("writeParameter") + Convert.ToInt16(value.Command.Substring(9)).ToString("00") + " = " + Convert.ToInt16(value.Value).ToString("00")), 0); // Progressbar hochzählen mainForm.toolStripProgressBar.Increment(4); // Infotext in status schreiben mainForm.infoleisteToolStripStatusLabel.Text = labels.GetString("writeParameter") + Convert.ToInt16(value.Command.Substring(9)).ToString("00") + " = " + Convert.ToInt16(value.Value).ToString("00"); Application.DoEvents(); mainForm.Cursor = Cursors.Default; return(true); } catch (Exception e) { MessageBox.Show(errorLabels.GetString("askPic"), "Error!", MessageBoxButtons.OK, MessageBoxIcon.Error); Log.write(mainForm, e.ToString() + "\r\nTest Return from Pic", 1); mainForm.Cursor = Cursors.Default; return(false); } }
/// <summary> /// speichern der Parameter in eine Datei /// </summary> /// <param name="pfad"></param> /// <param name="mainForm"></param> public void speichern(string pfad, FormMain mainForm) { StreamWriter sw = new StreamWriter(pfad, false, Encoding.GetEncoding("windows-1252")); try { // header für Datei sw.WriteLine("[ChannelSet]"); // es wird immer das aktive Tab gespeichert if (mainForm.tabControlParameter.SelectedIndex == 0) { foreach (ParameterSetsStruc register in parameterForm1) { if (register.Command != null) { sw.WriteLine(register.Command + "=" + register.Value); } } } else { foreach (ParameterSetsStruc register in parameterForm2) { if (register.Command != null) { sw.WriteLine(register.Command + "=" + register.Value); } } } } catch (Exception e) { MessageBox.Show(e.ToString(), "Error!", MessageBoxButtons.OK, MessageBoxIcon.Error); Log.write(mainForm, e.ToString(), 1); } finally { // datei schließen sw.Close(); } // log schreiben bei debug Log.write(mainForm, "Write Parameterset: " + pfad, 1); }
/// <summary> /// verbinden mit PIC /// </summary> /// <param name="mainForm"></param> public bool connect(FormMain mainForm, bool testSoftware, bool connectionTesten) { // wenn Verbindung noch nicht offen ist if (!sp.IsOpen) { //TODO: wird zur Zeit noch nicht aus den Einstellungen übernommen (nur Port und Timeout) sp.PortName = Properties.Settings.Default.comPort; sp.BaudRate = Properties.Settings.Default.baudRate; switch (Properties.Settings.Default.stopBits) { case "1": sp.StopBits = StopBits.One; break; case "1.5": sp.StopBits = StopBits.OnePointFive; break; case "2": sp.StopBits = StopBits.Two; break; case "None": sp.StopBits = StopBits.None; break; } sp.DataBits = 8; switch (Properties.Settings.Default.parity) { case "Even": sp.Parity = Parity.Even; break; case "Mark": sp.Parity = Parity.Mark; break; case "None": sp.Parity = Parity.None; break; case "Odd": sp.Parity = Parity.Odd; break; case "Space": sp.Parity = Parity.Space; break; } switch (Properties.Settings.Default.handshake) { case "None": sp.Handshake = Handshake.None; break; case "RequestToSend": sp.Handshake = Handshake.RequestToSend; break; case "RequestToSendXOnXOff": sp.Handshake = Handshake.RequestToSendXOnXOff; break; case "XOnXOff": sp.Handshake = Handshake.XOnXOff; break; } sp.ReadTimeout = Convert.ToInt16(Properties.Settings.Default.time); Log.write(mainForm, Properties.Settings.Default.comPort, 1); try { sp.Open(); // testen der Verbindung über ? // Bei debugausgabe darf die Verbindung nicht geprüft werden da keine Antowrt kommt! if (connectionTesten == true) { ArrayList test = testComm(mainForm); // schreiben in Status und log if (test.Count > 0) { mainForm.infoleisteToolStripStatusLabel.Text = labels.GetString("picConnected"); Log.write(mainForm, labels.GetString("picConnected"), 0); // austauschen text und textfarbe bei listview mainForm.listViewJobs.Items[0].Text = labels.GetString("listviewConnected"); mainForm.listViewJobs.Items[0].ForeColor = Color.Green; //nur abfragen wenn sich Ufo nicht im Boot Status befindet // dann kommt bei der Statusabfrage ein Error if (test[0].ToString() != "ERR\r") { if (test[1].ToString().Substring(0, 14) == "Profi-Ufo TEST" && testSoftware == false) { MessageBox.Show(errorLabels.GetString("testSoft"), "Info", MessageBoxButtons.OK, MessageBoxIcon.Information); Log.write(mainForm, errorLabels.GetString("testSoft"), 1); } } } else { MessageBox.Show(errorLabels.GetString("askPic"), "Error!", MessageBoxButtons.OK, MessageBoxIcon.Error); closeConnection(mainForm); return(false); } } } catch (Exception e) { MessageBox.Show(errorLabels.GetString("connect") + "\r\n" + e.ToString(), "Error!", MessageBoxButtons.OK, MessageBoxIcon.Error); Log.write(mainForm, e.ToString(), 1); closeConnection(mainForm); return(false); } } else { // wenn bereits verbunden dann info und Verbindung trennen closeConnection(mainForm); } return(true); }
public void burnPic(FormMain mainForm, string fileName) { //Hex laden // StreamReader-Instanz für die Datei erzeugen StreamReader sr = null; try { sr = new StreamReader(fileName, Encoding.GetEncoding("windows-1252")); } catch (Exception ex) { MessageBox.Show(ex.Message, Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error); Log.write(mainForm, ex.ToString(), 1); return; } // Datei zeilenweise einlesen ArrayList hexFile = new ArrayList(); string line = null; while ((line = sr.ReadLine()) != null) { hexFile.Add(line); } Log.write(mainForm, ("Read File: " + fileName), 0); Log.write(mainForm, ("Lines: " + hexFile.Count.ToString()), 1); // Progressbar einblenden und Cursor auf wait setzen mainForm.toolStripProgressBar.Visible = true; mainForm.Cursor = Cursors.WaitCursor; mainForm.Enabled = false; // Brennen in PIC // wenn noch keine Verbindung besteht automatisch öffnen if (!sp.IsOpen) { connect(mainForm, false, true); } Log.write(mainForm, Properties.Settings.Default.comPort, 1); int i = 1; string temp = "no answer from pic after B"; if (mainForm.picBootModus == false) { sp.DiscardInBuffer(); sp.Write("B"); try { //***** TONY Thread.Sleep(Properties.Settings.Default.iReadSleep); temp = sp.ReadLine(); if (temp == "B\r") { //***** TONY Thread.Sleep(Properties.Settings.Default.iReadSleep); temp = sp.ReadLine(); } } catch (Exception e) { Log.write(mainForm, e.ToString(), 1); } } Log.write(mainForm, temp, 1); mainForm.toolStripProgressBar.Maximum = Convert.ToInt16(hexFile.Count); //alle zeilen des Files schreiben try { foreach (string zeile in hexFile) { mainForm.Cursor = Cursors.WaitCursor; if (Properties.Settings.Default.logLevel > 0) { Log.write(mainForm, zeile, 1); } // Progressbar hochzählen mainForm.toolStripProgressBar.Increment(1); // Infotext in status schreiben mainForm.infoleisteToolStripStatusLabel.Text = labels.GetString("writeLine") + " " + i.ToString() + " " + labels.GetString("writeMax") + " " + Convert.ToInt16(hexFile.Count) + " "; // Infotext in Log schreiben Log.write(mainForm, ("Line: " + i.ToString() + ": " + zeile), 0); Application.DoEvents(); i++; // zeile senden sp.Write(zeile + "\r\n"); // für die höhere Übertragungsrate nach jeder Zeile etwas warten. Thread.Sleep(1); // hier wurde von 4 schon auf 10 erhöht - er kommt trozdem immer wieder zu einem Timeout for (int j = 0; j < 10; j++) { // etwas warten bis der PIC die Daten verarbeitet hat und bei jedem Versuch länger! //***** TONY commented it out if (Properties.Settings.Default.iReadSleep == 0) { Thread.Sleep(Properties.Settings.Default.writeSleep * j * j); } else { //***** TONY Thread.Sleep(Properties.Settings.Default.iReadSleep); } temp = sp.ReadLine(); Log.write(mainForm, temp, 1); if (temp == "ERR\r") { // zeile senden sp.Write(zeile); if (Properties.Settings.Default.logLevel > 0) { Log.write(mainForm, ("Try: " + (j).ToString() + " " + zeile), 1); } } else { break; } } if (temp == "ERR\r") { MessageBox.Show(errorLabels.GetString("flashError"), "Error!", MessageBoxButtons.OK, MessageBoxIcon.Error); break; } // log schreiben wenn debuglevel if (Properties.Settings.Default.logLevel > 0) { Log.write(mainForm, temp, 1); } } // wenn pic erfolgreich geschrieben wurde mainForm.infoleisteToolStripStatusLabel.Text = labels.GetString("burnPicOk"); Log.write(mainForm, labels.GetString("burnPicOk"), 0); mainForm.picBootModus = false; } catch (Exception e) { MessageBox.Show(errorLabels.GetString("errorBurn"), "Error!", MessageBoxButtons.OK, MessageBoxIcon.Error); Log.write(mainForm, errorLabels.GetString("errorBurn") + "\r\n" + e.ToString(), 1); //verbindung trennen um für neuversuch mit status "B" geschlossen zu sein closeConnection(mainForm); } // Info um Board neu zu starten MessageBox.Show(labels.GetString("flashInfo"), "Info!", MessageBoxButtons.OK, MessageBoxIcon.Information); // Progressbar ausblenden und Cursor auf default setzen mainForm.toolStripProgressBar.Value = 0; mainForm.toolStripProgressBar.Visible = false; mainForm.toolStripProgressBar.Maximum = 100; mainForm.Cursor = Cursors.Default; mainForm.Enabled = true; }
/// <summary> /// Sendet ein x an den Pic /// für Testprogramm um weiter zu kommen /// </summary> /// <param name="mainForm"></param> public ArrayList anyKey(FormMain mainForm) { string key = "x"; bool con = true; // wenn noch keine Verbindung besteht automatisch öffnen if (!sp.IsOpen) { con = connect(mainForm, false, true); } else { sp.DiscardInBuffer(); } // Puffer leeren wenn Boad neu gestartet wird kommt info sonst in den buffer ArrayList ret = new ArrayList(); // wenn verbindung nicht ok if (con == false) { return(ret); } string temp; try { // keine Zeiteinsparung mit write statt writeline - ende mit > leichter erfassbar. // deshalb wieder auf writeline umgestellt sp.Write(key); // log über sendekey if (Properties.Settings.Default.logLevel > 0) { Log.write(mainForm, labels.GetString("writeParameter") + key, 1); } //***** TONY Thread.Sleep(Properties.Settings.Default.iReadSleep); temp = sp.ReadLine(); // > kommt wenn nichts mehr kommt - aber nur bei writeLine! // für was war T: ??? // auf ERR abfragen wenn der PIC sich im B status befindet if (temp == "ERR\r") { Log.write(mainForm, "Board is in Bootloader Status!", 1); ret.Add(temp); mainForm.picBootModus = true; MessageBox.Show(errorLabels.GetString("picBurnMode"), "Info!", MessageBoxButtons.OK, MessageBoxIcon.Warning); return(ret); } while (temp != ">") // T wird nur für Receiver benötigt wenn nur write und nicht writeline // || temp.Substring(0,1) == "T") { ret.Add(temp); //***** TONY Thread.Sleep(Properties.Settings.Default.iReadSleep); temp = sp.ReadLine(); // log schreiben wenn debuglevel if (Properties.Settings.Default.logLevel > 0) { Log.write(mainForm, temp, 1); } } } catch (Exception e) { if (con == false) { MessageBox.Show(errorLabels.GetString("askPic"), "Error!", MessageBoxButtons.OK, MessageBoxIcon.Error); } Log.write(mainForm, e.ToString(), 1); } return(ret); }
public void burnPic(FormMain mainForm, string fileName) { //Hex laden // StreamReader-Instanz für die Datei erzeugen StreamReader sr = null; try { sr = new StreamReader(fileName, Encoding.GetEncoding("windows-1252")); } catch (Exception ex) { MessageBox.Show(ex.Message, Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error); Log.write(mainForm, ex.ToString(), 1); return; } // Datei zeilenweise einlesen ArrayList hexFile = new ArrayList(); string line = null; while ((line = sr.ReadLine()) != null) { hexFile.Add(line); } Log.write(mainForm, ("Read File: " + fileName), 0); Log.write(mainForm, ("Lines: " + hexFile.Count.ToString()), 1); // Progressbar einblenden und Cursor auf wait setzen mainForm.toolStripProgressBar.Visible = true; mainForm.Cursor = Cursors.WaitCursor; mainForm.Enabled = false; // Brennen in PIC // wenn noch keine Verbindung besteht automatisch öffnen if (!sp.IsOpen) { connect(mainForm, false, true); } Log.write(mainForm, Properties.Settings.Default.comPort, 1); int i = 1; string temp = "no answer from pic after B"; if (mainForm.picBootModus == false) { sp.DiscardInBuffer(); sp.Write("B"); try { //***** TONY Thread.Sleep(Properties.Settings.Default.iReadSleep); temp = sp.ReadLine(); if (temp == "B\r") { //***** TONY Thread.Sleep(Properties.Settings.Default.iReadSleep); temp = sp.ReadLine(); } } catch (Exception e) { Log.write(mainForm, e.ToString(), 1); } } Log.write(mainForm, temp, 1); mainForm.toolStripProgressBar.Maximum = Convert.ToInt16(hexFile.Count); //alle zeilen des Files schreiben try { foreach (string zeile in hexFile) { mainForm.Cursor = Cursors.WaitCursor; if (Properties.Settings.Default.logLevel > 0) { Log.write(mainForm, zeile, 1); } // Progressbar hochzählen mainForm.toolStripProgressBar.Increment(1); // Infotext in status schreiben mainForm.infoleisteToolStripStatusLabel.Text = labels.GetString("writeLine") + " " + i.ToString() + " " + labels.GetString("writeMax") + " " + Convert.ToInt16(hexFile.Count) + " "; // Infotext in Log schreiben Log.write(mainForm, ("Line: " + i.ToString() + ": " + zeile), 0); Application.DoEvents(); i++; // zeile senden sp.Write(zeile + "\r\n"); // für die höhere Übertragungsrate nach jeder Zeile etwas warten. Thread.Sleep(1); // hier wurde von 4 schon auf 10 erhöht - er kommt trozdem immer wieder zu einem Timeout for (int j = 0; j < 10; j++) { // etwas warten bis der PIC die Daten verarbeitet hat und bei jedem Versuch länger! //***** TONY commented it out if (Properties.Settings.Default.iReadSleep == 0) { Thread.Sleep(Properties.Settings.Default.writeSleep * j * j); } else { //***** TONY Thread.Sleep(Properties.Settings.Default.iReadSleep); } temp = sp.ReadLine(); Log.write(mainForm, temp, 1); if (temp == "ERR\r") { // zeile senden sp.Write(zeile); if (Properties.Settings.Default.logLevel > 0) { Log.write(mainForm, ("Try: " + (j).ToString() + " " + zeile), 1); } } else { break; } } if (temp == "ERR\r") { MessageBox.Show(errorLabels.GetString("flashError"), "Error!", MessageBoxButtons.OK, MessageBoxIcon.Error); break; } // log schreiben wenn debuglevel if (Properties.Settings.Default.logLevel > 0) { Log.write(mainForm, temp, 1); } } // wenn pic erfolgreich geschrieben wurde mainForm.infoleisteToolStripStatusLabel.Text = labels.GetString("burnPicOk"); Log.write(mainForm, labels.GetString("burnPicOk"), 0); mainForm.picBootModus = false; } catch (Exception e) { MessageBox.Show(errorLabels.GetString("errorBurn"),"Error!",MessageBoxButtons.OK,MessageBoxIcon.Error); Log.write(mainForm, errorLabels.GetString("errorBurn") + "\r\n" + e.ToString(), 1); //verbindung trennen um für neuversuch mit status "B" geschlossen zu sein closeConnection(mainForm); } // Info um Board neu zu starten MessageBox.Show(labels.GetString("flashInfo"),"Info!",MessageBoxButtons.OK,MessageBoxIcon.Information); // Progressbar ausblenden und Cursor auf default setzen mainForm.toolStripProgressBar.Value = 0; mainForm.toolStripProgressBar.Visible = false; mainForm.toolStripProgressBar.Maximum = 100; mainForm.Cursor = Cursors.Default; mainForm.Enabled = true; }
/// <summary> /// verbinden mit PIC /// </summary> /// <param name="mainForm"></param> public bool connect(FormMain mainForm, bool testSoftware, bool connectionTesten) { // wenn Verbindung noch nicht offen ist if (!sp.IsOpen) { //TODO: wird zur Zeit noch nicht aus den Einstellungen übernommen (nur Port und Timeout) sp.PortName = Properties.Settings.Default.comPort; sp.BaudRate = Properties.Settings.Default.baudRate; switch (Properties.Settings.Default.stopBits) { case "1": sp.StopBits = StopBits.One; break; case "1.5": sp.StopBits = StopBits.OnePointFive; break; case "2": sp.StopBits = StopBits.Two; break; case "None": sp.StopBits = StopBits.None; break; } sp.DataBits = 8; switch (Properties.Settings.Default.parity) { case "Even": sp.Parity = Parity.Even; break; case "Mark": sp.Parity = Parity.Mark; break; case "None": sp.Parity = Parity.None; break; case "Odd": sp.Parity = Parity.Odd; break; case "Space": sp.Parity = Parity.Space; break; } switch (Properties.Settings.Default.handshake) { case "None": sp.Handshake = Handshake.None; break; case "RequestToSend": sp.Handshake = Handshake.RequestToSend; break; case "RequestToSendXOnXOff": sp.Handshake = Handshake.RequestToSendXOnXOff; break; case "XOnXOff": sp.Handshake = Handshake.XOnXOff; break; } sp.ReadTimeout = Convert.ToInt16(Properties.Settings.Default.time); Log.write(mainForm, Properties.Settings.Default.comPort,1); try { sp.Open(); // testen der Verbindung über ? // Bei debugausgabe darf die Verbindung nicht geprüft werden da keine Antowrt kommt! if (connectionTesten == true) { ArrayList test = testComm(mainForm); // schreiben in Status und log if (test.Count > 0) { mainForm.infoleisteToolStripStatusLabel.Text = labels.GetString("picConnected"); Log.write(mainForm, labels.GetString("picConnected"), 0); // austauschen text und textfarbe bei listview mainForm.listViewJobs.Items[0].Text = labels.GetString("listviewConnected"); mainForm.listViewJobs.Items[0].ForeColor = Color.Green; //nur abfragen wenn sich Ufo nicht im Boot Status befindet // dann kommt bei der Statusabfrage ein Error if (test[0].ToString() != "ERR\r") { if (test[1].ToString().Substring(0, 14) == "Profi-Ufo TEST" && testSoftware == false) { MessageBox.Show(errorLabels.GetString("testSoft"), "Info", MessageBoxButtons.OK, MessageBoxIcon.Information); Log.write(mainForm, errorLabels.GetString("testSoft"), 1); } } } else { MessageBox.Show(errorLabels.GetString("askPic"), "Error!", MessageBoxButtons.OK, MessageBoxIcon.Error); closeConnection(mainForm); return false; } } } catch(Exception e) { MessageBox.Show(errorLabels.GetString("connect") + "\r\n" + e.ToString(), "Error!", MessageBoxButtons.OK, MessageBoxIcon.Error); Log.write(mainForm, e.ToString(),1); closeConnection(mainForm); return false; } } else { // wenn bereits verbunden dann info und Verbindung trennen closeConnection(mainForm); } return true; }
/// <summary> /// Update der Felder in der Form /// </summary> /// <param name="registers">Structur der Registerwerte</param> ///// <param name="mainForm">Mainform</param> public void updateForm(ParameterSetsStruc[] registers, FormMain mainForm) { farbenSetzen(mainForm, Farbe.black); //TODO: hier case für neuen Parameter hinzufügen // alle Parameter durchgehen und lt. array setzen foreach (ParameterSetsStruc register in registers) { if (mainForm.tabControlParameter.SelectedIndex == 0) { switch (Convert.ToInt16(register.Command.Substring(8))) { case 1: parameterForm1[0].Value = register.Value; mainForm.rollProp1NumericUpDown.Value = Convert.ToInt16(register.Value); feldUpdaten(mainForm.rollProp1NumericUpDown, mainForm); break; case 2: parameterForm1[1].Value = register.Value; mainForm.rollInt1NumericUpDown.Value = Convert.ToInt16(register.Value); feldUpdaten(mainForm.rollInt1NumericUpDown, mainForm); break; case 3: parameterForm1[2].Value = register.Value; mainForm.rollDiff1NumericUpDown.Value = Convert.ToInt16(register.Value); feldUpdaten(mainForm.rollDiff1NumericUpDown, mainForm); break; case 4: if (Convert.ToInt16(register.Value) <= 0 && Properties.Settings.Default.version == "3.12" || Convert.ToInt16(register.Value) <= 0 && Properties.Settings.Default.version == "3.13") { mainForm.rollLimit1NumericUpDown.Value = 1; mainForm.baroTemp1NumericUpDown.Value = Convert.ToInt16(register.Value); } else { mainForm.rollLimit1NumericUpDown.Value = Convert.ToInt16(register.Value); mainForm.baroTemp1NumericUpDown.Value = Convert.ToInt16(register.Value); } parameterForm1[3].Value = register.Value; feldUpdaten(mainForm.rollLimit1NumericUpDown, mainForm); feldUpdaten(mainForm.baroTemp1NumericUpDown, mainForm); break; case 5: if (Convert.ToInt16(register.Value) <= 0) { parameterForm1[4].Value = register.Value; mainForm.rollIntLimit1NumericUpDown.Value = 1; } else { parameterForm1[4].Value = register.Value; mainForm.rollIntLimit1NumericUpDown.Value = Convert.ToInt16(register.Value); } feldUpdaten(mainForm.rollIntLimit1NumericUpDown, mainForm); break; case 6: parameterForm1[5].Value = register.Value; mainForm.nickProp1NumericUpDown.Value = Convert.ToInt16(register.Value); feldUpdaten(mainForm.nickProp1NumericUpDown, mainForm); break; case 7: parameterForm1[6].Value = register.Value; mainForm.nickInt1NumericUpDown.Value = Convert.ToInt16(register.Value); feldUpdaten(mainForm.nickInt1NumericUpDown, mainForm); break; case 8: parameterForm1[7].Value = register.Value; mainForm.nickDiff1NumericUpDown.Value = Convert.ToInt16(register.Value); feldUpdaten(mainForm.nickDiff1NumericUpDown, mainForm); break; case 9: if (Convert.ToInt16(register.Value) <= 0 && Properties.Settings.Default.version == "3.12" || Convert.ToInt16(register.Value) <= 0 && Properties.Settings.Default.version == "3.13") { mainForm.nickLimit1NumericUpDown.Value = 1; mainForm.baro1NumericUpDown.Value = Convert.ToInt16(register.Value); } else { mainForm.nickLimit1NumericUpDown.Value = Convert.ToInt16(register.Value); mainForm.baro1NumericUpDown.Value = Convert.ToInt16(register.Value); } parameterForm1[8].Value = register.Value; feldUpdaten(mainForm.nickLimit1NumericUpDown, mainForm); feldUpdaten(mainForm.baro1NumericUpDown, mainForm); break; case 10: if (Convert.ToInt16(register.Value) <= 0) { parameterForm1[9].Value = register.Value; mainForm.nickIntLimit1NumericUpDown.Value = 1; } else { parameterForm1[9].Value = register.Value; mainForm.nickIntLimit1NumericUpDown.Value = Convert.ToInt16(register.Value); } feldUpdaten(mainForm.nickIntLimit1NumericUpDown, mainForm); break; case 11: parameterForm1[10].Value = register.Value; mainForm.gierProp1NumericUpDown.Value = Convert.ToInt16(register.Value); feldUpdaten(mainForm.gierProp1NumericUpDown, mainForm); break; case 12: parameterForm1[11].Value = register.Value; mainForm.gierInt1NumericUpDown.Value = Convert.ToInt16(register.Value); feldUpdaten(mainForm.gierInt1NumericUpDown, mainForm); break; case 13: parameterForm1[12].Value = register.Value; mainForm.gierDiff1NumericUpDown.Value = Convert.ToInt16(register.Value); feldUpdaten(mainForm.gierDiff1NumericUpDown, mainForm); break; case 14: if (Convert.ToInt16(register.Value) <= 0) { parameterForm1[13].Value = register.Value; mainForm.gierLimit1NumericUpDown.Value = 1; } else { parameterForm1[13].Value = register.Value; mainForm.gierLimit1NumericUpDown.Value = Convert.ToInt16(register.Value); } feldUpdaten(mainForm.gierLimit1NumericUpDown, mainForm); break; case 15: if (Convert.ToInt16(register.Value) <= 0) { parameterForm1[14].Value = register.Value; mainForm.gierIntLimit1NumericUpDown.Value = 1; } else { parameterForm1[14].Value = register.Value; mainForm.gierIntLimit1NumericUpDown.Value = Convert.ToInt16(register.Value); } feldUpdaten(mainForm.gierIntLimit1NumericUpDown, mainForm); break; case 16: int temp = Convert.ToInt16(register.Value); if (temp == -1) { temp = 0; } if ((temp & 1) == 1) { mainForm.bit01CheckBox.Checked = true; feldUpdaten(mainForm.bit01CheckBox, mainForm); } else { mainForm.bit01CheckBox.Checked = false; feldUpdaten(mainForm.bit01CheckBox, mainForm); } if ((temp & 2) == 2) { mainForm.bit11CheckBox.Checked = true; feldUpdaten(mainForm.bit11CheckBox, mainForm); } else { mainForm.bit11CheckBox.Checked = false; feldUpdaten(mainForm.bit11CheckBox, mainForm); } if ((temp & 4) == 4) { mainForm.bit21CheckBox.Checked = true; feldUpdaten(mainForm.bit21CheckBox, mainForm); } else { mainForm.bit21CheckBox.Checked = false; feldUpdaten(mainForm.bit21CheckBox, mainForm); } if ((temp & 8) == 8) { mainForm.bit31CheckBox.Checked = true; feldUpdaten(mainForm.bit31CheckBox, mainForm); } else { mainForm.bit31CheckBox.Checked = false; feldUpdaten(mainForm.bit31CheckBox, mainForm); } if ((temp & 16) == 16) { mainForm.bit41CheckBox.Checked = true; feldUpdaten(mainForm.bit41CheckBox, mainForm); } else { mainForm.bit41CheckBox.Checked = false; feldUpdaten(mainForm.bit41CheckBox, mainForm); } //parameterForm1[15].Value = temp.ToString(); break; case 17: parameterForm1[16].Value = register.Value; mainForm.impulseAusgabe1NumericUpDown.Value = Convert.ToInt16(register.Value); feldUpdaten(mainForm.impulseAusgabe1NumericUpDown, mainForm); break; case 18: if (Convert.ToInt16(register.Value) < 0) { parameterForm1[17].Value = register.Value; mainForm.akku1NumericUpDown.Value = 0; } else { parameterForm1[17].Value = register.Value; mainForm.akku1NumericUpDown.Value = Convert.ToDecimal(Math.Round(Convert.ToDouble(register.Value), 1, MidpointRounding.AwayFromZero)); } feldUpdaten(mainForm.akku1NumericUpDown, mainForm); break; case 19: parameterForm1[18].Value = register.Value; mainForm.rollMa1NumericUpDown.Value = Convert.ToInt16(register.Value); feldUpdaten(mainForm.rollMa1NumericUpDown, mainForm); mainForm.kameraRoll1NumericUpDown.Value = Convert.ToInt16(register.Value); feldUpdaten(mainForm.kameraRoll1NumericUpDown, mainForm); break; case 20: parameterForm1[19].Value = register.Value; mainForm.nickMa1NumericUpDown.Value = Convert.ToInt16(register.Value); feldUpdaten(mainForm.nickMa1NumericUpDown, mainForm); break; case 21: parameterForm1[20].Value = register.Value; mainForm.gierMa1NumericUpDown.Value = Convert.ToInt16(register.Value); feldUpdaten(mainForm.gierMa1NumericUpDown, mainForm); break; case 22: parameterForm1[21].Value = register.Value; mainForm.gierA1NumericUpDown.Value = Convert.ToInt16(register.Value); feldUpdaten(mainForm.gierA1NumericUpDown, mainForm); break; case 23: if (Convert.ToInt16(register.Value) < 5) { parameterForm1[22].Value = register.Value; mainForm.leerlaufgas1NumericUpDown.Value = 5; } else { parameterForm1[22].Value = register.Value; mainForm.leerlaufgas1NumericUpDown.Value = Convert.ToInt16(register.Value); } feldUpdaten(mainForm.leerlaufgas1NumericUpDown, mainForm); break; case 24: parameterForm1[23].Value = register.Value; mainForm.rollA1NumericUpDown.Value = Convert.ToInt16(register.Value); feldUpdaten(mainForm.rollA1NumericUpDown, mainForm); break; case 25: parameterForm1[24].Value = register.Value; mainForm.nickA1NumericUpDown.Value = Convert.ToInt16(register.Value); feldUpdaten(mainForm.nickA1NumericUpDown, mainForm); break; case 26: parameterForm1[25].Value = register.Value; mainForm.kamera1NumericUpDown.Value = Convert.ToInt16(register.Value); feldUpdaten(mainForm.kamera1NumericUpDown, mainForm); break; case 27: parameterForm1[26].Value = register.Value; mainForm.compass1NumericUpDown.Value = Convert.ToInt16(register.Value); feldUpdaten(mainForm.compass1NumericUpDown, mainForm); break; case 28: parameterForm1[27].Value = register.Value; mainForm.baroInt1NumericUpDown.Value = Convert.ToInt16(register.Value); feldUpdaten(mainForm.baroInt1NumericUpDown, mainForm); break; } } else { switch (Convert.ToInt16(register.Command.Substring(9))) { case 1: mainForm.rollProp2NumericUpDown.Value = Convert.ToInt16(register.Value); parameterForm2[0].Value = register.Value; feldUpdaten(mainForm.rollProp2NumericUpDown, mainForm); break; case 2: parameterForm2[1].Value = register.Value; mainForm.rollInt2NumericUpDown.Value = Convert.ToInt16(register.Value); feldUpdaten(mainForm.rollInt2NumericUpDown, mainForm); break; case 3: parameterForm2[2].Value = register.Value; mainForm.rollDiff2NumericUpDown.Value = Convert.ToInt16(register.Value); feldUpdaten(mainForm.rollDiff2NumericUpDown, mainForm); break; case 4: if (Convert.ToInt16(register.Value) <= 0 && Properties.Settings.Default.version == "3.12" || Convert.ToInt16(register.Value) <= 0 && Properties.Settings.Default.version == "3.13" ) { mainForm.rollLimit2NumericUpDown.Value = 1; mainForm.baroTemp2NumericUpDown.Value = Convert.ToInt16(register.Value); } else { mainForm.rollLimit2NumericUpDown.Value = Convert.ToInt16(register.Value); mainForm.baroTemp2NumericUpDown.Value = Convert.ToInt16(register.Value); } parameterForm2[3].Value = register.Value; feldUpdaten(mainForm.baroTemp2NumericUpDown, mainForm); feldUpdaten(mainForm.rollLimit2NumericUpDown, mainForm); break; case 5: if (Convert.ToInt16(register.Value) <= 0) { parameterForm2[4].Value = register.Value; mainForm.rollIntLimit2NumericUpDown.Value = 1; } else { parameterForm2[4].Value = register.Value; mainForm.rollIntLimit2NumericUpDown.Value = Convert.ToInt16(register.Value); } feldUpdaten(mainForm.rollIntLimit2NumericUpDown, mainForm); break; case 6: parameterForm2[5].Value = register.Value; mainForm.nickProp2NumericUpDown.Value = Convert.ToInt16(register.Value); feldUpdaten(mainForm.nickProp2NumericUpDown, mainForm); break; case 7: parameterForm2[6].Value = register.Value; mainForm.nickInt2NumericUpDown.Value = Convert.ToInt16(register.Value); feldUpdaten(mainForm.nickInt2NumericUpDown, mainForm); break; case 8: parameterForm2[7].Value = register.Value; mainForm.nickDiff2NumericUpDown.Value = Convert.ToInt16(register.Value); feldUpdaten(mainForm.nickDiff2NumericUpDown, mainForm); break; case 9: if (Convert.ToInt16(register.Value) <= 0 && Properties.Settings.Default.version == "3.12" || Convert.ToInt16(register.Value) <= 0 && Properties.Settings.Default.version == "3.13" ) { mainForm.nickLimit2NumericUpDown.Value = 1; mainForm.baro2NumericUpDown.Value = Convert.ToInt16(register.Value); } else { mainForm.nickLimit2NumericUpDown.Value = Convert.ToInt16(register.Value); mainForm.baro2NumericUpDown.Value = Convert.ToInt16(register.Value); } parameterForm2[8].Value = register.Value; feldUpdaten(mainForm.baro2NumericUpDown, mainForm); feldUpdaten(mainForm.nickLimit2NumericUpDown, mainForm); break; case 10: if (Convert.ToInt16(register.Value) <= 0) { parameterForm2[9].Value = register.Value; mainForm.nickIntLimit2NumericUpDown.Value = 1; } else { parameterForm2[9].Value = register.Value; mainForm.nickIntLimit2NumericUpDown.Value = Convert.ToInt16(register.Value); } feldUpdaten(mainForm.nickIntLimit2NumericUpDown, mainForm); break; case 11: parameterForm2[10].Value = register.Value; mainForm.gierProp2NumericUpDown.Value = Convert.ToInt16(register.Value); feldUpdaten(mainForm.gierProp2NumericUpDown, mainForm); break; case 12: parameterForm2[11].Value = register.Value; mainForm.gierInt2NumericUpDown.Value = Convert.ToInt16(register.Value); feldUpdaten(mainForm.gierInt2NumericUpDown, mainForm); break; case 13: parameterForm2[12].Value = register.Value; mainForm.gierDiff2NumericUpDown.Value = Convert.ToInt16(register.Value); feldUpdaten(mainForm.gierDiff2NumericUpDown, mainForm); break; case 14: if (Convert.ToInt16(register.Value) <= 0) { mainForm.gierLimit2NumericUpDown.Value = 1; parameterForm2[13].Value = register.Value; } else { mainForm.gierLimit2NumericUpDown.Value = Convert.ToInt16(register.Value); parameterForm2[13].Value = register.Value; } feldUpdaten(mainForm.gierLimit2NumericUpDown, mainForm); break; case 15: if (Convert.ToInt16(register.Value) <= 0) { parameterForm2[14].Value = register.Value; mainForm.gierIntLimit2NumericUpDown.Value = 1; } else { parameterForm2[14].Value = register.Value; mainForm.gierIntLimit2NumericUpDown.Value = Convert.ToInt16(register.Value); } feldUpdaten(mainForm.gierIntLimit2NumericUpDown, mainForm); break; case 16: int temp = Convert.ToInt16(register.Value); if (temp == -1) { temp = 0; } if ((temp & 1) == 1) { mainForm.bit02CheckBox.Checked = true; feldUpdaten(mainForm.bit02CheckBox, mainForm); } else { mainForm.bit02CheckBox.Checked = false; feldUpdaten(mainForm.bit02CheckBox, mainForm); } if ((temp & 2) == 2) { mainForm.bit12CheckBox.Checked = true; feldUpdaten(mainForm.bit12CheckBox, mainForm); } else { mainForm.bit12CheckBox.Checked = false; feldUpdaten(mainForm.bit12CheckBox, mainForm); } if ((temp & 4) == 4) { mainForm.bit22CheckBox.Checked = true; feldUpdaten(mainForm.bit22CheckBox, mainForm); } else { mainForm.bit22CheckBox.Checked = false; feldUpdaten(mainForm.bit22CheckBox, mainForm); } if ((temp & 8) == 8) { mainForm.bit32CheckBox.Checked = true; feldUpdaten(mainForm.bit32CheckBox, mainForm); } else { mainForm.bit32CheckBox.Checked = false; feldUpdaten(mainForm.bit32CheckBox, mainForm); } if ((temp & 16) == 16) { mainForm.bit42CheckBox.Checked = true; feldUpdaten(mainForm.bit42CheckBox, mainForm); } else { mainForm.bit42CheckBox.Checked = false; feldUpdaten(mainForm.bit42CheckBox, mainForm); } //parameterForm2[15].Value = temp.ToString(); break; case 17: parameterForm2[16].Value = register.Value; mainForm.impulseAusgabe2NumericUpDown.Value = Convert.ToInt16(register.Value); feldUpdaten(mainForm.impulseAusgabe2NumericUpDown, mainForm); break; case 18: if (Convert.ToInt16(register.Value) < 0) { parameterForm2[17].Value = register.Value; mainForm.akku2NumericUpDown.Value = 0; } else { parameterForm2[17].Value = register.Value; mainForm.akku2NumericUpDown.Value = Convert.ToDecimal(Math.Round(Convert.ToDouble(register.Value), 1, MidpointRounding.AwayFromZero)); } feldUpdaten(mainForm.akku2NumericUpDown, mainForm); break; case 19: parameterForm2[18].Value = register.Value; mainForm.rollMa2NumericUpDown.Value = Convert.ToInt16(register.Value); feldUpdaten(mainForm.rollMa2NumericUpDown, mainForm); mainForm.kameraRoll2NumericUpDown.Value = Convert.ToInt16(register.Value); feldUpdaten(mainForm.kameraRoll2NumericUpDown, mainForm); break; case 20: parameterForm2[19].Value = register.Value; mainForm.nickMa2NumericUpDown.Value = Convert.ToInt16(register.Value); feldUpdaten(mainForm.nickMa2NumericUpDown, mainForm); break; case 21: parameterForm2[20].Value = register.Value; mainForm.gierMa2NumericUpDown.Value = Convert.ToInt16(register.Value); feldUpdaten(mainForm.gierMa2NumericUpDown, mainForm); break; case 22: parameterForm2[21].Value = register.Value; mainForm.gierA2NumericUpDown.Value = Convert.ToInt16(register.Value); feldUpdaten(mainForm.gierA2NumericUpDown, mainForm); break; case 23: if (Convert.ToInt16(register.Value) < 5) { parameterForm2[22].Value = register.Value; mainForm.leerlaufgas2NumericUpDown.Value = 5; } else { parameterForm2[22].Value = register.Value; mainForm.leerlaufgas2NumericUpDown.Value = Convert.ToInt16(register.Value); } feldUpdaten(mainForm.leerlaufgas2NumericUpDown, mainForm); break; case 24: parameterForm2[23].Value = register.Value; mainForm.rollA2NumericUpDown.Value = Convert.ToInt16(register.Value); feldUpdaten(mainForm.rollA2NumericUpDown, mainForm); break; case 25: parameterForm2[24].Value = register.Value; mainForm.nickA2NumericUpDown.Value = Convert.ToInt16(register.Value); feldUpdaten(mainForm.nickA2NumericUpDown, mainForm); break; case 26: parameterForm2[25].Value = register.Value; mainForm.kamera2NumericUpDown.Value = Convert.ToInt16(register.Value); feldUpdaten(mainForm.kamera2NumericUpDown, mainForm); break; case 27: parameterForm2[26].Value = register.Value; mainForm.compass2NumericUpDown.Value = Convert.ToInt16(register.Value); feldUpdaten(mainForm.compass2NumericUpDown, mainForm); break; case 28: parameterForm2[27].Value = register.Value; mainForm.baroInt2NumericUpDown.Value = Convert.ToInt16(register.Value); feldUpdaten(mainForm.baroInt2NumericUpDown, mainForm); break; } } } }
/// <summary> /// funktion um die Neutralwerte aus pic zu lesen /// </summary> /// <param name="mainForm"></param> public void neutral(FormMain mainForm) { ArrayList ret = askPic(mainForm, "N"); if (ret.Count > 0) { Log.write(mainForm, "N: " + ret[1].ToString(), 0); Neutral neutralWindow = new Neutral(mainForm); neutralWindow.neutralLabel.Text = ret[1].ToString(); neutralWindow.ShowDialog(); } }
public void copySet2ToSet1(FormMain mainForm) { //for (int i = 0; i < parameterForm1.Length; i++) //{ // parameterForm2[i].Chapter = parameterForm1[i].Chapter; // parameterForm2[i].Value = parameterForm1[i].Value; // parameterForm2[i].Command = parameterForm1[i].Command; // parameterForm2[i].Comment = parameterForm1[i].Comment; //} mainForm.tabControlParameter.SelectedIndex = 0; updateForm(parameterForm2, mainForm); }
/// <summary> /// lesen der Parameter /// </summary> /// <param name="mainForm"></param> /// <param name="parameter"></param> public void readParameters(FormMain mainForm, ParameterSets parameter) { // Cursor auf wait setzen mainForm.Cursor = Cursors.WaitCursor; // Abfrage der Prameter mit L und speichern in array ArrayList para = askPic(mainForm, "L"); // wenn Loglevel auf debug - deshalb mit if damit foreach nicht so oft aufgerufen wird if (Properties.Settings.Default.logLevel > 0) { foreach (string output in para) { Log.write(mainForm, output, 1); } } else { // standardausgabe if (para.Count > 0) { try { Log.write(mainForm, para[1].ToString(), 0); } catch { Log.write(mainForm, "Fehler beim schreiben Para.Count - PICConnect.cs line 223", 1); } } } //wenn fehler in Verbindung if (para.Count == 0) { // Cursor auf default setzen mainForm.Cursor = Cursors.Default; return; } // springen auf richtiges TAB mainForm.tabControlParameter.SelectedIndex = Convert.ToInt16(para[1].ToString().Substring(24, 1)) - 1; // markieren des TABS if (mainForm.tabControlParameter.SelectedIndex == 0) { mainForm.tabPageParameterSet1.Text = labels.GetString("paraSetAktiv1"); mainForm.tabPageParameterSet2.Text = labels.GetString("paraSet2"); } else { mainForm.tabPageParameterSet1.Text = labels.GetString("paraSet1"); mainForm.tabPageParameterSet2.Text = labels.GetString("paraSetAktiv2"); } // wenn tab Parameter Set 1 gelesen wird if (mainForm.tabControlParameter.SelectedIndex == 0) { // alle Chapter löschen for (int i = 0; i < parameter.parameterPic1.Length; i++) { parameter.parameterPic1[i].Chapter = ""; } // durchgehen des arrays und in Prameter Struc speichern for (int i = 0; i < para.Count-2; i++) { //Log.write(mainForm, para[i].ToString(), 0); // + in den Parametern ausschneiden if (para[i + 2].ToString().Substring(15, 1) == "+") { para[i + 2] = Convert.ToInt16(para[i + 2].ToString().Substring(16, 3)); } else { para[i + 2] = Convert.ToInt16(para[i + 2].ToString().Substring(15, 4)); } parameter.parameterPic1[i].Command = "Register " + (i + 1).ToString(); parameter.parameterPic1[i].Value = para[i + 2].ToString(); parameter.parameterPic1[i].Chapter = "ChannelSet"; } // ganzes Form mit den Daten updaten parameter.updateForm(parameter.parameterPic1, mainForm); } else { // alle Chapter löschen for (int i = 0; i < parameter.parameterPic2.Length; i++) { parameter.parameterPic2[i].Chapter = ""; } // gleiches wenn Parameter Set 2 gelesen wird // durchgehen des arrays und in Prameter Struc speichern for (int i = 0; i < para.Count-2; i++) { Log.write(mainForm, para[i].ToString(), 0); // + in den Parametern ausschneiden if (para[i + 2].ToString().Substring(15, 1) == "+") { para[i + 2] = Convert.ToInt16(para[i + 2].ToString().Substring(16, 3)); } else { para[i + 2] = Convert.ToInt16(para[i + 2].ToString().Substring(15, 4)); } parameter.parameterPic2[i].Command = "Register " + (i + 1).ToString(); parameter.parameterPic2[i].Value = para[i + 2].ToString(); parameter.parameterPic2[i].Chapter = "ChannelSet"; } // ganzes Form mit den Daten updaten parameter.updateForm(parameter.parameterPic2, mainForm); } // Cursor auf default setzen mainForm.Cursor = Cursors.Default; }
/// <summary> /// fabe bei allen Feldern setzen /// </summary> /// <param name="mainForm"></param> /// <param name="farbe"></param> public void farbenSetzen(FormMain mainForm, Farbe farbe) { Color farbeElement = Color.Black; switch (farbe) { case Farbe.red: farbeElement = Color.Red; break; case Farbe.green: farbeElement = Color.Green; break; case Farbe.orange: farbeElement = Color.Orange; break; case Farbe.black: farbeElement = Color.Black; break; } //TODO: hier Parameter hinzufügen wenn neu if (mainForm.tabControlParameter.SelectedIndex == 0) { mainForm.rollProp1NumericUpDown.ForeColor = farbeElement; mainForm.rollInt1NumericUpDown.ForeColor = farbeElement; mainForm.rollDiff1NumericUpDown.ForeColor = farbeElement; mainForm.rollLimit1NumericUpDown.ForeColor = farbeElement; mainForm.rollIntLimit1NumericUpDown.ForeColor = farbeElement; mainForm.nickProp1NumericUpDown.ForeColor = farbeElement; mainForm.nickInt1NumericUpDown.ForeColor = farbeElement; mainForm.nickDiff1NumericUpDown.ForeColor = farbeElement; mainForm.nickLimit1NumericUpDown.ForeColor = farbeElement; mainForm.nickIntLimit1NumericUpDown.ForeColor = farbeElement; mainForm.gierProp1NumericUpDown.ForeColor = farbeElement; mainForm.gierInt1NumericUpDown.ForeColor = farbeElement; mainForm.gierDiff1NumericUpDown.ForeColor = farbeElement; mainForm.gierLimit1NumericUpDown.ForeColor = farbeElement; mainForm.gierIntLimit1NumericUpDown.ForeColor = farbeElement; mainForm.bit01CheckBox.ForeColor = farbeElement; mainForm.bit11CheckBox.ForeColor = farbeElement; mainForm.bit21CheckBox.ForeColor = farbeElement; mainForm.bit31CheckBox.ForeColor = farbeElement; mainForm.bit41CheckBox.ForeColor = farbeElement; mainForm.impulseAusgabe1NumericUpDown.ForeColor = farbeElement; mainForm.akku1NumericUpDown.ForeColor = farbeElement; mainForm.rollMa1NumericUpDown.ForeColor = farbeElement; mainForm.nickMa1NumericUpDown.ForeColor = farbeElement; mainForm.gierMa1NumericUpDown.ForeColor = farbeElement; mainForm.gierA1NumericUpDown.ForeColor = farbeElement; mainForm.leerlaufgas1NumericUpDown.ForeColor = farbeElement; mainForm.rollA1NumericUpDown.ForeColor = farbeElement; mainForm.nickA1NumericUpDown.ForeColor = farbeElement; mainForm.kamera1NumericUpDown.ForeColor = farbeElement; mainForm.compass1NumericUpDown.ForeColor = farbeElement; mainForm.baroInt1NumericUpDown.ForeColor = farbeElement; } else { mainForm.rollProp2NumericUpDown.ForeColor = farbeElement; mainForm.rollInt2NumericUpDown.ForeColor = farbeElement; mainForm.rollDiff2NumericUpDown.ForeColor = farbeElement; mainForm.rollLimit2NumericUpDown.ForeColor = farbeElement; mainForm.rollIntLimit2NumericUpDown.ForeColor = farbeElement; mainForm.nickProp2NumericUpDown.ForeColor = farbeElement; mainForm.nickInt2NumericUpDown.ForeColor = farbeElement; mainForm.nickDiff2NumericUpDown.ForeColor = farbeElement; mainForm.nickLimit2NumericUpDown.ForeColor = farbeElement; mainForm.nickIntLimit2NumericUpDown.ForeColor = farbeElement; mainForm.gierProp2NumericUpDown.ForeColor = farbeElement; mainForm.gierInt2NumericUpDown.ForeColor = farbeElement; mainForm.gierDiff2NumericUpDown.ForeColor = farbeElement; mainForm.gierLimit2NumericUpDown.ForeColor = farbeElement; mainForm.gierIntLimit2NumericUpDown.ForeColor = farbeElement; mainForm.bit02CheckBox.ForeColor = farbeElement; mainForm.bit12CheckBox.ForeColor = farbeElement; mainForm.bit22CheckBox.ForeColor = farbeElement; mainForm.bit32CheckBox.ForeColor = farbeElement; mainForm.bit42CheckBox.ForeColor = farbeElement; mainForm.impulseAusgabe2NumericUpDown.ForeColor = farbeElement; mainForm.akku2NumericUpDown.ForeColor = farbeElement; mainForm.rollMa2NumericUpDown.ForeColor = farbeElement; mainForm.nickMa2NumericUpDown.ForeColor = farbeElement; mainForm.gierMa2NumericUpDown.ForeColor = farbeElement; mainForm.gierA2NumericUpDown.ForeColor = farbeElement; mainForm.leerlaufgas2NumericUpDown.ForeColor = farbeElement; mainForm.rollA2NumericUpDown.ForeColor = farbeElement; mainForm.nickA2NumericUpDown.ForeColor = farbeElement; mainForm.kamera2NumericUpDown.ForeColor = farbeElement; mainForm.compass2NumericUpDown.ForeColor = farbeElement; mainForm.baroInt2NumericUpDown.ForeColor = farbeElement; } }
/// <summary> /// Receiver Werte lesen /// </summary> /// <param name="mainForm"></param> public void receiver(FormMain mainForm) { //ArrayList ret = askPic(mainForm, "R"); //Log.write(mainForm, "R: " + ret[1].ToString(), 0); closeConnection(mainForm); Receiver receiverWindow = new Receiver(mainForm); // dialog anzeigen receiverWindow.ShowDialog(); }
/// <summary> /// ein einzelnes Feld updaten /// </summary> /// <param name="objekt"></param> /// <param name="mainForm"></param> public void feldUpdaten(Object objekt, FormMain mainForm) { // wenn es sich um ein Parameter feld handelt if (objekt.GetType().Name == "NumericUpDown") { NumericUpDown feld = (NumericUpDown)objekt; // je nach Parameter TAB if (mainForm.tabControlParameter.SelectedIndex == 0) { //feld nur setzen wenn Integral Limit OK ist - sonst return ohne update if (feld.Tag.ToString() == "5" || feld.Tag.ToString() == "10" || feld.Tag.ToString() == "15") { //integral Limit errechnen int tempValue = Convert.ToInt32(parameterForm1[Convert.ToInt16(feld.Tag) - 4].Value); if (tempValue < 0) tempValue = tempValue * -1; int limitTemp = (int)Math.Floor(127.0 / Convert.ToDouble(tempValue)); if (limitTemp < Convert.ToInt32(feld.Value)) { // *****TONY ADDED THIS LINE if(limitTemp >= feld.Minimum && limitTemp <= feld.Maximum) { feld.Value = Convert.ToDecimal(parameterForm1[Convert.ToInt16(feld.Tag) - 1].Value); } return; } } parameterForm1[Convert.ToInt16(feld.Tag)-1].Value = feld.Value.ToString(); //IntegralLimit berechnen wenn Integral geändert wurde if (feld.Tag.ToString() == "2" || feld.Tag.ToString() == "7" || feld.Tag.ToString() == "12") { //integral Limit errechnen int tempValue = Convert.ToInt32(parameterForm1[Convert.ToInt16(feld.Tag) - 1].Value); if (tempValue < 0) tempValue = tempValue * -1; int limitTemp = (int) Math.Floor(127.0 / Convert.ToDouble(tempValue)); if (limitTemp > 0 && limitTemp < Convert.ToInt32(parameterForm1[Convert.ToInt16(feld.Tag) + 2].Value)) { switch (feld.Tag.ToString()) { case "2": mainForm.rollIntLimit1NumericUpDown.Value = limitTemp; break; case "7": mainForm.nickIntLimit1NumericUpDown.Value = limitTemp; break; case "12": mainForm.gierIntLimit1NumericUpDown.Value = limitTemp; break; } } } // wenn es gleich dem PIC wert ist -> wieder grün //Hier die Idee der Farbdarstellung: //schwarz: wenn noch keine Daten gelesen wurden (dh nicht so wie jetzt wo die Werte ja rot werden und beim Initialwert grün) //orange: wenn Pic schon gelesen wurde und die Werte ungeleich den Werten des PICs sind //grün: wenn Pic gelesen wurde und die Werte gleich dem PIC sind //rot: wenn Pic geschrieben wurde und die Werte nach nochmaligem lesen nicht gleich sind // wenn pic noch nicht gelesen wurde ist Chapter leer if (parameterPic1[Convert.ToInt16(feld.Tag) - 1].Chapter == "ChannelSet") { // wenn pic schon gelesen wurde ist ein Vergleich notwendig if (parameterForm1[Convert.ToInt16(feld.Tag) - 1].Value == parameterPic1[Convert.ToInt16(feld.Tag) - 1].Value) { feld.ForeColor = Color.Green; } // wenn wert nicht mit PIC ident else { // wird das Feld beim schreiben upgedatet dann ist das Feld bei fehler rot if (mainForm.writeUpdate == true) { feld.ForeColor = Color.Red; } else { feld.ForeColor = Color.Orange; } } } else // dann wird feld auf black gesetzt { feld.ForeColor = Color.Black; } } else { //feld nur setzen wenn Integral Limit OK ist - sonst return ohne update if (feld.Tag.ToString() == "5" || feld.Tag.ToString() == "10" || feld.Tag.ToString() == "15") { //integral Limit errechnen int tempValue = Convert.ToInt32(parameterForm2[Convert.ToInt16(feld.Tag) - 4].Value); if (tempValue < 0) tempValue = tempValue * -1; int limitTemp = (int)Math.Floor(127.0 / Convert.ToDouble(tempValue)); if (limitTemp < Convert.ToInt32(feld.Value)) { feld.Value = Convert.ToDecimal(parameterForm2[Convert.ToInt16(feld.Tag) - 1].Value); return; } } parameterForm2[Convert.ToInt16(feld.Tag)-1].Value = feld.Value.ToString(); //IntegralLimit berechnen wenn Integral geändert wurde if (feld.Tag.ToString() == "2" || feld.Tag.ToString() == "7" || feld.Tag.ToString() == "12") { //integral Limit errechnen int tempValue = Convert.ToInt32(parameterForm2[Convert.ToInt16(feld.Tag) - 1].Value); if (tempValue < 0) tempValue = tempValue * -1; int limitTemp = (int)Math.Floor(127.0 / Convert.ToDouble(tempValue)); if (limitTemp > 0 && limitTemp < Convert.ToInt32(parameterForm2[Convert.ToInt16(feld.Tag) + 2].Value)) { switch (feld.Tag.ToString()) { case "2": mainForm.rollIntLimit2NumericUpDown.Value = limitTemp; break; case "7": mainForm.nickIntLimit2NumericUpDown.Value = limitTemp; break; case "12": mainForm.gierIntLimit2NumericUpDown.Value = limitTemp; break; } } } // wenn es gleich dem PIC wert ist -> wieder grün //Hier die Idee der Farbdarstellung: //schwarz: wenn noch keine Daten gelesen wurden (dh nicht so wie jetzt wo die Werte ja rot werden und beim Initialwert grün) //orange: wenn Pic schon gelesen wurde und die Werte ungeleich den Werten des PICs sind //grün: wenn Pic gelesen wurde und die Werte gleich dem PIC sind //rot: wenn Pic geschrieben wurde und die Werte nach nochmaligem lesen nicht gleich sind // wenn pic noch nicht gelesen wurde ist Chapter leer if (parameterPic2[Convert.ToInt16(feld.Tag) - 1].Chapter == "ChannelSet") { // wenn pic schon gelesen wurde ist ein Vergleich notwendig if (parameterForm2[Convert.ToInt16(feld.Tag) - 1].Value == parameterPic2[Convert.ToInt16(feld.Tag) - 1].Value) { feld.ForeColor = Color.Green; } // wenn wert nicht mit PIC ident else { // wird das Feld beim schreiben upgedatet dann ist das Feld bei fehler rot if (mainForm.writeUpdate == true) { feld.ForeColor = Color.Red; } else { feld.ForeColor = Color.Orange; } } } else // dann wird feld auf black gesetzt { feld.ForeColor = Color.Black; } } } // wenn es ein BIT Wert ist muss der Parameter Wert errechnet werden else { CheckBox feld = (CheckBox)objekt; // welches BIT ist betroffen? switch (feld.Name) { case "bit01CheckBox": if (mainForm.writeUpdate == false) { if (feld.Checked == true) { parameterForm1[15].Value = (Convert.ToInt16(parameterForm1[15].Value) | 1).ToString(); } else { parameterForm1[15].Value = (Convert.ToInt16(parameterForm1[15].Value) & 30).ToString(); } } // wenn es gleich dem PIC wert ist -> wieder grün //Hier die Idee der Farbdarstellung: //schwarz: wenn noch keine Daten gelesen wurden (dh nicht so wie jetzt wo die Werte ja rot werden und beim Initialwert grün) //orange: wenn Pic schon gelesen wurde und die Werte ungeleich den Werten des PICs sind //grün: wenn Pic gelesen wurde und die Werte gleich dem PIC sind //rot: wenn Pic geschrieben wurde und die Werte nach nochmaligem lesen nicht gleich sind // wenn pic noch nicht gelesen wurde ist Chapter leer if (parameterPic1[15].Chapter == "ChannelSet") { // wenn pic schon gelesen wurde ist ein Vergleich notwendig if ((Convert.ToInt16(parameterForm1[15].Value) & 1) == (Convert.ToInt16(parameterPic1[15].Value) & 1)) { feld.ForeColor = Color.Green; } // wenn wert nicht mit PIC ident else { // wird das Feld beim schreiben upgedatet dann ist das Feld bei fehler rot if (mainForm.writeUpdate == true) { feld.ForeColor = Color.Red; } else { feld.ForeColor = Color.Orange; } } } else // dann wird feld auf black gesetzt { feld.ForeColor = Color.Black; } break; case "bit11CheckBox": if (mainForm.writeUpdate == false) { if (feld.Checked == true) { parameterForm1[15].Value = (Convert.ToInt16(parameterForm1[15].Value) | 2).ToString(); } else { parameterForm1[15].Value = (Convert.ToInt16(parameterForm1[15].Value) & 29).ToString(); } } // wenn es gleich dem PIC wert ist -> wieder grün //Hier die Idee der Farbdarstellung: //schwarz: wenn noch keine Daten gelesen wurden (dh nicht so wie jetzt wo die Werte ja rot werden und beim Initialwert grün) //orange: wenn Pic schon gelesen wurde und die Werte ungeleich den Werten des PICs sind //grün: wenn Pic gelesen wurde und die Werte gleich dem PIC sind //rot: wenn Pic geschrieben wurde und die Werte nach nochmaligem lesen nicht gleich sind // wenn pic noch nicht gelesen wurde ist Chapter leer if (parameterPic1[15].Chapter == "ChannelSet") { // wenn pic schon gelesen wurde ist ein Vergleich notwendig if ((Convert.ToInt16(parameterForm1[15].Value) & 2) == (Convert.ToInt16(parameterPic1[15].Value) & 2)) { feld.ForeColor = Color.Green; } // wenn wert nicht mit PIC ident else { // wird das Feld beim schreiben upgedatet dann ist das Feld bei fehler rot if (mainForm.writeUpdate == true) { feld.ForeColor = Color.Red; } else { feld.ForeColor = Color.Orange; } } } else // dann wird feld auf black gesetzt { feld.ForeColor = Color.Black; } break; case "bit21CheckBox": if (mainForm.writeUpdate == false) { if (feld.Checked == true) { parameterForm1[15].Value = (Convert.ToInt16(parameterForm1[15].Value) | 4).ToString(); } else { parameterForm1[15].Value = (Convert.ToInt16(parameterForm1[15].Value) & 27).ToString(); } } // wenn es gleich dem PIC wert ist -> wieder grün //Hier die Idee der Farbdarstellung: //schwarz: wenn noch keine Daten gelesen wurden (dh nicht so wie jetzt wo die Werte ja rot werden und beim Initialwert grün) //orange: wenn Pic schon gelesen wurde und die Werte ungeleich den Werten des PICs sind //grün: wenn Pic gelesen wurde und die Werte gleich dem PIC sind //rot: wenn Pic geschrieben wurde und die Werte nach nochmaligem lesen nicht gleich sind // wenn pic noch nicht gelesen wurde ist Chapter leer if (parameterPic1[15].Chapter == "ChannelSet") { // wenn pic schon gelesen wurde ist ein Vergleich notwendig if ((Convert.ToInt16(parameterForm1[15].Value) & 4) == (Convert.ToInt16(parameterPic1[15].Value) & 4)) { feld.ForeColor = Color.Green; } // wenn wert nicht mit PIC ident else { // wird das Feld beim schreiben upgedatet dann ist das Feld bei fehler rot if (mainForm.writeUpdate == true) { feld.ForeColor = Color.Red; } else { feld.ForeColor = Color.Orange; } } } else // dann wird feld auf black gesetzt { feld.ForeColor = Color.Black; } break; case "bit31CheckBox": if (mainForm.writeUpdate == false) { if (feld.Checked == true) { parameterForm1[15].Value = (Convert.ToInt16(parameterForm1[15].Value) | 8).ToString(); } else { parameterForm1[15].Value = (Convert.ToInt16(parameterForm1[15].Value) & 23).ToString(); } } // wenn es gleich dem PIC wert ist -> wieder grün //Hier die Idee der Farbdarstellung: //schwarz: wenn noch keine Daten gelesen wurden (dh nicht so wie jetzt wo die Werte ja rot werden und beim Initialwert grün) //orange: wenn Pic schon gelesen wurde und die Werte ungeleich den Werten des PICs sind //grün: wenn Pic gelesen wurde und die Werte gleich dem PIC sind //rot: wenn Pic geschrieben wurde und die Werte nach nochmaligem lesen nicht gleich sind // wenn pic noch nicht gelesen wurde ist Chapter leer if (parameterPic1[15].Chapter == "ChannelSet") { // wenn pic schon gelesen wurde ist ein Vergleich notwendig if ((Convert.ToInt16(parameterForm1[15].Value) & 8) == (Convert.ToInt16(parameterPic1[15].Value) & 8)) { feld.ForeColor = Color.Green; } // wenn wert nicht mit PIC ident else { // wird das Feld beim schreiben upgedatet dann ist das Feld bei fehler rot if (mainForm.writeUpdate == true) { feld.ForeColor = Color.Red; } else { feld.ForeColor = Color.Orange; } } } else // dann wird feld auf black gesetzt { feld.ForeColor = Color.Black; } break; case "bit41CheckBox": if (mainForm.writeUpdate == false) { if (feld.Checked == true) { parameterForm1[15].Value = (Convert.ToInt16(parameterForm1[15].Value) | 16).ToString(); } else { parameterForm1[15].Value = (Convert.ToInt16(parameterForm1[15].Value) & 15).ToString(); } } // wenn es gleich dem PIC wert ist -> wieder grün //Hier die Idee der Farbdarstellung: //schwarz: wenn noch keine Daten gelesen wurden (dh nicht so wie jetzt wo die Werte ja rot werden und beim Initialwert grün) //orange: wenn Pic schon gelesen wurde und die Werte ungeleich den Werten des PICs sind //grün: wenn Pic gelesen wurde und die Werte gleich dem PIC sind //rot: wenn Pic geschrieben wurde und die Werte nach nochmaligem lesen nicht gleich sind // wenn pic noch nicht gelesen wurde ist Chapter leer if (parameterPic1[15].Chapter == "ChannelSet") { // wenn pic schon gelesen wurde ist ein Vergleich notwendig if ((Convert.ToInt16(parameterForm1[15].Value) & 16) == (Convert.ToInt16(parameterPic1[15].Value) & 16)) { feld.ForeColor = Color.Green; } // wenn wert nicht mit PIC ident else { // wird das Feld beim schreiben upgedatet dann ist das Feld bei fehler rot if (mainForm.writeUpdate == true) { feld.ForeColor = Color.Red; } else { feld.ForeColor = Color.Orange; } } } else // dann wird feld auf black gesetzt { feld.ForeColor = Color.Black; } break; case "bit02CheckBox": if (mainForm.writeUpdate == false) { if (feld.Checked == true) { parameterForm2[15].Value = (Convert.ToInt16(parameterForm2[15].Value) | 1).ToString(); } else { parameterForm2[15].Value = (Convert.ToInt16(parameterForm2[15].Value) & 30).ToString(); } } // wenn es gleich dem PIC wert ist -> wieder grün //Hier die Idee der Farbdarstellung: //schwarz: wenn noch keine Daten gelesen wurden (dh nicht so wie jetzt wo die Werte ja rot werden und beim Initialwert grün) //orange: wenn Pic schon gelesen wurde und die Werte ungeleich den Werten des PICs sind //grün: wenn Pic gelesen wurde und die Werte gleich dem PIC sind //rot: wenn Pic geschrieben wurde und die Werte nach nochmaligem lesen nicht gleich sind // wenn pic noch nicht gelesen wurde ist Chapter leer if (parameterPic2[15].Chapter == "ChannelSet") { // wenn pic schon gelesen wurde ist ein Vergleich notwendig if ((Convert.ToInt16(parameterForm2[15].Value) & 1) == (Convert.ToInt16(parameterPic2[15].Value) & 1)) { feld.ForeColor = Color.Green; } // wenn wert nicht mit PIC ident else { // wird das Feld beim schreiben upgedatet dann ist das Feld bei fehler rot if (mainForm.writeUpdate == true) { feld.ForeColor = Color.Red; } else { feld.ForeColor = Color.Orange; } } } else // dann wird feld auf black gesetzt { feld.ForeColor = Color.Black; } break; case "bit12CheckBox": if (mainForm.writeUpdate == false) { if (feld.Checked == true) { parameterForm2[15].Value = (Convert.ToInt16(parameterForm2[15].Value) | 2).ToString(); } else { parameterForm2[15].Value = (Convert.ToInt16(parameterForm2[15].Value) & 29).ToString(); } } // wenn es gleich dem PIC wert ist -> wieder grün //Hier die Idee der Farbdarstellung: //schwarz: wenn noch keine Daten gelesen wurden (dh nicht so wie jetzt wo die Werte ja rot werden und beim Initialwert grün) //orange: wenn Pic schon gelesen wurde und die Werte ungeleich den Werten des PICs sind //grün: wenn Pic gelesen wurde und die Werte gleich dem PIC sind //rot: wenn Pic geschrieben wurde und die Werte nach nochmaligem lesen nicht gleich sind // wenn pic noch nicht gelesen wurde ist Chapter leer if (parameterPic2[15].Chapter == "ChannelSet") { // wenn pic schon gelesen wurde ist ein Vergleich notwendig if ((Convert.ToInt16(parameterForm2[15].Value) & 2) == (Convert.ToInt16(parameterPic2[15].Value) & 2)) { feld.ForeColor = Color.Green; } // wenn wert nicht mit PIC ident else { // wird das Feld beim schreiben upgedatet dann ist das Feld bei fehler rot if (mainForm.writeUpdate == true) { feld.ForeColor = Color.Red; } else { feld.ForeColor = Color.Orange; } } } else // dann wird feld auf black gesetzt { feld.ForeColor = Color.Black; } break; case "bit22CheckBox": if (mainForm.writeUpdate == false) { if (feld.Checked == true) { parameterForm2[15].Value = (Convert.ToInt16(parameterForm2[15].Value) | 4).ToString(); } else { parameterForm2[15].Value = (Convert.ToInt16(parameterForm2[15].Value) & 27).ToString(); } } // wenn es gleich dem PIC wert ist -> wieder grün //Hier die Idee der Farbdarstellung: //schwarz: wenn noch keine Daten gelesen wurden (dh nicht so wie jetzt wo die Werte ja rot werden und beim Initialwert grün) //orange: wenn Pic schon gelesen wurde und die Werte ungeleich den Werten des PICs sind //grün: wenn Pic gelesen wurde und die Werte gleich dem PIC sind //rot: wenn Pic geschrieben wurde und die Werte nach nochmaligem lesen nicht gleich sind // wenn pic noch nicht gelesen wurde ist Chapter leer if (parameterPic2[15].Chapter == "ChannelSet") { // wenn pic schon gelesen wurde ist ein Vergleich notwendig if ((Convert.ToInt16(parameterForm2[15].Value) & 4) == (Convert.ToInt16(parameterPic2[15].Value) & 4)) { feld.ForeColor = Color.Green; } // wenn wert nicht mit PIC ident else { // wird das Feld beim schreiben upgedatet dann ist das Feld bei fehler rot if (mainForm.writeUpdate == true) { feld.ForeColor = Color.Red; } else { feld.ForeColor = Color.Orange; } } } else // dann wird feld auf black gesetzt { feld.ForeColor = Color.Black; } break; case "bit32CheckBox": if (mainForm.writeUpdate == false) { if (feld.Checked == true) { parameterForm2[15].Value = (Convert.ToInt16(parameterForm2[15].Value) | 8).ToString(); } else { parameterForm2[15].Value = (Convert.ToInt16(parameterForm2[15].Value) & 23).ToString(); } } // wenn es gleich dem PIC wert ist -> wieder grün //Hier die Idee der Farbdarstellung: //schwarz: wenn noch keine Daten gelesen wurden (dh nicht so wie jetzt wo die Werte ja rot werden und beim Initialwert grün) //orange: wenn Pic schon gelesen wurde und die Werte ungeleich den Werten des PICs sind //grün: wenn Pic gelesen wurde und die Werte gleich dem PIC sind //rot: wenn Pic geschrieben wurde und die Werte nach nochmaligem lesen nicht gleich sind // wenn pic noch nicht gelesen wurde ist Chapter leer if (parameterPic2[15].Chapter == "ChannelSet") { // wenn pic schon gelesen wurde ist ein Vergleich notwendig if ((Convert.ToInt16(parameterForm2[15].Value) & 8) == (Convert.ToInt16(parameterPic2[15].Value) & 8)) { feld.ForeColor = Color.Green; } // wenn wert nicht mit PIC ident else { // wird das Feld beim schreiben upgedatet dann ist das Feld bei fehler rot if (mainForm.writeUpdate == true) { feld.ForeColor = Color.Red; } else { feld.ForeColor = Color.Orange; } } } else // dann wird feld auf black gesetzt { feld.ForeColor = Color.Black; } break; case "bit42CheckBox": if (mainForm.writeUpdate == false) { if (feld.Checked == true) { parameterForm2[15].Value = (Convert.ToInt16(parameterForm2[15].Value) | 16).ToString(); } else { parameterForm2[15].Value = (Convert.ToInt16(parameterForm2[15].Value) & 15).ToString(); } } // wenn es gleich dem PIC wert ist -> wieder grün //Hier die Idee der Farbdarstellung: //schwarz: wenn noch keine Daten gelesen wurden (dh nicht so wie jetzt wo die Werte ja rot werden und beim Initialwert grün) //orange: wenn Pic schon gelesen wurde und die Werte ungeleich den Werten des PICs sind //grün: wenn Pic gelesen wurde und die Werte gleich dem PIC sind //rot: wenn Pic geschrieben wurde und die Werte nach nochmaligem lesen nicht gleich sind // wenn pic noch nicht gelesen wurde ist Chapter leer if (parameterPic2[15].Chapter == "ChannelSet") { // wenn pic schon gelesen wurde ist ein Vergleich notwendig if ((Convert.ToInt16(parameterForm2[15].Value) & 16) == (Convert.ToInt16(parameterPic2[15].Value) & 16)) { feld.ForeColor = Color.Green; } // wenn wert nicht mit PIC ident else { // wird das Feld beim schreiben upgedatet dann ist das Feld bei fehler rot if (mainForm.writeUpdate == true) { feld.ForeColor = Color.Red; } else { feld.ForeColor = Color.Orange; } } } else // dann wird feld auf black gesetzt { feld.ForeColor = Color.Black; } break; } } }
/// <summary> /// Starten der Testabfragen /// </summary> /// <param name="mainForm"></param> public void testSoftware(FormMain mainForm) { //sp.Close(); // übergabe der Connection klasse TestSoftware testSoftware = new TestSoftware(mainForm, this); if (testSoftware.errorFlag == false) { testSoftware.ShowDialog(); } }
/// <summary> /// Laden einer Konfigurationsdatei /// </summary> /// <param name="pfad"></param> /// <param name="mainForm"></param> public void laden(string pfad, FormMain mainForm) { // try / catch wenn fehler beim öffnen oder interpretieren der datei try { IniReader iniReader = new IniReader(pfad); // log schreiben bei debug Log.write(mainForm, "Load Parameterset: " + pfad, 1); ParameterSetsStruc[] registers = iniReader.GetChapter("ChannelSet"); // alle Felder auf rot setzen updateForm(registers, mainForm); } catch (Exception e) { MessageBox.Show(e.ToString(), "Error!", MessageBoxButtons.OK, MessageBoxIcon.Error); Log.write(mainForm, "Wrong Parameter File!", 0); } }
/// <summary> /// SChreiben der Parameter für Funktion writeParameter /// </summary> /// <param name="mainForm"></param> /// <param name="value"></param> private bool parameterWrite(FormMain mainForm, ParameterSets.ParameterSetsStruc value) { mainForm.Cursor = Cursors.WaitCursor; try { string temp; //sp.Write("M"); // nur ein Write hatte nicht zuverlässig funktioniert // für ein write müsste das readline durch read ersetzt und anders ausgewertet werden sp.WriteLine("M"); // log über sendekey if (Properties.Settings.Default.logLevel > 0) { Log.write(mainForm, "send: \"M\" for Parameter: " + Convert.ToInt16(value.Command.Substring(9)).ToString("00"), 1); } //***** TONY Thread.Sleep(Properties.Settings.Default.iReadSleep); temp = sp.ReadLine(); // alle inputs durchgehen //while (temp != ">M\r") // hier auf Parameter warten - es ist sonst immer zu einem timeout gekommen while (temp != "Register ") { //***** TONY Thread.Sleep(Properties.Settings.Default.iReadSleep); temp = sp.ReadLine(); // log schreiben wenn debuglevel if (Properties.Settings.Default.logLevel > 0) { Log.write(mainForm, temp + "first write M", 1); } } // default sleep - seit Version 3.15 notwendig :-( Thread.Sleep(10); ////Hier der Code für ein write ////sp.WriteLine(Convert.ToInt16(value.Command.Substring(9)).ToString("00")); ////temp = sp.ReadLine(); ////while (temp != (Convert.ToInt16(value.Command.Substring(9)).ToString("00") + " = ")) ////{ //// temp = sp.ReadLine(); //// // log schreiben wenn debuglevel //// if (Properties.Settings.Default.logLevel > 0) //// { //// Log.write(mainForm, temp, 1); //// } ////} ////sp.WriteLine(Convert.ToInt16(value.Value).ToString("00")); // schreiben auf einmal if (Properties.Settings.Default.logLevel > 0) { Log.write(mainForm, value.Command.Substring(9).ToString() + " = " + value.Value, 1); } sp.Write(Convert.ToInt16(value.Command.Substring(9)).ToString("00")); // default sleep - seit Version 3.15 notwendig :-( Thread.Sleep(10); if (Properties.Settings.Default.logLevel > 0) { Log.write(mainForm, "Write: " + Convert.ToInt16(value.Command.Substring(9)).ToString("00").ToString(), 1); } sp.Write(Convert.ToInt16(value.Value).ToString("00")); if (Properties.Settings.Default.logLevel > 0) { Log.write(mainForm, "Write: " + Convert.ToInt16(value.Value).ToString("00").ToString(), 1); } //***** TONY Thread.Sleep(Properties.Settings.Default.iReadSleep); // default sleep - seit Version 3.15 notwendig :-( Thread.Sleep(10); temp = sp.ReadLine(); if (temp != Convert.ToInt16(value.Command.Substring(9)).ToString("00") + " = " + Convert.ToInt16(value.Value).ToString("00") + "\r") { throw (new Exception()); } ////Hier der Code für ein write ////while (temp != ">") ////{ //// temp = sp.ReadLine(); //// // log schreiben wenn debuglevel //// if (Properties.Settings.Default.logLevel > 0) //// { //// Log.write(mainForm, temp, 1); //// } ////} // log über sendekey Log.write(mainForm, (labels.GetString("writeParameter") + Convert.ToInt16(value.Command.Substring(9)).ToString("00") + " = " + Convert.ToInt16(value.Value).ToString("00")), 0); // Progressbar hochzählen mainForm.toolStripProgressBar.Increment(4); // Infotext in status schreiben mainForm.infoleisteToolStripStatusLabel.Text = labels.GetString("writeParameter") + Convert.ToInt16(value.Command.Substring(9)).ToString("00") + " = " + Convert.ToInt16(value.Value).ToString("00"); Application.DoEvents(); mainForm.Cursor = Cursors.Default; return true; } catch (Exception e) { MessageBox.Show(errorLabels.GetString("askPic"), "Error!", MessageBoxButtons.OK, MessageBoxIcon.Error); Log.write(mainForm, e.ToString() + "\r\nTest Return from Pic", 1); mainForm.Cursor = Cursors.Default; return false; } }
/// <summary> /// allgemeine Funktion die von jedem Steuerelement aufgerufen werden kann /// </summary> /// <param name="mainForm"></param> public static void info(FormMain mainForm) { // RollAchse Hilfe // Setting 1 if (mainForm.rollProp1NumericUpDown.Focused) mainForm.infoTextBox.Text = mainForm.help.GetString("Proportional"); if (mainForm.rollDiff1NumericUpDown.Focused) mainForm.infoTextBox.Text = mainForm.help.GetString("Differenzial"); if (mainForm.rollInt1NumericUpDown.Focused) mainForm.infoTextBox.Text = mainForm.help.GetString("Integral"); if (mainForm.rollLimit1NumericUpDown.Focused) mainForm.infoTextBox.Text = mainForm.help.GetString("Limiter"); if (mainForm.rollIntLimit1NumericUpDown.Focused) mainForm.infoTextBox.Text = mainForm.help.GetString("IntegralLimiter"); if (mainForm.rollMa1NumericUpDown.Focused) mainForm.infoTextBox.Text = mainForm.help.GetString("EbenenAusgleich"); if (mainForm.rollA1NumericUpDown.Focused) mainForm.infoTextBox.Text = mainForm.help.GetString("Neutral"); //Setting 2 if (mainForm.rollProp2NumericUpDown.Focused) mainForm.infoTextBox.Text = mainForm.help.GetString("Proportional"); if (mainForm.rollDiff2NumericUpDown.Focused) mainForm.infoTextBox.Text = mainForm.help.GetString("Differenzial"); if (mainForm.rollInt2NumericUpDown.Focused) mainForm.infoTextBox.Text = mainForm.help.GetString("Integral"); if (mainForm.rollLimit2NumericUpDown.Focused) mainForm.infoTextBox.Text = mainForm.help.GetString("Limiter"); if (mainForm.rollIntLimit2NumericUpDown.Focused) mainForm.infoTextBox.Text = mainForm.help.GetString("IntegralLimiter"); if (mainForm.rollMa2NumericUpDown.Focused) mainForm.infoTextBox.Text = mainForm.help.GetString("EbenenAusgleich"); if (mainForm.rollA2NumericUpDown.Focused) mainForm.infoTextBox.Text = mainForm.help.GetString("Neutral"); // NickAchse Hilfe // Setting 1 if (mainForm.nickProp1NumericUpDown.Focused) mainForm.infoTextBox.Text = mainForm.help.GetString("Proportional"); if (mainForm.nickDiff1NumericUpDown.Focused) mainForm.infoTextBox.Text = mainForm.help.GetString("Differenzial"); if (mainForm.nickInt1NumericUpDown.Focused) mainForm.infoTextBox.Text = mainForm.help.GetString("Integral"); if (mainForm.nickLimit1NumericUpDown.Focused) mainForm.infoTextBox.Text = mainForm.help.GetString("Limiter"); if (mainForm.nickIntLimit1NumericUpDown.Focused) mainForm.infoTextBox.Text = mainForm.help.GetString("IntegralLimiter"); if (mainForm.nickMa1NumericUpDown.Focused) mainForm.infoTextBox.Text = mainForm.help.GetString("EbenenAusgleich"); if (mainForm.nickA1NumericUpDown.Focused) mainForm.infoTextBox.Text = mainForm.help.GetString("Neutral"); // Setting 2 if (mainForm.nickProp2NumericUpDown.Focused) mainForm.infoTextBox.Text = mainForm.help.GetString("Proportional"); if (mainForm.nickDiff2NumericUpDown.Focused) mainForm.infoTextBox.Text = mainForm.help.GetString("Differenzial"); if (mainForm.nickInt2NumericUpDown.Focused) mainForm.infoTextBox.Text = mainForm.help.GetString("Integral"); if (mainForm.nickLimit2NumericUpDown.Focused) mainForm.infoTextBox.Text = mainForm.help.GetString("Limiter"); if (mainForm.nickIntLimit2NumericUpDown.Focused) mainForm.infoTextBox.Text = mainForm.help.GetString("IntegralLimiter"); if (mainForm.nickMa2NumericUpDown.Focused) mainForm.infoTextBox.Text = mainForm.help.GetString("EbenenAusgleich"); if (mainForm.nickA2NumericUpDown.Focused) mainForm.infoTextBox.Text = mainForm.help.GetString("Neutral"); // GierAchse Hilfe // Setting 1 if (mainForm.gierProp1NumericUpDown.Focused) mainForm.infoTextBox.Text = mainForm.help.GetString("Proportional"); if (mainForm.gierDiff1NumericUpDown.Focused) mainForm.infoTextBox.Text = mainForm.help.GetString("Differenzial"); if (mainForm.gierInt1NumericUpDown.Focused) mainForm.infoTextBox.Text = mainForm.help.GetString("Integral"); if (mainForm.gierLimit1NumericUpDown.Focused) mainForm.infoTextBox.Text = mainForm.help.GetString("Limiter"); if (mainForm.gierIntLimit1NumericUpDown.Focused) mainForm.infoTextBox.Text = mainForm.help.GetString("IntegralLimiter"); if (mainForm.gierMa1NumericUpDown.Focused) mainForm.infoTextBox.Text = mainForm.help.GetString("EbenenAusgleich"); if (mainForm.gierA1NumericUpDown.Focused) mainForm.infoTextBox.Text = mainForm.help.GetString("Neutral"); // Setting 2 if (mainForm.gierProp2NumericUpDown.Focused) mainForm.infoTextBox.Text = mainForm.help.GetString("Proportional"); if (mainForm.gierDiff2NumericUpDown.Focused) mainForm.infoTextBox.Text = mainForm.help.GetString("Differenzial"); if (mainForm.gierInt2NumericUpDown.Focused) mainForm.infoTextBox.Text = mainForm.help.GetString("Integral"); if (mainForm.gierLimit2NumericUpDown.Focused) mainForm.infoTextBox.Text = mainForm.help.GetString("Limiter"); if (mainForm.gierIntLimit2NumericUpDown.Focused) mainForm.infoTextBox.Text = mainForm.help.GetString("IntegralLimiter"); if (mainForm.gierMa2NumericUpDown.Focused) mainForm.infoTextBox.Text = mainForm.help.GetString("EbenenAusgleich"); if (mainForm.gierA2NumericUpDown.Focused) mainForm.infoTextBox.Text = mainForm.help.GetString("Neutral"); // Sonstiges // Setting 1 if (mainForm.bit01CheckBox.Focused) mainForm.infoTextBox.Text = mainForm.help.GetString("XModus"); if (mainForm.bit11CheckBox.Focused) mainForm.infoTextBox.Text = mainForm.help.GetString("GasKanal"); if (mainForm.bit21CheckBox.Focused) mainForm.infoTextBox.Text = mainForm.help.GetString("Integrierzustand"); if (mainForm.bit31CheckBox.Focused) mainForm.infoTextBox.Text = mainForm.help.GetString("HalbRollNick"); if (mainForm.bit41CheckBox.Focused) mainForm.infoTextBox.Text = mainForm.help.GetString("EmpfaengerImpulse"); if (mainForm.impulseAusgabe1NumericUpDown.Focused) mainForm.infoTextBox.Text = mainForm.help.GetString("Impuls"); if (mainForm.leerlaufgas1NumericUpDown.Focused) mainForm.infoTextBox.Text = mainForm.help.GetString("Leerlaufgas"); if (mainForm.kamera1NumericUpDown.Focused || mainForm.kameraRoll1NumericUpDown.Focused) mainForm.infoTextBox.Text = mainForm.help.GetString("Kameraausgleich"); if (mainForm.compass1NumericUpDown.Focused) mainForm.infoTextBox.Text = mainForm.help.GetString("Kompass"); if (mainForm.akku1NumericUpDown.Focused) mainForm.infoTextBox.Text = mainForm.help.GetString("Unterspannung"); if (mainForm.baroTemp1NumericUpDown.Focused) mainForm.infoTextBox.Text = mainForm.help.GetString("baroTemp"); if (mainForm.baro1NumericUpDown.Focused) mainForm.infoTextBox.Text = mainForm.help.GetString("baro"); if (mainForm.baroInt1NumericUpDown.Focused) mainForm.infoTextBox.Text = mainForm.help.GetString("baroDif"); // Setting 2 if (mainForm.bit02CheckBox.Focused) mainForm.infoTextBox.Text = mainForm.help.GetString("XModus"); if (mainForm.bit12CheckBox.Focused) mainForm.infoTextBox.Text = mainForm.help.GetString("GasKanal"); if (mainForm.bit22CheckBox.Focused) mainForm.infoTextBox.Text = mainForm.help.GetString("Integrierzustand"); if (mainForm.bit32CheckBox.Focused) mainForm.infoTextBox.Text = mainForm.help.GetString("HalbRollNick"); if (mainForm.bit42CheckBox.Focused) mainForm.infoTextBox.Text = mainForm.help.GetString("EmpfaengerImpulse"); if (mainForm.impulseAusgabe2NumericUpDown.Focused) mainForm.infoTextBox.Text = mainForm.help.GetString("Impuls"); if (mainForm.leerlaufgas2NumericUpDown.Focused) mainForm.infoTextBox.Text = mainForm.help.GetString("Leerlaufgas"); if (mainForm.kamera2NumericUpDown.Focused || mainForm.kameraRoll2NumericUpDown.Focused) mainForm.infoTextBox.Text = mainForm.help.GetString("Kameraausgleich"); if (mainForm.compass2NumericUpDown.Focused) mainForm.infoTextBox.Text = mainForm.help.GetString("Kompass"); if (mainForm.akku2NumericUpDown.Focused) mainForm.infoTextBox.Text = mainForm.help.GetString("Unterspannung"); if (mainForm.baro2NumericUpDown.Focused) mainForm.infoTextBox.Text = mainForm.help.GetString("baro"); if (mainForm.baroInt2NumericUpDown.Focused) mainForm.infoTextBox.Text = mainForm.help.GetString("baroDif"); if (mainForm.baroTemp2NumericUpDown.Focused) mainForm.infoTextBox.Text = mainForm.help.GetString("baroTemp"); }