コード例 #1
0
ファイル: AxisBrowser.cs プロジェクト: ChrisPea/TuningSuites
        public void ShowSymbolCollection(SymbolCollection sc)
        {
            DataTable dt = new DataTable();

            dt.Columns.Add("SYMBOLNAME");
            dt.Columns.Add("DESCRIPTION");
            dt.Columns.Add("XAXIS");
            dt.Columns.Add("XAXISDESCRIPTION");
            dt.Columns.Add("YAXIS");
            dt.Columns.Add("YAXISDESCRIPTION");
            SymbolAxesTranslator sat = new SymbolAxesTranslator();

            SymbolTranslator symtrans   = new SymbolTranslator();
            string           helptext   = string.Empty;
            XDFCategories    cat        = XDFCategories.Undocumented;
            XDFSubCategory   subcat     = XDFSubCategory.Undocumented;
            string           xaxis      = string.Empty;
            string           yaxis      = string.Empty;
            string           xaxisdescr = "";
            string           yaxisdescr = "";
            string           zaxisdescr = "";

            foreach (SymbolHelper sh in sc)
            {
                string name = sh.Varname;
                if (sh.Userdescription != "" && sh.Userdescription != String.Format("Symbolnumber {0}", sh.Symbol_number))
                {
                    name = sh.Userdescription;
                }

                sat.GetAxisSymbols(name, out xaxis, out yaxis, out xaxisdescr, out yaxisdescr, out zaxisdescr);
                string symboldescr = symtrans.TranslateSymbolToHelpText(name, out helptext, out cat, out subcat, m_ApplicationLanguage);
                if (xaxis != "")
                {
                    xaxisdescr = symtrans.TranslateSymbolToHelpText(xaxis, out helptext, out cat, out subcat, m_ApplicationLanguage);
                }
                if (yaxis != "")
                {
                    yaxisdescr = symtrans.TranslateSymbolToHelpText(yaxis, out helptext, out cat, out subcat, m_ApplicationLanguage);
                }
                if (xaxis != "" || yaxis != "")
                {
                    dt.Rows.Add(name, symboldescr, xaxis, xaxisdescr, yaxis, yaxisdescr);
                }
            }
            gridControl1.DataSource = dt;
        }
コード例 #2
0
ファイル: AxisBrowser.cs プロジェクト: ChrisPea/TuningSuites
        public void ShowSymbolCollection(SymbolCollection sc)
        {
            DataTable dt = new DataTable();
            dt.Columns.Add("SYMBOLNAME");
            dt.Columns.Add("DESCRIPTION");
            dt.Columns.Add("XAXIS");
            dt.Columns.Add("XAXISDESCRIPTION");
            dt.Columns.Add("YAXIS");
            dt.Columns.Add("YAXISDESCRIPTION");
            SymbolAxesTranslator sat = new SymbolAxesTranslator();

            SymbolTranslator symtrans = new SymbolTranslator();
            string helptext = string.Empty;
            XDFCategories cat = XDFCategories.Undocumented;
            XDFSubCategory subcat = XDFSubCategory.Undocumented;
            string xaxis = string.Empty;
            string yaxis = string.Empty;
            string xaxisdescr = "";
            string yaxisdescr = "";
            string zaxisdescr = "";
            foreach (SymbolHelper sh in sc)
            {
                string name = sh.Varname;
                if (sh.Userdescription != "" && sh.Userdescription != String.Format("Symbolnumber {0}", sh.Symbol_number))
                {
                    name = sh.Userdescription;
                }

                sat.GetAxisSymbols(name, out xaxis, out yaxis, out xaxisdescr, out yaxisdescr, out zaxisdescr);
                string symboldescr = symtrans.TranslateSymbolToHelpText(name, out helptext, out cat, out subcat, m_ApplicationLanguage);
                if (xaxis != "")
                {
                    xaxisdescr = symtrans.TranslateSymbolToHelpText(xaxis, out helptext, out cat, out subcat, m_ApplicationLanguage);
                }
                if (yaxis != "")
                {
                    yaxisdescr = symtrans.TranslateSymbolToHelpText(yaxis, out helptext, out cat, out subcat, m_ApplicationLanguage);
                }
                if (xaxis != "" || yaxis != "")
                {
                    dt.Rows.Add(name, symboldescr, xaxis, xaxisdescr, yaxis, yaxisdescr);
                }
            }
            gridControl1.DataSource = dt;
        }
コード例 #3
0
ファイル: AxisBrowser.cs プロジェクト: ChrisPea/TuningSuites
        public void ShowSymbolCollection(SymbolCollection sc)
        {
            DataTable dt = new DataTable();

            dt.Columns.Add("SYMBOLNAME");
            dt.Columns.Add("DESCRIPTION");
            dt.Columns.Add("XAXIS");
            dt.Columns.Add("XAXISDESCRIPTION");
            dt.Columns.Add("YAXIS");
            dt.Columns.Add("YAXISDESCRIPTION");
            SymbolAxesTranslator sat      = new SymbolAxesTranslator();
            SymbolTranslator     symtrans = new SymbolTranslator();
            string         helptext       = string.Empty;
            XDFCategories  cat            = XDFCategories.Undocumented;
            XDFSubCategory subcat         = XDFSubCategory.Undocumented;

            foreach (SymbolHelper sh in sc)
            {
                string xaxis       = sat.GetXaxisSymbol(sh.Varname);
                string yaxis       = sat.GetYaxisSymbol(sh.Varname);
                string symboldescr = symtrans.TranslateSymbolToHelpText(sh.Varname, out helptext, out cat, out subcat);
                string xaxisdescr  = "";
                string yaxisdescr  = "";
                if (xaxis != "")
                {
                    xaxisdescr = symtrans.TranslateSymbolToHelpText(xaxis, out helptext, out cat, out subcat);
                }
                if (yaxis != "")
                {
                    yaxisdescr = symtrans.TranslateSymbolToHelpText(yaxis, out helptext, out cat, out subcat);
                }
                if (xaxis != "" || yaxis != "")
                {
                    dt.Rows.Add(sh.Varname, symboldescr, xaxis, xaxisdescr, yaxis, yaxisdescr);
                }
            }
            gridControl1.DataSource = dt;
        }
