Example #1
0
        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);
            }
        }
Example #2
0
        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);
            }
        }