public GetNumberOfCylinders ( string enginetype, string additionalInfo ) : int | ||
enginetype | string | |
additionalInfo | string | |
return | int |
private void LoadFiles() { loading = true; simpleButton1.Text = "Cancel"; simpleButton2.Enabled = false; SetProgressVisibility(true); SetScanProgress("scanning...", 0); Application.DoEvents(); ctrlAirmassResult airmassResult = new ctrlAirmassResult(); partNumberConverter pnc = new partNumberConverter(); List<ScannedFile> detectedFiles = new List<ScannedFile>(); int fileCounter = 0; if (Directory.Exists(buttonEdit1.Text)) { string[] files = Directory.GetFiles(buttonEdit1.Text, "*.*", SearchOption.AllDirectories); foreach (string file in files) { fileCounter++; int percentage = (fileCounter * 100) / files.Length; SetScanProgress("importing...", percentage); if (cancelLoad) { cancelLoad = false; break; } FileInfo fi = new FileInfo(file); this.Text = "Library builder - " + Path.GetFileNameWithoutExtension(file); Application.DoEvents(); if (IsValidLength(fi.Length)) { IEDCFileParser parser = Tools.Instance.GetParserForFile(file, false); byte[] allBytes = File.ReadAllBytes(file); string boschPartnumber = parser.ExtractBoschPartnumber(allBytes); List<CodeBlock> newCodeBlocks = new List<CodeBlock>(); List<AxisHelper> newAxisHelpers = new List<AxisHelper>(); if (boschPartnumber != string.Empty) { //string additionalInfo = parser.ExtractInfo(allBytes); SymbolCollection sc = parser.parseFile(file, out newCodeBlocks, out newAxisHelpers); ECUInfo info = pnc.ConvertPartnumber(boschPartnumber, allBytes.Length); ScannedFile newFile = new ScannedFile(); newFile.CarMake = info.CarMake; newFile.CarType = info.CarType; newFile.EcuType = info.EcuType; newFile.EngineType = info.EngineType; newFile.FuellingType = info.FuellingType; newFile.FuelType = info.FuelType; newFile.HP = info.HP; newFile.PartNumber = info.PartNumber; newFile.SoftwareID = info.SoftwareID; newFile.TQ = info.TQ; if (info.EcuType.Contains("EDC15P-6")) { newFile.Filetype = EDCFileType.EDC15P6; } else if (info.EcuType.Contains("EDC15P")) { newFile.Filetype = EDCFileType.EDC15P; } else if (info.EcuType.Contains("EDC15M")) { newFile.Filetype = EDCFileType.EDC15M; } else if (info.EcuType.Contains("EDC15V-5.")) { newFile.Filetype = EDCFileType.MSA15; } else if (info.EcuType.Contains("EDC15V")) { newFile.Filetype = EDCFileType.EDC15V; } else if (info.EcuType.Contains("EDC15C")) { newFile.Filetype = EDCFileType.EDC15C; } else if (info.EcuType.Contains("EDC16")) { newFile.Filetype = EDCFileType.EDC16; } else if (info.EcuType.Contains("EDC17")) { newFile.Filetype = EDCFileType.EDC17; } else if (info.EcuType.Contains("MSA15")) { newFile.Filetype = EDCFileType.MSA15; } else if (info.EcuType.Contains("MSA12")) { newFile.Filetype = EDCFileType.MSA12; } else if (info.EcuType.Contains("MSA11")) { newFile.Filetype = EDCFileType.MSA11; } else if (info.EcuType.Contains("MSA6")) { newFile.Filetype = EDCFileType.MSA6; } else if (boschPartnumber != string.Empty) { if (fi.Length == 1024 * 1024 * 2) { newFile.Filetype = EDCFileType.EDC17; } else if(boschPartnumber.StartsWith("EDC17")) { newFile.Filetype = EDCFileType.EDC17; } else { newFile.Filetype = EDCFileType.EDC15V; } } else { newFile.Filetype = EDCFileType.EDC16; // default to EDC16??? } newFile.Filename = file; newFile.Filesize = (int)fi.Length; ChecksumResultDetails crd = Tools.Instance.UpdateChecksum(file, true); string chkType = string.Empty; if (crd.TypeResult == ChecksumType.VAG_EDC15P_V41) chkType = "VAG EDC15P V4.1"; else if (crd.TypeResult == ChecksumType.VAG_EDC15P_V41V2) chkType = "VAG EDC15P V4.1v2"; else if (crd.TypeResult == ChecksumType.VAG_EDC15P_V41_2002) chkType = "VAG EDC15P V4.1 2002+"; newFile.ChecksumType = chkType; newFile.ChecksumResult = crd.CalculationResult.ToString(); newFile.NumberChecksums = crd.NumberChecksumsTotal; newFile.NumberChecksumsFail = crd.NumberChecksumsFail; newFile.NumberChecksumsOk = crd.NumberChecksumsOk; newFile.NumberMapsDetected = sc.Count; string _message = string.Empty; newFile.MapsOk = CheckMajorMapsPresent(sc, newFile.Filetype, out _message); newFile.Messages = _message; foreach (SymbolHelper sh in sc) { if (!sh.Varname.StartsWith("3D") && !sh.Varname.StartsWith("2D")) { newFile.NumberMapsRecognized++; } } try { airmassResult.Currentfile = file; airmassResult.Symbols = sc; airmassResult.Currentfile_size = (int)fi.Length; string additionalInfo = parser.ExtractInfo(allBytes); airmassResult.NumberCylinders = pnc.GetNumberOfCylinders(info.EngineType, additionalInfo); airmassResult.ECUType = info.EcuType; PerformanceResults pr = airmassResult.Calculate(file, sc); newFile.RealHP = pr.Horsepower; newFile.RealTQ = pr.Torque; } catch (Exception) { } detectedFiles.Add(newFile); } else if (file.ToUpper().EndsWith(".BIN") || file.ToUpper().EndsWith(".ORI")) { Console.WriteLine("Missed " + file); // add it as well if (checkEdit1.Checked) { ScannedFile newFile = new ScannedFile(); newFile.CarMake = ""; newFile.CarType = ""; newFile.EcuType = "Unknown"; newFile.EngineType = ""; newFile.FuellingType = ""; newFile.FuelType = ""; newFile.HP = 0; newFile.PartNumber = ""; newFile.SoftwareID = ""; newFile.TQ = 0; newFile.Filetype = EDCFileType.Unknown; newFile.Filename = file; newFile.Filesize = (int)fi.Length; newFile.ChecksumType = ""; newFile.ChecksumResult = ""; newFile.NumberChecksums = 0; newFile.NumberChecksumsFail = 0; newFile.NumberChecksumsOk = 0; newFile.NumberMapsDetected = 0; newFile.MapsOk = false; newFile.Messages = ""; newFile.NumberMapsRecognized = 0; detectedFiles.Add(newFile); } } } } gridControl1.DataSource = detectedFiles; } loading = false; SetScanProgress("done", 100); SetProgressVisibility(false); this.Text = "Library builder"; simpleButton1.Text = "Close"; simpleButton2.Enabled = true; Application.DoEvents(); }
public override SymbolCollection parseFile(string filename, out List<CodeBlock> newCodeBlocks, out List<AxisHelper> newAxisHelpers) { newCodeBlocks = new List<CodeBlock>(); SymbolCollection newSymbols = new SymbolCollection(); newAxisHelpers = new List<AxisHelper>(); byte[] allBytes = File.ReadAllBytes(filename); string boschnumber = ExtractBoschPartnumber(allBytes); string softwareNumber = ExtractSoftwareNumber(allBytes); string additionalInfo = ExtractInfo(allBytes); string partnumber = ExtractPartnumber(allBytes); partNumberConverter pnc = new partNumberConverter(); ECUInfo info = pnc.ConvertPartnumber(boschnumber, allBytes.Length); // check if V6 2.5 TDI/R4 1.9 TDI/R3 1.4 TDi int nrCylinders = pnc.GetNumberOfCylinders(info.EngineType, additionalInfo); // we can detect maps depending on ECUType/EngineType/nrCylinders/Filesize etc VerifyCodeBlocks(allBytes, newSymbols, newCodeBlocks); for (int t = 0; t < allBytes.Length - 1; t += 2) { int len2skip = 0; if (CheckMap(t, allBytes, newSymbols, newCodeBlocks, out len2skip)) { if (len2skip > 2) len2skip -= 2; // make sure we don't miss maps if ((len2skip % 2) > 0) len2skip -= 1; if (len2skip < 0) len2skip = 0; // t += len2skip; // Console.WriteLine("map detected: " + t.ToString("X8")); } } newSymbols.SortColumn = "Flash_start_address"; newSymbols.SortingOrder = GenericComparer.SortOrder.Ascending; newSymbols.Sort(); NameKnownMaps(allBytes, newSymbols, newCodeBlocks); BuildAxisIDList(newSymbols, newAxisHelpers); MatchAxis(newSymbols, newAxisHelpers); 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 return newSymbols; }
private void btnAirmassResult_ItemClick(object sender, ItemClickEventArgs e) { DevExpress.XtraBars.Docking.DockPanel dockPanel; if (CheckAllTablesAvailable()) { dockManager1.BeginUpdate(); try { ctrlAirmassResult airmassResult = new ctrlAirmassResult(); airmassResult.Dock = DockStyle.Fill; dockPanel = dockManager1.AddPanel(DevExpress.XtraBars.Docking.DockingStyle.Right); dockPanel.Tag = Tools.Instance.m_currentfile; dockPanel.ClosedPanel += new DevExpress.XtraBars.Docking.DockPanelEventHandler(dockPanel_ClosedPanel); dockPanel.Text = "Airmass result viewer: " + Path.GetFileName(Tools.Instance.m_currentfile); dockPanel.Width = 800; airmassResult.onStartTableViewer += new ctrlAirmassResult.StartTableViewer(airmassResult_onStartTableViewer); airmassResult.onClose += new ctrlAirmassResult.ViewerClose(airmassResult_onClose); airmassResult.Currentfile = Tools.Instance.m_currentfile; airmassResult.Symbols = Tools.Instance.m_symbols; airmassResult.Currentfile_size = Tools.Instance.m_currentfilelength; IEDCFileParser parser = Tools.Instance.GetParserForFile(Tools.Instance.m_currentfile, false); byte[] allBytes = File.ReadAllBytes(Tools.Instance.m_currentfile); string additionalInfo = parser.ExtractInfo(allBytes); //GetNumberOfCylinders string bpn = parser.ExtractBoschPartnumber(allBytes); partNumberConverter pnc = new partNumberConverter(); ECUInfo info = pnc.ConvertPartnumber(bpn, allBytes.Length); airmassResult.NumberCylinders = pnc.GetNumberOfCylinders(info.EngineType, additionalInfo); airmassResult.ECUType = info.EcuType; airmassResult.Calculate(Tools.Instance.m_currentfile, Tools.Instance.m_symbols); dockPanel.Controls.Add(airmassResult); } catch (Exception newdockE) { Console.WriteLine(newdockE.Message); } dockManager1.EndUpdate(); } }