コード例 #4
0
ファイル: frmMain.cs プロジェクト: mattiasclaesson/T7Suite
 private double GetMapCorrectionFactor(string symbolname)
 {
     double returnvalue = 1;
     try
     {
         SymbolTranslator st = new SymbolTranslator();
         string helptext = string.Empty;
         XDFCategories cat = XDFCategories.Undocumented;
         XDFSubCategory subcat = XDFSubCategory.Undocumented;
         string text = st.TranslateSymbolToHelpText(symbolname, out helptext, out cat, out subcat, m_appSettings.ApplicationLanguage);
         if (helptext.Contains("Resolution is"))
         {
             int idx = helptext.IndexOf("Resolution is");
             idx += 14;
             string value = helptext.Substring(idx).Trim();
             if (value.Contains(" "))
             {
                 int idx2 = value.IndexOf(" ");
                 value = value.Substring(0, idx2);
                 value = ClearToNumber(value);
                 returnvalue = ConvertToDouble(value);
             }
             else
             {
                 value = ClearToNumber(value);
                 returnvalue = ConvertToDouble(value);
             }
         }
     }
     catch (Exception E)
     {
         logger.Debug(E.Message);
     }
     if (returnvalue == 0)
     {
         returnvalue = 1;
         if (symbolname == "KnkSoundRedCal.fi_OffsMap") returnvalue = 0.1;
         else if (symbolname == "IgnE85Cal.fi_AbsMap") returnvalue = 0.1;
         else if (symbolname == "BstKnkCal.OffsetXSP") returnvalue = 0.1;
         //else if (symbolname == "IgnNormCal.Map") returnvalue = 0.1;
         else if (symbolname == "MAFCal.cd_ThrottleMap") returnvalue = 0.0009765625;
         else if (symbolname == "HotStCal2.RestartMap") returnvalue = 0.001;
     }
     return returnvalue;
 }
