Пример #1
0
        /// <summary>Export error ring data to a CSV file</summary>
        /// <param name="Filename">Target file name</param>
        /// <param name="protocol">Reference to protocol to connected ECU</param>
        public void CsvExport(string Filename, ref ProtocolBase protocol)
        {
            System.IO.StreamWriter writer = new System.IO.StreamWriter(Filename, false);
            string _ProgDate = "";

            if (protocol.LocalTime)
            {
                _ProgDate = protocol.DateOfProgramming.ToLocalTime().ToString("dd.MM.yyyy HH:mm");
            }
            else
            {
                _ProgDate = protocol.DateOfProgramming.ToUniversalTime().ToString("dd.MM.yyyy HH:mm UTC");
            }
            //
            string header = String.Format("Production date: {0} SN: {1} HW:V{2}.{3}.{4} SW:V{5}.{6}.{7} CFG:V{8}.{9}.{10}",
                                          _ProgDate,
                                          protocol.SerialNumber,
                                          protocol.HardwareVersion.Hauptversion,
                                          protocol.HardwareVersion.Nebenversion,
                                          protocol.HardwareVersion.Revision,
                                          protocol.SoftwareVersion.Hauptversion,
                                          protocol.SoftwareVersion.Nebenversion,
                                          protocol.SoftwareVersion.Revision,
                                          protocol.ConfigurationVersion.Hauptversion,
                                          protocol.ConfigurationVersion.Nebenversion,
                                          protocol.ConfigurationVersion.Revision

                                          );

            writer.WriteLine(header);

            string title = String.Format("\"Datum/Zeit\"{0}\"Task No.\"{0}\"Lfd. No.\"{0}\"Fehler No.\"{0}\"Fehlername\"{0}\"Fehler/Ereignis\"{0}\"Zustand\"{0}\"Name 1\"{0}\"Wert 1\"{0}\"Einheit 1\"{0}\"Name 2\"{0}\"Wert 2\"{0}\"Einheit 2\"{0}\"Name 3\"{0}\"Wert 3\"{0}\"Einheit 3\"",
                                         System.Globalization.CultureInfo.CurrentCulture.TextInfo.ListSeparator);

            writer.WriteLine(title);

            string _row_start = "";
            string _row_tail  = "";

            for (int item = 0; item < mItem.Length; item++)
            {
                if (protocol.LocalTime)
                {
                    _ProgDate = mItem[item].Date.ToLocalTime().ToString("dd.MM.yyyy HH:mm");
                }
                else
                {
                    _ProgDate = mItem[item].Date.ToUniversalTime().ToString("dd.MM.yyyy HH:mm UTC");
                }
                _row_start = String.Format("\"{1}\"{0}{2}{0}{3}{0}{4}{0}\"{5}\"{0}\"{6}\"",
                                           System.Globalization.CultureInfo.CurrentCulture.TextInfo.ListSeparator,
                                           _ProgDate,
                                           mItem[item].TaskId,
                                           mItem[item].LfdNo,
                                           mItem[item].ErrorNo,
                                           protocol.GetErrorName(mItem[item].ErrorNo),
                                           protocol.IsEventOrError(mItem[item].ErrorNo) ? "Event" : "Fehler");

                if (mItem[item].TaskId == 255)
                {
                    // Verhalten aenderung
                    _row_tail = String.Format("{0}\"aktiv\"{0}\"Intern\"{0}\"{1}\"",
                                              System.Globalization.CultureInfo.CurrentCulture.TextInfo.ListSeparator,
                                              mItem[item].Wert1);
                }
                else
                {
                    // Fehler / Event aufgetreten
                    if (mItem[item].ErrorNo > 63)
                    {
                        _row_tail = String.Format("{0}\"sporadisch\"{0}\"\"{0}\"{1}\"{0}\"\"{0}\"\"{0}\"{2}\"{0}\"\"{0}\"\"{0}\"{3}\"{0}\"\"",
                                                  System.Globalization.CultureInfo.CurrentCulture.TextInfo.ListSeparator,
                                                  mItem[item].Wert1, mItem[item].Wert2, mItem[item].Wert3);
                    }
                    else
                    {
                        _row_tail = String.Format("{0}\"sporadisch\"{0}\"{1}\"{0}\"{2}\"{0}\"{3}\"{0}\"{4}\"{0}\"{5}\"{0}\"{6}\"{0}\"{7}\"{0}\"{8}\"{0}\"{9}\"",
                                                  System.Globalization.CultureInfo.CurrentCulture.TextInfo.ListSeparator,
                                                  protocol.GetValueName(protocol.GetValuePosition(protocol.ErrorRingFigure(mItem[item].ErrorNo, 0))),
                                                  protocol.GetValueString(protocol.GetValuePosition(protocol.ErrorRingFigure(mItem[item].ErrorNo, 0)), mItem[item].Wert1),
                                                  protocol.GetValueUnit(protocol.GetValuePosition(protocol.ErrorRingFigure(mItem[item].ErrorNo, 0))),
                                                  protocol.GetValueName(protocol.GetValuePosition(protocol.ErrorRingFigure(mItem[item].ErrorNo, 1))),
                                                  protocol.GetValueString(protocol.GetValuePosition(protocol.ErrorRingFigure(mItem[item].ErrorNo, 1)), mItem[item].Wert2),
                                                  protocol.GetValueUnit(protocol.GetValuePosition(protocol.ErrorRingFigure(mItem[item].ErrorNo, 1))),
                                                  protocol.GetValueName(protocol.GetValuePosition(protocol.ErrorRingFigure(mItem[item].ErrorNo, 2))),
                                                  protocol.GetValueString(protocol.GetValuePosition(protocol.ErrorRingFigure(mItem[item].ErrorNo, 2)), mItem[item].Wert3),
                                                  protocol.GetValueUnit(protocol.GetValuePosition(protocol.ErrorRingFigure(mItem[item].ErrorNo, 2))));
                    }
                }
                writer.WriteLine(String.Format("{0}{1}", _row_start, _row_tail));
            }
            writer.Close();
        }
