def test_import_export_additional_frame_info(self): db_path = os.path.join( os.path.dirname(__file__), "..", "test", "test.dbc") dbs = formats.loadp(db_path) tmp_dir = tempfile.mkdtemp() for extension in ['csv', 'json']: out_file_name = tmp_dir + "/output." + extension formats.dumpp(dbs, out_file_name, additionalFrameAttributes="UserFrameAttr") with open(out_file_name, "r") as file: data = file.read() self.assertIn("UserFrameAttr", data)
def test_import_export_additional_frame_info(self): db_path = os.path.join(os.path.dirname(__file__), "..", "test", "test.dbc") dbs = formats.loadp(db_path) tmp_dir = tempfile.mkdtemp() for extension in ['csv', 'json']: out_file_name = tmp_dir + "/output." + extension formats.dumpp(dbs, out_file_name, additionalFrameAttributes="UserFrameAttr") with open(out_file_name, "r") as file: data = file.read() self.assertIn("UserFrameAttr", data)
def export(self, filename): """Export current configuration to a database file. :param str filename: Filename to save to (e.g. DBC, DBF, ARXML, KCD etc) :return: The CanMatrix object created :rtype: canmatrix.canmatrix.CanMatrix """ from canmatrix import canmatrix from canmatrix import formats db = canmatrix.CanMatrix() for pdo_maps in (self.rx, self.tx): for pdo_map in pdo_maps.values(): if pdo_map.cob_id is None: continue frame = canmatrix.Frame(pdo_map.name, Id=pdo_map.cob_id, extended=0) for var in pdo_map.map: is_signed = var.od.data_type in objectdictionary.SIGNED_TYPES is_float = var.od.data_type in objectdictionary.FLOAT_TYPES min_value = var.od.min max_value = var.od.max if min_value is not None: min_value *= var.od.factor if max_value is not None: max_value *= var.od.factor name = var.name name = name.replace(" ", "_") name = name.replace(".", "_") signal = canmatrix.Signal(name, startBit=var.offset, signalSize=var.length, is_signed=is_signed, is_float=is_float, factor=var.od.factor, min=min_value, max=max_value, unit=var.od.unit) for value, desc in var.od.value_descriptions.items(): signal.addValues(value, desc) frame.addSignal(signal) frame.calcDLC() db.frames.addFrame(frame) formats.dumpp({"": db}, filename) return db
def export(self, filename): """Export current configuration to a database file. :param str filename: Filename to save to (e.g. DBC, DBF, ARXML, KCD etc) """ from canmatrix import canmatrix from canmatrix import formats db = canmatrix.CanMatrix() for pdo_maps in (self.rx, self.tx): for pdo_map in pdo_maps.values(): if pdo_map.cob_id is None: continue direction = "Tx" if pdo_map.cob_id & 0x80 else "Rx" map_id = pdo_map.cob_id >> 8 name = "%sPDO%d_node%d" % (direction, map_id, self.parent.id) frame = canmatrix.Frame(name, Id=pdo_map.cob_id, extended=0) for var in pdo_map.map: is_signed = var.od.data_type in objectdictionary.SIGNED_TYPES is_float = var.od.data_type in objectdictionary.FLOAT_TYPES min_value = var.od.min max_value = var.od.max if min_value is not None: min_value *= var.od.factor if max_value is not None: max_value *= var.od.factor signal = canmatrix.Signal(var.name.replace(".", "_"), startBit=var.offset, signalSize=len(var.od), is_signed=is_signed, is_float=is_float, factor=var.od.factor, min=min_value, max=max_value, unit=var.od.unit) for value, desc in var.od.value_descriptions.items(): signal.addValues(value, desc) frame.addSignal(signal) frame.calcDLC() db.frames.addFrame(frame) formats.dumpp({"": db}, filename)