コード例 #5
0
ファイル: frmMain.cs プロジェクト: mattiasclaesson/T7Suite
        private void CompareToFile(string filename)
        {
            if (m_symbols.Count > 0)
            {
                dockManager1.BeginUpdate();
                try
                {
                    DockPanel dockPanel = dockManager1.AddPanel(new System.Drawing.Point(-500, -500));
                    CompareResults tabdet = new CompareResults();
                    tabdet.ShowAddressesInHex = m_appSettings.ShowAddressesInHex;
                    tabdet.SetFilterMode(m_appSettings.ShowAddressesInHex);
                    tabdet.Dock = DockStyle.Fill;
                    tabdet.Filename = filename;
                    tabdet.onSymbolSelect += new CompareResults.NotifySelectSymbol(tabdet_onSymbolSelect);
                    dockPanel.Controls.Add(tabdet);
                    dockPanel.Text = "Compare results: " + Path.GetFileName(filename);
                    dockPanel.DockTo(dockManager1, DockingStyle.Left, 1);

                    dockPanel.Width = 700;

                    SymbolCollection compare_symbols = new SymbolCollection();
                    FileInfo fi = new FileInfo(filename);
                    Trionic7File compareFile = TryToOpenFileUsingClass(filename, out compare_symbols, (int)fi.Length, false);
                    barProgress.EditValue = 60;
                    barProgress.Caption = "Loading header";
                    System.Windows.Forms.Application.DoEvents();

                    T7FileHeader t7fh = new T7FileHeader();
                    t7fh.init(filename, false);
                    int m_sramOffset = ReverseInt(t7fh.Unknown_9cvalue);
                    if (m_sramOffset == 0) m_sramOffset = compareFile.SramOffsetForOpenFile;
                    if (m_sramOffset == 0) m_sramOffset = 0xEFFC04;
                    barProgress.EditValue = 90;
                    barProgress.Caption = "Starting compare";
                    System.Windows.Forms.Application.DoEvents();

                    System.Windows.Forms.Application.DoEvents();
                    barProgress.Visibility = BarItemVisibility.Always;
                    barProgress.Caption = "Comparing symbols in files...";
                    barProgress.EditValue = 0;
                    System.Windows.Forms.Application.DoEvents();
                    System.Data.DataTable dt = new System.Data.DataTable();
                    dt.Columns.Add("SYMBOLNAME");
                    dt.Columns.Add("SRAMADDRESS", Type.GetType("System.Int32"));
                    dt.Columns.Add("FLASHADDRESS", Type.GetType("System.Int32"));
                    dt.Columns.Add("LENGTHBYTES", Type.GetType("System.Int32"));
                    dt.Columns.Add("LENGTHVALUES", Type.GetType("System.Int32"));
                    dt.Columns.Add("DESCRIPTION");
                    dt.Columns.Add("ISCHANGED", Type.GetType("System.Boolean"));
                    dt.Columns.Add("CATEGORY", Type.GetType("System.Int32")); //0
                    dt.Columns.Add("DIFFPERCENTAGE", Type.GetType("System.Double"));
                    dt.Columns.Add("DIFFABSOLUTE", Type.GetType("System.Int32"));
                    dt.Columns.Add("DIFFAVERAGE", Type.GetType("System.Double"));
                    dt.Columns.Add("CATEGORYNAME");
                    dt.Columns.Add("SUBCATEGORYNAME");
                    dt.Columns.Add("SymbolNumber1", Type.GetType("System.Int32"));
                    dt.Columns.Add("SymbolNumber2", Type.GetType("System.Int32"));
                    dt.Columns.Add("Userdescription");
                    dt.Columns.Add("MissingInOriFile", Type.GetType("System.Boolean"));
                    dt.Columns.Add("MissingInCompareFile", Type.GetType("System.Boolean"));
                    string category = "";
                    string ht = string.Empty;
                    double diffperc = 0;
                    int diffabs = 0;
                    double diffavg = 0;
                    int percentageDone = 0;
                    int symNumber = 0;
                    XDFCategories cat = XDFCategories.Undocumented;
                    XDFSubCategory subcat = XDFSubCategory.Undocumented;
                    if (compare_symbols.Count > 0)
                    {
                        CompareResults cr = new CompareResults();
                        cr.ShowAddressesInHex = m_appSettings.ShowAddressesInHex;
                        cr.SetFilterMode(m_appSettings.ShowAddressesInHex);
                        SymbolTranslator st = new SymbolTranslator();
                        Int64 compareStartAddress = 0;
                        Int64 orgStartAddress = 0;
                        foreach (SymbolHelper sh_compare in compare_symbols)
                        {
                            try
                            {
                                symNumber++;
                                percentageDone = (symNumber * 50) / compare_symbols.Count;
                                if (Convert.ToInt32(barProgress.EditValue) != percentageDone)
                                {
                                    barProgress.EditValue = percentageDone;
                                    System.Windows.Forms.Application.DoEvents();
                                }
                            }
                            catch (Exception E)
                            {
                                logger.Debug(E.Message);
                            }

                            string compareName = sh_compare.Varname;
                            if (compareName.StartsWith("Symbolnumber")) compareName = sh_compare.Userdescription;

                            compareStartAddress = sh_compare.Flash_start_address;
                            if (IsSoftwareOpen(compare_symbols))
                            {
                                // get address
                                if (IsSymbolCalibration(compareName) && sh_compare.Length < 0x400 && sh_compare.Flash_start_address > m_currentfile_size)
                                {
                                    compareStartAddress = sh_compare.Flash_start_address - m_sramOffset;
                                }
                            }

                            foreach (SymbolHelper sh_org in m_symbols)
                            {
                                string originalName = sh_org.Varname;
                                if (originalName.StartsWith("Symbolnumber")) originalName = sh_org.Userdescription;

                                if (compareName.Equals(originalName) && compareName != String.Empty)
                                {
                                    if (compareStartAddress > 0 && compareStartAddress < 0x80000)
                                    {
                                        orgStartAddress = (int)GetSymbolAddress(m_symbols, sh_org.Varname);
                                        if (orgStartAddress > 0 && orgStartAddress < 0x80000)
                                        {
                                            if (!CompareSymbolToCurrentFile(compareName, (int)compareStartAddress, sh_compare.Length, filename, out diffperc, out diffabs, out diffavg))
                                            {
                                                category = "";
                                                if (sh_org.Varname.Contains("."))
                                                {
                                                    try
                                                    {
                                                        category = sh_org.Varname.Substring(0, sh_org.Varname.IndexOf("."));
                                                    }
                                                    catch (Exception cE)
                                                    {
                                                        logger.Debug("Failed to assign category to symbol: " + sh_org.Varname + " err: " + cE.Message);
                                                    }
                                                }
                                                else if (sh_org.Userdescription.Contains("."))
                                                {
                                                    try
                                                    {
                                                        category = sh_org.Userdescription.Substring(0, sh_org.Userdescription.IndexOf("."));
                                                    }
                                                    catch (Exception cE)
                                                    {
                                                        logger.Debug("Failed to assign category to symbol: " + sh_org.Userdescription + " err: " + cE.Message);
                                                    }
                                                }

                                                dt.Rows.Add(sh_compare.Varname, sh_compare.Start_address, compareStartAddress, sh_compare.Length, sh_compare.Length, st.TranslateSymbolToHelpText(sh_compare.Varname, out ht, out cat, out subcat, m_appSettings.ApplicationLanguage), false, 0, diffperc, diffabs, diffavg, category, "", sh_org.Symbol_number, sh_compare.Symbol_number, sh_org.Userdescription, false, false);
                                            }
                                        }
                                    }
                                    break;
                                }
                            }
                        }

                        symNumber = 0;
                        string varnameori = string.Empty;
                        string varnamecomp = string.Empty;
                        foreach (SymbolHelper shtest in compare_symbols)
                        {
                            try
                            {
                                symNumber++;
                                percentageDone = 50 + (symNumber * 25) / compare_symbols.Count;
                                if (Convert.ToInt32(barProgress.EditValue) != percentageDone)
                                {
                                    barProgress.EditValue = percentageDone;
                                    System.Windows.Forms.Application.DoEvents();
                                }
                            }
                            catch (Exception E)
                            {
                                logger.Debug(E.Message);
                            }
                            bool _foundSymbol = false;
                            varnamecomp = shtest.Varname;
                            if (varnamecomp.StartsWith("Symbolnumber")) varnamecomp = shtest.Userdescription;
                            if (IsSymbolCalibration(varnamecomp))
                            {
                                foreach (SymbolHelper shoritest in m_symbols)
                                {
                                    varnameori = shoritest.Varname;
                                    if (varnameori.StartsWith("Symbolnumber")) varnameori = shoritest.Userdescription;

                                    if (varnamecomp == varnameori)
                                    {
                                        _foundSymbol = true;
                                        break;
                                    }
                                }
                                if (!_foundSymbol)
                                {
                                    // add this symbol to the MissingInOriCollection
                                    dt.Rows.Add(varnamecomp, shtest.Start_address, shtest.Flash_start_address, shtest.Length, shtest.Length, st.TranslateSymbolToHelpText(varnamecomp, out ht, out cat, out subcat, m_appSettings.ApplicationLanguage), false, 0, 0, 0, 0, "Missing in original", "", 0, shtest.Symbol_number, shtest.Userdescription, true, false);
                                }
                            }
                        }
                        symNumber = 0;
                        foreach (SymbolHelper shtest in m_symbols)
                        {
                            try
                            {
                                symNumber++;
                                percentageDone = 75 + (symNumber * 25) / compare_symbols.Count;
                                if (Convert.ToInt32(barProgress.EditValue) != percentageDone)
                                {
                                    barProgress.EditValue = percentageDone;
                                    System.Windows.Forms.Application.DoEvents();
                                }
                            }
                            catch (Exception E)
                            {
                                logger.Debug(E.Message);
                            }
                            bool _foundSymbol = false;
                            varnamecomp = shtest.Varname;
                            if (varnamecomp.StartsWith("Symbolnumber")) varnamecomp = shtest.Userdescription;
                            if (IsSymbolCalibration(varnamecomp))
                            {
                                foreach (SymbolHelper shoritest in compare_symbols)
                                {
                                    varnameori = shoritest.Varname;
                                    if (varnameori.StartsWith("Symbolnumber")) varnameori = shoritest.Userdescription;

                                    if (varnamecomp == varnameori)
                                    {
                                        _foundSymbol = true;
                                        break;
                                    }
                                }
                                if (!_foundSymbol)
                                {
                                    // add this symbol to the MissingInCompCollection
                                    dt.Rows.Add(varnamecomp, shtest.Start_address, shtest.Flash_start_address, shtest.Length, shtest.Length, st.TranslateSymbolToHelpText(varnamecomp, out ht, out cat, out subcat, m_appSettings.ApplicationLanguage), false, 0, 0, 0, 0, "Missing in compare", "", 0, shtest.Symbol_number, shtest.Userdescription, false, true);
                                }
                            }
                        }
                        tabdet.CompareSymbolCollection = compare_symbols;
                        tabdet.OriginalSymbolCollection = m_symbols;
                        tabdet.OriginalFilename = m_currentfile;
                        tabdet.CompareFilename = filename;
                        tabdet.OpenGridViewGroups(tabdet.gridControl1, 1);
                        tabdet.gridControl1.DataSource = dt.Copy();
                        barProgress.Visibility = BarItemVisibility.Never;
                        barProgress.Caption = "Done";

                    }
                }
                catch (Exception E)
                {
                    logger.Debug(E.Message);
                }
                dockManager1.EndUpdate();
            }
        }
