def parse_file(self): parsed_output = [] self.params = config.get_parameters() for line in self.lines: line = line.strip("\n") line = _RE_COMBINE_WHITESPACE.sub(" ", line).strip() line = line.split(" ") data_id = line[4] filtered_id = data_id[2:6] parameter = self._hex_to_params(filtered_id) if parameter: ts = line[1] for key in parameter.keys(): name = key bits = parameter[key]['Bits'] bits = bits.split("-") rate = parameter[key]['Rate'] offset = parameter[key]['Offset'] measure = parameter[key]['Measure'] data = "" for bit in reversed(bits): data = data + line[OFFSET + int(bit)] data = int("0x" + data, 16) value = data * float(rate) + offset parsed_output.append((name, ts, value, measure)) return parsed_output
def init_combo_boxes(self): parameters = config.get_parameters() self.battery_saving.clear() self.cost_input_box.clear() for pgn in parameters.keys(): for parameter in parameters[pgn].keys(): self.battery_saving_box.addItem(parameter) self.cost_input_box.addItem(parameter)
def init_combo_boxes(self): parameters = config.get_parameters() self.x_box.clear() self.y_box.clear() for pgn in parameters.keys(): for parameter in parameters[pgn].keys(): self.x_box.addItem(parameter) self.y_box.addItem(parameter) self.selectable_box.addItem(parameter)
def get_plotting_data(self, data): plotting_data = [] self.params = config.get_parameters() for group in self.params.keys(): for parameter in self.params[group].keys(): x = [] y = [] for d in data: if d[0] == parameter: x.append(float(d[1])) y.append(float(d[2])) plotting_data.append((x, y, parameter)) return plotting_data
def _average(self, ts): parameters = config.get_parameters() avg_parameters = [] for pgn in parameters.keys(): for parameter in parameters[pgn].keys(): last_time = float(self.parsed_file[0][1]) value_sum = float(self.parsed_file[0][2]) count = 1 for d in self.parsed_file: if d[0] == parameter: if float(d[1]) - last_time < ts: value_sum = value_sum + float(d[2]) count = count + 1 else: avg_parameters.append( (d[0], str(last_time), str(value_sum / count), d[3])) value_sum = float(d[2]) count = 1 last_time = float(d[1]) return avg_parameters
def _init_table(self): table = QTableWidget() table.setMinimumWidth(300) table.setColumnCount(8) table.setRowCount(11) table.setItem(0, 0, QTableWidgetItem("Name")) table.setItem(0, 1, QTableWidgetItem("PGN")) table.setItem(0, 2, QTableWidgetItem("Multiplier")) table.setItem(0, 3, QTableWidgetItem("Offset")) table.setItem(0, 4, QTableWidgetItem("Units")) table.setItem(0, 5, QTableWidgetItem("Lenght")) table.setItem(0, 6, QTableWidgetItem("Start")) table.setItem(0, 7, QTableWidgetItem("Plot")) parameters = config.get_parameters() i = 1 for pgn in parameters.keys(): for name in parameters[pgn].keys(): bits = parameters[pgn][name]['Bits'] bits = bits.split("-") if len(bits) == 1: length = "1" else: length = str(int(bits[1]) - int(bits[0])) start = bits[0] table.setItem(i, 0, QTableWidgetItem(name)) table.setItem(i, 1, QTableWidgetItem(pgn)) table.setItem(i, 2, QTableWidgetItem(parameters[pgn][name]['Rate'])) table.setItem( i, 3, QTableWidgetItem(str(parameters[pgn][name]['Offset']))) table.setItem( i, 4, QTableWidgetItem(parameters[pgn][name]['Measure'])) table.setItem(i, 5, QTableWidgetItem(length)) table.setItem(i, 6, QTableWidgetItem(start)) table.setItem(i, 7, QTableWidgetItem(parameters[pgn][name]['Draw'])) i = i + 1 return table
def __init__(self, filename): tcr_file = open(filename, "r") self.lines = tcr_file.readlines() self.erase_header(HEADER) self.params = config.get_parameters()