示例#1
0
    def extractMDF(self):
        # Get user selected MDF file path and make extracted MDF object.
        mdf_obj = MDF(self.mdf_path)
        self.mdf_extracted = mdf_obj.extract_can_logging([self.dbc_path])

        # Group names only exist in comment formatted as CAN#.group.signal.
        # Populate channel_dict by channel_dict[group] = [{signal: signal_object}, ...]
        for sig in self.mdf_extracted.iter_channels():
            for word in sig.comment.split():
                if word[0] != '<':
                    s = word.split(".")
                    if s[1] not in self.channel_dict:
                        self.channel_dict[s[1]] = {s[2]: sig}
                    else:
                        self.channel_dict[s[1]][s[2]] = sig

        # Populate tree widget with groups and signals.
        for group, signals in self.channel_dict.items():
            parent = QtWidgets.QTreeWidgetItem(self.channel_selectors, [group])
            for sig in signals:
                child = QtWidgets.QTreeWidgetItem(parent)
                child.setText(0, sig)

        # Render any graphs already present and grab data for pedals.
        self.render_graphs()
        self.load_pedal_data()
        self.load_steering_wheel()
示例#2
0
    def test_j1939_extract(self):
        print('J1939 extract')

        temp_dir = Path(TestCANBusLogging.tempdir_j1939.name)

        mdf = [
            input_file for input_file in temp_dir.iterdir()
            if input_file.suffix == '.mf4'
        ][0]

        mdf = MDF(mdf)

        dbc = [
            input_file for input_file in temp_dir.iterdir()
            if input_file.suffix == '.dbc'
        ][0]

        signals = [
            input_file for input_file in temp_dir.iterdir()
            if input_file.suffix == '.npy'
        ]

        out = mdf.extract_can_logging([dbc])

        for signal in signals:
            name = signal.stem

            target = np.load(signal)
            values = out.get(name).samples

            self.assertTrue(np.array_equal(values, target))
示例#3
0
    def test_obd_extract(self):
        print("OBD extract")

        temp_dir = Path(TestCANBusLogging.tempdir_obd.name)

        for file in temp_dir.iterdir():
            print(file)

        mdf = [
            input_file for input_file in temp_dir.iterdir()
            if input_file.suffix == ".mf4"
        ][0]

        mdf = MDF(mdf)

        dbc = [
            input_file for input_file in temp_dir.iterdir()
            if input_file.suffix == ".dbc"
        ][0]

        signals = [
            input_file for input_file in temp_dir.iterdir()
            if input_file.suffix == ".npy"
        ]

        out = mdf.extract_can_logging([dbc])

        for signal in signals:
            name = signal.stem

            target = np.load(signal)
            values = out.get(name).samples

            self.assertTrue(np.array_equal(values, target))