コード例 #6
0
ファイル: frmMain.cs プロジェクト: mattiasclaesson/T7Suite
        private Trionic7File TryToOpenFileUsingClass(string filename, out SymbolCollection symbol_collection, int filename_size, bool isWorkingFile)
        {
            Trionic7File retval = new Trionic7File();

            retval.onProgress += retval_onProgress;
            SymbolTranslator translator = new SymbolTranslator();
            string help = string.Empty;
            _softwareIsOpen = false;
            _softwareIsOpenDetermined = false;
            m_currentsramfile = string.Empty; // geen sramfile erbij
            barStaticItem1.Caption = "";
            barFilenameText.Caption = "";

            FileInfo fi = new FileInfo(filename);
            try
            {
                fi.IsReadOnly = false;
                btnReadOnly.Caption = "File access OK";
            }
            catch (Exception E)
            {
                logger.Debug("Failed to remove read only flag: " + E.Message);
                btnReadOnly.Caption = "File is READ ONLY";
            }

            try
            {
                if (isWorkingFile)
                {
                    T7FileHeader t7InfoHeader = new T7FileHeader();
                    if (t7InfoHeader.init(filename, m_appSettings.AutoFixFooter))
                    {
                        m_current_softwareversion = t7InfoHeader.getSoftwareVersion();
                        m_currentSramOffsett = ReverseInt(t7InfoHeader.Unknown_9cvalue);
                    }
                    else
                    {
                        m_current_softwareversion = "";
                    }
                }
            }
            catch (Exception E2)
            {
                logger.Debug(E2.Message);
            }
            AddFileToMRUList(filename);
            symbol_collection = retval.ExtractFile(filename, m_appSettings.ApplicationLanguage, m_current_softwareversion);

            SetProgressPercentage(60);
            SetProgress("Examining file");
            System.Windows.Forms.Application.DoEvents();
            if (isWorkingFile)
            {
                if (m_currentSramOffsett == 0)
                {
                    m_currentSramOffsett = retval.SramOffsetForOpenFile;
                    logger.Debug("Overrules m_currentSramOffsett with value from t7file: " + m_currentSramOffsett.ToString("X8"));
                }

                // <GS-27042010> now we need to check if there is a symbol information XML file present.
                try
                {
                    IsSoftwareOpen();
                    // fill in the rest of the parameters
                    barFilenameText.Caption = Path.GetFileNameWithoutExtension(filename);
                }
                catch (Exception E3)
                {
                    logger.Debug(E3.Message);
                }
            }

            if (IsBinaryBiopower())
            {
                foreach (SymbolHelper sh in symbol_collection)
                {
                    if (sh.Varname == "BFuelCal.StartMap")
                    {
                        sh.Varname = "BFuelCal.E85Map";
                        XDFCategories cat = XDFCategories.Undocumented;
                        XDFSubCategory sub = XDFSubCategory.Undocumented;
                        sh.Description = translator.TranslateSymbolToHelpText(sh.Varname, out help, out cat, out sub, m_appSettings.ApplicationLanguage);
                    }
                    if (sh.Userdescription == "BFuelCal.StartMap")
                    {
                        sh.Userdescription = "BFuelCal.E85Map";
                        XDFCategories cat = XDFCategories.Undocumented;
                        XDFSubCategory sub = XDFSubCategory.Undocumented;
                        sh.Description = translator.TranslateSymbolToHelpText(sh.Userdescription, out help, out cat, out sub, m_appSettings.ApplicationLanguage);
                    }
                }
            }
            return retval;
        }
コード例 #7
0
ファイル: frmMain.cs プロジェクト: mattiasclaesson/T7Suite
 private void TryToLoadAdditionalSymbols(string filename)
 {
     System.Data.DataTable dt;
     string binname = GetFileDescriptionFromFile(filename);
     if (binname != string.Empty)
     {
         dt = new System.Data.DataTable(binname);
         dt.Columns.Add("SYMBOLNAME");
         dt.Columns.Add("SYMBOLNUMBER", Type.GetType("System.Int32"));
         dt.Columns.Add("FLASHADDRESS", Type.GetType("System.Int32"));
         dt.Columns.Add("DESCRIPTION");
         if (File.Exists(filename))
         {
             dt.ReadXml(filename);
         }
         foreach (SymbolHelper sh in m_symbols)
         {
             foreach (DataRow dr in dt.Rows)
             {
                 try
                 {
                     //SymbolHelper sh = m_symbols[Convert.ToInt32(dr["SYMBOLNUMBER"])];
                     if (dr["SYMBOLNAME"].ToString() == sh.Varname)
                     {
                         if (sh.Flash_start_address == Convert.ToInt32(dr["FLASHADDRESS"]))
                         {
                             if (sh.Varname == String.Format("Symbolnumber {0}", sh.Symbol_number))
                             {
                                 sh.Userdescription = sh.Varname;
                                 sh.Varname = dr["DESCRIPTION"].ToString();
                             }
                             else
                             {
                                 sh.Userdescription = dr["DESCRIPTION"].ToString();
                             }
                             string helptext = string.Empty;
                             XDFCategories cat = XDFCategories.Undocumented;
                             XDFSubCategory sub = XDFSubCategory.Undocumented;
                             SymbolTranslator st = new SymbolTranslator();
                             sh.Description = st.TranslateSymbolToHelpText(sh.Varname, out helptext, out cat, out sub, m_appSettings.ApplicationLanguage);
                             if (sh.Category == "Undocumented" || sh.Category == "")
                             {
                                 if (sh.Varname.Contains("."))
                                 {
                                     try
                                     {
                                         sh.Category = sh.Varname.Substring(0, sh.Varname.IndexOf("."));
                                         //logger.Debug(String.Format("Set cat to {0} for {1}", sh.Category, sh.Userdescription));
                                     }
                                     catch (Exception cE)
                                     {
                                         logger.Debug(String.Format("Failed to assign category to symbol: {0} err: {1}", sh.Userdescription, cE.Message));
                                     }
                                 }
                             }
                         }
                     }
                 }
                 catch (Exception E)
                 {
                     logger.Debug(E.Message);
                 }
             }
         }
     }
 }
コード例 #8
0
ファイル: frmMain.cs プロジェクト: mattiasclaesson/T7Suite
        private void TryToLoadAdditionalCSVSymbols(string filename)
        {
            // convert to CSV file format
            // 56;AreaCal.A_MaxAdap;;;
            try
            {
                SymbolTranslator st = new SymbolTranslator();
                char[] sep = new char[1];
                sep.SetValue(';', 0);
                string[] fileContent = File.ReadAllLines(filename);
                foreach (string line in fileContent)
                {
                    string[] values = line.Split(sep);
                    try
                    {
                        string varname = (string)values.GetValue(1);
                        int symbolnumber = Convert.ToInt32(values.GetValue(0));
                        foreach (SymbolHelper sh in m_symbols)
                        {
                            if (sh.Symbol_number == symbolnumber)
                            {
                                sh.Userdescription = varname;
                                string helptext = string.Empty;
                                XDFCategories cat = XDFCategories.Undocumented;
                                XDFSubCategory sub = XDFSubCategory.Undocumented;
                                sh.Description = st.TranslateSymbolToHelpText(sh.Userdescription, out helptext, out cat, out sub, m_appSettings.ApplicationLanguage);
                                //if(sh.Category ==
                                if (sh.Category == "Undocumented" || sh.Category == "")
                                {
                                    if (sh.Userdescription.Contains("."))
                                    {
                                        try
                                        {
                                            sh.Category = sh.Userdescription.Substring(0, sh.Userdescription.IndexOf("."));
                                            //logger.Debug("Set cat to " + sh.Category + " for " + sh.Userdescription);
                                        }
                                        catch (Exception cE)
                                        {
                                            logger.Debug("Failed to assign category to symbol: " + sh.Userdescription + " err: " + cE.Message);
                                        }
                                    }

                                }
                            }
                        }
                    }
                    catch (Exception lineE)
                    {
                        logger.Debug("Failed to import a symbol from CSV file " + line + ": " + lineE.Message);
                    }
                }
            }
            catch (Exception E)
            {
                logger.Debug("Failed to import additional CSV symbols: " + E.Message);
            }
        }
