From b11919ea8613da6b5df6e60edb57bcd97123ea9a Mon Sep 17 00:00:00 2001 From: marios8543 Date: Wed, 1 May 2024 17:04:59 +0300 Subject: [PATCH] rendash test commit --- pyren3/mod_ecu.py | 3 +- pyren3/mod_ecu_parameter.py | 9 +++-- pyren3/mod_ecu_state.py | 6 ++++ pyren3/rendash_main.py | 67 +++++++++++++++++++++++++++++++++++++ 4 files changed, 82 insertions(+), 3 deletions(-) create mode 100644 pyren3/rendash_main.py diff --git a/pyren3/mod_ecu.py b/pyren3/mod_ecu.py index 97cab45..e09955d 100755 --- a/pyren3/mod_ecu.py +++ b/pyren3/mod_ecu.py @@ -519,7 +519,8 @@ class ECU: help = "" if mod_globals.opt_csv_human and csvf!=0 and (dr.type=='State' or dr.type=='Parameter'): csvline += ";" + pyren_encode(csvd) - + if datastr.startswith("ET053"): + pass if not (mod_globals.opt_csv and mod_globals.opt_csv_only): strlst.append(datastr) if mod_globals.opt_verbose and len(help)>0: diff --git a/pyren3/mod_ecu_parameter.py b/pyren3/mod_ecu_parameter.py index a8f0477..050f2a3 100755 --- a/pyren3/mod_ecu_parameter.py +++ b/pyren3/mod_ecu_parameter.py @@ -174,6 +174,12 @@ class ecu_parameter: for mn in Mnemo: self.mnemolist.append(mn.getAttribute("name")) + def __str__(self) -> str: + return self.label + + def __repr__(self) -> str: + return str(self) + class ecu_parameters: def __init__(self, parameter_list, mdoc, opt, tran ): @@ -181,5 +187,4 @@ class ecu_parameters: if Parameters: for pr in Parameters: parameter = ecu_parameter( pr, opt, tran ) - parameter_list[parameter.name] = parameter - + parameter_list[parameter.name] = parameter \ No newline at end of file diff --git a/pyren3/mod_ecu_state.py b/pyren3/mod_ecu_state.py index 6044dd1..bfa68a1 100644 --- a/pyren3/mod_ecu_state.py +++ b/pyren3/mod_ecu_state.py @@ -149,6 +149,12 @@ class ecu_state: if Mnemo: for mn in Mnemo: self.mnemolist.append(mn.getAttribute("name")) + + def __str__(self) -> str: + return self.label + + def __repr__(self) -> str: + return str(self) class ecu_states: diff --git a/pyren3/rendash_main.py b/pyren3/rendash_main.py new file mode 100644 index 0000000..62426b3 --- /dev/null +++ b/pyren3/rendash_main.py @@ -0,0 +1,67 @@ +from mod_utils import chkDirTree +from mod_db_manager import find_DBs +from mod_elm import ELM +from mod_scan_ecus import ScanEcus +from mod_optfile import optfile +from mod_ecu import ECU +from mod_ecu_state import get_state + +from pickle import dump, load + +from typing import List + +import mod_globals +mod_globals.opt_demo = True + +class RenDash: + def __init__(self, + elm_port, + elm_speed=38400, + model_number=58, + rescan=False) -> None: + chkDirTree() + find_DBs() + + self.elm = ELM(elm_port, elm_speed, "") + self.lang = optfile("Location/DiagOnCAN_GB.bqm", False) + self.ecus: List[ECU] = [] + self.current_ecu = None + + if rescan is False: + try: + self.ecus = load(open("frozen_ecus.p", "rb")) + except Exception as e: + pass + if not self.ecus: + ecu_scanner = ScanEcus(self.elm) + ecu_scanner.chooseModel(model_number) + ecu_scanner.scanAllEcus() + for ecu in ecu_scanner.detectedEcus: + self.ecus.append(ECU(ecu, self.lang.dict)) + dump(self.ecus, open("frozen_ecus.p", "wb+")) + + def get_ecu_names(self): + return [ecu.ecudata["doc"] for ecu in self.ecus] + + def get_ecu_by_doc(self, doc): + for ecu in self.ecus: + if ecu.ecudata["doc"] == doc: + return ecu + + def get_ecu_states(self, doc): + ecu = self.get_ecu_by_doc(doc) + return ecu.States + + def get_ecu_state(self, doc, state): + ecu = self.get_ecu_by_doc(doc) + if self.current_ecu is not ecu: + ecu.initELM(self.elm) + self.current_ecu = ecu + datastr, help, csvd = get_state( ecu.States[state], ecu.Mnemonics, ecu.Services, self.elm, ecu.calc) + return datastr + +if __name__ == "__main__": + rd = RenDash("/dev/tty0") + print(rd.get_ecu_names()) + while True: + print(rd.get_ecu_state("UCH_J84_SE_0450_4C_A", "E031")) \ No newline at end of file