Exemple #1
0
        /// <summary>
        /// Diese Funktion übergibt Tabellenwerte zurück an das SPSController-Objekt und triggert die Funktion zum Schreiben des Buffers zurück auf die SPS.
        /// </summary>
        /// <param name="listx"></param>
        /// <param name="listy"></param>
        private void Write_XYList(ListView listx, ListView listy)
        {
            ListViewItem[] itemBufferX = new ListViewItem[xylist_size]; //Arrays zum Speichern der Listenelemente
            ListViewItem[] itemBufferY = new ListViewItem[xylist_size];

            listx.Items.CopyTo(itemBufferX, 0); //Kopiert Inhalt der Liste in Array
            listy.Items.CopyTo(itemBufferY, 0);

            for (int i = 0; i < xylist_size; i++) //Schreibt die Tabellenwerte in den Short-Buffer(w_XKoor, w_YKoor) des SPSController Objekts
            {
                SPSController.WriteX(short.Parse(itemBufferX[i].Text), i);
                SPSController.WriteY(short.Parse(itemBufferY[i].Text), i);
            }

            if (SPSController.WriteDBentry(productlist.SelectedIndex) == 0)
            {
                SendToConsole("Schreiben erfolgreich.\n");
                SPSController.ReadDBEntry(productlist.SelectedIndex);
            }
            else
            {
                SendToConsole("Fehler beim Schreiben!\n");
                this.consoleOutput.BackColor = Color.Red;
            }

            Init_XYLists();
        }
Exemple #2
0
        /// <summary>
        /// Wird vom Timer aufgerufen, liest und zeichnet live die aktuellen Koordinaten der Düsen und Metadaten (Hersteller etc.)
        /// </summary>
        private void RedrawLiveNozzle()
        {
            //Daten holen
            SPSController.ReadLiveData();

            //Daten in Graph zeichnen
            Series livedot = new Series("Düse");
            short  xlive, ylive;


            if (!back)
            {
                xlive = SPSController.X_Live_Links;
                ylive = SPSController.Y_Live_Links;

                livedot.Points.AddXY(xlive, ylive);
                livedot.ChartType = SeriesChartType.Line;

                chart1.Series.Remove(livedot);
                chart1.Series.Add(livedot);

                //Düse Links
                chart1.Series[chart1.Series.Count - 1].MarkerStyle = MarkerStyle.Cross;
                chart1.Series[chart1.Series.Count - 1].MarkerSize  = 15;
                chart1.Series[chart1.Series.Count - 1].Color       = Color.Black;
            }
            else
            {
                xlive = SPSController.X_Live_Rechts;
                ylive = SPSController.Y_Live_Rechts;

                livedot.Points.AddXY(xlive, ylive);
                livedot.ChartType = SeriesChartType.Line;

                chart1.Series.Remove(livedot);
                chart1.Series.Add(livedot);

                //Düse Rechts
                chart1.Series[chart1.Series.Count - 1].MarkerStyle = MarkerStyle.Cross;
                chart1.Series[chart1.Series.Count - 1].MarkerSize  = 15;
                chart1.Series[chart1.Series.Count - 1].Color       = Color.DarkViolet;
            }

            //Markiere bereits abgearbeitete Punkte in der Liste
            int i      = 0;
            int margin = 10;

            foreach (DataPoint xy in chart1.Series[0].Points)
            {
                if (Math.Abs(xlive - xy.XValue) < margin && Math.Abs(ylive - xy.YValues[0]) < margin)
                {
                    pointsPassed[i] = true;
                    //DrawListMarks();
                }
                i++;
            }
        }
Exemple #3
0
        /// <summary>
        /// Spielt ein gespeichertes Backup nach Auswahl wieder ein.
        /// </summary>
        public void RestoreLists(string restorefile, BackupRestoreGUI restoreWindow)
        {
            restoreWindow.Close();

            try
            {
                this.backupprogress.Visible = true;
                this.selectionBox.Enabled   = false; // Deaktiviere Bedienelemente
                this.coorBox.Enabled        = false;

                XmlDocument xmlDoc = new XmlDocument();
                xmlDoc.Load(GetBackupDirectory() + restorefile);

                XmlNode root = xmlDoc.SelectSingleNode("/Produkte");

                XmlNodeList produkte = root.ChildNodes;

                for (int i = 0; i < produkte.Count; i++)
                {
                    XmlNode produkt = produkte[i];

                    for (int j = 0; j < xylist_size; j++)
                    {
                        short xval = Int16.Parse(produkt.SelectSingleNode("X" + j).InnerText);
                        short yval = Int16.Parse(produkt.SelectSingleNode("Y" + j).InnerText);

                        SPSController.WriteX(xval, j);
                        SPSController.WriteY(yval, j);

                        //Console.WriteLine(xval + " " + yval + "\n");
                    }
                    SPSController.WriteDBentry(i);
                    this.backupprogress.PerformStep();
                }
                SendToConsole(restorefile + " wiederhergestellt!");
            }
            catch (NullReferenceException e)
            {
                MessageBox.Show(e.Message.ToString() + "Die gelesene Anzahl Einträge stimmt nicht mit der erwarteten Menge überein!");
                SendToConsole("Fehler beim Einspielen des Backups!\n Bitte manuell auslesen ");
            }
            SPSController.ReadDBEntry(productlist.SelectedIndex);
            Init_XYLists();
            this.backupprogress.Visible = false;
            this.backupprogress.Value   = 0;
            this.selectionBox.Enabled   = true; // Deaktiviere Bedienelemente
            this.coorBox.Enabled        = true;
        }