コード例 #9
0
ファイル: frmMain.cs プロジェクト: mattiasclaesson/T7Suite
        private void Actions_SearchMapContent_ItemClick(object sender, ItemClickEventArgs e)
        {
            // ask the user for which value to search and if searching should include symbolnames and/or symbol description
            if (ValidateFile())
            {
                SymbolCollection result_Collection = new SymbolCollection();
                frmSearchMaps searchoptions = new frmSearchMaps();
                if (searchoptions.ShowDialog() == DialogResult.OK)
                {
                    frmProgress progress = new frmProgress();
                    progress.SetProgress("Start searching data...");
                    progress.SetProgressPercentage(0);
                    progress.Show();
                    System.Windows.Forms.Application.DoEvents();
                    int cnt = 0;
                    foreach (SymbolHelper sh in m_symbols)
                    {
                        progress.SetProgress("Searching " + sh.Varname);
                        progress.SetProgressPercentage((cnt * 100) / m_symbols.Count);
                        bool hit_found = false;
                        if (searchoptions.UseSpecificMapLength)
                        {
                            if (sh.Length != (int)searchoptions.MapLength)
                            {
                                continue;
                            }
                        }
                        if (searchoptions.IncludeSymbolNames)
                        {
                            if (searchoptions.SearchForNumericValues)
                            {
                                if (sh.Varname.Contains(searchoptions.NumericValueToSearchFor.ToString()))
                                {
                                    hit_found = true;
                                }
                            }
                            if (searchoptions.SearchForStringValues)
                            {
                                if (searchoptions.StringValueToSearchFor != string.Empty)
                                {
                                    if (sh.Varname.Contains(searchoptions.StringValueToSearchFor))
                                    {
                                        hit_found = true;
                                    }
                                }
                            }
                        }
                        if (searchoptions.IncludeSymbolDescription)
                        {
                            if (searchoptions.SearchForNumericValues)
                            {
                                if (sh.Description.Contains(searchoptions.NumericValueToSearchFor.ToString()))
                                {
                                    hit_found = true;
                                }
                            }
                            if (searchoptions.SearchForStringValues)
                            {
                                if (searchoptions.StringValueToSearchFor != string.Empty)
                                {
                                    if (sh.Description.Contains(searchoptions.StringValueToSearchFor))
                                    {
                                        hit_found = true;
                                    }
                                }
                            }
                        }
                        // now search the symbol data
                        if (sh.Flash_start_address < m_currentfile_size)
                        {
                            byte[] symboldata = readdatafromfile(m_currentfile, (int)sh.Flash_start_address, sh.Length);
                            if (searchoptions.SearchForNumericValues)
                            {
                                if (isSixteenBitTable(sh.Varname))
                                {
                                    for (int i = 0; i < symboldata.Length / 2; i += 2)
                                    {
                                        float value = Convert.ToInt32(symboldata.GetValue(i)) * 256;
                                        value += Convert.ToInt32(symboldata.GetValue(i + 1));
                                        value *= (float)GetMapCorrectionFactor(sh.Varname);
                                        value += (float)GetMapCorrectionOffset(sh.Varname);
                                        if (value == (float)searchoptions.NumericValueToSearchFor)
                                        {
                                            hit_found = true;
                                        }
                                    }
                                }
                                else
                                {
                                    for (int i = 0; i < symboldata.Length; i++)
                                    {
                                        float value = Convert.ToInt32(symboldata.GetValue(i));
                                        value *= (float)GetMapCorrectionFactor(sh.Varname);
                                        value += (float)GetMapCorrectionOffset(sh.Varname);
                                        if (value == (float)searchoptions.NumericValueToSearchFor)
                                        {
                                            hit_found = true;
                                        }
                                    }
                                }
                            }
                            if (searchoptions.SearchForStringValues)
                            {
                                if (searchoptions.StringValueToSearchFor.Length > symboldata.Length)
                                {
                                    // possible...
                                    string symboldataasstring = System.Text.Encoding.ASCII.GetString(symboldata);
                                    if (symboldataasstring.Contains(searchoptions.StringValueToSearchFor))
                                    {
                                        hit_found = true;
                                    }
                                }
                            }
                        }

                        if (hit_found)
                        {
                            // add to collection
                            result_Collection.Add(sh);
                        }
                        cnt++;
                    }
                    progress.Close();
                    if (result_Collection.Count == 0)
                    {
                        frmInfoBox info = new frmInfoBox("No results found...");
                    }
                    else
                    {
                        // start result screen
                        dockManager1.BeginUpdate();
                        try
                        {
                            SymbolTranslator st = new SymbolTranslator();
                            DockPanel dockPanel = dockManager1.AddPanel(new System.Drawing.Point(-500, -500));
                            CompareResults tabdet = new CompareResults();
                            tabdet.ShowAddressesInHex = m_appSettings.ShowAddressesInHex;
                            tabdet.SetFilterMode(m_appSettings.ShowAddressesInHex);
                            tabdet.Dock = DockStyle.Fill;
                            tabdet.UseForFind = true;
                            tabdet.Filename = m_currentfile;
                            tabdet.onSymbolSelect += new CompareResults.NotifySelectSymbol(tabdet_onSymbolSelectForFind);
                            dockPanel.Controls.Add(tabdet);
                            dockPanel.Text = "Search results: " + Path.GetFileName(m_currentfile);
                            dockPanel.DockTo(dockManager1, DockingStyle.Left, 1);

                            dockPanel.Width = 700;

                            System.Data.DataTable dt = new System.Data.DataTable();
                            dt.Columns.Add("SYMBOLNAME");
                            dt.Columns.Add("SRAMADDRESS", Type.GetType("System.Int32"));
                            dt.Columns.Add("FLASHADDRESS", Type.GetType("System.Int32"));
                            dt.Columns.Add("LENGTHBYTES", Type.GetType("System.Int32"));
                            dt.Columns.Add("LENGTHVALUES", Type.GetType("System.Int32"));
                            dt.Columns.Add("DESCRIPTION");
                            dt.Columns.Add("ISCHANGED", Type.GetType("System.Boolean"));
                            dt.Columns.Add("CATEGORY"); //0
                            dt.Columns.Add("DIFFPERCENTAGE", Type.GetType("System.Double"));
                            dt.Columns.Add("DIFFABSOLUTE", Type.GetType("System.Int32"));
                            dt.Columns.Add("DIFFAVERAGE", Type.GetType("System.Double"));
                            dt.Columns.Add("CATEGORYNAME");
                            dt.Columns.Add("SUBCATEGORYNAME");
                            dt.Columns.Add("SymbolNumber1", Type.GetType("System.Int32"));
                            dt.Columns.Add("SymbolNumber2", Type.GetType("System.Int32"));
                            //string category = "";
                            string ht = string.Empty;
                            //double diffperc = 0;
                            //int diffabs = 0;
                            //double diffavg = 0;
                            XDFCategories cat = XDFCategories.Undocumented;
                            XDFSubCategory subcat = XDFSubCategory.Undocumented;
                            foreach (SymbolHelper shfound in result_Collection)
                            {
                                string helptext = st.TranslateSymbolToHelpText(shfound.Varname, out ht, out cat, out subcat, m_appSettings.ApplicationLanguage);
                                if (shfound.Varname.Contains("."))
                                {
                                    try
                                    {
                                        shfound.Category = shfound.Varname.Substring(0, shfound.Varname.IndexOf("."));
                                    }
                                    catch (Exception cE)
                                    {
                                        logger.Debug("Failed to assign category to symbol: " + shfound.Varname + " err: " + cE.Message);
                                    }
                                }
                                dt.Rows.Add(shfound.Varname, shfound.Start_address, shfound.Flash_start_address, shfound.Length, shfound.Length, helptext, false, 0, 0, 0, 0, shfound.Category, "", shfound.Symbol_number, shfound.Symbol_number);
                            }
                            tabdet.CompareSymbolCollection = result_Collection;
                            tabdet.OpenGridViewGroups(tabdet.gridControl1, 1);
                            tabdet.gridControl1.DataSource = dt.Copy();

                        }
                        catch (Exception E)
                        {
                            logger.Debug(E.Message);
                        }
                        dockManager1.EndUpdate();

                    }

                }
            }
        }