Пример #2
0
        /// <summary>Export error ring data to a XML file</summary>
        /// <param name="Filename">Target file name</param>
        /// <param name="protocol">Reference to protocol to connected ECU</param>
        public void XmlExport(string Filename, ref ProtocolBase protocol)
        {
            XmlWriter         xf       = null;
            XmlWriterSettings settings = new XmlWriterSettings();

            settings.OmitXmlDeclaration  = false;
            settings.ConformanceLevel    = ConformanceLevel.Document;
            settings.Encoding            = System.Text.Encoding.UTF8; //"iso-8859-1";
            settings.Indent              = true;
            settings.IndentChars         = "\t";
            settings.NewLineOnAttributes = false;
            try
            {
                xf = XmlWriter.Create(Filename, settings);
                xf.WriteStartElement("err_ring_root");

                xf.WriteStartElement("ECU");
                xf.WriteStartElement("Serialnumber");
                xf.WriteValue(protocol.SerialNumber);
                xf.WriteEndElement(); // S/N
                xf.WriteStartElement("Hardware");
                xf.WriteValue(string.Format("{0}.{1}.{2}", protocol.HardwareVersion.Hauptversion, protocol.HardwareVersion.Nebenversion, protocol.HardwareVersion.Revision));
                xf.WriteEndElement(); // HW V
                xf.WriteStartElement("Software");
                xf.WriteValue(string.Format("{0}.{1}.{2}", protocol.SoftwareVersion.Hauptversion, protocol.SoftwareVersion.Nebenversion, protocol.SoftwareVersion.Revision));
                xf.WriteEndElement(); // SW V
                xf.WriteStartElement("Configuration");
                xf.WriteValue(string.Format("{0}.{1}.{2}", protocol.ConfigurationVersion.Hauptversion, protocol.ConfigurationVersion.Nebenversion, protocol.ConfigurationVersion.Revision));
                xf.WriteEndElement(); // CFG V
                //xf.WriteStartElement("Datamap");
                //xf.WriteValue(string.Format("{0}.{1}.{2}", protocol.DatamapVersion.Hauptversion, protocol.DatamapVersion.Nebenversion, protocol.DatamapVersion.Revision));
                //xf.WriteEndElement(); // KF V
                xf.WriteEndElement(); // ECU

                xf.WriteStartElement("ring_data");
                for (int item = 0; item < mItem.Length; item++)
                {
                    xf.WriteStartElement("item");
                    xf.WriteAttributeString("row", String.Format("{0}", item));

                    xf.WriteStartElement("date");
                    xf.WriteValue(mItem[item].Date);
                    xf.WriteEndElement();

                    xf.WriteStartElement("error_no");
                    xf.WriteValue(mItem[item].ErrorNo);
                    xf.WriteEndElement();

                    xf.WriteStartElement("error_name");
                    xf.WriteValue(protocol.GetErrorName(mItem[item].ErrorNo));
                    xf.WriteEndElement();

                    xf.WriteStartElement("error_type");
                    xf.WriteValue(protocol.IsEventOrError((UInt16)item) ? "Event" : "Fehler");
                    xf.WriteEndElement();

                    if (mItem[item].TaskId == 255)
                    {
                        // Verhalten aenderung
                        xf.WriteStartElement("task");
                        xf.WriteValue(mItem[item].TaskId);
                        xf.WriteEndElement();

                        xf.WriteStartElement("lfd_no");
                        xf.WriteValue(mItem[item].LfdNo);
                        xf.WriteEndElement();

                        xf.WriteStartElement("mask");
                        xf.WriteValue(mItem[item].Wert1);
                        xf.WriteEndElement();
                    }
                    else
                    {
                        // Fehler / Event aufgetreten
                        xf.WriteStartElement("task");
                        xf.WriteValue(mItem[item].TaskId);
                        xf.WriteEndElement();

                        xf.WriteStartElement("lfd_no");
                        xf.WriteValue(mItem[item].LfdNo);
                        xf.WriteEndElement();

                        if (mItem[item].ErrorNo > 63)
                        {
                            xf.WriteStartElement("value_1_value");
                            xf.WriteValue(mItem[item].Wert1);
                            xf.WriteEndElement();

                            xf.WriteStartElement("value_2_value");
                            xf.WriteValue(mItem[item].Wert2);
                            xf.WriteEndElement();

                            xf.WriteStartElement("value_3_value");
                            xf.WriteValue(mItem[item].Wert3);
                            xf.WriteEndElement();
                        }
                        else
                        {
                            xf.WriteStartElement("value_1_name");
                            xf.WriteValue(protocol.GetValueName(protocol.GetValuePosition(protocol.ErrorRingFigure(mItem[item].ErrorNo, 0))));
                            xf.WriteEndElement();

                            xf.WriteStartElement("value_1_value");
                            xf.WriteValue(protocol.GetValueString(protocol.GetValuePosition(protocol.ErrorRingFigure(mItem[item].ErrorNo, 0)), mItem[item].Wert1));
                            xf.WriteEndElement();

                            xf.WriteStartElement("value_1_unit");
                            xf.WriteValue(protocol.GetValueUnit(protocol.GetValuePosition(protocol.ErrorRingFigure(mItem[item].ErrorNo, 0))));
                            xf.WriteEndElement();

                            xf.WriteStartElement("value_2_name");
                            xf.WriteValue(protocol.GetValueName(protocol.GetValuePosition(protocol.ErrorRingFigure(mItem[item].ErrorNo, 1))));
                            xf.WriteEndElement();

                            xf.WriteStartElement("value_2_value");
                            xf.WriteValue(protocol.GetValueString(protocol.GetValuePosition(protocol.ErrorRingFigure(mItem[item].ErrorNo, 1)), mItem[item].Wert2));
                            xf.WriteEndElement();

                            xf.WriteStartElement("value_2_unit");
                            xf.WriteValue(protocol.GetValueUnit(protocol.GetValuePosition(protocol.ErrorRingFigure(mItem[item].ErrorNo, 1))));
                            xf.WriteEndElement();

                            xf.WriteStartElement("value_3_name");
                            xf.WriteValue(protocol.GetValueName(protocol.GetValuePosition(protocol.ErrorRingFigure(mItem[item].ErrorNo, 2))));
                            xf.WriteEndElement();

                            xf.WriteStartElement("value_3_value");
                            xf.WriteValue(protocol.GetValueString(protocol.GetValuePosition(protocol.ErrorRingFigure(mItem[item].ErrorNo, 2)), mItem[item].Wert3));
                            xf.WriteEndElement();

                            xf.WriteStartElement("value_3_unit");
                            xf.WriteValue(protocol.GetValueUnit(protocol.GetValuePosition(protocol.ErrorRingFigure(mItem[item].ErrorNo, 2))));
                            xf.WriteEndElement();
                        }
                    }

                    xf.WriteEndElement(); // item
                }
                xf.WriteEndElement();     // data
                xf.WriteEndElement();     // root
                xf.Flush();
            }
            catch (Exception ex)
            {
                Console.WriteLine("Exception during opening XML file: {0}", ex.Message);
            }
            finally
            {
                xf.Close();
            }
        }