public void savedatatobinary(int address, int length, byte[] data, string filename, bool DoTransActionEntry, string note, EDCFileType type) { // depends on filetype (EDC16 is not reversed) if (type != EDCFileType.EDC16) { data = reverseEndian(data); } if (address > 0 && address < m_currentfilelength) { try { byte[] beforedata = readdatafromfile(filename, address, length, type); FileStream fsi1 = File.OpenWrite(filename); BinaryWriter bw1 = new BinaryWriter(fsi1); fsi1.Position = address; for (int i = 0; i < length; i++) { bw1.Write((byte)data.GetValue(i)); } fsi1.Flush(); bw1.Close(); fsi1.Close(); fsi1.Dispose(); if (m_ProjectTransactionLog != null && DoTransActionEntry) { // depends on filetype (EDC16 is not reversed) if (type != EDCFileType.EDC16) { data = reverseEndian(data); } TransactionEntry tentry = new TransactionEntry(DateTime.Now, address, length, beforedata, data, 0, 0, note); m_ProjectTransactionLog.AddToTransactionLog(tentry); if (m_CurrentWorkingProject != string.Empty) { m_ProjectLog.WriteLogbookEntry(LogbookEntryType.TransactionExecuted, GetSymbolNameByAddress(address) + " " + note); } } } catch (Exception E) { frmInfoBox info = new frmInfoBox("Failed to write to binary. Is it read-only? Details: " + E.Message); } } }
private void btnOpenProject_ItemClick(object sender, ItemClickEventArgs e) { //let the user select a project from the Project folder. If none are present, let the user know if (!Directory.Exists(m_appSettings.ProjectFolder)) Directory.CreateDirectory(m_appSettings.ProjectFolder); System.Data.DataTable ValidProjects = new System.Data.DataTable(); ValidProjects.Columns.Add("Projectname"); ValidProjects.Columns.Add("NumberBackups"); ValidProjects.Columns.Add("NumberTransactions"); ValidProjects.Columns.Add("DateTimeModified"); ValidProjects.Columns.Add("Version"); string[] projects = Directory.GetDirectories(m_appSettings.ProjectFolder); // filter for folders with a projectproperties.xml file foreach (string project in projects) { string[] projectfiles = Directory.GetFiles(project, "projectproperties.xml"); if (projectfiles.Length > 0) { System.Data.DataTable projectprops = new System.Data.DataTable("T5PROJECT"); projectprops.Columns.Add("CARMAKE"); projectprops.Columns.Add("CARMODEL"); projectprops.Columns.Add("CARMY"); projectprops.Columns.Add("CARVIN"); projectprops.Columns.Add("NAME"); projectprops.Columns.Add("BINFILE"); projectprops.Columns.Add("VERSION"); projectprops.ReadXml((string)projectfiles.GetValue(0)); // valid project, add it to the list if (projectprops.Rows.Count > 0) { string projectName = projectprops.Rows[0]["NAME"].ToString(); ValidProjects.Rows.Add(projectName, GetNumberOfBackups(projectName), GetNumberOfTransactions(projectName), GetLastAccessTime(projectprops.Rows[0]["BINFILE"].ToString()), projectprops.Rows[0]["VERSION"].ToString()); } } } if (ValidProjects.Rows.Count > 0) { frmProjectSelection projselection = new frmProjectSelection(); projselection.SetDataSource(ValidProjects); if (projselection.ShowDialog() == DialogResult.OK) { string selectedproject = projselection.GetProjectName(); if (selectedproject != "") { OpenProject(selectedproject); } } } else { frmInfoBox info = new frmInfoBox("No projects were found, please create one first!"); } }
private void simpleButton2_Click(object sender, EventArgs e) { // show the details for this transaction (including data, meaning 2 mapviewers showing the details) frmInfoBox info = new frmInfoBox("Still needs to be implemented"); }
private void btnCreateAProject_ItemClick(object sender, ItemClickEventArgs e) { // show the project properties screen for the user to fill in // if a bin file is loaded, ask the user whether this should be the new projects binary file // the project XML should contain a reference to this binfile as well as a lot of other stuff frmProjectProperties projectprops = new frmProjectProperties(); if (Tools.Instance.m_currentfile != string.Empty) { projectprops.BinaryFile = Tools.Instance.m_currentfile; projectprops.CarModel = barPartnumber.Caption;// fileheader.getCarDescription().Trim(); projectprops.ProjectName = DateTime.Now.ToString("yyyyMMdd") + "_" + barAdditionalInfo.Caption;// fileheader.getPartNumber().Trim() + " " + fileheader.getSoftwareVersion().Trim(); } if (projectprops.ShowDialog() == DialogResult.OK) { if (!Directory.Exists(m_appSettings.ProjectFolder)) Directory.CreateDirectory(m_appSettings.ProjectFolder); // create a new folder with these project properties. // also copy the binary file into the subfolder for this project if (Directory.Exists(m_appSettings.ProjectFolder + "\\" + MakeDirName(projectprops.ProjectName))) { frmInfoBox info = new frmInfoBox("The chosen projectname already exists, please choose another one"); } else { // create the project Directory.CreateDirectory(m_appSettings.ProjectFolder + "\\" + MakeDirName(projectprops.ProjectName)); // copy the selected binary file to this folder string binfilename = m_appSettings.ProjectFolder + "\\" + MakeDirName(projectprops.ProjectName) + "\\" + Path.GetFileName(projectprops.BinaryFile); File.Copy(projectprops.BinaryFile, binfilename); // now create the projectproperties.xml in this new folder System.Data.DataTable dtProps = new System.Data.DataTable("T5PROJECT"); dtProps.Columns.Add("CARMAKE"); dtProps.Columns.Add("CARMODEL"); dtProps.Columns.Add("CARMY"); dtProps.Columns.Add("CARVIN"); dtProps.Columns.Add("NAME"); dtProps.Columns.Add("BINFILE"); dtProps.Columns.Add("VERSION"); dtProps.Rows.Add(projectprops.CarMake, projectprops.CarModel, projectprops.CarMY, projectprops.CarVIN, MakeDirName(projectprops.ProjectName), binfilename, projectprops.Version); dtProps.WriteXml(m_appSettings.ProjectFolder + "\\" + MakeDirName(projectprops.ProjectName) + "\\projectproperties.xml"); OpenProject(projectprops.ProjectName); //? } } }
private void btnCreateBackup_ItemClick(object sender, ItemClickEventArgs e) { if (Tools.Instance.m_currentfile != string.Empty) { VerifyChecksum(Tools.Instance.m_currentfile, false, false); if (File.Exists(Tools.Instance.m_currentfile)) { if (Tools.Instance.m_CurrentWorkingProject != "") { if (!Directory.Exists(m_appSettings.ProjectFolder + "\\" + Tools.Instance.m_CurrentWorkingProject + "\\Backups")) Directory.CreateDirectory(m_appSettings.ProjectFolder + "\\" + Tools.Instance.m_CurrentWorkingProject + "\\Backups"); string filename = m_appSettings.ProjectFolder + "\\" + Tools.Instance.m_CurrentWorkingProject + "\\Backups\\" + Path.GetFileNameWithoutExtension(GetBinaryForProject(Tools.Instance.m_CurrentWorkingProject)) + "-backup-" + DateTime.Now.ToString("MMddyyyyHHmmss") + ".BIN"; File.Copy(GetBinaryForProject(Tools.Instance.m_CurrentWorkingProject), filename); } else { File.Copy(Tools.Instance.m_currentfile, Path.GetDirectoryName(Tools.Instance.m_currentfile) + "\\" + Path.GetFileNameWithoutExtension(Tools.Instance.m_currentfile) + DateTime.Now.ToString("yyyyMMddHHmmss") + ".binarybackup", true); frmInfoBox info = new frmInfoBox("Backup created: " + Path.GetDirectoryName(Tools.Instance.m_currentfile) + "\\" + Path.GetFileNameWithoutExtension(Tools.Instance.m_currentfile) + DateTime.Now.ToString("yyyyMMddHHmmss") + ".binarybackup"); } } } }
private void StartTableViewer(string symbolname, int codeblock) { int rtel = 0; bool _vwrstarted = false; try { if (Tools.Instance.GetSymbolAddressLike(Tools.Instance.m_symbols, symbolname) > 0) { //Console.WriteLine("Option one"); gridViewSymbols.ActiveFilter.Clear(); // clear filter gridViewSymbols.ApplyFindFilter(""); SymbolCollection sc = (SymbolCollection)gridControl1.DataSource; rtel = 0; foreach (SymbolHelper sh in sc) { if (sh.Varname.StartsWith(symbolname) && sh.CodeBlock == codeblock) { try { int rhandle = gridViewSymbols.GetRowHandle(rtel); gridViewSymbols.OptionsSelection.MultiSelect = true; gridViewSymbols.OptionsSelection.MultiSelectMode = DevExpress.XtraGrid.Views.Grid.GridMultiSelectMode.RowSelect; gridViewSymbols.ClearSelection(); gridViewSymbols.SelectRow(rhandle); //gridViewSymbols.SelectRows(rhandle, rhandle); gridViewSymbols.MakeRowVisible(rhandle, true); gridViewSymbols.FocusedRowHandle = rhandle; //gridViewSymbols.SelectRange(rhandle, rhandle); _vwrstarted = true; StartTableViewer(); break; } catch (Exception E) { MessageBox.Show(E.Message); } } rtel++; } if (!_vwrstarted) { rtel = 0; foreach (SymbolHelper sh in sc) { if (sh.Userdescription.StartsWith(symbolname) && sh.CodeBlock == codeblock) { try { int rhandle = gridViewSymbols.GetRowHandle(rtel); gridViewSymbols.OptionsSelection.MultiSelect = true; gridViewSymbols.OptionsSelection.MultiSelectMode = DevExpress.XtraGrid.Views.Grid.GridMultiSelectMode.RowSelect; gridViewSymbols.ClearSelection(); gridViewSymbols.SelectRow(rhandle); //gridViewSymbols.SelectRows(rhandle, rhandle); gridViewSymbols.MakeRowVisible(rhandle, true); gridViewSymbols.FocusedRowHandle = rhandle; //gridViewSymbols.SelectRange(rhandle, rhandle); _vwrstarted = true; StartTableViewer(); break; } catch (Exception E) { MessageBox.Show(E.Message); } } rtel++; } } } else { //Console.WriteLine("Option two"); gridViewSymbols.ActiveFilter.Clear(); // clear filter SymbolCollection sc = (SymbolCollection)gridControl1.DataSource; rtel = 0; foreach (SymbolHelper sh in sc) { if (sh.Userdescription.StartsWith(symbolname) && sh.CodeBlock == codeblock) { try { int rhandle = gridViewSymbols.GetRowHandle(rtel); gridViewSymbols.OptionsSelection.MultiSelect = true; gridViewSymbols.OptionsSelection.MultiSelectMode = DevExpress.XtraGrid.Views.Grid.GridMultiSelectMode.RowSelect; gridViewSymbols.ClearSelection(); gridViewSymbols.SelectRow(rhandle); //gridViewSymbols.SelectRows(rhandle, rhandle); gridViewSymbols.MakeRowVisible(rhandle, true); gridViewSymbols.FocusedRowHandle = rhandle; //gridViewSymbols.SelectRange(rhandle, rhandle); _vwrstarted = true; StartTableViewer(); break; } catch (Exception E) { MessageBox.Show(E.Message); } } rtel++; } } } catch (Exception) { frmInfoBox info = new frmInfoBox("There seems to be a problem opening this map, do you have a file opened?"); } }
private void VerifyChecksum(string filename, bool showQuestion, bool showInfo) { string chkType = string.Empty; barChecksum.Caption = "---"; ChecksumResultDetails result = new ChecksumResultDetails(); if (m_appSettings.AutoChecksum) { result = Tools.Instance.UpdateChecksum(filename, false); if (showInfo) { if (result.CalculationOk) { if (result.TypeResult == ChecksumType.VAG_EDC15P_V41) chkType = " V4.1"; else if (result.TypeResult == ChecksumType.VAG_EDC15P_V41V2) chkType = " V4.1v2"; else if (result.TypeResult == ChecksumType.VAG_EDC15P_V41_2002) chkType = " V4.1 2002"; else if (result.TypeResult != ChecksumType.Unknown) chkType = result.TypeResult.ToString(); frmInfoBox info = new frmInfoBox("Checksums are correct [" + chkType + "]"); } else { if (result.TypeResult == ChecksumType.VAG_EDC15P_V41) chkType = " V4.1"; else if (result.TypeResult == ChecksumType.VAG_EDC15P_V41V2) chkType = " V4.1v2"; else if (result.TypeResult == ChecksumType.VAG_EDC15P_V41_2002) chkType = " V4.1 2002"; else if (result.TypeResult != ChecksumType.Unknown) chkType = result.TypeResult.ToString(); frmInfoBox info = new frmInfoBox("Checksums are INCORRECT [" + chkType + "]"); } } } else { result = Tools.Instance.UpdateChecksum(filename, true); if (!result.CalculationOk) { if (showQuestion && result.TypeResult != ChecksumType.Unknown) { if (result.TypeResult == ChecksumType.VAG_EDC15P_V41) chkType = " V4.1"; else if (result.TypeResult == ChecksumType.VAG_EDC15P_V41V2) chkType = " V4.1v2"; else if (result.TypeResult == ChecksumType.VAG_EDC15P_V41_2002) chkType = " V4.1 2002"; else if (result.TypeResult != ChecksumType.Unknown) chkType = result.TypeResult.ToString(); frmChecksumIncorrect frmchk = new frmChecksumIncorrect(); frmchk.ChecksumType = chkType; frmchk.NumberChecksums = result.NumberChecksumsTotal; frmchk.NumberChecksumsFailed = result.NumberChecksumsFail; frmchk.NumberChecksumsPassed = result.NumberChecksumsOk; if(frmchk.ShowDialog() == DialogResult.OK) //if (MessageBox.Show("Checksums are invalid. Do you wish to correct them?", "Warning", MessageBoxButtons.YesNo) == DialogResult.Yes) { result = Tools.Instance.UpdateChecksum(filename, false); } } else if (showInfo && result.TypeResult == ChecksumType.Unknown) { frmInfoBox info = new frmInfoBox("Checksum for this filetype is not yet implemented"); } } else { if (showInfo) { if (result.TypeResult == ChecksumType.VAG_EDC15P_V41) chkType = " V4.1"; else if (result.TypeResult == ChecksumType.VAG_EDC15P_V41V2) chkType = " V4.1v2"; else if (result.TypeResult == ChecksumType.VAG_EDC15P_V41_2002) chkType = " V4.1 2002"; else if (result.TypeResult != ChecksumType.Unknown) chkType = result.TypeResult.ToString(); frmInfoBox info = new frmInfoBox("Checksums are correct [" + chkType + "]"); } } } if (result.TypeResult == ChecksumType.VAG_EDC15P_V41) chkType = " V4.1"; else if (result.TypeResult == ChecksumType.VAG_EDC15P_V41V2) chkType = " V4.1v2"; else if (result.TypeResult == ChecksumType.VAG_EDC15P_V41_2002) chkType = " V4.1 2002"; if (!result.CalculationOk) { barChecksum.Caption = "Checksum failed" + chkType; } else { barChecksum.Caption = "Checksum Ok" + chkType; } Application.DoEvents(); }
private void StartCompareDifferenceViewer(SymbolHelper sh, string Filename, int SymbolAddress) { DevExpress.XtraBars.Docking.DockPanel dockPanel; bool pnlfound = false; foreach (DevExpress.XtraBars.Docking.DockPanel pnl in dockManager1.Panels) { if (pnl.Text == "Symbol difference: " + sh.Varname + " [" + Path.GetFileName(Tools.Instance.m_currentfile) + "]") { dockPanel = pnl; pnlfound = true; dockPanel.Show(); } } if (!pnlfound) { dockManager1.BeginUpdate(); try { dockPanel = dockManager1.AddPanel(new System.Drawing.Point(-500, -500)); dockPanel.Tag = Tools.Instance.m_currentfile; MapViewerEx tabdet = new MapViewerEx(); tabdet.Map_name = sh.Varname; tabdet.IsDifferenceViewer = true; tabdet.AutoUpdateIfSRAM = false; tabdet.AutoUpdateInterval = 999999; tabdet.Viewtype = m_appSettings.DefaultViewType; tabdet.DisableColors = m_appSettings.DisableMapviewerColors; tabdet.AutoSizeColumns = m_appSettings.AutoSizeColumnsInWindows; tabdet.GraphVisible = m_appSettings.ShowGraphs; tabdet.IsRedWhite = m_appSettings.ShowRedWhite; tabdet.SetViewSize(m_appSettings.DefaultViewSize); tabdet.Filename = Filename; tabdet.Map_descr = tabdet.Map_name; tabdet.Map_cat = XDFCategories.Undocumented; tabdet.X_axisvalues = GetXaxisValues(Tools.Instance.m_currentfile, Tools.Instance.m_symbols, tabdet.Map_name); tabdet.Y_axisvalues = GetYaxisValues(Tools.Instance.m_currentfile, Tools.Instance.m_symbols, tabdet.Map_name); SymbolAxesTranslator axestrans = new SymbolAxesTranslator(); string x_axis = string.Empty; string y_axis = string.Empty; string x_axis_descr = string.Empty; string y_axis_descr = string.Empty; string z_axis_descr = string.Empty; tabdet.X_axis_name = sh.X_axis_descr; tabdet.Y_axis_name = sh.Y_axis_descr; tabdet.Z_axis_name = sh.Z_axis_descr; tabdet.XaxisUnits = sh.XaxisUnits; tabdet.YaxisUnits = sh.YaxisUnits; tabdet.X_axisAddress = sh.Y_axis_address; tabdet.Y_axisAddress = sh.X_axis_address; tabdet.Xaxiscorrectionfactor = sh.X_axis_correction; tabdet.Yaxiscorrectionfactor = sh.Y_axis_correction; tabdet.X_axisvalues = GetXaxisValues(Tools.Instance.m_currentfile, Tools.Instance.m_symbols, tabdet.Map_name); tabdet.Y_axisvalues = GetYaxisValues(Tools.Instance.m_currentfile, Tools.Instance.m_symbols, tabdet.Map_name); //tabdet.Map_sramaddress = GetSymbolAddressSRAM(SymbolName); int columns = 8; int rows = 8; int tablewidth = GetTableMatrixWitdhByName(Tools.Instance.m_currentfile, Tools.Instance.m_symbols, tabdet.Map_name, out columns, out rows); int address = Convert.ToInt32(SymbolAddress); if (address != 0) { tabdet.Map_address = address; int length = sh.Length; tabdet.Map_length = length; byte[] mapdata = Tools.Instance.readdatafromfile(Filename, address, length, Tools.Instance.m_currentFileType); byte[] mapdataorig = Tools.Instance.readdatafromfile(Filename, address, length, Tools.Instance.m_currentFileType); byte[] mapdata2 = Tools.Instance.readdatafromfile(Tools.Instance.m_currentfile, (int)GetSymbolAddress(Tools.Instance.m_symbols, sh.Varname), GetSymbolLength(Tools.Instance.m_symbols, sh.Varname), Tools.Instance.m_currentFileType); tabdet.Map_original_content = mapdataorig; tabdet.Map_compare_content = mapdata2; if (mapdata.Length == mapdata2.Length) { for (int bt = 0; bt < mapdata2.Length; bt += 2) { int value1 = Convert.ToInt16(mapdata.GetValue(bt)) * 256 + Convert.ToInt16(mapdata.GetValue(bt + 1)); int value2 = Convert.ToInt16(mapdata2.GetValue(bt)) * 256 + Convert.ToInt16(mapdata2.GetValue(bt + 1)); value1 = Math.Abs((int)value1 - (int)value2); byte v1 = (byte)(value1 / 256); byte v2 = (byte)(value1 - (int)v1 * 256); mapdata.SetValue(v1, bt); mapdata.SetValue(v2, bt + 1); } tabdet.Map_content = mapdata; tabdet.UseNewCompare = true; tabdet.Correction_factor = sh.Correction; tabdet.Correction_offset = sh.Offset; tabdet.IsUpsideDown = m_appSettings.ShowTablesUpsideDown; tabdet.ShowTable(columns, true); tabdet.Dock = DockStyle.Fill; tabdet.onClose += new MapViewerEx.ViewerClose(tabdet_onClose); dockPanel.Text = "Symbol difference: " + sh.Varname + " [" + Path.GetFileName(Filename) + "]"; bool isDocked = false; if (!isDocked) { dockPanel.DockTo(dockManager1, DevExpress.XtraBars.Docking.DockingStyle.Right, 0); if (m_appSettings.AutoSizeNewWindows) { if (tabdet.X_axisvalues.Length > 0) { dockPanel.Width = 30 + ((tabdet.X_axisvalues.Length + 1) * 45); } else { //dockPanel.Width = this.Width - dockSymbols.Width - 10; } } if (dockPanel.Width < 400) dockPanel.Width = 400; // dockPanel.Width = 400; } dockPanel.Controls.Add(tabdet); } else { frmInfoBox info = new frmInfoBox("Map lengths don't match..."); } } } catch (Exception E) { Console.WriteLine(E.Message); } dockManager1.EndUpdate(); } }
private void StartExcelExport() { ExcelInterface excelInterface = new ExcelInterface(); if (gridViewSymbols.SelectedRowsCount > 0) { int[] selrows = gridViewSymbols.GetSelectedRows(); if (selrows.Length > 0) { SymbolHelper sh = (SymbolHelper)gridViewSymbols.GetRow((int)selrows.GetValue(0)); //DataRowView dr = (DataRowView)gridViewSymbols.GetRow((int)selrows.GetValue(0)); //frmTableDetail tabdet = new frmTableDetail(); string Map_name = sh.Varname; if ((Map_name.StartsWith("2D") || Map_name.StartsWith("3D")) && sh.Userdescription != "") Map_name = sh.Userdescription; int columns = 8; int rows = 8; int tablewidth = GetTableMatrixWitdhByName(Tools.Instance.m_currentfile, Tools.Instance.m_symbols, Map_name, out columns, out rows); int address = (int)sh.Flash_start_address; if (address != 0) { int length = sh.Length; byte[] mapdata = Tools.Instance.readdatafromfile(Tools.Instance.m_currentfile, address, length, Tools.Instance.m_currentFileType); int[] xaxis = GetXaxisValues(Tools.Instance.m_currentfile, Tools.Instance.m_symbols, Map_name); int[] yaxis = GetYaxisValues(Tools.Instance.m_currentfile, Tools.Instance.m_symbols, Map_name); Map_name = Map_name.Replace(",", ""); Map_name = Map_name.Replace("[", ""); Map_name = Map_name.Replace("]", ""); excelInterface.ExportToExcel(Map_name, address, length, mapdata, columns, rows, true, xaxis, yaxis, m_appSettings.ShowTablesUpsideDown, sh.X_axis_descr, sh.Y_axis_descr, sh.Z_axis_descr); } } } else { frmInfoBox info = new frmInfoBox("No symbol selected in the primary symbol list"); } }
private void ImportFileInExcelFormat() { OpenFileDialog openFileDialog2 = new OpenFileDialog(); openFileDialog2.Multiselect = false; if (openFileDialog2.ShowDialog() == DialogResult.OK) { try { string mapname = string.Empty; string realmapname = string.Empty; int tildeindex = openFileDialog2.FileName.LastIndexOf("~"); bool symbolfound = false; if (tildeindex > 0) { tildeindex++; mapname = openFileDialog2.FileName.Substring(tildeindex, openFileDialog2.FileName.Length - tildeindex); mapname = mapname.Replace(".xls", ""); mapname = mapname.Replace(".XLS", ""); mapname = mapname.Replace(".Xls", ""); // look if it is a valid symbolname foreach (SymbolHelper sh in Tools.Instance.m_symbols) { if (sh.Varname.Replace(",", "").Replace("[","").Replace("]","") == mapname || sh.Userdescription.Replace(",", "") == mapname) { symbolfound = true; realmapname = sh.Varname; if (MessageBox.Show("Found valid symbol for import: " + sh.Varname + ". Are you sure you want to overwrite the map in the binary?", "Confirmation", MessageBoxButtons.YesNo) == DialogResult.Yes) { // ok, overwrite info in binary } else { mapname = string.Empty; // do nothing realmapname = string.Empty; } } } if (!symbolfound) { // ask user for symbol designation frmSymbolSelect frmselect = new frmSymbolSelect(Tools.Instance.m_symbols); if (frmselect.ShowDialog() == DialogResult.OK) { mapname = frmselect.SelectedSymbol; realmapname = frmselect.SelectedSymbol; } } } else { // ask user for symbol designation frmSymbolSelect frmselect = new frmSymbolSelect(Tools.Instance.m_symbols); if (frmselect.ShowDialog() == DialogResult.OK) { mapname = frmselect.SelectedSymbol; realmapname = frmselect.SelectedSymbol; } } if (realmapname != string.Empty) { ImportExcelSymbol(realmapname, openFileDialog2.FileName); } } catch (Exception E) { frmInfoBox info = new frmInfoBox("Failed to import map from excel: " + E.Message); } } }
private void ImportExcelSymbol(string symbolname, string filename) { ExcelInterface excelInterface = new ExcelInterface(); bool issixteenbit = true; System.Data.DataTable dt = excelInterface.getDataFromXLS(filename); int symbollength = GetSymbolLength(Tools.Instance.m_symbols, symbolname); int datalength = symbollength; if (issixteenbit) datalength /= 2; int[] buffer = new int[datalength]; int bcount = 0; // for (int rtel = 1; rtel < dt.Rows.Count; rtel++) for (int rtel = dt.Rows.Count; rtel >= 1; rtel--) { try { int idx = 0; foreach (object o in dt.Rows[rtel].ItemArray) { if (idx > 0) { if (o != null) { if (o != DBNull.Value) { if (bcount < buffer.Length) { buffer.SetValue(Convert.ToInt32(o), bcount++); } else { frmInfoBox info = new frmInfoBox("Too much information in file, abort"); return; } } } } idx++; } } catch (Exception E) { Console.WriteLine("ImportExcelSymbol: " + E.Message); } } if (bcount >= datalength) { byte[] data = new byte[symbollength]; int cellcount = 0; if (issixteenbit) { for (int dcnt = 0; dcnt < buffer.Length; dcnt++) { string bstr1 = "0"; string bstr2 = "0"; int cellvalue = Convert.ToInt32(buffer.GetValue(dcnt)); string svalue = cellvalue.ToString("X4"); bstr1 = svalue.Substring(svalue.Length - 4, 2); bstr2 = svalue.Substring(svalue.Length - 2, 2); data.SetValue(Convert.ToByte(bstr1, 16), cellcount++); data.SetValue(Convert.ToByte(bstr2, 16), cellcount++); } } else { for (int dcnt = 0; dcnt < buffer.Length; dcnt++) { int cellvalue = Convert.ToInt32(buffer.GetValue(dcnt)); data.SetValue(Convert.ToByte(cellvalue.ToString()), cellcount++); } } Tools.Instance.savedatatobinary((int)GetSymbolAddress(Tools.Instance.m_symbols, symbolname), symbollength, data, Tools.Instance.m_currentfile, true, Tools.Instance.m_currentFileType); Tools.Instance.UpdateChecksum(Tools.Instance.m_currentfile, false); } }
private SymbolCollection DetectMaps(string filename, out List<CodeBlock> newCodeBlocks, out List<AxisHelper> newAxisHelpers, bool showMessage, bool isPrimaryFile) { IEDCFileParser parser = Tools.Instance.GetParserForFile(filename, isPrimaryFile); newCodeBlocks = new List<CodeBlock>(); newAxisHelpers = new List<AxisHelper>(); SymbolCollection newSymbols = new SymbolCollection(); if (parser != null) { byte[] allBytes = File.ReadAllBytes(filename); string boschnumber = parser.ExtractBoschPartnumber(allBytes); string softwareNumber = parser.ExtractSoftwareNumber(allBytes); partNumberConverter pnc = new partNumberConverter(); ECUInfo info = pnc.ConvertPartnumber(boschnumber,allBytes.Length); //MessageBox.Show("Car: " + info.CarMake + "\nECU:" + info.EcuType); //1) Vw Hardware Number: 38906019GF, Vw System Type: 1,9l R4 EDC15P, Vw Software Number: SG 1434; //2) Vw Hardware Number: 38906019LJ, Vw System Type: 1,9l R4 EDC15P, Vw Software Number: SG 5934. if (!info.EcuType.StartsWith("EDC15P") && !info.EcuType.StartsWith("EDC15VM") && info.EcuType != string.Empty && showMessage) { frmInfoBox infobx = new frmInfoBox("No EDC15P/VM file [" + info.EcuType + "] " + Path.GetFileName(filename)); } if (info.EcuType == string.Empty) { Console.WriteLine("partnumber " + info.PartNumber + " unknown " + filename); } if (isPrimaryFile) { string partNo = parser.ExtractPartnumber(allBytes); partNo = Tools.Instance.StripNonAscii(partNo); softwareNumber = Tools.Instance.StripNonAscii(softwareNumber); barPartnumber.Caption = partNo + " " + softwareNumber; barAdditionalInfo.Caption = info.PartNumber + " " + info.CarMake + " " + info.EcuType + " " + parser.ExtractInfo(allBytes); } newSymbols = parser.parseFile(filename, out newCodeBlocks, out newAxisHelpers); newSymbols.SortColumn = "Flash_start_address"; newSymbols.SortingOrder = GenericComparer.SortOrder.Ascending; newSymbols.Sort(); //parser.NameKnownMaps(allBytes, newSymbols, newCodeBlocks); //parser.FindSVBL(allBytes, filename, newSymbols, newCodeBlocks); /*SymbolTranslator strans = new SymbolTranslator(); foreach (SymbolHelper sh in newSymbols) { sh.Description = strans.TranslateSymbolToHelpText(sh.Varname); }*/ // check for must have maps... if there are maps missing, report it if (showMessage && (parser is EDC15PFileParser || parser is EDC15P6FileParser)) { string _message = string.Empty; if (MapsWithNameMissing("EGR", newSymbols)) _message += "EGR maps missing" + Environment.NewLine; if (MapsWithNameMissing("SVBL", newSymbols)) _message += "SVBL missing" + Environment.NewLine; if (MapsWithNameMissing("Torque limiter", newSymbols)) _message += "Torque limiter missing" + Environment.NewLine; if (MapsWithNameMissing("Smoke limiter", newSymbols)) _message += "Smoke limiter missing" + Environment.NewLine; //if (MapsWithNameMissing("IQ by MAF limiter", newSymbols)) _message += "IQ by MAF limiter missing" + Environment.NewLine; if (MapsWithNameMissing("Injector duration", newSymbols)) _message += "Injector duration maps missing" + Environment.NewLine; if (MapsWithNameMissing("Start of injection", newSymbols)) _message += "Start of injection maps missing" + Environment.NewLine; if (MapsWithNameMissing("N75 duty cycle", newSymbols)) _message += "N75 duty cycle map missing" + Environment.NewLine; if (MapsWithNameMissing("Inverse driver wish", newSymbols)) _message += "Inverse driver wish map missing" + Environment.NewLine; if (MapsWithNameMissing("Boost target map", newSymbols)) _message += "Boost target map missing" + Environment.NewLine; if (MapsWithNameMissing("SOI limiter", newSymbols)) _message += "SOI limiter missing" + Environment.NewLine; if (MapsWithNameMissing("Driver wish", newSymbols)) _message += "Driver wish map missing" + Environment.NewLine; if (MapsWithNameMissing("Boost limit map", newSymbols)) _message += "Boost limit map missing" + Environment.NewLine; if (MapsWithNameMissing("MAF correction", newSymbols)) _message += "MAF correction map missing" + Environment.NewLine; if (MapsWithNameMissing("MAF linearization", newSymbols)) _message += "MAF linearization map missing" + Environment.NewLine; if (MapsWithNameMissing("MAP linearization", newSymbols)) _message += "MAP linearization map missing" + Environment.NewLine; if (_message != string.Empty) { frmInfoBox infobx = new frmInfoBox(_message); } } if (isPrimaryFile) { barSymCount.Caption = newSymbols.Count.ToString() + " symbols"; if (MapsWithNameMissing("Launch control map", newSymbols)) { btnActivateLaunchControl.Enabled = true; } else { btnActivateLaunchControl.Enabled = false; } btnActivateSmokeLimiters.Enabled = false; try { if (Tools.Instance.codeBlockList.Count > 0) { if ((GetMapCount("Smoke limiter", newSymbols) / Tools.Instance.codeBlockList.Count) == 1) { btnActivateSmokeLimiters.Enabled = true; } else { btnActivateSmokeLimiters.Enabled = false; } } } catch (Exception) { } } } return newSymbols; }
private void btnSearchMaps_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 Tools.Instance.m_symbols) { progress.SetProgress("Searching " + sh.Varname); progress.SetProgressPercentage((cnt * 100) / Tools.Instance.m_symbols.Count); bool hit_found = false; 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 < Tools.Instance.m_currentfilelength) { byte[] symboldata = Tools.Instance.readdatafromfile(Tools.Instance.m_currentfile, (int)sh.Flash_start_address, sh.Length, Tools.Instance.m_currentFileType); if (searchoptions.SearchForNumericValues) { 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; } } } 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(); DevExpress.XtraBars.Docking.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 = Tools.Instance.m_currentfile; tabdet.onSymbolSelect += new CompareResults.NotifySelectSymbol(tabdet_onSymbolSelectForFind); dockPanel.Controls.Add(tabdet); dockPanel.Text = "Search results: " + Path.GetFileName(Tools.Instance.m_currentfile); dockPanel.DockTo(dockManager1, DevExpress.XtraBars.Docking.DockingStyle.Left, 1); dockPanel.Width = 500; 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")); dt.Columns.Add("CodeBlock1", Type.GetType("System.Int32")); dt.Columns.Add("CodeBlock2", Type.GetType("System.Int32")); string ht = string.Empty; XDFCategories cat = XDFCategories.Undocumented; XDFSubCategory subcat = XDFSubCategory.Undocumented; foreach (SymbolHelper shfound in result_Collection) { string helptext = st.TranslateSymbolToHelpText(shfound.Varname); if (shfound.Varname.Contains(".")) { try { shfound.Category = shfound.Varname.Substring(0, shfound.Varname.IndexOf(".")); } catch (Exception cE) { Console.WriteLine("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, shfound.CodeBlock, shfound.CodeBlock); } tabdet.CompareSymbolCollection = result_Collection; tabdet.OpenGridViewGroups(tabdet.gridControl1, 1); tabdet.gridControl1.DataSource = dt.Copy(); } catch (Exception E) { Console.WriteLine(E.Message); } dockManager1.EndUpdate(); } } } }