コード例 #10
0
        private void simpleButton3_Click(object sender, EventArgs e)
        {
            OpenFileDialog ofd = new OpenFileDialog();
            ofd.Filter = "Binary files|*.bin";
            if (ofd.ShowDialog() == DialogResult.OK)
            {
                m_current_comparefilename = ofd.FileName;
                SymbolTranslator translator = new SymbolTranslator();
                string help = string.Empty;
                FileInfo fi = new FileInfo(m_current_comparefilename);
                fi.IsReadOnly = false;

                try
                {
                    T7FileHeader t7InfoHeader = new T7FileHeader();
                    if (t7InfoHeader.init(m_current_comparefilename, false))
                    {
                        m_current_softwareversion = t7InfoHeader.getSoftwareVersion();
                    }
                    else
                    {
                        m_current_softwareversion = "";
                    }
                }
                catch (Exception E2)
                {
                    logger.Debug(E2.Message);
                }
                Trionic7File t7file = new Trionic7File();

                Compare_symbol_collection = t7file.ExtractFile(m_current_comparefilename, 44, m_current_softwareversion);
                // so... now determine the max values for the compare file
                // show the dynograph
                xtraTabControl1.SelectedTabPage = xtraTabPage2;
                LoadGraphWithDetails(); // initial values from original bin
                //DataTable dt = CalculateDataTable(m_current_comparefilename, Compare_symbol_collection);
                //LoadExtraGraphFromCompareBin(dt, m_current_comparefilename);
            }
        }
コード例 #11
0
ファイル: Trionic7File.cs プロジェクト: Meindert66/T7Suite
 /// <summary>
 /// 
 /// </summary>
 /// <param name="filename"></param>
 /// <param name="m_symbols"></param>
 /// <param name="LanguageID"></param>
 private static void TryToLoadAdditionalSymbols(string filename, SymbolCollection m_symbols, int LanguageID)
 {
     DataTable dt = new DataTable(Path.GetFileNameWithoutExtension(filename));
     dt.Columns.Add("SYMBOLNAME");
     dt.Columns.Add("SYMBOLNUMBER", Type.GetType("System.Int32"));
     dt.Columns.Add("FLASHADDRESS", Type.GetType("System.Int32"));
     dt.Columns.Add("DESCRIPTION");
     T7FileHeader fh = new T7FileHeader();
     fh.init(filename, false);
     string checkstring = fh.getPartNumber() + fh.getSoftwareVersion();
     string xmlfilename = String.Format("{0}\\repository\\{1}{2:yyyyMMddHHmmss}{3}.xml", Application.StartupPath, Path.GetFileNameWithoutExtension(filename), File.GetCreationTime(filename), checkstring);
     if (File.Exists(xmlfilename))
     {
         dt.ReadXml(xmlfilename);
     }
     else
     {
         // check the file folder
         string[] xmlfiles = Directory.GetFiles(Path.GetDirectoryName(filename), "*.xml");
         foreach (string xmlfile in xmlfiles)
         {
             if (Path.GetFileName(xmlfile).StartsWith(Path.GetFileNameWithoutExtension(filename)))
             {
                 dt.ReadXml(xmlfile);
                 logger.Debug(String.Format("Read: {0} symbols from {1}", dt.Rows.Count, xmlfile));
                 break;
             }
         }
     }
     // auto add symbols for 55P / 46T files only if no other sources of additional symbols can be found
     bool createRepositoryFile = false;
     if (dt.Rows.Count == 0)
     {
         if (fh.getSoftwareVersion().Trim().StartsWith("EU0AF01C", StringComparison.OrdinalIgnoreCase) ||
             fh.getSoftwareVersion().Trim().StartsWith("EU0BF01C", StringComparison.OrdinalIgnoreCase) ||
             fh.getSoftwareVersion().Trim().StartsWith("EU0CF01C", StringComparison.OrdinalIgnoreCase))
         {
             if (MessageBox.Show("Do you want to load the known symbollist for EU0AF01C/EU0BF01C/EU0CF01C files now?", "Question", MessageBoxButtons.YesNo) == DialogResult.Yes)
             {
                 string BioPowerXmlFile = String.Format("{0}\\EU0AF01C.xml", Application.StartupPath);
                 if (File.Exists(BioPowerXmlFile))
                 {
                     string binname = GetFileDescriptionFromFile(BioPowerXmlFile);
                     if (binname != string.Empty)
                     {
                         dt = new DataTable(binname);
                         dt.Columns.Add("SYMBOLNAME");
                         dt.Columns.Add("SYMBOLNUMBER", Type.GetType("System.Int32"));
                         dt.Columns.Add("FLASHADDRESS", Type.GetType("System.Int32"));
                         dt.Columns.Add("DESCRIPTION");
                         dt.ReadXml(BioPowerXmlFile);
                         createRepositoryFile = true;
                     }
                 }
             }
         }
     }
     foreach (DataRow dr in dt.Rows)
     {
         try
         {
             SymbolHelper sh = m_symbols[Convert.ToInt32(dr["SYMBOLNUMBER"])];
             if (dr["SYMBOLNAME"].ToString() == sh.Varname)
             {
                 if (sh.Flash_start_address == Convert.ToInt32(dr["FLASHADDRESS"]))
                 {
                     if (sh.Varname == String.Format("Symbolnumber {0}", sh.Symbol_number))
                     {
                         sh.Userdescription = sh.Varname;
                         sh.Varname = dr["DESCRIPTION"].ToString();
                     }
                     else
                     {
                         sh.Userdescription = dr["DESCRIPTION"].ToString();
                     }
                     string helptext = string.Empty;
                     XDFCategories cat = XDFCategories.Undocumented;
                     XDFSubCategory sub = XDFSubCategory.Undocumented;
                     SymbolTranslator st = new SymbolTranslator();
                     sh.Description = st.TranslateSymbolToHelpText(sh.Varname, out helptext, out cat, out sub, LanguageID);
                     if (sh.Category == "Undocumented" || sh.Category == "")
                     {
                         if (sh.Varname.Contains("."))
                         {
                             try
                             {
                                 sh.Category = sh.Varname.Substring(0, sh.Varname.IndexOf("."));
                                 //logger.Debug(String.Format("Set cat to {0} for {1}", sh.Category, sh.Userdescription));
                             }
                             catch (Exception cE)
                             {
                                 logger.Debug(String.Format("Failed to assign category to symbol: {0} err: {1}", sh.Userdescription, cE.Message));
                             }
                         }
                     }
                 }
             }
         }
         catch (Exception E)
         {
             logger.Debug(E.Message);
         }
     }
     if (createRepositoryFile)
     {
         SaveAdditionalSymbols(filename, m_symbols);
     }
     foreach (SymbolHelper sh in m_symbols)
     {
         if (sh.Varname == "X_AccPedalManSP" || sh.Varname == "X_AccPedalAutTAB" || sh.Varname == "X_AccPedalAutSP" || sh.Varname == "X_AccPedalManTAB" || sh.Userdescription == "X_AccPedalManSP" || sh.Userdescription == "X_AccPedalAutTAB" || sh.Userdescription == "X_AccPedalAutSP" || sh.Userdescription == "X_AccPedalManTAB")
         {
             if (sh.Length == 4)
             {
                 sh.Flash_start_address -= 0x0C;
                 sh.Length = 0x0C;
             }
         }
     }
     dt.Dispose();
 }
