コード例 #1
0
        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);
        }
コード例 #2
0
        public void SignalParserShouldReturnCorrectValues()
        {
            string line = " SG_ cell_voltage_002 m0 : 16|8@1+ (0.01,2) [2|4.55] \"V\"  VCU";

            List <string> arguments = new List <string> {
                "Name", "StartBit", "Length"
            };

            Signal signal = SignalParser.ParseLine(line, arguments);

            Assert.True(signal.Name == "cell_voltage_002" && signal.StartBit == 16 && signal.Length == 8);
        }