Exemple #1
0
        /// <summary>Import one flash block from ECU</summary>
        /// <param name="Data">Referece to target byte array</param>
        /// <param name="protocol">Reference to protocol to connected ECU</param>
        public void ImportSector(ref byte[] Data, ref ProtocolBase protocol)
        {
            if (mRowLength == 0)
            {
                return;
            }
            // parse 1 32-K-Sektor

            //file
            string[] ValueString = new string[1 + (mRowLength - 1) / 2];
            int      FilledData  = 32768 / mRowLength;

            FilledData = FilledData * mRowLength;
            int ItemCount = mItem.Length;

            for (UInt16 ByteInData = 0; ByteInData < FilledData; ByteInData += mRowLength)
            {
                if (mRowLength > 3)
                {
                    // ignore empty or erased items
                    if (((Data[ByteInData] == 0x00) &&
                         (Data[ByteInData + 1] == 0x00) &&
                         (Data[ByteInData + 2] == 0x00) &&
                         (Data[ByteInData + 3] == 0x00) &&
                         (Data[ByteInData + 4] == 0x00))
                        ||
                        ((Data[ByteInData] == 0xFF) &&
                         (Data[ByteInData + 1] == 0xFF) &&
                         (Data[ByteInData + 2] == 0xFF) &&
                         (Data[ByteInData + 3] == 0xFF) &&
                         (Data[ByteInData + 4] == 0xFF)))
                    {
                        // ignore this item
                    }
                    else
                    {
                        Array.Resize(ref mItem, ItemCount + 1);
                        mItem[ItemCount] = new AcquisitionItem();

                        // date time
                        UInt32   MinuteSinceProgramming = (UInt32)(((Data[ByteInData + 2] * 256) + Data[ByteInData + 1]) * 256) + Data[ByteInData];
                        DateTime RowTime = protocol.GetDateTimeFromMinute(MinuteSinceProgramming);
                        // string nach locale zeit?
                        ValueString[0]          = RowTime.ToString(); //.ToString("s");
                        mItem[ItemCount].Row[0] = ValueString[0];
                        //for (int i = 0; i <= ((mRowLength - 1) / 2) - 1; i++)
                        for (int i = 0; i < mHead.Length; i++)
                        {
                            ValueString[i + 1] = protocol.GetValueString(mValuePosition[i],
                                                                         (UInt16)((Data[ByteInData + 4 + (i * 2)] * 256) + Data[ByteInData + 3 + (i * 2)]));
                            mItem[ItemCount].Row[i + 1] = ValueString[i + 1];
                        }
                        ItemCount++;
                    }
                }
            }
        }
Exemple #2
0
        /// <summary>
        /// Get new data from ECU
        /// </summary>
        /// <returns>True on success, false on error, then old data will be available</returns>
        public ReturnValue RefreshValues()
        {
            ReturnValue ret = mProtocol.ReadActualValues(out mReadBuffer);

            if (ret == ReturnValue.NoError)
            {
                for (byte i = 0; i < mValueNumber; i++)
                {
                    UInt16 uiValue = (UInt16)(mReadBuffer[(i * 2) + 1] * 256);
                    uiValue += mReadBuffer[(i * 2)];
                    if (Item[i] == null)
                    {
                        Item[i] = new ActualValueItem();
                    }
                    Item[i].ValueString = mProtocol.GetValueString(i, uiValue);
                }
            }
            return(ret);
        }
Exemple #3
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();
        }
Exemple #4
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();
            }
        }