public CANDatabase ParseFile(FileModel file, ParsingArguments arguments) { string line; CANDatabase dbcObject = new CANDatabase(); dbcObject.Name = file.Name; dbcObject.Messages = new List <Message>(); using FileStream fileStream = File.OpenRead(file.Location); using var streamReader = new StreamReader(fileStream); while ((line = streamReader.ReadLine()) != null) { if (LinePrefix.CheckLine(line, "BU_")) { dbcObject.NetworkNodes = NetworkNodeParser.ParseLine(line); } else if (LinePrefix.CheckLine(line, "BO_")) { Message message = MessageParser.ParseLine(line, arguments.Messages); dbcObject.Messages.Add(message); } else if (LinePrefix.CheckLine(line, " SG_")) { Signal signal = SignalParser.ParseLine(line, arguments.Signals); int indexOfLast = dbcObject.Messages.Count - 1; dbcObject.Messages[indexOfLast].Signals.Add(signal); } } return(dbcObject); }
public void Add(FileModel file) { ParsingArguments parsingArguments = new ParsingArguments() { Messages = { "MessageId", "Name" }, Signals = { "Name", "StartBit", "Length" } }; try { CANDatabase canDb = _dbcParser.ParseFile(file, parsingArguments); _db.CANDatabases.Add(canDb); _db.SaveChanges(); return; } catch (Exception ex) { throw ex; } }