Exemple #4
0
        /// <summary>
        /// Erstellt neue XY-Listen aus den XY-Koordinaten die momentan im Backend gespeichert wurden.
        /// </summary>
        private void Init_XYLists()
        {
            Clear_XYLists();                      // Listen leeren um sie neu zu befüllen.

            for (int i = 0; i < xylist_size; i++) //Liest Koordianten aus SPSController in Tabellen ein
            {
                //Ist
                xis_list.Items.Add(new ListViewItem(String.Format("{0}", SPSController.GetXVal(i)), 0));
                yis_list.Items.Add(new ListViewItem(String.Format("{0}", SPSController.GetYVal(i)), 0));

                //Soll
                xtar_list.Items.Add(new ListViewItem(String.Format("{0}", SPSController.GetXVal(i)), 0));
                ytar_list.Items.Add(new ListViewItem(String.Format("{0}", SPSController.GetYVal(i)), 0));
            }
            cnt_label.Text = "Punkte: " + SPSController.CountXY.ToString();
        }
Exemple #5
0
        /// <summary>
        /// Schreibt ein aktuelles Backup in einem seperaten Ordner auf Höhe der .exe-Datei
        /// </summary>
        private void BackupLists(bool auto = false)
        {
            string filepath = "";

            if (products.Count > 0) //Backup wird nur ausgeführt wenn Produktliste gefüllt
            {
                //------------------Excel-Backup------------------//
                if (this.excel_checkbox.Checked)
                {
                    this.backupprogress.Visible = true;  //Zeige Ladebalken
                    this.selectionBox.Enabled   = false; // Deaktiviere Bedienelemente
                    this.coorBox.Enabled        = false;

                    //Neue Excel Mappe anlegen
                    Microsoft.Office.Interop.Excel.Application excelapp = new Microsoft.Office.Interop.Excel.Application();
                    excelapp.ScreenUpdating = false; //Neuzeichnen deaktivieren
                    Microsoft.Office.Interop.Excel.Workbook  map  = excelapp.Workbooks.Add();
                    Microsoft.Office.Interop.Excel.Worksheet page = map.Worksheets[1];

                    page.Name = "Backupdaten";

                    int index = 0;

                    for (int i = 0; i < products.Count; i++)
                    {
                        index = i * 33;

                        page.Cells[(index) + 1, 1].Value = productlist.Items[i].ToString(); // Produktbezeichner

                        SPSController.ReadDBEntry(i);
                        for (int j = 0; j < xylist_size; j++) // Koordianten
                        {
                            page.Cells[index + j + 2, 1].Value = SPSController.GetXVal(j);
                            page.Cells[index + j + 2, 2].Value = SPSController.GetYVal(j);
                        }
                        this.backupprogress.PerformStep();                //Step Progressbar
                    }
                    SPSController.ReadDBEntry(productlist.SelectedIndex); //Zurücksetzen auf ausgewählten Eintrag

                    filepath = GetFilepathWithDate();
                    map.SaveAs(filepath + ".xlsx");
                    map.Close();
                    excelapp.ScreenUpdating = true; //Neuzeichnen aktivieren
                    excelapp.Quit();

                    FileInfo exfi = new FileInfo(filepath + ".xlsx");
                    exfi.IsReadOnly = true; //Setze Schreibschutz für Datei

                    lastExcelBackupPath       = filepath;
                    this.backupprogress.Value = 0;

                    SendToConsole("Excel-Backupdatei erstellt");
                }

                //------------------XML-Backup------------------//

                this.backupprogress.Visible = true;  //Zeige Ladebalken
                this.selectionBox.Enabled   = false; // Deaktiviere Bedienelemente
                this.coorBox.Enabled        = false;

                XmlDocument xmlDoc       = new XmlDocument();
                XmlNode     produktliste = xmlDoc.CreateElement("Produkte"); // Root-Node
                xmlDoc.AppendChild(produktliste);

                int k = 0;
                foreach (string entry in products)
                {
                    SPSController.ReadDBEntry(k);

                    XmlNode produkt = xmlDoc.CreateElement(entry);
                    produktliste.AppendChild(produkt);

                    for (int l = 0; l < xylist_size; l++) //X-Koordianten schreiben
                    {
                        XmlNode coor = xmlDoc.CreateElement("X" + l.ToString());
                        coor.InnerText = SPSController.GetXVal(l).ToString();
                        produkt.AppendChild(coor);
                    }

                    for (int l = 0; l < xylist_size; l++) //Y-Koordianten schreiben
                    {
                        XmlNode coor = xmlDoc.CreateElement("Y" + l.ToString());
                        coor.InnerText = SPSController.GetYVal(l).ToString();
                        produkt.AppendChild(coor);
                    }

                    k++;
                    this.backupprogress.PerformStep(); //Step Progressbar
                }
                filepath = GetFilepathWithDate(auto);
                xmlDoc.Save(filepath + ".xml");

                FileInfo xmlfi = new FileInfo(filepath + ".xml");
                xmlfi.IsReadOnly = true;                              //Setze Schreibschutz für Datei

                this.backupprogress.Visible = false;                  //Verstecke Ladebalken
                this.backupprogress.Value   = 0;
                this.selectionBox.Enabled   = true;                   // Aktiviere Bedienelemente
                this.coorBox.Enabled        = true;
                SPSController.ReadDBEntry(productlist.SelectedIndex); //Zurücksetzen auf ausgewählten Eintrag

                SendToConsole(auto ? "Automatisches XML-Backup erstellt\n" : "XML-Backup erstellt\n");

                LastBackupDate(); //Aktuelisiert die Anzeige des letzten Backup Datums
            }
            else
            {
                SendToConsole("Backup kann nicht erstellt werden:\n Keine Einträge in Produktliste!\n");
            }
        }