コード例 #12
0
ファイル: Trionic7File.cs プロジェクト: Meindert66/T7Suite
        /// <summary>
        /// 
        /// </summary>
        /// <param name="symbol_collection"></param>
        /// <param name="allSymbolNames"></param>
        /// <param name="LanguageID"></param>
        private static void AddNamesToSymbols(SymbolCollection symbol_collection, string[] allSymbolNames, int LanguageID)
        {
            for (int i = 0; i < allSymbolNames.Length; i++)
            {
                try
                {
                    SymbolHelper sh = symbol_collection[(i)];
                    sh.Varname = allSymbolNames[i].Trim();
                    //logger.Debug(String.Format("Set symbolnumber: {0} to be {1}", sh.Symbol_number, symbol));
                    SymbolTranslator translator = new SymbolTranslator();
                    string help = string.Empty;
                    XDFCategories category = XDFCategories.Undocumented;
                    XDFSubCategory subcat = XDFSubCategory.Undocumented;
                    sh.Description = translator.TranslateSymbolToHelpText(sh.Varname, out help, out category, out subcat, LanguageID);

                    if (sh.Varname.Contains("."))
                    {
                        try
                        {
                            sh.Category = sh.Varname.Substring(0, sh.Varname.IndexOf("."));
                        }
                        catch (Exception cE)
                        {
                            logger.Debug(String.Format("Failed to assign category to symbol: {0} err: {1}", sh.Varname, cE.Message));
                        }
                    }
                }
                catch (Exception E)
                {
                    logger.Debug("Failed to add symbolnames: " + E.Message);
                }
            }
        }
