static bool ParseUdsFile(UdsReader udsReader, string fileName, StreamWriter outStream) { try { List <string> includeFiles = udsReader.GetFileList(fileName); if (includeFiles == null) { outStream.WriteLine("Get file list failed"); return(false); } outStream.WriteLine("Includes:"); foreach (string includeFile in includeFiles) { outStream.WriteLine(includeFile); } foreach (UdsReader.SegmentType segmentType in Enum.GetValues(typeof(UdsReader.SegmentType))) { UdsReader.SegmentInfo segmentInfo = udsReader.GetSegmentInfo(segmentType); if (segmentInfo == null || segmentInfo.Ignored) { outStream.WriteLine(); outStream.WriteLine("*** Ignoring segment: {0}", segmentType.ToString()); continue; } List <UdsReader.ParseInfoBase> resultList = udsReader.ExtractFileSegment(includeFiles, segmentType); if (resultList == null) { outStream.WriteLine("Parsing failed"); return(false); } if (resultList.Count == 0) { continue; } outStream.WriteLine(); outStream.WriteLine("Segment Type: {0}", segmentType.ToString()); outStream.WriteLine("-----------------------------------"); foreach (UdsReader.ParseInfoBase parseInfo in resultList) { outStream.WriteLine(""); StringBuilder sb = new StringBuilder(); if (parseInfo.LineArray != null) { foreach (string entry in parseInfo.LineArray) { if (sb.Length > 0) { sb.Append("; "); } sb.Append("\""); sb.Append(entry); sb.Append("\""); } sb.Insert(0, "Raw: "); outStream.WriteLine(sb.ToString()); } if (parseInfo is UdsReader.ParseInfoMwb parseInfoMwb) { sb.Clear(); foreach (string entry in parseInfoMwb.NameArray) { if (sb.Length > 0) { sb.Append("; "); } sb.Append("\""); sb.Append(entry); sb.Append("\""); } sb.Insert(0, "Name: "); outStream.WriteLine(sb.ToString()); outStream.WriteLine(string.Format(CultureInfo.InvariantCulture, "Service ID: {0:X04}", parseInfoMwb.ServiceId)); outStream.WriteLine(string.Format(CultureInfo.InvariantCulture, "Data ID Name: {0}", parseInfoMwb.DataIdString)); if (!PrintDataTypeEntry(outStream, parseInfoMwb.DataTypeEntry)) { return(false); } outStream.WriteLine(TestDataType(fileName, parseInfoMwb)); } if (parseInfo is UdsReader.ParseInfoDtc parseInfoDtc) { sb.Clear(); outStream.WriteLine(string.Format(CultureInfo.InvariantCulture, "Error Code: {0} (0x{0:X06}), {1}", parseInfoDtc.ErrorCode, parseInfoDtc.PcodeText)); outStream.WriteLine(string.Format(CultureInfo.InvariantCulture, "Error Text: {0}", parseInfoDtc.ErrorText)); if (parseInfoDtc.DetailCode.HasValue && parseInfoDtc.DetailCode.Value > 0) { outStream.WriteLine(string.Format(CultureInfo.InvariantCulture, "Detail Code: {0:X02}", parseInfoDtc.DetailCode)); } if (!string.IsNullOrEmpty(parseInfoDtc.ErrorDetail)) { outStream.WriteLine(string.Format(CultureInfo.InvariantCulture, "Error Detail: {0}", parseInfoDtc.ErrorDetail)); } } if (parseInfo is UdsReader.ParseInfoSlv parseInfoSlv) { sb.Clear(); if (parseInfoSlv.TableKey.HasValue) { outStream.WriteLine(string.Format(CultureInfo.InvariantCulture, "Slave Table Key: {0}", parseInfoSlv.TableKey)); if (parseInfoSlv.SlaveList != null) { foreach (UdsReader.ParseInfoSlv.SlaveInfo slaveInfo in parseInfoSlv.SlaveList) { outStream.WriteLine(string.Format(CultureInfo.InvariantCulture, "Min Addr: {0}, Max Addr: {1}, Name: {2}", slaveInfo.MinAddr, slaveInfo.MaxAddr, slaveInfo.Name)); } } } } } } return(true); } catch (Exception ex) { try { outStream.WriteLine("Exception: {0}", ex.Message); } catch (Exception) { // ignored } return(false); } }
static bool ParseFile(UdsReader udsReader, string fileName, StreamWriter outStream) { try { List <string> includeFiles = udsReader.GetFileList(fileName); if (includeFiles == null) { outStream.WriteLine("Get file list failed"); return(false); } outStream.WriteLine("Includes:"); foreach (string includeFile in includeFiles) { outStream.WriteLine(includeFile); } List <UdsReader.ParseInfoBase> resultList = udsReader.ExtractFileSegment(includeFiles, UdsReader.SegmentType.Mwb); if (resultList == null) { outStream.WriteLine("Parsing failed"); return(false); } outStream.WriteLine("MWB:"); foreach (UdsReader.ParseInfoBase parseInfo in resultList) { outStream.WriteLine(""); StringBuilder sb = new StringBuilder(); foreach (string entry in parseInfo.LineArray) { if (sb.Length > 0) { sb.Append("; "); } sb.Append("\""); sb.Append(entry); sb.Append("\""); } sb.Insert(0, "Raw: "); outStream.WriteLine(sb.ToString()); if (parseInfo is UdsReader.ParseInfoMwb parseInfoMwb) { sb.Clear(); foreach (string entry in parseInfoMwb.NameArray) { if (sb.Length > 0) { sb.Append("; "); } sb.Append("\""); sb.Append(entry); sb.Append("\""); } sb.Insert(0, "Name: "); outStream.WriteLine(sb.ToString()); outStream.WriteLine(string.Format(CultureInfo.InvariantCulture, "Service ID: {0:X04}", parseInfoMwb.ServiceId)); if (!PrintDataTypeEntry(outStream, parseInfoMwb.DataTypeEntry)) { return(false); } outStream.WriteLine(TestDataType(fileName, parseInfoMwb)); } } return(true); } catch (Exception ex) { try { outStream.WriteLine("Exception: {0}", ex.Message); } catch (Exception) { // ignored } return(false); } }