def convert_exec(self, out_put_file, option): print("convert") print(out_put_file) options = self.option dbs = self.dbs outdbs = {} for name in dbs: db = None if 'ecus' in options and options['ecus'] is not None: ecuList = options['ecus'].split(',') db = cm.CanMatrix() for ecu in ecuList: cmcp.copyBUwithFrames(ecu, dbs[name], db) if 'frames' in options and options['frames'] is not None: frameList = options['frames'].split(',') db = cm.CanMatrix() for frame in frameList: cmcp.copyFrame(frame, dbs[name], db) if db is None: db = dbs[name] outdbs[name] = db out = canmatrix.formats.dumpp(outdbs, out_put_file) if out == -1: self.textEdit.append("Convert Failed!") self.open_convert_done_file_btn.setEnabled(False) else: self.textEdit.append("Convert Success!") self.textEdit.append("Out put file: " + out_put_file) self.convert_done_file_name = out_put_file self.open_convert_done_file_btn.setEnabled(True)
def addComments(thedb, descriptions): database = cm.CanMatrix() for frame in next(iter(thedb.values())).frames: for signal in frame: if signal.name in sigToDesc: print("CM_ SG_ " + "%d " % (frame.id + 2147483648) + signal.name + " " + '"' + sigToDesc[signal.name] + '";')
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)
def convert(infile, outfileName, **options): dbs = {} logger.info("Importing " + infile + " ... ") dbs = canmatrix.formats.loadp(infile, **options) logger.info("done\n") logger.info("Exporting " + outfileName + " ... ") outdbs = {} for name in dbs: db = None if 'ecus' in options and options['ecus'] is not None: ecuList = options['ecus'].split(',') db = cm.CanMatrix() for ecu in ecuList: logger.info("Copying ECU " + ecu) cmcp.copyBUwithFrames(ecu, dbs[name], db) if 'frames' in options and options['frames'] is not None: frameList = options['frames'].split(',') db = cm.CanMatrix() for frame in frameList: logger.info("Copying Frame " + frame) cmcp.copyFrame(frame, dbs[name], db) if db is None: db = dbs[name] if 'merge' in options and options['merge'] is not None: mergeFiles = options['merge'].split(',') for database in mergeFiles: mergeString = database.split(':') dbTempList = canmatrix.formats.loadp(mergeString[0]) for dbTemp in dbTempList: if mergeString.__len__() == 1: print("merge complete: " + mergeString[0]) for frame in dbTempList[dbTemp].frames: cmcp.copyFrame(frame.id, dbTempList[dbTemp], db) for mergeOpt in mergeString[1:]: if mergeOpt.split('=')[0] == "ecu": cmcp.copyBUwithFrames( mergeOpt.split('=')[1], dbTempList[dbTemp], db) if mergeOpt.split('=')[0] == "frame": cmcp.copyFrame( mergeOpt.split('=')[1], dbTempList[dbTemp], db) if 'renameEcu' in options and options['renameEcu'] is not None: renameTuples = options['renameEcu'].split(',') for renameTuple in renameTuples: old, new = renameTuple.split(':') db.renameEcu(old, new) if 'deleteEcu' in options and options['deleteEcu'] is not None: deleteEcuList = options['deleteEcu'].split(',') for ecu in deleteEcuList: db.delEcu(ecu) if 'renameFrame' in options and options['renameFrame'] is not None: renameTuples = options['renameFrame'].split(',') for renameTuple in renameTuples: old, new = renameTuple.split(':') db.renameFrame(old, new) if 'deleteFrame' in options and options['deleteFrame'] is not None: deleteFrameList = options['deleteFrame'].split(',') for frame in deleteFrameList: db.delFrame(frame) if 'renameSignal' in options and options['renameSignal'] is not None: renameTuples = options['renameSignal'].split(',') for renameTuple in renameTuples: old, new = renameTuple.split(':') db.renameSignal(old, new) if 'deleteSignal' in options and options['deleteSignal'] is not None: deleteSignalList = options['deleteSignal'].split(',') for signal in deleteSignalList: db.delSignal(signal) if 'deleteZeroSignals' in options and options['deleteZeroSignals']: db.deleteZeroSignals() if 'deleteSignalAttributes' in options and options[ 'deleteSignalAttributes']: unwantedAttributes = options['deleteSignalAttributes'].split(',') db.delSignalAttributes(unwantedAttributes) if 'deleteFrameAttributes' in options and options[ 'deleteFrameAttributes']: unwantedAttributes = options['deleteFrameAttributes'].split(',') db.delFrameAttributes(unwantedAttributes) if 'deleteObsoleteDefines' in options and options[ 'deleteObsoleteDefines']: db.deleteObsoleteDefines() if 'recalcDLC' in options and options['recalcDLC']: db.recalcDLC(options['recalcDLC']) logger.info(name) logger.info("%d Frames found" % (db.frames.__len__())) outdbs[name] = db if 'force_output' in options and options['force_output'] is not None: canmatrix.formats.dumpp(outdbs, outfileName, exportType=options['force_output'], **options) else: canmatrix.formats.dumpp(outdbs, outfileName, **options) logger.info("done")
def empty_matrix(): return canmatrix.CanMatrix()
def test_baudrate(): cm = canmatrix.CanMatrix() cm.baudrate = 500000 assert cm.baudrate == 500000 cm.fd_baudrate = 1000000 assert cm.fd_baudrate == 1000000
def convert(infile, outfileName, **options): dbs = {} print("Importing " + infile + " ... ") dbs = canmatrix.formats.loadp(infile, **options) print("done\n") print("Exporting " + outfileName + " ... ") outdbs = {} for name in dbs: db = None if 'ecus' in options and options['ecus'] is not None: ecuList = options['ecus'].split(',') db = cm.CanMatrix() for ecu in ecuList: canmatrix.copy.copyBUwithFrames(ecu, dbs[name], db) if 'frames' in options and options['frames'] is not None: frameList = options['frames'].split(',') db = cm.CanMatrix() for frame in frameList: canmatrix.copy.copyFrame(frame, dbs[name], db) if db is None: db = dbs[name] if 'merge' in options and options['merge'] is not None: mergeFiles = options['merge'].split(',') for database in mergeFiles: mergeString = database.split(':') dbTempList = canmatrix.formats.loadp(mergeString[0]) for dbTemp in dbTempList: if mergeString.__len__() == 1: print("merge complete: " + mergeString[0]) db.merge([dbTempList[dbTemp]]) # for frame in dbTempList[dbTemp].frames: # copyResult = canmatrix.copy.copyFrame(frame.id, dbTempList[dbTemp], db) # if copyResult == False: # print("ID Conflict, could not copy/merge frame " + frame.name + " %xh " % frame.id + database) for mergeOpt in mergeString[1:]: if mergeOpt.split('=')[0] == "ecu": canmatrix.copy.copyBUwithFrames( mergeOpt.split('=')[1], dbTempList[dbTemp], db) if mergeOpt.split('=')[0] == "frame": canmatrix.copy.copyFrame( mergeOpt.split('=')[1], dbTempList[dbTemp], db) if 'renameEcu' in options and options['renameEcu'] is not None: renameTuples = options['renameEcu'].split(',') for renameTuple in renameTuples: old, new = renameTuple.split(':') db.renameEcu(old, new) if 'deleteEcu' in options and options['deleteEcu'] is not None: deleteEcuList = options['deleteEcu'].split(',') for ecu in deleteEcuList: db.delEcu(ecu) if 'renameFrame' in options and options['renameFrame'] is not None: renameTuples = options['renameFrame'].split(',') for renameTuple in renameTuples: old, new = renameTuple.split(':') db.renameFrame(old, new) if 'deleteFrame' in options and options['deleteFrame'] is not None: deleteFrameList = options['deleteFrame'].split(',') for frame in deleteFrameList: db.delFrame(frame) if 'addFrameReceiver' in options and options[ 'addFrameReceiver'] is not None: touples = options['addFrameReceiver'].split(',') for touple in touples: (frameName, ecu) = touple.split(':') frames = db.globFrames(frameName) for frame in frames: for signal in frame.signals: signal.addReceiver(ecu) frame.updateReceiver() if 'frameIdIncrement' in options and options[ 'frameIdIncrement'] is not None: idIncrement = int(options['frameIdIncrement']) for frame in db.frames: frame.id += idIncrement if 'changeFrameId' in options and options['changeFrameId'] is not None: changeTuples = options['changeFrameId'].split(',') for renameTuple in changeTuples: old, new = renameTuple.split(':') frame = db.frameById(int(old)) if frame is not None: frame.id = int(new) else: print("frame with id {} not found", old) if 'setFrameFd' in options and options['setFrameFd'] is not None: fdFrameList = options['setFrameFd'].split(',') for frame in fdFrameList: framePtr = db.frameByName(frame) if framePtr is not None: framePtr.is_fd = True if 'unsetFrameFd' in options and options['unsetFrameFd'] is not None: fdFrameList = options['unsetFrameFd'].split(',') for frame in fdFrameList: framePtr = db.frameByName(frame) if framePtr is not None: framePtr.is_fd = False if 'skipLongDlc' in options and options['skipLongDlc'] is not None: deleteFrameList = [] for frame in db.frames: if frame.size > int(options['skipLongDlc']): deleteFrameList.append(frame) for frame in deleteFrameList: db.delFrame(frame) if 'cutLongFrames' in options and options['cutLongFrames'] is not None: for frame in db.frames: if frame.size > int(options['cutLongFrames']): deleteSignalList = [] for sig in frame.signals: if sig.getStartbit() + int(sig.signalsize) > int( options['cutLongFrames']) * 8: deleteSignalList.append(sig) for sig in deleteSignalList: frame.signals.remove(sig) frame.size = 0 frame.calcDLC() if 'renameSignal' in options and options['renameSignal'] is not None: renameTuples = options['renameSignal'].split(',') for renameTuple in renameTuples: old, new = renameTuple.split(':') db.renameSignal(old, new) if 'deleteSignal' in options and options['deleteSignal'] is not None: deleteSignalList = options['deleteSignal'].split(',') for signal in deleteSignalList: db.delSignal(signal) if 'deleteZeroSignals' in options and options['deleteZeroSignals']: db.deleteZeroSignals() if 'deleteSignalAttributes' in options and options[ 'deleteSignalAttributes']: unwantedAttributes = options['deleteSignalAttributes'].split(',') db.delSignalAttributes(unwantedAttributes) if 'deleteFrameAttributes' in options and options[ 'deleteFrameAttributes']: unwantedAttributes = options['deleteFrameAttributes'].split(',') db.delFrameAttributes(unwantedAttributes) if 'deleteObsoleteDefines' in options and options[ 'deleteObsoleteDefines']: db.deleteObsoleteDefines() if 'recalcDLC' in options and options['recalcDLC']: db.recalcDLC(options['recalcDLC']) print(name) print("%d Frames found" % (db.frames.__len__())) outdbs[name] = db if 'force_output' in options and options['force_output'] is not None: canmatrix.formats.dumpp(outdbs, outfileName, exportType=options['force_output'], **options) else: canmatrix.formats.dumpp(outdbs, outfileName, **options) print("done")
def convert(infile, outfileName, **options): import canmatrix.exportall as ex import canmatrix.importany as im import canmatrix.canmatrix as cm import canmatrix.copy as cmcp dbs = {} logger.info("Importing " + infile + " ... ") dbs = im.importany(infile, **options) logger.info("done\n") logger.info("Exporting " + outfileName + " ... ") for name in dbs: db = None if 'ecus' in options and options['ecus'] != None: ecuList = options['ecus'].split(',') db = cm.CanMatrix() for ecu in ecuList: logger.info("Copying ECU " + ecu) cmcp.copyBUwithFrames(ecu, dbs[name], db) if 'frames' in options and options['frames'] != None: frameList = options['frames'].split(',') db = cm.CanMatrix() for frame in frameList: logger.info("Copying Frame " + frame) cmcp.copyFrame(frame, dbs[name], db) if db == None: db = dbs[name] if 'merge' in options and options['merge'] != None: mergeFiles = options['merge'].split(',') for database in mergeFiles: mergeString = database.split(':') dbTempList = im.importany(mergeString[0]) for dbTemp in dbTempList: if mergeString.__len__() == 1: print("merge complete: " + mergeString[0]) for frame in dbTempList[dbTemp]._fl._list: cmcp.copyFrame(frame._Id, dbTempList[dbTemp], db) for mergeOpt in mergeString[1:]: if mergeOpt.split('=')[0] == "ecu": cmcp.copyBUwithFrames( mergeOpt.split('=')[1], dbTempList[dbTemp], db) if mergeOpt.split('=')[0] == "frame": cmcp.copyFrame( mergeOpt.split('=')[1], dbTempList[dbTemp], db) if 'deleteZeroSignals' in options and options['deleteZeroSignals']: db.deleteZeroSignals() if 'recalcDLC' in options and options['recalcDLC']: db.recalcDLC(options['recalcDLC']) logger.info(name) logger.info("%d Frames found" % (db._fl._list.__len__())) if len(name) > 0: path = os.path.split(outfileName) outfile = os.path.join(path[0], name + "_" + path[1]) else: outfile = outfileName # Get output file extension fileext = '' if 'force_output' in options and options['force_output']: # Provided by the command line fileext = options['force_output'] else: # Get extension from output filename fileext = os.path.splitext(outfile)[1] # Strip leading '.' from extension, of exists fileext = fileext[1:] if fileext.startswith('.') else fileext if fileext == 'dbc': ex.exportDbc(db, outfile, **options) elif fileext == 'dbf': ex.exportDbf(db, outfile, **options) elif fileext == 'sym': ex.exportSym(db, outfile, **options) elif fileext == 'kcd': ex.exportKcd(db, outfile) elif fileext == 'xlsx': ex.exportXlsx(db, outfile, **options) elif fileext == 'xls': ex.exportXls(db, outfile, **options) elif fileext == 'json': ex.exportJson(db, outfile, **options) elif fileext == 'arxml': ex.exportArxml(db, outfile) elif fileext == 'yaml': ex.exportYaml(db, outfile) elif fileext == 'csv': ex.exportCsv(db, outfile) else: logger.error('File not recognized: ' + outfileName + "\n") logger.info("done")
def convert(infile, out_file_name, **options): # type: (str, str, **str) -> None logger.info("Importing " + infile + " ... ") dbs = canmatrix.formats.loadp(infile, **options) logger.info("done\n") logger.info("Exporting " + out_file_name + " ... ") out_dbs = {} for name in dbs: db = None if 'ecus' in options and options['ecus'] is not None: ecu_list = options['ecus'].split(',') db = cm.CanMatrix() for ecu in ecu_list: canmatrix.copy.copy_ecu_with_frames(ecu, dbs[name], db) if 'frames' in options and options['frames'] is not None: frame_list = options['frames'].split(',') db = cm.CanMatrix() for frame_name in frame_list: # type: str frame_to_copy = dbs[name].frame_by_name(frame_name) # type: cm.Frame canmatrix.copy.copy_frame(frame_to_copy.arbitration_id, dbs[name], db) if options.get('signals', False): signal_list = options['signals'].split(',') db = cm.CanMatrix() for signal_name in signal_list: # type: str canmatrix.copy.copy_signal(signal_name, dbs[name], db) if db is None: db = dbs[name] if 'merge' in options and options['merge'] is not None: merge_files = options['merge'].split(',') for database in merge_files: merge_string = database.split(':') db_temp_list = canmatrix.formats.loadp(merge_string[0]) for dbTemp in db_temp_list: if merge_string.__len__() == 1: print("merge complete: " + merge_string[0]) db.merge([db_temp_list[dbTemp]]) # for frame in db_temp_list[dbTemp].frames: # copyResult = canmatrix.copy.copy_frame(frame.id, db_temp_list[dbTemp], db) # if copyResult == False: # logger.error("ID Conflict, could not copy/merge frame " + frame.name + " %xh " % frame.id + database) for mergeOpt in merge_string[1:]: if mergeOpt.split('=')[0] == "ecu": canmatrix.copy.copy_ecu_with_frames( mergeOpt.split('=')[1], db_temp_list[dbTemp], db) if mergeOpt.split('=')[0] == "frame": frame_to_copy = dbs[name].frame_by_name(mergeOpt.split('=')[1]) canmatrix.copy.copy_frame(frame_to_copy.arbitration_id, db_temp_list[dbTemp], db) if 'renameEcu' in options and options['renameEcu'] is not None: rename_tuples = options['renameEcu'].split(',') for renameTuple in rename_tuples: old, new = renameTuple.split(':') db.rename_ecu(old, new) if 'deleteEcu' in options and options['deleteEcu'] is not None: delete_ecu_list = options['deleteEcu'].split(',') for ecu in delete_ecu_list: db.del_ecu(ecu) if 'renameFrame' in options and options['renameFrame'] is not None: rename_tuples = options['renameFrame'].split(',') for renameTuple in rename_tuples: old, new = renameTuple.split(':') db.rename_frame(old, new) if 'deleteFrame' in options and options['deleteFrame'] is not None: delete_frame_names = options['deleteFrame'].split(',') for frame_name in delete_frame_names: db.del_frame(frame_name) if 'addFrameReceiver' in options and options['addFrameReceiver'] is not None: touples = options['addFrameReceiver'].split(',') for touple in touples: (frameName, ecu) = touple.split(':') frames = db.glob_frames(frameName) for frame in frames: # type: cm.Frame for signal in frame.signals: # type: cm.Signal signal.add_receiver(ecu) frame.update_receiver() if 'frameIdIncrement' in options and options['frameIdIncrement'] is not None: id_increment = int(options['frameIdIncrement']) for frame in db.frames: frame.arbitration_id.id += id_increment if 'changeFrameId' in options and options['changeFrameId'] is not None: change_tuples = options['changeFrameId'].split(',') for renameTuple in change_tuples: old, new = renameTuple.split(':') frame = db.frame_by_id(cm.ArbitrationId(int(old))) if frame is not None: frame.arbitration_id.id = int(new) else: logger.error("frame with id {} not found", old) if 'setFrameFd' in options and options['setFrameFd'] is not None: fd_frame_list = options['setFrameFd'].split(',') for frame_name in fd_frame_list: frame_ptr = db.frame_by_name(frame_name) if frame_ptr is not None: frame_ptr.is_fd = True if 'unsetFrameFd' in options and options['unsetFrameFd'] is not None: fd_frame_list = options['unsetFrameFd'].split(',') for frame_name in fd_frame_list: frame_ptr = db.frame_by_name(frame_name) if frame_ptr is not None: frame_ptr.is_fd = False if 'skipLongDlc' in options and options['skipLongDlc'] is not None: delete_frame_list = [] # type: typing.List[cm.Frame] for frame in db.frames: if frame.size > int(options['skipLongDlc']): delete_frame_list.append(frame) for frame in delete_frame_list: db.del_frame(frame) if 'cutLongFrames' in options and options['cutLongFrames'] is not None: for frame in db.frames: if frame.size > int(options['cutLongFrames']): delete_signal_list = [] for sig in frame.signals: if sig.get_startbit() + int(sig.size) > int(options['cutLongFrames'])*8: delete_signal_list.append(sig) for sig in delete_signal_list: frame.signals.remove(sig) frame.size = 0 frame.calc_dlc() if 'renameSignal' in options and options['renameSignal'] is not None: rename_tuples = options['renameSignal'].split(',') for renameTuple in rename_tuples: old, new = renameTuple.split(':') db.rename_signal(old, new) if 'deleteSignal' in options and options['deleteSignal'] is not None: delete_signal_names = options['deleteSignal'].split(',') for signal_name in delete_signal_names: db.del_signal(signal_name) if 'deleteZeroSignals' in options and options['deleteZeroSignals']: db.delete_zero_signals() if 'deleteSignalAttributes' in options and options[ 'deleteSignalAttributes']: unwanted_attributes = options['deleteSignalAttributes'].split(',') db.del_signal_attributes(unwanted_attributes) if 'deleteFrameAttributes' in options and options[ 'deleteFrameAttributes']: unwanted_attributes = options['deleteFrameAttributes'].split(',') db.del_frame_attributes(unwanted_attributes) if 'deleteObsoleteDefines' in options and options[ 'deleteObsoleteDefines']: db.delete_obsolete_defines() if 'recalcDLC' in options and options['recalcDLC']: db.recalc_dlc(options['recalcDLC']) logger.info(name) logger.info("%d Frames found" % (db.frames.__len__())) out_dbs[name] = db if 'force_output' in options and options['force_output'] is not None: canmatrix.formats.dumpp(out_dbs, out_file_name, exportType=options[ 'force_output'], **options) else: canmatrix.formats.dumpp(out_dbs, out_file_name, **options) logger.info("done")
def convert(infile, outfileName, **options): import canmatrix.exportany as ex import canmatrix.importany as im import canmatrix.canmatrix as cm import canmatrix.copy as cmcp dbs = {} logger.info("Importing " + infile + " ... ") dbs = im.importany(infile, **options) logger.info("done\n") logger.info("Exporting " + outfileName + " ... ") for name in dbs: db = None if 'ecus' in options and options['ecus'] != None: ecuList = options['ecus'].split(',') db = cm.CanMatrix() for ecu in ecuList: logger.info("Copying ECU " + ecu) cmcp.copyBUwithFrames(ecu, dbs[name], db) if 'frames' in options and options['frames'] != None: frameList = options['frames'].split(',') db = cm.CanMatrix() for frame in frameList: logger.info("Copying Frame " + frame) cmcp.copyFrame(frame, dbs[name], db) if db == None: db = dbs[name] if 'merge' in options and options['merge'] != None: mergeFiles = options['merge'].split(',') for database in mergeFiles: mergeString = database.split(':') dbTempList = im.importany(mergeString[0]) for dbTemp in dbTempList: if mergeString.__len__() == 1: print("merge complete: " + mergeString[0]) for frame in dbTempList[dbTemp]._fl._list: cmcp.copyFrame(frame._Id, dbTempList[dbTemp], db) for mergeOpt in mergeString[1:]: if mergeOpt.split('=')[0] == "ecu": cmcp.copyBUwithFrames( mergeOpt.split('=')[1], dbTempList[dbTemp], db) if mergeOpt.split('=')[0] == "frame": cmcp.copyFrame( mergeOpt.split('=')[1], dbTempList[dbTemp], db) if 'deleteZeroSignals' in options and options['deleteZeroSignals']: db.deleteZeroSignals() if 'deleteSignalAttributes' in options and options[ 'deleteSignalAttributes']: unwantedAttributes = options['deleteSignalAttributes'].split(',') db.delSignalAttributes(unwantedAttributes) if 'deleteFrameAttributes' in options and options[ 'deleteFrameAttributes']: unwantedAttributes = options['deleteFrameAttributes'].split(',') db.delFrameAttributes(unwantedAttributes) if 'recalcDLC' in options and options['recalcDLC']: db.recalcDLC(options['recalcDLC']) logger.info(name) logger.info("%d Frames found" % (db._fl._list.__len__())) if len(name) > 0: path = os.path.split(outfileName) outfile = os.path.join(path[0], name + "_" + path[1]) else: outfile = outfileName ex.exportany(db, outfile, **options) logger.info("done")