コード例 #13
0
ファイル: Trionic7File.cs プロジェクト: Meindert66/T7Suite
        /// <summary>
        /// 
        /// </summary>
        /// <param name="filename"></param>
        /// <param name="languageID"></param>
        /// <param name="m_current_softwareversion"></param>
        /// <returns></returns>
        public SymbolCollection ExtractFile(string filename, int languageID, string m_current_softwareversion)
        {
            m_fileName = filename;
            FileInfo fi = new FileInfo(filename);
            m_Filelength = (int)fi.Length;
            SymbolTranslator translator = new SymbolTranslator();
            XDFCategories category = XDFCategories.Undocumented;
            XDFSubCategory subcat = XDFSubCategory.Undocumented;
            string help = string.Empty;
            try
            {
                fi.IsReadOnly = false;
            }
            catch (Exception E)
            {
                logger.Debug(String.Format("Failed to clear read-only flag: {0}", E.Message));
            }
            symbol_collection = new SymbolCollection();
            try
            {
                int sym_count = 0; // altered
                CastProgressEvent("Opening file", 0);
                try
                {
                    symbol_collection = new SymbolCollection();
                    if (filename != string.Empty)
                    {
                        if (File.Exists(filename))
                        {
                            if (!IsBinaryPackedVersion(filename, (int)fi.Length))
                            {
                                CastProgressEvent("Getting symbol list offset", 5);
                                int SymbolListOffSet = GetSymbolListOffSet(filename, (int)fi.Length);
                                if (SymbolListOffSet > 0)
                                {
                                    using (FileStream fsread = new FileStream(filename, FileMode.Open, FileAccess.Read))
                                    {
                                        using (BinaryReader br = new BinaryReader(fsread))
                                        {
                                            fsread.Seek(SymbolListOffSet, SeekOrigin.Begin);   // 0x15FA in 5168646.BIN
                                            string symbolname = "";
                                            bool endoftable = false;
                                            while (!endoftable)
                                            {
                                                byte b = br.ReadByte();
                                                switch (b)
                                                {
                                                    case 0xFF:              // 0xFF used to keep the start of each string 'word' aligned
                                                        break;
                                                    case 0x02:
                                                        endoftable = true;
                                                        break;
                                                    case 0x00:              // 0x00 end of Symbol name string
                                                        SymbolHelper sh = new SymbolHelper() { Varname = symbolname, Description = translator.TranslateSymbolToHelpText(symbolname, out help, out category, out subcat, languageID) };
                                                        if (sh.Varname.Contains("."))
                                                        {
                                                            try
                                                            {
                                                                sh.Category = sh.Varname.Substring(0, sh.Varname.IndexOf("."));
                                                            }
                                                            catch (Exception cE)
                                                            {
                                                                logger.Debug(String.Format("Failed to assign category to symbol: {0} err: {1}", sh.Varname, cE.Message));
                                                            }
                                                        }
                                                        sh.Internal_address = (int)fsread.Position - symbolname.Length - 1;
                                                        sh.Symbol_number = sym_count;
                                                        symbol_collection.Add(sh);
                                                        symbolname = "";
                                                        sym_count++;
                                                        if ((sym_count % 500) == 0)
                                                        {
                                                            CastProgressEvent(String.Format("Symbol: {0}", sh.Varname), 10);
                                                        }
                                                        break;
                                                    default:                // Another character in the Symbol name
                                                        symbolname += Convert.ToChar(b);
                                                        break;
                                                }
                                            }
                                            // now, try to get the addresses
                                            // 00 00 00 00 00 00 00 00 20 00 00 00 15 FA
                                            // 00 F0 75 3E 00 01 00 00 24 00 00 00 16 04
                                            // 00 F0 75 3F 00 01 00 00 24 00 00 00 16 10
                                            // 00 F0 75 40 00 01 00 00 24 00 00 00 16 1E
                                            // 00 F0 75 42 00 02 00 00 20 00 00 00 16 2C
                                            // 00 F0 75 44 00 02 00 00 ...
                                            if (symbol_collection.Count > 0)
                                            {
                                                sym_count = 0;
                                                CastProgressEvent("Searching address lookup table", 15);
                                                byte firstaddr_high = (byte)(symbol_collection[0].Internal_address >> 8);
                                                byte firstaddr_low = (byte)(symbol_collection[0].Internal_address);
                                                byte[] searchPattern = {
                                                                           0x00, 0x00, 0x00, 0x00,
                                                                           0x00, 0x00, 0x00, 0x00,
                                                                           0x20, 0x00, 0x00, 0x00,
                                                                           0x00, 0x00, 0x00, 0xF0
                                                                       };
                                                searchPattern.SetValue(firstaddr_high, 12);
                                                searchPattern.SetValue(firstaddr_low, 13);
                                                int addressTableOffset = bytePatternSearch(filename, searchPattern, 0);
                                                if (addressTableOffset != -1)
                                                {
                                                    fsread.Seek(addressTableOffset, SeekOrigin.Begin);
                                                    // steeds 14 karaketers
                                                    for (int t = 0; t < symbol_collection.Count; t++)
                                                    {
                                                        try
                                                        {
                                                            byte[] bytes = br.ReadBytes(14);
                                                            if (bytes.Length == 14)
                                                            {
                                                                int internal_address = 0;
                                                                for (int i = 0; i < 4; i++)
                                                                {
                                                                    internal_address <<= 8;
                                                                    internal_address |= Convert.ToInt32(bytes.GetValue(i + 10));
                                                                }
                                                                int symbollength = 0;
                                                                for (int i = 0; i < 2; i++)
                                                                {
                                                                    symbollength <<= 8;
                                                                    symbollength |= Convert.ToInt32(bytes.GetValue(i + 4));
                                                                }
                                                                int sramaddress = 0;
                                                                for (int i = 0; i < 4; i++)
                                                                {
                                                                    sramaddress <<= 8;
                                                                    sramaddress |= Convert.ToInt32(bytes.GetValue(i));
                                                                }
                                                                int realromaddress;
                                                                if (sramaddress > 0xF00000)
                                                                    realromaddress = sramaddress - 0xef02f0;
                                                                else
                                                                    realromaddress = 0;
                                                                foreach (SymbolHelper sh in symbol_collection)
                                                                {
                                                                    if (sh.Internal_address == internal_address)
                                                                    {
                                                                        /*if (sh.Varname == "BFuelCal.Map")
                                                                        {
                                                                            logger.Debug("Break for fuel map: " + internal_address.ToString("X6"));

                                                                        }*/
                                                                        if (sramaddress > 0 && sh.Flash_start_address == 0)
                                                                            sh.Start_address = sramaddress; // TEST
                                                                        if (realromaddress > 0 && sh.Varname.Contains("."))
                                                                            sh.Flash_start_address = realromaddress;
                                                                        else
                                                                            sh.Flash_start_address = sramaddress;
                                                                        sh.Length = symbollength;
                                                                        sym_count++;
                                                                        if ((sym_count % 500) == 0)
                                                                        {
                                                                            CastProgressEvent(String.Format("{0} : {1:X6}", sh.Varname, sh.Flash_start_address), 20);
                                                                        }
                                                                        break;
                                                                    }
                                                                }
                                                            }
                                                        }
                                                        catch (Exception E)
                                                        {
                                                            logger.Debug(E.Message);
                                                        }
                                                    }
                                                }
                                                else
                                                {
                                                    if (!tryToDecodePackedBinary(filename, out symbol_collection, languageID))
                                                    {
                                                        logger.Debug("Failed to extract packed binary!"); //<GS-23022010>
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }
                                else
                                {
                                    Application.DoEvents();
                                    logger.Debug("Couldn't find symboltable, file is probably packed!");//<GS-23022010>
                                }
                            }
                            else
                            {
                                tryToDecodePackedBinary(filename, out symbol_collection, languageID);
                            }
                            // try to load additional symboltranslations that the user entered
                            TryToLoadAdditionalSymbols(filename, symbol_collection, languageID);
                        }
                    }
                }
                catch (Exception eBin)
                {
                    logger.Debug("Failed to open binfile: " + eBin.Message);
                }
                CastProgressEvent("Decoding done", 55);
            }
            catch (Exception E)
            {
                logger.Debug(String.Format("TryOpenFile filed: {0} err: {1}", filename, E.Message));

            }
            return symbol_collection;
        }
コード例 #14
0
ファイル: frmMain.cs プロジェクト: ChrisPea/TuningSuites
        private void TryToLoadAdditionalAS2Symbols(string filename)
        {
            // convert to AS2 file format

            try
            {
                SymbolTranslator st = new SymbolTranslator();
                string[] fileContent = File.ReadAllLines(filename);
                int symbolnumber = 0;
                foreach (string line in fileContent)
                {
                    if (line.StartsWith("*"))
                    {
                        symbolnumber++;
                        try
                        {
                            string varname = line.Substring(1);
                            int idxSymTab = 0;
                            foreach (SymbolHelper sh in m_symbols)
                            {
                                if (sh.Length > 0)
                                {
                                    idxSymTab++;
                                }
                                if (idxSymTab == symbolnumber)
                                {
                                    sh.Userdescription = varname;
                                    string helptext = string.Empty;
                                    XDFCategories cat = XDFCategories.Undocumented;
                                    XDFSubCategory sub = XDFSubCategory.Undocumented;
                                    sh.Description = st.TranslateSymbolToHelpText(sh.Userdescription, out helptext, out cat, out sub, m_appSettings.ApplicationLanguage);

                                    if (sh.Category == "Undocumented" || sh.Category == "")
                                    {
                                        sh.createAndUpdateCategory(sh.Userdescription);
                                    }
                                    break;
                                }
                            }
                        }
                        catch (Exception lineE)
                        {
                            logger.Debug("Failed to import a symbol from AS2 file " + line + ": " + lineE.Message);
                        }

                    }
                }
            }
            catch (Exception E)
            {
                logger.Debug("Failed to import additional AS2 symbols: " + E.Message);
            }
        }