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> /// 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> /// 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; }