diff --git a/main.py b/main.py
index 02e3f0b..1e08bdb 100755
--- a/main.py
+++ b/main.py
@@ -52,43 +52,6 @@ if osname == 'nt':
import serial
except ImportError:
pip.main(['install', 'pyserial'])
-try:
- import androidhelper as android
-
- osname = 'android'
-except:
- try:
- import android
-
- osname = 'android'
- except:
- pass
-
-jnius_mode = False
-
-if osname == 'android':
- try:
- from jnius import autoclass
-
- jnius_mode = True
-
- except ImportError:
- try:
- import pip
- except ImportError:
- pass
- # pip.main(['install', 'pyjnius-u4-qpython'])
-
- if jnius_mode:
- try:
- BluetoothAdapter = autoclass('android.bluetooth.BluetoothAdapter')
- BluetoothDevice = autoclass('android.bluetooth.BluetoothDevice')
- BluetoothSocket = autoclass('android.bluetooth.BluetoothSocket')
- UUID = autoclass('java.util.UUID')
- except:
- print("Error while using jnius")
- sys.exit()
-
def update_from_gitlab():
try:
@@ -166,29 +129,15 @@ def getLangList():
def getPortList():
ret = []
- if os.name != 'android':
- if jnius_mode:
- try:
- paired_devices = BluetoothAdapter.getDefaultAdapter().getBondedDevices().toArray()
- for device in paired_devices:
- desc = device.getName()
- de = str(desc.encode("ascii", "ignore"))
- ret.append('BT;' + de)
- except:
- ret.append('BT;')
- return ret
-
- iterator = sorted(list(list_ports.comports()))
- for port, desc, hwid in iterator:
- try:
- de = str(desc.encode("ascii", "ignore"))
- ret.append(port + ';' + de)
- except:
- ret.append(port + ';')
- if '192.168.0.10:35000;WiFi' not in ret:
- ret.append('192.168.0.10:35000;WiFi')
- else:
- ret = ['BT', '192.168.0.10:35000']
+ iterator = sorted(list(list_ports.comports()))
+ for port, desc, hwid in iterator:
+ try:
+ de = str(desc.encode("ascii", "ignore"))
+ ret.append(port + ';' + de)
+ except:
+ ret.append(port + ';')
+ if '192.168.0.10:35000;WiFi' not in ret:
+ ret.append('192.168.0.10:35000;WiFi')
return ret
@@ -289,1079 +238,594 @@ def run(s, cmd):
cmdr.main()
sys.exit()
-
-if osname != 'android':
- try:
- import serial
- from serial.tools import list_ports
- except ImportError:
- print("\n\n\n\tPleas install additional modules")
- print("\t\t>sudo easy_install pyserial")
- sys.exit()
- try:
- # Python2
- import tkinter as tk
- import tkinter.ttk
- import tkinter.font
- import tkinter.messagebox
- import tkinter.filedialog
- import tkinter.simpledialog
- except ImportError:
- # Python3
- import tkinter as tk
- import tkinter.ttk as ttk
- import tkinter.font
- import tkinter.messagebox
- import tkinter.filedialog
-
-
- class desktopGUI(tk.Frame):
-
- save = None
-
- def guiDestroy(self):
- self.root.eval('::ttk::CancelRepeat')
- self.root.destroy()
-
- def cmd_Mon(self):
- self.saveSettings()
- self.guiDestroy()
- run(self.save, 'mon')
-
- def cmd_Check(self):
- self.saveSettings()
- self.guiDestroy()
- run(self.save, 'check')
-
- def cmd_Demo(self):
- self.saveSettings()
- self.guiDestroy()
- run(self.save, 'demo')
-
- def cmd_Scan(self):
- self.saveSettings()
- self.guiDestroy()
- run(self.save, 'scan')
-
- def cmd_Start(self):
- self.saveSettings()
- self.guiDestroy()
- run(self.save, 'pyren')
-
- def cmd_DDT(self):
- self.saveSettings()
- self.guiDestroy()
- run(self.save, 'ddt')
-
- def cmd_Term(self):
- self.saveSettings()
- self.guiDestroy()
- run(self.save, 'term')
-
- def cmd_Update(self):
- res = update_from_gitlab()
- if res == 0:
- tkinter.messagebox.showinfo("Information", "Done")
- elif res == 1:
- tkinter.messagebox.showerror("Error", "No connection with gitlab.com")
- elif res == 2:
- tkinter.messagebox.showerror("Error", "UnZip error")
-
- def saveSettings(self):
- self.save.path = self.var_path.get()
- self.save.port = self.var_port.get().split(';')[0]
- self.save.lang = self.var_lang.get()
- self.save.speed = self.var_speed.get()
- self.save.log = self.var_log.get()
- self.save.logName = self.var_logName.get()
- self.save.cfc = self.var_cfc.get()
- self.save.n1c = self.var_n1c.get()
- self.save.si = self.var_si.get()
- self.save.csv = self.var_csv.get()
- self.save.csvOption = self.var_csvOption.get()
- self.save.dump = self.var_dump.get()
- self.save.can2 = self.var_can2.get()
- self.save.options = self.var_otherOptions.get()
- self.save.save()
-
- def loadSettings(self):
-
- self.var_si.set(self.save.si)
- self.var_cfc.set(self.save.cfc)
- self.var_n1c.set(self.save.n1c)
- self.var_csv.set(self.save.csv)
- self.var_csvOption.set(self.save.csvOption)
- self.var_can2.set(self.save.can2)
- self.var_dump.set(self.save.dump)
- self.var_lang.set(self.save.lang)
- self.var_path.set(self.save.path)
- self.var_port.set(self.save.port)
- self.var_speed.set(self.save.speed)
- self.var_otherOptions.set(self.save.options)
- self.var_log.set(self.save.log)
- self.var_logName.set(self.save.logName)
-
- self.var_speedList = ['38400', '115200', '230400', '500000', '1000000', '2000000']
- self.var_langList = getLangList()
- self.var_pathList = getPathList()
- self.var_portList = getPortList()
- self.var_csvOptions = csvOptions
-
- if len(self.var_path.get()) == 0:
- self.var_path.set(self.var_pathList[0])
-
- if len(self.var_lang.get()) == 0:
- ll = self.var_langList
- if 'RU' in ll:
- self.var_lang.set('RU')
- elif 'GB' in ll:
- self.var_lang.set('GB')
- else:
- self.var_lang.set(ll[0])
-
- if len(self.var_port.get()) == 0:
- for p in self.var_portList:
- self.var_port.set(p)
- if 'OBD' in p: break
-
- def __init__(self):
- self.save = settings()
- self.root = tk.Tk()
- self.root.option_add('*Dialog.msg.font', 'Courier\ New 12')
- self.root.geometry("500x500")
- tk.Frame.__init__(self, self.root)
-
- self.var_can2 = tk.BooleanVar()
- self.var_dump = tk.BooleanVar()
- self.var_log = tk.BooleanVar()
- self.var_csv = tk.BooleanVar()
-
- self.var_cfc = tk.BooleanVar()
- self.var_n1c = tk.BooleanVar()
- self.var_si = tk.BooleanVar()
-
- self.var_langList = []
- self.var_pathList = []
- self.var_portList = []
- self.var_speedList = []
-
- self.var_lang = tk.StringVar()
- self.var_path = tk.StringVar()
- self.var_port = tk.StringVar()
- self.var_speed = tk.StringVar()
- self.var_csvOption = tk.StringVar()
-
- self.var_logName = tk.StringVar()
- self.var_otherOptions = tk.StringVar()
-
- self.loadSettings()
-
- self.root.title("Pyren Launcher")
- self.style = tkinter.ttk.Style()
- self.style.theme_use('classic')
-
- if sys.platform == "win32": self.style.theme_use('winnative')
- self.style.configure('.', background='#d9d9d9')
- self.style.configure('.', foreground='#000000')
- self.style.configure('.', font="TkDefaultFont")
- self.style.map('.', background=[('selected', '#d9d9d9'), ('active', '#d9d9d9')])
-
- self.root.geometry("500x500+0+28")
- self.root.title("Pyren launcher")
- self.root.configure(background="#d9d9d9")
- self.root.configure(highlightbackground="#d9d9d9")
- self.root.configure(highlightcolor="black")
-
- self.lPathSelector = tk.LabelFrame(self.root)
- self.lPathSelector.place(relx=0.02, rely=0.0, relheight=0.13, relwidth=0.46)
- self.lPathSelector.configure(relief=tk.GROOVE)
- self.lPathSelector.configure(foreground="black")
- self.lPathSelector.configure(text='''Version''')
- self.lPathSelector.configure(background="#d9d9d9")
- self.lPathSelector.configure(highlightbackground="#d9d9d9")
- self.lPathSelector.configure(highlightcolor="black")
- self.lPathSelector.configure(width=230)
-
- self.lDBLanguage = tk.LabelFrame(self.root)
- self.lDBLanguage.place(relx=0.02, rely=0.14, relheight=0.13, relwidth=0.46)
- self.lDBLanguage.configure(relief=tk.GROOVE)
- self.lDBLanguage.configure(foreground="black")
- self.lDBLanguage.configure(text='''DB Language''')
- self.lDBLanguage.configure(background="#d9d9d9")
- self.lDBLanguage.configure(highlightbackground="#d9d9d9")
- self.lDBLanguage.configure(highlightcolor="black")
- self.lDBLanguage.configure(width=100)
-
- self.lPortSelector = tk.LabelFrame(self.root)
- self.lPortSelector.place(relx=0.5, rely=0.0, relheight=0.27, relwidth=0.48)
- self.lPortSelector.configure(relief=tk.GROOVE)
- self.lPortSelector.configure(foreground="black")
- self.lPortSelector.configure(text='''Port''')
- self.lPortSelector.configure(background="#d9d9d9")
- self.lPortSelector.configure(highlightbackground="#d9d9d9")
- self.lPortSelector.configure(highlightcolor="black")
- self.lPortSelector.configure(width=240)
-
- self.lPortSpeed = tk.LabelFrame(self.root)
- self.lPortSpeed.place(relx=0.52, rely=0.12, relheight=0.13, relwidth=0.44)
- self.lPortSpeed.configure(relief=tk.GROOVE)
- self.lPortSpeed.configure(foreground="black")
- self.lPortSpeed.configure(text='''Port Speed (only for USB-ELM)''')
- self.lPortSpeed.configure(background="#d9d9d9")
- self.lPortSpeed.configure(highlightbackground="#d9d9d9")
- self.lPortSpeed.configure(highlightcolor="black")
- self.lPortSpeed.configure(width=220)
-
- self.lOptions = tk.LabelFrame(self.root)
- self.lOptions.place(relx=0.02, rely=0.69, relheight=0.13, relwidth=0.96)
- self.lOptions.configure(relief=tk.GROOVE)
- self.lOptions.configure(foreground="black")
- self.lOptions.configure(text='''Other options''')
- self.lOptions.configure(background="#d9d9d9")
- self.lOptions.configure(highlightbackground="#d9d9d9")
- self.lOptions.configure(highlightcolor="black")
- self.lOptions.configure(width=480)
-
- self.lLog = tk.LabelFrame(self.root)
- self.lLog.place(relx=0.5, rely=0.28, relheight=0.135, relwidth=0.48)
- self.lLog.configure(relief=tk.GROOVE)
- self.lLog.configure(foreground="black")
- self.lLog.configure(text='''ELM Log''')
- self.lLog.configure(background="#d9d9d9")
- self.lLog.configure(highlightbackground="#d9d9d9")
- self.lLog.configure(highlightcolor="black")
- self.lLog.configure(width=230)
-
- self.lCAN = tk.LabelFrame(self.root)
- self.lCAN.place(relx=0.02, rely=0.43, relheight=0.25, relwidth=0.46)
- self.lCAN.configure(relief=tk.GROOVE)
- self.lCAN.configure(foreground="black")
- self.lCAN.configure(text='''CAN''')
- self.lCAN.configure(background="#d9d9d9")
- self.lCAN.configure(highlightbackground="#d9d9d9")
- self.lCAN.configure(highlightcolor="black")
- self.lCAN.configure(width=230)
-
- self.lCSV = tk.LabelFrame(self.root)
- self.lCSV.place(relx=0.02, rely=0.28, relheight=0.135, relwidth=0.46)
- self.lCSV.configure(relief=tk.GROOVE)
- self.lCSV.configure(foreground="black")
- self.lCSV.configure(text='''Data logging''')
- self.lCSV.configure(background="#d9d9d9")
- self.lCSV.configure(highlightbackground="#d9d9d9")
- self.lCSV.configure(highlightcolor="black")
- self.lCSV.configure(width=240)
-
- self.lKWP = tk.LabelFrame(self.root)
- self.lKWP.place(relx=0.5, rely=0.43, relheight=0.125, relwidth=0.48)
- self.lKWP.configure(relief=tk.GROOVE)
- self.lKWP.configure(foreground="black")
- self.lKWP.configure(text='''K-Line''')
- self.lKWP.configure(background="#d9d9d9")
- self.lKWP.configure(highlightbackground="#d9d9d9")
- self.lKWP.configure(highlightcolor="black")
- self.lKWP.configure(width=240)
-
- self.mCFC = tk.Message(self.root)
- self.mCFC.place(relx=0.08, rely=0.5, relheight=0.06, relwidth=0.1)
- self.mCFC.configure(background="#d9d9d9")
- self.mCFC.configure(foreground="#000000")
- self.mCFC.configure(highlightbackground="#d9d9d9")
- self.mCFC.configure(highlightcolor="black")
- self.mCFC.configure(text='''--cfc''')
- self.mCFC.configure(width=40)
-
- self.mN1C = tk.Message(self.root)
- self.mN1C.place(relx=0.08, rely=0.57, relheight=0.06, relwidth=0.1)
- self.mN1C.configure(background="#d9d9d9")
- self.mN1C.configure(foreground="#000000")
- self.mN1C.configure(highlightbackground="#d9d9d9")
- self.mN1C.configure(highlightcolor="black")
- self.mN1C.configure(text='''--n1c''')
- self.mN1C.configure(width=40)
-
- self.mSI = tk.Message(self.root)
- self.mSI.place(relx=0.56, rely=0.48, relheight=0.03, relwidth=0.08)
- self.mSI.configure(background="#d9d9d9")
- self.mSI.configure(foreground="#000000")
- self.mSI.configure(highlightbackground="#d9d9d9")
- self.mSI.configure(highlightcolor="black")
- self.mSI.configure(text='''--si''')
- self.mSI.configure(width=40)
-
- self.mCAN = tk.Message(self.root)
- self.mCAN.place(relx=0.18, rely=0.48, relheight=0.18, relwidth=0.28)
- self.mCAN.configure(background="#d9d9d9")
- self.mCAN.configure(foreground="#000000")
- self.mCAN.configure(highlightbackground="#d9d9d9")
- self.mCAN.configure(highlightcolor="black")
- self.mCAN.configure(
- text='''CFC - enable soft flow control (recommended) N1C - disable L1 cache (not recommended)''')
- self.mCAN.configure(width=142)
-
- self.mKWP = tk.Message(self.root)
- self.mKWP.place(relx=0.64, rely=0.46, relheight=0.08, relwidth=0.3)
- self.mKWP.configure(background="#d9d9d9")
- self.mKWP.configure(foreground="#000000")
- self.mKWP.configure(highlightbackground="#d9d9d9")
- self.mKWP.configure(highlightcolor="black")
- self.mKWP.configure(text='''Try Slow Init before Fast Init. It may helps with old ECUs''')
- self.mKWP.configure(width=152)
-
- self.logName = tk.Entry(self.root)
- self.logName.place(relx=0.58, rely=0.33, relheight=0.06, relwidth=0.37)
- self.logName.configure(background="white")
- self.logName.configure(font="TkFixedFont")
- self.logName.configure(foreground="#000000")
- self.logName.configure(highlightbackground="#d9d9d9")
- self.logName.configure(highlightcolor="black")
- self.logName.configure(insertbackground="black")
- self.logName.configure(selectbackground="#c4c4c4")
- self.logName.configure(selectforeground="black")
- self.logName.configure(textvariable=self.var_logName)
-
- self.cbLog = tk.Checkbutton(self.root)
- self.cbLog.place(relx=0.52, rely=0.325, relheight=0.07, relwidth=0.06)
- self.cbLog.configure(activebackground="#d9d9d9")
- self.cbLog.configure(activeforeground="#000000")
- self.cbLog.configure(background="#d9d9d9")
- self.cbLog.configure(foreground="#000000")
- self.cbLog.configure(highlightbackground="#d9d9d9")
- self.cbLog.configure(highlightcolor="black")
- self.cbLog.configure(justify=tk.LEFT)
- self.cbLog.configure(variable=self.var_log)
- # self.cbLog.configure(variable=self.che40)
-
- self.cbCFC = tk.Checkbutton(self.lCAN)
- self.cbCFC.place(relx=0.04, rely=0.17, relheight=0.29, relwidth=0.13)
- self.cbCFC.configure(activebackground="#d9d9d9")
- self.cbCFC.configure(activeforeground="#000000")
- self.cbCFC.configure(background="#d9d9d9")
- self.cbCFC.configure(foreground="#000000")
- self.cbCFC.configure(highlightbackground="#d9d9d9")
- self.cbCFC.configure(highlightcolor="black")
- self.cbCFC.configure(justify=tk.LEFT)
- self.cbCFC.configure(variable=self.var_cfc)
- # self.cbCFC.configure(variable=self.che43)
-
- self.cbN1C = tk.Checkbutton(self.lCAN)
- self.cbN1C.place(relx=0.04, rely=0.48, relheight=0.29, relwidth=0.13)
- self.cbN1C.configure(activebackground="#d9d9d9")
- self.cbN1C.configure(activeforeground="#000000")
- self.cbN1C.configure(background="#d9d9d9")
- self.cbN1C.configure(foreground="#000000")
- self.cbN1C.configure(highlightbackground="#d9d9d9")
- self.cbN1C.configure(highlightcolor="black")
- self.cbN1C.configure(justify=tk.LEFT)
- self.cbN1C.configure(variable=self.var_n1c)
- # self.cbN1C.configure(variable=self.che44)
-
- self.cbSI = tk.Checkbutton(self.lKWP)
- self.cbSI.place(relx=0.04, rely=0.15, relheight=0.43, relwidth=0.13)
- self.cbSI.configure(activebackground="#d9d9d9")
- self.cbSI.configure(activeforeground="#000000")
- self.cbSI.configure(background="#d9d9d9")
- self.cbSI.configure(foreground="#000000")
- self.cbSI.configure(highlightbackground="#d9d9d9")
- self.cbSI.configure(highlightcolor="black")
- self.cbSI.configure(justify=tk.LEFT)
- self.cbSI.configure(variable=self.var_si)
- # self.cbSI.configure(variable=self.che45)
-
- self.cbCSV = tk.Checkbutton(self.lCSV)
- self.cbCSV.place(relx=0.05, rely=0.24, relheight=0.4, relwidth=0.1)
- self.cbCSV.configure(activebackground="#d9d9d9")
- self.cbCSV.configure(activeforeground="#000000")
- self.cbCSV.configure(background="#d9d9d9")
- self.cbCSV.configure(foreground="#000000")
- self.cbCSV.configure(highlightbackground="#d9d9d9")
- self.cbCSV.configure(highlightcolor="black")
- self.cbCSV.configure(justify=tk.LEFT)
- self.cbCSV.configure(variable=self.var_csv)
-
- self.lDump = tk.LabelFrame(self.root)
- self.lDump.place(relx=0.5, rely=0.56, relheight=0.12, relwidth=0.10)
- self.lDump.configure(relief=tk.GROOVE)
- self.lDump.configure(foreground="black")
- self.lDump.configure(text='''Dump''')
- self.lDump.configure(background="#d9d9d9")
- self.lDump.configure(highlightbackground="#d9d9d9")
- self.lDump.configure(highlightcolor="black")
- self.lDump.configure(width=60)
-
- self.lCAN2 = tk.LabelFrame(self.root)
- self.lCAN2.place(relx=0.62, rely=0.56, relheight=0.12, relwidth=0.10)
- self.lCAN2.configure(relief=tk.GROOVE)
- self.lCAN2.configure(foreground="black")
- self.lCAN2.configure(text='''CAN 2''')
- self.lCAN2.configure(background="#d9d9d9")
- self.lCAN2.configure(highlightbackground="#d9d9d9")
- self.lCAN2.configure(highlightcolor="black")
- self.lCAN2.configure(width=60)
-
- self.cbDump = tk.Checkbutton(self.lDump)
- self.cbDump.place(relx=0.265, rely=0.18, relheight=0.55, relwidth=0.5)
- self.cbDump.configure(activebackground="#d9d9d9")
- self.cbDump.configure(activeforeground="#000000")
- self.cbDump.configure(background="#d9d9d9")
- self.cbDump.configure(foreground="#000000")
- self.cbDump.configure(highlightbackground="#d9d9d9")
- self.cbDump.configure(highlightcolor="black")
- self.cbDump.configure(variable=self.var_dump)
- # self.cbDump.configure(variable=self.che41)
- self.cbDump.configure(width=34)
-
- self.cbCAN2 = tk.Checkbutton(self.lCAN2)
- self.cbCAN2.place(relx=0.28, rely=0.18, relheight=0.55, relwidth=0.5)
- self.cbCAN2.configure(activebackground="#d9d9d9")
- self.cbCAN2.configure(activeforeground="#000000")
- self.cbCAN2.configure(background="#d9d9d9")
- self.cbCAN2.configure(foreground="#000000")
- self.cbCAN2.configure(highlightbackground="#d9d9d9")
- self.cbCAN2.configure(highlightcolor="black")
- self.cbCAN2.configure(variable=self.var_can2)
- # self.cbCAN2.configure(variable=self.che42)
- self.cbCAN2.configure(width=34)
-
- self.Options = tk.Entry(self.root)
- self.Options.place(relx=0.04, rely=0.74, relheight=0.06, relwidth=0.92)
- self.Options.configure(background="white")
- self.Options.configure(font="TkFixedFont")
- self.Options.configure(foreground="#000000")
- self.Options.configure(highlightbackground="#d9d9d9")
- self.Options.configure(highlightcolor="black")
- self.Options.configure(insertbackground="black")
- self.Options.configure(selectbackground="#c4c4c4")
- self.Options.configure(selectforeground="black")
- self.Options.configure(textvariable=self.var_otherOptions)
-
- self.btnStart = tk.Button(self.root)
- self.btnStart.place(relx=0.01, rely=0.84, height=22, width=100)
- self.btnStart.configure(activebackground="#d9d9d9")
- self.btnStart.configure(activeforeground="#000000")
- self.btnStart.configure(background="#d9d9d9")
- self.btnStart.configure(command=self.cmd_Start)
- self.btnStart.configure(foreground="#000000")
- self.btnStart.configure(highlightbackground="#d9d9d9")
- self.btnStart.configure(highlightcolor="black")
- self.btnStart.configure(text='''Start pyren''')
- self.btnStart.configure(width=70)
-
- self.btnDDT = tk.Button(self.root)
- self.btnDDT.place(relx=0.01, rely=0.91, height=22, width=100)
- self.btnDDT.configure(activebackground="#d9d9d9")
- self.btnDDT.configure(activeforeground="#000000")
- self.btnDDT.configure(background="#d9d9d9")
- self.btnDDT.configure(command=self.cmd_DDT)
- self.btnDDT.configure(foreground="#000000")
- self.btnDDT.configure(highlightbackground="#d9d9d9")
- self.btnDDT.configure(highlightcolor="black")
- self.btnDDT.configure(text='''Start DDT''')
- self.btnDDT.configure(width=70)
-
- self.btnScan = tk.Button(self.root)
- self.btnScan.place(relx=0.21, rely=0.84, height=22, width=100)
- self.btnScan.configure(activebackground="#d9d9d9")
- self.btnScan.configure(activeforeground="#000000")
- self.btnScan.configure(background="#d9d9d9")
- self.btnScan.configure(command=self.cmd_Scan)
- self.btnScan.configure(foreground="#000000")
- self.btnScan.configure(highlightbackground="#d9d9d9")
- self.btnScan.configure(highlightcolor="black")
- self.btnScan.configure(text='''Scan''')
- self.btnScan.configure(width=70)
-
- self.btnDemo = tk.Button(self.root)
- self.btnDemo.place(relx=0.41, rely=0.84, height=22, width=100)
- self.btnDemo.configure(activebackground="#d9d9d9")
- self.btnDemo.configure(activeforeground="#000000")
- self.btnDemo.configure(background="#d9d9d9")
- self.btnDemo.configure(command=self.cmd_Demo)
- self.btnDemo.configure(foreground="#000000")
- self.btnDemo.configure(highlightbackground="#d9d9d9")
- self.btnDemo.configure(highlightcolor="black")
- self.btnDemo.configure(text='''Demo''')
- self.btnDemo.configure(width=82)
-
- self.btnCheck = tk.Button(self.root)
- self.btnCheck.place(relx=0.61, rely=0.84, height=22, width=100)
- self.btnCheck.configure(activebackground="#d9d9d9")
- self.btnCheck.configure(activeforeground="#000000")
- self.btnCheck.configure(background="#d9d9d9")
- self.btnCheck.configure(command=self.cmd_Check)
- self.btnCheck.configure(foreground="#000000")
- self.btnCheck.configure(highlightbackground="#d9d9d9")
- self.btnCheck.configure(highlightcolor="black")
- self.btnCheck.configure(text='''Check ELM''')
-
- self.btnMon = tk.Button(self.root)
- self.btnMon.place(relx=0.81, rely=0.84, height=22, width=90)
- self.btnMon.configure(activebackground="#d9d9d9")
- self.btnMon.configure(activeforeground="#000000")
- self.btnMon.configure(background="#d9d9d9")
- self.btnMon.configure(command=self.cmd_Mon)
- self.btnMon.configure(foreground="#000000")
- self.btnMon.configure(highlightbackground="#d9d9d9")
- self.btnMon.configure(highlightcolor="black")
- self.btnMon.configure(text='''Monitor''')
-
- self.btnMac = tk.Button(self.root)
- self.btnMac.place(relx=0.81, rely=0.91, height=22, width=90)
- self.btnMac.configure(activebackground="#d9d9d9")
- self.btnMac.configure(activeforeground="#000000")
- self.btnMac.configure(background="#d9d9d9")
- self.btnMac.configure(command=self.cmd_Term)
- self.btnMac.configure(foreground="#000000")
- self.btnMac.configure(highlightbackground="#d9d9d9")
- self.btnMac.configure(highlightcolor="black")
- self.btnMac.configure(text='''Macro''')
-
- self.btnUpg = tk.Button(self.root)
- self.btnUpg.place(relx=0.41, rely=0.91, height=22, width=100)
- self.btnUpg.configure(activebackground="#d9d9d9")
- self.btnUpg.configure(activeforeground="#000000")
- self.btnUpg.configure(background="#d9d9d9")
- self.btnUpg.configure(command=self.cmd_Update)
- self.btnUpg.configure(foreground="#000000")
- self.btnUpg.configure(highlightbackground="#d9d9d9")
- self.btnUpg.configure(highlightcolor="black")
- self.btnUpg.configure(text='''Update''')
-
- self.pathList = tkinter.ttk.Combobox(self.root)
- self.pathList.place(relx=0.04, rely=0.05, relheight=0.06, relwidth=0.41)
- self.pathList.configure(values=['./pyren09a', './pyren09a'])
- self.pathList.configure(values=self.var_pathList)
- self.pathList.configure(textvariable=self.var_path)
- self.pathList.configure(takefocus="")
-
- self.portList = tkinter.ttk.Combobox(self.root)
- self.portList.place(relx=0.52, rely=0.05, relheight=0.06, relwidth=0.43)
- self.portList.configure(values=self.var_portList)
- self.portList.configure(textvariable=self.var_port)
- self.portList.configure(takefocus="")
-
- self.speedList = tkinter.ttk.Combobox(self.root)
- self.speedList.place(relx=0.54, rely=0.17, relheight=0.06, relwidth=0.41)
- self.speedList.configure(values=self.var_speedList)
- self.speedList.configure(textvariable=self.var_speed)
- self.speedList.configure(takefocus="")
-
- self.csvList = tkinter.ttk.Combobox(self.root)
- self.csvList.place(relx=0.10, rely=0.33, relheight=0.06, relwidth=0.35)
- self.csvList.configure(values=self.var_csvOptions)
- self.csvList.configure(textvariable=self.var_csvOption)
- self.csvList.configure(takefocus="")
-
- self.langList = tkinter.ttk.Combobox(self.root)
- self.langList.place(relx=0.04, rely=0.185, relheight=0.06, relwidth=0.41)
- self.langList.configure(values=self.var_langList)
- self.langList.configure(textvariable=self.var_lang)
- self.langList.configure(takefocus="")
-
- self.root.focus_force()
- self.root.focus_set()
- self.root.mainloop()
-
- def __del__(self):
- pass
-
-
- def main():
- gui = desktopGUI()
-
-
- if __name__ == '__main__':
- os.chdir(os.path.dirname(os.path.realpath(sys.argv[0])))
- if len(sys.argv)>1 and sys.argv[1]=='update':
- res = update_from_gitlab()
- if res == 0:
- print( "Done")
- elif res == 1:
- print( "No connection with gitlab.com")
- elif res == 2:
- print( "UnZip error")
- exit()
- main()
-
-else:
- class androidGUI():
-
- save = None
- pl = []
- ll = []
- csvl = []
-
- def cmd_Mon(self):
- self.saveSettings()
- self.droid.fullDismiss()
- run(self.save, 'mon')
-
- def cmd_Check(self):
- self.saveSettings()
- self.droid.fullDismiss()
- run(self.save, 'check')
-
- def cmd_Demo(self):
- self.saveSettings()
- self.droid.fullDismiss()
- run(self.save, 'demo')
-
- def cmd_Scan(self):
- self.saveSettings()
- self.droid.fullDismiss()
- run(self.save, 'scan')
-
- def cmd_Start(self):
- self.saveSettings()
- self.droid.fullDismiss()
- run(self.save, 'pyren')
-
- def cmd_Term(self):
- self.saveSettings()
- self.droid.fullDismiss()
- run(self.save, 'term')
-
- def cmd_PIDs(self):
- self.saveSettings()
- self.droid.fullDismiss()
- run(self.save, 'pids')
-
- def cmd_Update(self):
- res = update_from_gitlab()
- if res == 0:
- self.droid.makeToast("Done")
- elif res == 1:
- self.droid.makeToast("No connection with gitlab.com")
- elif res == 2:
- self.droid.makeToast("UnZip error")
-
- def saveSettings(self):
- self.save.path = self.pl[int(self.droid.fullQueryDetail("sp_version").result['selectedItemPosition'])]
- self.save.lang = self.ll[int(self.droid.fullQueryDetail("sp_language").result['selectedItemPosition'])]
- self.save.csvOption = self.csvl[int(self.droid.fullQueryDetail("sp_csv").result['selectedItemPosition'])]
-
- if self.droid.fullQueryDetail("rb_bt").result['checked'] == 'false':
- self.save.port = '192.168.0.10:35000'
+try:
+ import serial
+ from serial.tools import list_ports
+except ImportError:
+ print("\n\n\n\tPleas install additional modules")
+ print("\t\t>sudo easy_install pyserial")
+ sys.exit()
+try:
+ # Python2
+ import tkinter as tk
+ import tkinter.ttk
+ import tkinter.font
+ import tkinter.messagebox
+ import tkinter.filedialog
+ import tkinter.simpledialog
+except ImportError:
+ # Python3
+ import tkinter as tk
+ import tkinter.ttk as ttk
+ import tkinter.font
+ import tkinter.messagebox
+ import tkinter.filedialog
+
+
+class desktopGUI(tk.Frame):
+
+ save = None
+
+ def guiDestroy(self):
+ self.root.eval('::ttk::CancelRepeat')
+ self.root.destroy()
+
+ def cmd_Mon(self):
+ self.saveSettings()
+ self.guiDestroy()
+ run(self.save, 'mon')
+
+ def cmd_Check(self):
+ self.saveSettings()
+ self.guiDestroy()
+ run(self.save, 'check')
+
+ def cmd_Demo(self):
+ self.saveSettings()
+ self.guiDestroy()
+ run(self.save, 'demo')
+
+ def cmd_Scan(self):
+ self.saveSettings()
+ self.guiDestroy()
+ run(self.save, 'scan')
+
+ def cmd_Start(self):
+ self.saveSettings()
+ self.guiDestroy()
+ run(self.save, 'pyren')
+
+ def cmd_DDT(self):
+ self.saveSettings()
+ self.guiDestroy()
+ run(self.save, 'ddt')
+
+ def cmd_Term(self):
+ self.saveSettings()
+ self.guiDestroy()
+ run(self.save, 'term')
+
+ def cmd_Update(self):
+ res = update_from_gitlab()
+ if res == 0:
+ tkinter.messagebox.showinfo("Information", "Done")
+ elif res == 1:
+ tkinter.messagebox.showerror("Error", "No connection with gitlab.com")
+ elif res == 2:
+ tkinter.messagebox.showerror("Error", "UnZip error")
+
+ def saveSettings(self):
+ self.save.path = self.var_path.get()
+ self.save.port = self.var_port.get().split(';')[0]
+ self.save.lang = self.var_lang.get()
+ self.save.speed = self.var_speed.get()
+ self.save.log = self.var_log.get()
+ self.save.logName = self.var_logName.get()
+ self.save.cfc = self.var_cfc.get()
+ self.save.n1c = self.var_n1c.get()
+ self.save.si = self.var_si.get()
+ self.save.csv = self.var_csv.get()
+ self.save.csvOption = self.var_csvOption.get()
+ self.save.dump = self.var_dump.get()
+ self.save.can2 = self.var_can2.get()
+ self.save.options = self.var_otherOptions.get()
+ self.save.save()
+
+ def loadSettings(self):
+
+ self.var_si.set(self.save.si)
+ self.var_cfc.set(self.save.cfc)
+ self.var_n1c.set(self.save.n1c)
+ self.var_csv.set(self.save.csv)
+ self.var_csvOption.set(self.save.csvOption)
+ self.var_can2.set(self.save.can2)
+ self.var_dump.set(self.save.dump)
+ self.var_lang.set(self.save.lang)
+ self.var_path.set(self.save.path)
+ self.var_port.set(self.save.port)
+ self.var_speed.set(self.save.speed)
+ self.var_otherOptions.set(self.save.options)
+ self.var_log.set(self.save.log)
+ self.var_logName.set(self.save.logName)
+
+ self.var_speedList = ['38400', '115200', '230400', '500000', '1000000', '2000000']
+ self.var_langList = getLangList()
+ self.var_pathList = getPathList()
+ self.var_portList = getPortList()
+ self.var_csvOptions = csvOptions
+
+ if len(self.var_path.get()) == 0:
+ self.var_path.set(self.var_pathList[0])
+
+ if len(self.var_lang.get()) == 0:
+ ll = self.var_langList
+ if 'RU' in ll:
+ self.var_lang.set('RU')
+ elif 'GB' in ll:
+ self.var_lang.set('GB')
else:
- portName = self.dev_list[int(self.droid.fullQueryDetail("in_wifi").result['selectedItemPosition'])]
- upPortName = portName.upper().split(';')[0]
- MAC = ''
- if re.match (r"^[0-9A-F]{2}:[0-9A-F]{2}:[0-9A-F]{2}:[0-9A-F]{2}:[0-9A-F]{2}:[0-9A-F]{2}$", upPortName) or \
- re.match (r"^[0-9A-F]{4}.[0-9A-F]{4}.[0-9A-F]{4}$", upPortName) or \
- re.match (r"^[0-9A-F]{12}$", upPortName):
- upPortName = upPortName.replace(':','').replace('.','')
- MAC = ':'.join (a + b for a, b in zip (upPortName[::2], upPortName[1::2]))
- self.save.port = MAC + ';' + 'BT'
+ self.var_lang.set(ll[0])
- self.save.speed = '38400'
+ if len(self.var_port.get()) == 0:
+ for p in self.var_portList:
+ self.var_port.set(p)
+ if 'OBD' in p: break
- self.save.logName = self.droid.fullQueryDetail("in_logname").result['text']
+ def __init__(self):
+ self.save = settings()
+ self.root = tk.Tk()
+ self.root.option_add('*Dialog.msg.font', 'Courier\ New 12')
+ self.root.geometry("500x500")
+ tk.Frame.__init__(self, self.root)
- if self.droid.fullQueryDetail("cb_log").result['checked'] == 'false':
- self.save.log = False
- else:
- self.save.log = True
+ self.var_can2 = tk.BooleanVar()
+ self.var_dump = tk.BooleanVar()
+ self.var_log = tk.BooleanVar()
+ self.var_csv = tk.BooleanVar()
- if self.droid.fullQueryDetail("cb_cfc").result['checked'] == 'false':
- self.save.cfc = False
- else:
- self.save.cfc = True
+ self.var_cfc = tk.BooleanVar()
+ self.var_n1c = tk.BooleanVar()
+ self.var_si = tk.BooleanVar()
- if self.droid.fullQueryDetail("cb_n1c").result['checked'] == 'false':
- self.save.n1c = False
- else:
- self.save.n1c = True
+ self.var_langList = []
+ self.var_pathList = []
+ self.var_portList = []
+ self.var_speedList = []
- if self.droid.fullQueryDetail("cb_si").result['checked'] == 'false':
- self.save.si = False
- else:
- self.save.si = True
+ self.var_lang = tk.StringVar()
+ self.var_path = tk.StringVar()
+ self.var_port = tk.StringVar()
+ self.var_speed = tk.StringVar()
+ self.var_csvOption = tk.StringVar()
- if self.droid.fullQueryDetail("cb_csv").result['checked'] == 'false':
- self.save.csv = False
- else:
- self.save.csv = True
+ self.var_logName = tk.StringVar()
+ self.var_otherOptions = tk.StringVar()
- if self.droid.fullQueryDetail("cb_dump").result['checked'] == 'false':
- self.save.dump = False
- else:
- self.save.dump = True
+ self.loadSettings()
- if self.droid.fullQueryDetail("cb_can2").result['checked'] == 'false':
- self.save.can2 = False
- else:
- self.save.can2 = True
+ self.root.title("Pyren Launcher")
+ self.style = tkinter.ttk.Style()
+ self.style.theme_use('classic')
- self.save.options = self.droid.fullQueryDetail("in_options").result['text']
+ if sys.platform == "win32": self.style.theme_use('winnative')
+ self.style.configure('.', background='#d9d9d9')
+ self.style.configure('.', foreground='#000000')
+ self.style.configure('.', font="TkDefaultFont")
+ self.style.map('.', background=[('selected', '#d9d9d9'), ('active', '#d9d9d9')])
- self.save.save()
+ self.root.geometry("500x500+0+28")
+ self.root.title("Pyren launcher")
+ self.root.configure(background="#d9d9d9")
+ self.root.configure(highlightbackground="#d9d9d9")
+ self.root.configure(highlightcolor="black")
- def loadSettings(self):
+ self.lPathSelector = tk.LabelFrame(self.root)
+ self.lPathSelector.place(relx=0.02, rely=0.0, relheight=0.13, relwidth=0.46)
+ self.lPathSelector.configure(relief=tk.GROOVE)
+ self.lPathSelector.configure(foreground="black")
+ self.lPathSelector.configure(text='''Version''')
+ self.lPathSelector.configure(background="#d9d9d9")
+ self.lPathSelector.configure(highlightbackground="#d9d9d9")
+ self.lPathSelector.configure(highlightcolor="black")
+ self.lPathSelector.configure(width=230)
- pl = getPathList()
- if self.save.path in pl: pl.insert(0, pl.pop(pl.index(self.save.path)))
- self.droid.fullSetList("sp_version", pl)
- self.pl = pl
+ self.lDBLanguage = tk.LabelFrame(self.root)
+ self.lDBLanguage.place(relx=0.02, rely=0.14, relheight=0.13, relwidth=0.46)
+ self.lDBLanguage.configure(relief=tk.GROOVE)
+ self.lDBLanguage.configure(foreground="black")
+ self.lDBLanguage.configure(text='''DB Language''')
+ self.lDBLanguage.configure(background="#d9d9d9")
+ self.lDBLanguage.configure(highlightbackground="#d9d9d9")
+ self.lDBLanguage.configure(highlightcolor="black")
+ self.lDBLanguage.configure(width=100)
- ll = getLangList()
- if self.save.lang in ll: ll.insert(0, ll.pop(ll.index(self.save.lang)))
- self.droid.fullSetList("sp_language", ll)
- self.ll = ll
+ self.lPortSelector = tk.LabelFrame(self.root)
+ self.lPortSelector.place(relx=0.5, rely=0.0, relheight=0.27, relwidth=0.48)
+ self.lPortSelector.configure(relief=tk.GROOVE)
+ self.lPortSelector.configure(foreground="black")
+ self.lPortSelector.configure(text='''Port''')
+ self.lPortSelector.configure(background="#d9d9d9")
+ self.lPortSelector.configure(highlightbackground="#d9d9d9")
+ self.lPortSelector.configure(highlightcolor="black")
+ self.lPortSelector.configure(width=240)
- csvl = csvOptions
- if self.save.csvOption in csvl: csvl.insert(0, csvl.pop(csvl.index(self.save.csvOption)))
- self.droid.fullSetList("sp_csv", csvl)
- self.csvl = csvl
+ self.lPortSpeed = tk.LabelFrame(self.root)
+ self.lPortSpeed.place(relx=0.52, rely=0.12, relheight=0.13, relwidth=0.44)
+ self.lPortSpeed.configure(relief=tk.GROOVE)
+ self.lPortSpeed.configure(foreground="black")
+ self.lPortSpeed.configure(text='''Port Speed (only for USB-ELM)''')
+ self.lPortSpeed.configure(background="#d9d9d9")
+ self.lPortSpeed.configure(highlightbackground="#d9d9d9")
+ self.lPortSpeed.configure(highlightcolor="black")
+ self.lPortSpeed.configure(width=220)
- if self.save.port == '':
- self.save.port = "192.168.0.10:35000;WiFi"
- self.dev_list.append(self.save.port)
- if self.save.port.upper().endswith('BT'):
- MAC = ""
- if ';' in self.save.port:
- MAC = self.save.port.split(';')[0]
- for d in self.dev_list:
- if MAC in d:
- self.dev_list.insert(0, self.dev_list.pop(self.dev_list.index(d)))
+ self.lOptions = tk.LabelFrame(self.root)
+ self.lOptions.place(relx=0.02, rely=0.69, relheight=0.13, relwidth=0.96)
+ self.lOptions.configure(relief=tk.GROOVE)
+ self.lOptions.configure(foreground="black")
+ self.lOptions.configure(text='''Other options''')
+ self.lOptions.configure(background="#d9d9d9")
+ self.lOptions.configure(highlightbackground="#d9d9d9")
+ self.lOptions.configure(highlightcolor="black")
+ self.lOptions.configure(width=480)
- self.droid.fullSetProperty("rb_bt", "checked", "true")
- self.droid.fullSetProperty("rb_wifi", "checked", "false")
- self.droid.fullSetList("in_wifi", self.dev_list)
- else:
- self.droid.fullSetProperty("rb_bt", "checked", "false")
- self.droid.fullSetProperty("rb_wifi", "checked", "true")
- self.droid.fullSetList("in_wifi", self.dev_list)
+ self.lLog = tk.LabelFrame(self.root)
+ self.lLog.place(relx=0.5, rely=0.28, relheight=0.135, relwidth=0.48)
+ self.lLog.configure(relief=tk.GROOVE)
+ self.lLog.configure(foreground="black")
+ self.lLog.configure(text='''ELM Log''')
+ self.lLog.configure(background="#d9d9d9")
+ self.lLog.configure(highlightbackground="#d9d9d9")
+ self.lLog.configure(highlightcolor="black")
+ self.lLog.configure(width=230)
- self.droid.fullSetProperty("in_logname", "text", self.save.logName)
- if self.save.log:
- self.droid.fullSetProperty("cb_log", "checked", "true")
- else:
- self.droid.fullSetProperty("cb_log", "checked", "false")
+ self.lCAN = tk.LabelFrame(self.root)
+ self.lCAN.place(relx=0.02, rely=0.43, relheight=0.25, relwidth=0.46)
+ self.lCAN.configure(relief=tk.GROOVE)
+ self.lCAN.configure(foreground="black")
+ self.lCAN.configure(text='''CAN''')
+ self.lCAN.configure(background="#d9d9d9")
+ self.lCAN.configure(highlightbackground="#d9d9d9")
+ self.lCAN.configure(highlightcolor="black")
+ self.lCAN.configure(width=230)
- if self.save.cfc:
- self.droid.fullSetProperty("cb_cfc", "checked", "true")
- else:
- self.droid.fullSetProperty("cb_cfc", "checked", "false")
+ self.lCSV = tk.LabelFrame(self.root)
+ self.lCSV.place(relx=0.02, rely=0.28, relheight=0.135, relwidth=0.46)
+ self.lCSV.configure(relief=tk.GROOVE)
+ self.lCSV.configure(foreground="black")
+ self.lCSV.configure(text='''Data logging''')
+ self.lCSV.configure(background="#d9d9d9")
+ self.lCSV.configure(highlightbackground="#d9d9d9")
+ self.lCSV.configure(highlightcolor="black")
+ self.lCSV.configure(width=240)
- if self.save.n1c:
- self.droid.fullSetProperty("cb_n1c", "checked", "true")
- else:
- self.droid.fullSetProperty("cb_n1c", "checked", "false")
+ self.lKWP = tk.LabelFrame(self.root)
+ self.lKWP.place(relx=0.5, rely=0.43, relheight=0.125, relwidth=0.48)
+ self.lKWP.configure(relief=tk.GROOVE)
+ self.lKWP.configure(foreground="black")
+ self.lKWP.configure(text='''K-Line''')
+ self.lKWP.configure(background="#d9d9d9")
+ self.lKWP.configure(highlightbackground="#d9d9d9")
+ self.lKWP.configure(highlightcolor="black")
+ self.lKWP.configure(width=240)
- if self.save.si:
- self.droid.fullSetProperty("cb_si", "checked", "true")
- else:
- self.droid.fullSetProperty("cb_si", "checked", "false")
+ self.mCFC = tk.Message(self.root)
+ self.mCFC.place(relx=0.08, rely=0.5, relheight=0.06, relwidth=0.1)
+ self.mCFC.configure(background="#d9d9d9")
+ self.mCFC.configure(foreground="#000000")
+ self.mCFC.configure(highlightbackground="#d9d9d9")
+ self.mCFC.configure(highlightcolor="black")
+ self.mCFC.configure(text='''--cfc''')
+ self.mCFC.configure(width=40)
- if self.save.csv:
- self.droid.fullSetProperty("cb_csv", "checked", "true")
- else:
- self.droid.fullSetProperty("cb_csv", "checked", "false")
+ self.mN1C = tk.Message(self.root)
+ self.mN1C.place(relx=0.08, rely=0.57, relheight=0.06, relwidth=0.1)
+ self.mN1C.configure(background="#d9d9d9")
+ self.mN1C.configure(foreground="#000000")
+ self.mN1C.configure(highlightbackground="#d9d9d9")
+ self.mN1C.configure(highlightcolor="black")
+ self.mN1C.configure(text='''--n1c''')
+ self.mN1C.configure(width=40)
- if self.save.dump:
- self.droid.fullSetProperty("cb_dump", "checked", "true")
- else:
- self.droid.fullSetProperty("cb_dump", "checked", "false")
+ self.mSI = tk.Message(self.root)
+ self.mSI.place(relx=0.56, rely=0.48, relheight=0.03, relwidth=0.08)
+ self.mSI.configure(background="#d9d9d9")
+ self.mSI.configure(foreground="#000000")
+ self.mSI.configure(highlightbackground="#d9d9d9")
+ self.mSI.configure(highlightcolor="black")
+ self.mSI.configure(text='''--si''')
+ self.mSI.configure(width=40)
- if self.save.can2:
- self.droid.fullSetProperty("cb_can2", "checked", "true")
- else:
- self.droid.fullSetProperty("cb_can2", "checked", "false")
+ self.mCAN = tk.Message(self.root)
+ self.mCAN.place(relx=0.18, rely=0.48, relheight=0.18, relwidth=0.28)
+ self.mCAN.configure(background="#d9d9d9")
+ self.mCAN.configure(foreground="#000000")
+ self.mCAN.configure(highlightbackground="#d9d9d9")
+ self.mCAN.configure(highlightcolor="black")
+ self.mCAN.configure(
+ text='''CFC - enable soft flow control (recommended) N1C - disable L1 cache (not recommended)''')
+ self.mCAN.configure(width=142)
- self.droid.fullSetProperty("in_options", "text", self.save.options)
+ self.mKWP = tk.Message(self.root)
+ self.mKWP.place(relx=0.64, rely=0.46, relheight=0.08, relwidth=0.3)
+ self.mKWP.configure(background="#d9d9d9")
+ self.mKWP.configure(foreground="#000000")
+ self.mKWP.configure(highlightbackground="#d9d9d9")
+ self.mKWP.configure(highlightcolor="black")
+ self.mKWP.configure(text='''Try Slow Init before Fast Init. It may helps with old ECUs''')
+ self.mKWP.configure(width=152)
- lay = '''
-
+ self.logName = tk.Entry(self.root)
+ self.logName.place(relx=0.58, rely=0.33, relheight=0.06, relwidth=0.37)
+ self.logName.configure(background="white")
+ self.logName.configure(font="TkFixedFont")
+ self.logName.configure(foreground="#000000")
+ self.logName.configure(highlightbackground="#d9d9d9")
+ self.logName.configure(highlightcolor="black")
+ self.logName.configure(insertbackground="black")
+ self.logName.configure(selectbackground="#c4c4c4")
+ self.logName.configure(selectforeground="black")
+ self.logName.configure(textvariable=self.var_logName)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+ self.cbLog = tk.Checkbutton(self.root)
+ self.cbLog.place(relx=0.52, rely=0.325, relheight=0.07, relwidth=0.06)
+ self.cbLog.configure(activebackground="#d9d9d9")
+ self.cbLog.configure(activeforeground="#000000")
+ self.cbLog.configure(background="#d9d9d9")
+ self.cbLog.configure(foreground="#000000")
+ self.cbLog.configure(highlightbackground="#d9d9d9")
+ self.cbLog.configure(highlightcolor="black")
+ self.cbLog.configure(justify=tk.LEFT)
+ self.cbLog.configure(variable=self.var_log)
+ # self.cbLog.configure(variable=self.che40)
-'''
+ self.cbCFC = tk.Checkbutton(self.lCAN)
+ self.cbCFC.place(relx=0.04, rely=0.17, relheight=0.29, relwidth=0.13)
+ self.cbCFC.configure(activebackground="#d9d9d9")
+ self.cbCFC.configure(activeforeground="#000000")
+ self.cbCFC.configure(background="#d9d9d9")
+ self.cbCFC.configure(foreground="#000000")
+ self.cbCFC.configure(highlightbackground="#d9d9d9")
+ self.cbCFC.configure(highlightcolor="black")
+ self.cbCFC.configure(justify=tk.LEFT)
+ self.cbCFC.configure(variable=self.var_cfc)
+ # self.cbCFC.configure(variable=self.che43)
- def eventloop(self):
- while True:
- event = self.droid.eventWait(50).result
- if event == None: continue
- if event["name"] == "click":
- id = event["data"]["id"]
- if id == "bt_start":
- self.cmd_Start()
- elif id == "bt_scan":
- self.cmd_Scan()
- elif id == "bt_demo":
- self.cmd_Demo()
- elif id == "bt_check":
- self.cmd_Check()
- elif id == "bt_mon":
- self.cmd_Mon()
- elif id == "bt_term":
- self.cmd_Term()
- elif id == "bt_pids":
- self.cmd_PIDs()
- elif id == "bt_update":
- self.cmd_Update()
+ self.cbN1C = tk.Checkbutton(self.lCAN)
+ self.cbN1C.place(relx=0.04, rely=0.48, relheight=0.29, relwidth=0.13)
+ self.cbN1C.configure(activebackground="#d9d9d9")
+ self.cbN1C.configure(activeforeground="#000000")
+ self.cbN1C.configure(background="#d9d9d9")
+ self.cbN1C.configure(foreground="#000000")
+ self.cbN1C.configure(highlightbackground="#d9d9d9")
+ self.cbN1C.configure(highlightcolor="black")
+ self.cbN1C.configure(justify=tk.LEFT)
+ self.cbN1C.configure(variable=self.var_n1c)
+ # self.cbN1C.configure(variable=self.che44)
- def __init__(self):
- self.save = settings()
- try:
- self.droid = android.Android()
- self.droid.fullShow(self.lay)
- self.dev_list = ['192.168.0.10:35000;WiFi']
- try:
- tmp = self.droid.bluetoothGetBondedDevices().result
- for i in range(0, len(tmp), 2):
- self.dev_list.append( tmp[i]+';'+tmp[i+1])
- except:
- pass
- self.loadSettings()
- self.eventloop()
- finally:
- self.droid.fullDismiss()
+ self.cbSI = tk.Checkbutton(self.lKWP)
+ self.cbSI.place(relx=0.04, rely=0.15, relheight=0.43, relwidth=0.13)
+ self.cbSI.configure(activebackground="#d9d9d9")
+ self.cbSI.configure(activeforeground="#000000")
+ self.cbSI.configure(background="#d9d9d9")
+ self.cbSI.configure(foreground="#000000")
+ self.cbSI.configure(highlightbackground="#d9d9d9")
+ self.cbSI.configure(highlightcolor="black")
+ self.cbSI.configure(justify=tk.LEFT)
+ self.cbSI.configure(variable=self.var_si)
+ # self.cbSI.configure(variable=self.che45)
- def __del__(self):
- self.droid.fullDismiss()
+ self.cbCSV = tk.Checkbutton(self.lCSV)
+ self.cbCSV.place(relx=0.05, rely=0.24, relheight=0.4, relwidth=0.1)
+ self.cbCSV.configure(activebackground="#d9d9d9")
+ self.cbCSV.configure(activeforeground="#000000")
+ self.cbCSV.configure(background="#d9d9d9")
+ self.cbCSV.configure(foreground="#000000")
+ self.cbCSV.configure(highlightbackground="#d9d9d9")
+ self.cbCSV.configure(highlightcolor="black")
+ self.cbCSV.configure(justify=tk.LEFT)
+ self.cbCSV.configure(variable=self.var_csv)
+
+ self.lDump = tk.LabelFrame(self.root)
+ self.lDump.place(relx=0.5, rely=0.56, relheight=0.12, relwidth=0.10)
+ self.lDump.configure(relief=tk.GROOVE)
+ self.lDump.configure(foreground="black")
+ self.lDump.configure(text='''Dump''')
+ self.lDump.configure(background="#d9d9d9")
+ self.lDump.configure(highlightbackground="#d9d9d9")
+ self.lDump.configure(highlightcolor="black")
+ self.lDump.configure(width=60)
+
+ self.lCAN2 = tk.LabelFrame(self.root)
+ self.lCAN2.place(relx=0.62, rely=0.56, relheight=0.12, relwidth=0.10)
+ self.lCAN2.configure(relief=tk.GROOVE)
+ self.lCAN2.configure(foreground="black")
+ self.lCAN2.configure(text='''CAN 2''')
+ self.lCAN2.configure(background="#d9d9d9")
+ self.lCAN2.configure(highlightbackground="#d9d9d9")
+ self.lCAN2.configure(highlightcolor="black")
+ self.lCAN2.configure(width=60)
+
+ self.cbDump = tk.Checkbutton(self.lDump)
+ self.cbDump.place(relx=0.265, rely=0.18, relheight=0.55, relwidth=0.5)
+ self.cbDump.configure(activebackground="#d9d9d9")
+ self.cbDump.configure(activeforeground="#000000")
+ self.cbDump.configure(background="#d9d9d9")
+ self.cbDump.configure(foreground="#000000")
+ self.cbDump.configure(highlightbackground="#d9d9d9")
+ self.cbDump.configure(highlightcolor="black")
+ self.cbDump.configure(variable=self.var_dump)
+ # self.cbDump.configure(variable=self.che41)
+ self.cbDump.configure(width=34)
+
+ self.cbCAN2 = tk.Checkbutton(self.lCAN2)
+ self.cbCAN2.place(relx=0.28, rely=0.18, relheight=0.55, relwidth=0.5)
+ self.cbCAN2.configure(activebackground="#d9d9d9")
+ self.cbCAN2.configure(activeforeground="#000000")
+ self.cbCAN2.configure(background="#d9d9d9")
+ self.cbCAN2.configure(foreground="#000000")
+ self.cbCAN2.configure(highlightbackground="#d9d9d9")
+ self.cbCAN2.configure(highlightcolor="black")
+ self.cbCAN2.configure(variable=self.var_can2)
+ # self.cbCAN2.configure(variable=self.che42)
+ self.cbCAN2.configure(width=34)
+
+ self.Options = tk.Entry(self.root)
+ self.Options.place(relx=0.04, rely=0.74, relheight=0.06, relwidth=0.92)
+ self.Options.configure(background="white")
+ self.Options.configure(font="TkFixedFont")
+ self.Options.configure(foreground="#000000")
+ self.Options.configure(highlightbackground="#d9d9d9")
+ self.Options.configure(highlightcolor="black")
+ self.Options.configure(insertbackground="black")
+ self.Options.configure(selectbackground="#c4c4c4")
+ self.Options.configure(selectforeground="black")
+ self.Options.configure(textvariable=self.var_otherOptions)
+
+ self.btnStart = tk.Button(self.root)
+ self.btnStart.place(relx=0.01, rely=0.84, height=22, width=100)
+ self.btnStart.configure(activebackground="#d9d9d9")
+ self.btnStart.configure(activeforeground="#000000")
+ self.btnStart.configure(background="#d9d9d9")
+ self.btnStart.configure(command=self.cmd_Start)
+ self.btnStart.configure(foreground="#000000")
+ self.btnStart.configure(highlightbackground="#d9d9d9")
+ self.btnStart.configure(highlightcolor="black")
+ self.btnStart.configure(text='''Start pyren''')
+ self.btnStart.configure(width=70)
+
+ self.btnDDT = tk.Button(self.root)
+ self.btnDDT.place(relx=0.01, rely=0.91, height=22, width=100)
+ self.btnDDT.configure(activebackground="#d9d9d9")
+ self.btnDDT.configure(activeforeground="#000000")
+ self.btnDDT.configure(background="#d9d9d9")
+ self.btnDDT.configure(command=self.cmd_DDT)
+ self.btnDDT.configure(foreground="#000000")
+ self.btnDDT.configure(highlightbackground="#d9d9d9")
+ self.btnDDT.configure(highlightcolor="black")
+ self.btnDDT.configure(text='''Start DDT''')
+ self.btnDDT.configure(width=70)
+
+ self.btnScan = tk.Button(self.root)
+ self.btnScan.place(relx=0.21, rely=0.84, height=22, width=100)
+ self.btnScan.configure(activebackground="#d9d9d9")
+ self.btnScan.configure(activeforeground="#000000")
+ self.btnScan.configure(background="#d9d9d9")
+ self.btnScan.configure(command=self.cmd_Scan)
+ self.btnScan.configure(foreground="#000000")
+ self.btnScan.configure(highlightbackground="#d9d9d9")
+ self.btnScan.configure(highlightcolor="black")
+ self.btnScan.configure(text='''Scan''')
+ self.btnScan.configure(width=70)
+
+ self.btnDemo = tk.Button(self.root)
+ self.btnDemo.place(relx=0.41, rely=0.84, height=22, width=100)
+ self.btnDemo.configure(activebackground="#d9d9d9")
+ self.btnDemo.configure(activeforeground="#000000")
+ self.btnDemo.configure(background="#d9d9d9")
+ self.btnDemo.configure(command=self.cmd_Demo)
+ self.btnDemo.configure(foreground="#000000")
+ self.btnDemo.configure(highlightbackground="#d9d9d9")
+ self.btnDemo.configure(highlightcolor="black")
+ self.btnDemo.configure(text='''Demo''')
+ self.btnDemo.configure(width=82)
+
+ self.btnCheck = tk.Button(self.root)
+ self.btnCheck.place(relx=0.61, rely=0.84, height=22, width=100)
+ self.btnCheck.configure(activebackground="#d9d9d9")
+ self.btnCheck.configure(activeforeground="#000000")
+ self.btnCheck.configure(background="#d9d9d9")
+ self.btnCheck.configure(command=self.cmd_Check)
+ self.btnCheck.configure(foreground="#000000")
+ self.btnCheck.configure(highlightbackground="#d9d9d9")
+ self.btnCheck.configure(highlightcolor="black")
+ self.btnCheck.configure(text='''Check ELM''')
+
+ self.btnMon = tk.Button(self.root)
+ self.btnMon.place(relx=0.81, rely=0.84, height=22, width=90)
+ self.btnMon.configure(activebackground="#d9d9d9")
+ self.btnMon.configure(activeforeground="#000000")
+ self.btnMon.configure(background="#d9d9d9")
+ self.btnMon.configure(command=self.cmd_Mon)
+ self.btnMon.configure(foreground="#000000")
+ self.btnMon.configure(highlightbackground="#d9d9d9")
+ self.btnMon.configure(highlightcolor="black")
+ self.btnMon.configure(text='''Monitor''')
+
+ self.btnMac = tk.Button(self.root)
+ self.btnMac.place(relx=0.81, rely=0.91, height=22, width=90)
+ self.btnMac.configure(activebackground="#d9d9d9")
+ self.btnMac.configure(activeforeground="#000000")
+ self.btnMac.configure(background="#d9d9d9")
+ self.btnMac.configure(command=self.cmd_Term)
+ self.btnMac.configure(foreground="#000000")
+ self.btnMac.configure(highlightbackground="#d9d9d9")
+ self.btnMac.configure(highlightcolor="black")
+ self.btnMac.configure(text='''Macro''')
+
+ self.btnUpg = tk.Button(self.root)
+ self.btnUpg.place(relx=0.41, rely=0.91, height=22, width=100)
+ self.btnUpg.configure(activebackground="#d9d9d9")
+ self.btnUpg.configure(activeforeground="#000000")
+ self.btnUpg.configure(background="#d9d9d9")
+ self.btnUpg.configure(command=self.cmd_Update)
+ self.btnUpg.configure(foreground="#000000")
+ self.btnUpg.configure(highlightbackground="#d9d9d9")
+ self.btnUpg.configure(highlightcolor="black")
+ self.btnUpg.configure(text='''Update''')
+
+ self.pathList = tkinter.ttk.Combobox(self.root)
+ self.pathList.place(relx=0.04, rely=0.05, relheight=0.06, relwidth=0.41)
+ self.pathList.configure(values=['./pyren09a', './pyren09a'])
+ self.pathList.configure(values=self.var_pathList)
+ self.pathList.configure(textvariable=self.var_path)
+ self.pathList.configure(takefocus="")
+
+ self.portList = tkinter.ttk.Combobox(self.root)
+ self.portList.place(relx=0.52, rely=0.05, relheight=0.06, relwidth=0.43)
+ self.portList.configure(values=self.var_portList)
+ self.portList.configure(textvariable=self.var_port)
+ self.portList.configure(takefocus="")
+
+ self.speedList = tkinter.ttk.Combobox(self.root)
+ self.speedList.place(relx=0.54, rely=0.17, relheight=0.06, relwidth=0.41)
+ self.speedList.configure(values=self.var_speedList)
+ self.speedList.configure(textvariable=self.var_speed)
+ self.speedList.configure(takefocus="")
+
+ self.csvList = tkinter.ttk.Combobox(self.root)
+ self.csvList.place(relx=0.10, rely=0.33, relheight=0.06, relwidth=0.35)
+ self.csvList.configure(values=self.var_csvOptions)
+ self.csvList.configure(textvariable=self.var_csvOption)
+ self.csvList.configure(takefocus="")
+
+ self.langList = tkinter.ttk.Combobox(self.root)
+ self.langList.place(relx=0.04, rely=0.185, relheight=0.06, relwidth=0.41)
+ self.langList.configure(values=self.var_langList)
+ self.langList.configure(textvariable=self.var_lang)
+ self.langList.configure(takefocus="")
+
+ self.root.focus_force()
+ self.root.focus_set()
+ self.root.mainloop()
+
+ def __del__(self):
+ pass
- def main():
- gui = androidGUI()
+def main():
+ gui = desktopGUI()
- if __name__ == '__main__':
- os.chdir(os.path.dirname(os.path.abspath(__file__)))
- # os.chdir(os.path.dirname(os.path.realpath(sys.argv[0])))
- main()
+if __name__ == '__main__':
+ os.chdir(os.path.dirname(os.path.realpath(sys.argv[0])))
+ if len(sys.argv)>1 and sys.argv[1]=='update':
+ res = update_from_gitlab()
+ if res == 0:
+ print( "Done")
+ elif res == 1:
+ print( "No connection with gitlab.com")
+ elif res == 2:
+ print( "UnZip error")
+ exit()
+ main()
\ No newline at end of file
diff --git a/pyren3/acf.py b/pyren3/acf.py
index f962435..693b079 100755
--- a/pyren3/acf.py
+++ b/pyren3/acf.py
@@ -140,7 +140,7 @@ def optParser():
options = parser.parse_args()
- if not options.port and mod_globals.os != 'android':
+ if not options.port:
parser.print_help()
iterator = sorted(list(list_ports.comports()))
print("")
diff --git a/pyren3/bus_monitor.py b/pyren3/bus_monitor.py
index d72176e..4025978 100644
--- a/pyren3/bus_monitor.py
+++ b/pyren3/bus_monitor.py
@@ -49,28 +49,17 @@ if mod_globals.os == 'nt':
print("\n\n\n\t\t\tGive me access to the Internet for download modules\n\n\n")
sys.exit()
colorama.init()
-else:
- # let's try android
- try:
- import androidhelper as android
- mod_globals.os = 'android'
- except:
- try:
- import android
- mod_globals.os = 'android'
- except:
- pass
-if mod_globals.os != 'android':
- try:
- import serial
- from serial.tools import list_ports
- #import ply
- except ImportError:
- print("\n\n\n\tPleas install additional modules")
- print("\t\t>sudo easy_install pyserial")
- #print "\t\t>sudo easy_install ply"
- sys.exit()
+
+try:
+ import serial
+ from serial.tools import list_ports
+ #import ply
+except ImportError:
+ print("\n\n\n\tPleas install additional modules")
+ print("\t\t>sudo easy_install pyserial")
+ #print "\t\t>sudo easy_install ply"
+ sys.exit()
class DDT_MON():
@@ -346,7 +335,7 @@ def optParser():
options = parser.parse_args()
- if options.outfile=='' and not options.port and mod_globals.os != 'android':
+ if options.outfile=='' and not options.port:
parser.print_help()
iterator = sorted(list(list_ports.comports()))
print("")
diff --git a/pyren3/bus_playback.py b/pyren3/bus_playback.py
index 74fae7b..4ca15a2 100755
--- a/pyren3/bus_playback.py
+++ b/pyren3/bus_playback.py
@@ -33,7 +33,7 @@ parser.add_argument(
options = parser.parse_args()
-if not options.port and mod_globals.os != 'android':
+if not options.port:
parser.print_help()
try:
diff --git a/pyren3/cmdr_chkelm.py b/pyren3/cmdr_chkelm.py
index 972f871..5b1ff6e 100755
--- a/pyren3/cmdr_chkelm.py
+++ b/pyren3/cmdr_chkelm.py
@@ -125,21 +125,10 @@ cmdb = '''
os.chdir(os.path.dirname(os.path.realpath(sys.argv[0])))
try:
- import androidhelper as android
- mod_globals.os = 'android'
-except:
- try:
- import android
- mod_globals.os = 'android'
- except:
- pass
-
-if mod_globals.os != 'android':
- try:
- import serial
- from serial.tools import list_ports
- except ImportError:
- sys.exit()
+ import serial
+ from serial.tools import list_ports
+except ImportError:
+ sys.exit()
from mod_elm import ELM
diff --git a/pyren3/cmdr_example.py b/pyren3/cmdr_example.py
index 67bb894..6955063 100755
--- a/pyren3/cmdr_example.py
+++ b/pyren3/cmdr_example.py
@@ -18,21 +18,10 @@ import pyren3
os.chdir(os.path.dirname(os.path.realpath(sys.argv[0])))
try:
- import androidhelper as android
- mod_globals.os = 'android'
-except:
- try:
- import android
- mod_globals.os = 'android'
- except:
- pass
-
-if mod_globals.os != 'android':
- try:
- import serial
- from serial.tools import list_ports
- except ImportError:
- sys.exit()
+ import serial
+ from serial.tools import list_ports
+except ImportError:
+ sys.exit()
from mod_elm import ELM
from mod_scan_ecus import ScanEcus
diff --git a/pyren3/cmdr_odometr.py b/pyren3/cmdr_odometr.py
index 05267a2..2551099 100755
--- a/pyren3/cmdr_odometr.py
+++ b/pyren3/cmdr_odometr.py
@@ -12,21 +12,10 @@ import pyren3
os.chdir(os.path.dirname(os.path.realpath(sys.argv[0])))
try:
- import androidhelper as android
- mod_globals.os = 'android'
-except:
- try:
- import android
- mod_globals.os = 'android'
- except:
- pass
-
-if mod_globals.os != 'android':
- try:
- import serial
- from serial.tools import list_ports
- except ImportError:
- sys.exit()
+ import serial
+ from serial.tools import list_ports
+except ImportError:
+ sys.exit()
from mod_elm import ELM
from mod_scan_ecus import ScanEcus
@@ -148,57 +137,57 @@ def main():
print(pyren_encode(string))
tot += str(num); tot += '\n'
print()
- if mod_globals.os != 'android':
- print(pyren_encode('Listening to CAN. Please wait a bit...'))
- elm.cmd('at z')
- elm.cmd("at e1")
- elm.cmd("at l1")
- elm.cmd("at h1")
- elm.cmd("at d1")
- elm.cmd("at caf0")
- elm.cmd("at sp 6")
- elm.cmd("at al")
- elm.portTimeout = 1
- elm.cmd("at cf 5C5")
- elm.cmd("at cm 7FF")
- elm.cmd("at cra 5C5")
- resp = elm.cmd("atma")
- elm.cmd("at")
- for l in resp.split('\n'):
- if l.upper().startswith('5C5'):
- kmt = l[9:18].replace(' ','')
- tot += "%-10s : " % "Frame 5C5"
- tot = tot + str(int(kmt,16)); tot += '\n'
- break
-
- elm.cmd("at cf 715")
- elm.cmd("at cm 7FF")
- elm.cmd("at cra 715")
- elm.portTimeout = 5
- resp = elm.cmd("atma")
- elm.portTimeout = 1
- elm.cmd("at")
- for l in resp.split('\n'):
- if l.upper().startswith('715'):
- kmt = l[6:15].replace(' ','')
- tot += "%-10s : " % "Frame 715"
- tot = tot + str(int(kmt,16)); tot += '\n'
- break
+ print(pyren_encode('Listening to CAN. Please wait a bit...'))
+ elm.cmd('at z')
+ elm.cmd("at e1")
+ elm.cmd("at l1")
+ elm.cmd("at h1")
+ elm.cmd("at d1")
+ elm.cmd("at caf0")
+ elm.cmd("at sp 6")
+ elm.cmd("at al")
+ elm.portTimeout = 1
- elm.cmd("at cf 5FD")
- elm.cmd("at cm 7FF")
- elm.cmd("at cra 5FD")
- elm.portTimeout = 5
- resp = elm.cmd("atma")
- elm.portTimeout = 1
- elm.cmd("at")
- for l in resp.split('\n'):
- if l.upper().startswith('5FD'):
- kmt = l[6:15].replace(' ','')
- tot += "%-10s : " % "Frame 5FD"
- tot = tot + str(int(kmt,16)); tot += '\n'
- break
+ elm.cmd("at cf 5C5")
+ elm.cmd("at cm 7FF")
+ elm.cmd("at cra 5C5")
+ resp = elm.cmd("atma")
+ elm.cmd("at")
+ for l in resp.split('\n'):
+ if l.upper().startswith('5C5'):
+ kmt = l[9:18].replace(' ','')
+ tot += "%-10s : " % "Frame 5C5"
+ tot = tot + str(int(kmt,16)); tot += '\n'
+ break
+
+ elm.cmd("at cf 715")
+ elm.cmd("at cm 7FF")
+ elm.cmd("at cra 715")
+ elm.portTimeout = 5
+ resp = elm.cmd("atma")
+ elm.portTimeout = 1
+ elm.cmd("at")
+ for l in resp.split('\n'):
+ if l.upper().startswith('715'):
+ kmt = l[6:15].replace(' ','')
+ tot += "%-10s : " % "Frame 715"
+ tot = tot + str(int(kmt,16)); tot += '\n'
+ break
+
+ elm.cmd("at cf 5FD")
+ elm.cmd("at cm 7FF")
+ elm.cmd("at cra 5FD")
+ elm.portTimeout = 5
+ resp = elm.cmd("atma")
+ elm.portTimeout = 1
+ elm.cmd("at")
+ for l in resp.split('\n'):
+ if l.upper().startswith('5FD'):
+ kmt = l[6:15].replace(' ','')
+ tot += "%-10s : " % "Frame 5FD"
+ tot = tot + str(int(kmt,16)); tot += '\n'
+ break
#print tot
elm.lastMessage = tot
diff --git a/pyren3/doc_maker.py b/pyren3/doc_maker.py
index 371d19e..8d1e168 100755
--- a/pyren3/doc_maker.py
+++ b/pyren3/doc_maker.py
@@ -90,27 +90,15 @@ if mod_globals.os == 'nt':
import serial
import colorama
colorama.init()
-else:
- # let's try android
- try:
- import androidhelper as android
- mod_globals.os = 'android'
- except:
- try:
- import android
- mod_globals.os = 'android'
- except:
- pass
-
-if mod_globals.os != 'android':
- try:
- import serial
- from serial.tools import list_ports
- #import ply
- except ImportError:
- print("\n\n\n\tPleas install additional modules")
- print("\t\t>sudo easy_install pyserial")
- sys.exit()
+
+try:
+ import serial
+ from serial.tools import list_ports
+ #import ply
+except ImportError:
+ print("\n\n\n\tPleas install additional modules")
+ print("\t\t>sudo easy_install pyserial")
+ sys.exit()
from mod_elm import ELM
from mod_scan_ecus import ScanEcus
diff --git a/pyren3/macro/init.txt b/pyren3/macro/init.txt
deleted file mode 100644
index 5d7684c..0000000
--- a/pyren3/macro/init.txt
+++ /dev/null
@@ -1,85 +0,0 @@
-#
-#
-# Initialisation macros for mod_term
-#
-#
-
-$addr = 7A
-$txa = 7E0
-$rxa = 7E8
-
-# reset elm
-reset_elm {
- at ws
- $prompt = ELM
-}
-
-# general CAN init
-init_can {
- reset_elm #macro
- at e1
- at s0
- at h0
- at l0
- at al
- at caf0
- at cfc0
- at sh $txa
- at cra $rxa
- at fc sh $txa
- at fc sd 30 00 00
- at fc sm 1
- $prompt = CAN
-}
-
-# CAN 250 init
-can250 {
- init_can
- at st ff
- at at 0
- at sp 8
- at at 1
- $prompt = CAN250
-}
-
-# CAN 500 init
-can500 {
- init_can
- at st ff
- at at 0
- at sp 6
- at at 1
- $prompt = CAN500
-}
-
-# general ISO init
-init_iso {
- reset_elm #macro
- at e1
- at l1
- at d1
- at sh 81 $addr f1
- at sw 96
- at wm 81 $addr f1 3E
- #at wm 82 $addr f1 3E01
- at ib10
- at st ff
- at at 0
- $prompt = KL
-}
-
-# K-Line slow init
-slow {
- init_iso
- at sp 4
- at at 1
- $prompt = SLOW
-}
-
-# K-Line fast init
-fast {
- init_iso
- at sp 5
- at at 1
- $prompt = FAST
-}
diff --git a/pyren3/macro/koleos2/Cornering_Inh_OnOff.cmd b/pyren3/macro/koleos2/Cornering_Inh_OnOff.cmd
deleted file mode 100644
index 9483f8b..0000000
--- a/pyren3/macro/koleos2/Cornering_Inh_OnOff.cmd
+++ /dev/null
@@ -1,15 +0,0 @@
-# Cornering_Inhibition ON/OFF
-
-$addr = 27
-
-can500 # init can macro
-
-delay 1
-
-# open session
-
-session 10C0
-
-# configuration
-
-xor_bits 0425 4 4 80 80
diff --git a/pyren3/macro/koleos2/DRL_Inh_by_flasher_OnOff.cmd b/pyren3/macro/koleos2/DRL_Inh_by_flasher_OnOff.cmd
deleted file mode 100644
index ef2fd41..0000000
--- a/pyren3/macro/koleos2/DRL_Inh_by_flasher_OnOff.cmd
+++ /dev/null
@@ -1,15 +0,0 @@
-# DRLInhibitByFlasher ON/OFF
-
-$addr = 27
-
-can500 # init can macro
-
-delay 1
-
-# open session
-
-session 10C0
-
-# configuration
-
-xor_bits 0054 4 4 80 80
diff --git a/pyren3/macro/megane2_scenic2/drl_off.cmd b/pyren3/macro/megane2_scenic2/drl_off.cmd
deleted file mode 100755
index 1e169e7..0000000
--- a/pyren3/macro/megane2_scenic2/drl_off.cmd
+++ /dev/null
@@ -1,10 +0,0 @@
-# Day running light off
-$addr = 26
-
-init_can_500 # init can macro
-
-10C0
-3BA01800
-
-exit
-
diff --git a/pyren3/macro/megane2_scenic2/wipers_manual.cmd b/pyren3/macro/megane2_scenic2/wipers_manual.cmd
deleted file mode 100755
index f412605..0000000
--- a/pyren3/macro/megane2_scenic2/wipers_manual.cmd
+++ /dev/null
@@ -1,9 +0,0 @@
-# Car wipers manual control, not managed by rain sensor
-$addr = 26
-
-init_can_500 # init can macro
-
-10C0
-3BA01200
-
-exit
diff --git a/pyren3/macro/megane3_fluence/radiosat_classic_bluetooth_accoustic.cmd b/pyren3/macro/megane3_fluence/radiosat_classic_bluetooth_accoustic.cmd
deleted file mode 100755
index 0c86a9e..0000000
--- a/pyren3/macro/megane3_fluence/radiosat_classic_bluetooth_accoustic.cmd
+++ /dev/null
@@ -1,23 +0,0 @@
-#Accoustics for R2_08_v3_81
-$addr = 13
-
-init_can_500 # init can macro
-
-delay 2
-
-# open session
-10C0
-
-#Phone acoustic parameters
-2E2B250101705AC7400401701800029402950064E0A00073C0003333030B00005AA10000000810082E2D38DD6A86000000000FFF00310004B0239C31E6E0B775239C6798E6E039961F941E0E3D36B70CD6A096531E0E76B1FF80B76A37F6CA7D3EB7412E37F6403B070461FD7F40FFFF07043B0061FD900000000000000502950000747EC3402C00CCCC0003027F8DCEFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
-
-#Accoustic Driver
-2E2B2B3E9B522F0001FFFAFDDA0164FE002C973E9B511E0001FFF4FDD302CCFC00164C00003E9B732D0001FFF4FE7803E0FE002C973E9B5B490001FFECFE1104FFFC00164C0000000040000001000000004000C0004000000040000001000000004000C0004000000040000001000000004000C0004000000040000001000000004000C00040000000400040000001000000004000C0004000400040000001000000004000C0004000400040000001000000004000C0004000400040000001000000004000C000400000002D43400000010000FFE9006FFF8021043FE8400000010000FFD200EFFF0014F63FDA40000001FFFFFFB5018EFE001C223FBE400000010044FF7D0044FF8041C23F0140000001FFE2FE1507A1F80024513DB440000001FF88FBBE0D0EF00024C900003D5B40000001FE33FB362B9EE000182B3DD740000001FEB6FC2E262BC0000EC836A140000001F0F8F1D166ABC0001F234F8C400000010BC6FC463076E000547B3FE440000001004BFFCB0122FF005FD73FE640000001FFFFFFCE03B8FE0017BE00002C4740000001000000004000C00040003FEC400000010000FFD90167FF00166C3FF5400000010000FFEC0052FF8017093DC940000001FF98FBD30BC3F0001CFF00003DB040000001FEE1FBA01F18F0001B043E1040000001FED3FC6B26CAE00013293FBE400000010044FF7D0044FF8041C23B1940000001F81BF7B36709B0000FB900000600060006000600200000000001000020000000000100002000000000010000200000000001000000000000003F00000000003F16A700000001000016A7000000010000
-
-#Accoustic Whole car
-2E2B2C3E9B522F0001FFFAFDDA0164FE002C973E9B511E0001FFF4FDD302CCFC00164C00003E9B732D0001FFF4FE7803E0FE002C973E9B5B490001FFECFE1104FFFC00164C0000000040000001000000004000C0004000000040000001000000004000C0004000000040000001000000004000C0004000000040000001000000004000C00040000000400040000001000000004000C0004000400040000001000000004000C0004000400040000001000000004000C0004000400040000001000000004000C000400000002D43400000010000FFE9006FFF8021043FE8400000010000FFD200EFFF0014F63FDA40000001FFFFFFB5018EFE001C223FBE400000010044FF7D0044FF8041C23F0140000001FFE2FE1507A1F80024513DB440000001FF88FBBE0D0EF00024C900003D5B40000001FE33FB362B9EE000182B3DD740000001FEB6FC2E262BC0000EC836A140000001F0F8F1D166ABC0001F234F8C400000010BC6FC463076E000547B3FE440000001004BFFCB0122FF005FD73FE640000001FFFFFFCE03B8FE0017BE00002C4740000001000000004000C00040003FEC400000010000FFD90167FF00166C3FF5400000010000FFEC0052FF8017093DC940000001FF98FBD30BC3F0001CFF00003DB040000001FEE1FBA01F18F0001B043E1040000001FED3FC6B26CAE00013293FBE400000010044FF7D0044FF8041C23B1940000001F81BF7B36709B0000FB900000600060006000600200000000001000020000000000100002000000000010000200000000001000000000000003F00000000003F16A700000001000016A7000000010000
-
-#Radio reception
-2E2B2D00011E1422241A14280D0A081F0F020206020408300301010001001430121220121400800100640A050F011402080A043C0F0F140F321E3250050F0009120A8CE10A5A5A0384300101063C961401C80000050000000100000000
-
-exit
diff --git a/pyren3/macro/qr25/idle_speed.cmd b/pyren3/macro/qr25/idle_speed.cmd
deleted file mode 100755
index ecaa073..0000000
--- a/pyren3/macro/qr25/idle_speed.cmd
+++ /dev/null
@@ -1,81 +0,0 @@
-
-# QR25 Idle speed correction
-$addr = 7A
-
-init_can_500 # init can macro
-
-# check ECU
-
-exit_if_not 83 26 8 FF 44
-exit_if_not 83 26 17 FF 43
-
-:checkeng
-goto_if 1201 5 4 FFFF 0000 runeng
-
-goto engisrun
-
-:runeng
-
-cls
-#
-# Run ENGINE
-#
-
-if_key q end
-wait 1
-goto checkeng
-
-:engisrun
-cls
-var lastResponse = $lastResponse
-#
-# Idle Speed
-#
-value 1201 5 4 FFFF 25 0 2
-#
-# ECU is running
-#
-# Select correction
-#
-# Press:
-# 0 reset
-# 1 +25
-# 2 +50
-# 3 +75
-# 4 +100
-#
-# q for Exit
-#
-
-if_key 0 key0
-if_key 1 key1
-if_key 2 key2
-if_key 3 key3
-if_key 4 key4
-if_key q end
-wait 1
-goto engisrun
-
-:key0
-3B0200
-goto engisrun
-
-:key1
-3B0202
-goto engisrun
-
-:key2
-3B0204
-goto engisrun
-
-:key3
-3B0206
-goto engisrun
-
-:key4
-3B0208
-goto engisrun
-
-:end
-
-exit
diff --git a/pyren3/macro/rlink2/rlink2-HIGH1-screen.cmd b/pyren3/macro/rlink2/rlink2-HIGH1-screen.cmd
deleted file mode 100755
index 5c26cce..0000000
--- a/pyren3/macro/rlink2/rlink2-HIGH1-screen.cmd
+++ /dev/null
@@ -1,18 +0,0 @@
-# Repair script for rlink2 black screen
-$addr = 13
-
-init_can_500 # init can macro
-
-1003
-
-# check if it is rlink2
-exit_if_not F18A 6 4 FFFFFF 434150
-
-# HIGH 1 768x1024
-2E2303032802131303003C000004500014001E001E040011C5002C006967
-
-wait 2
-# reload rlink2
-1101
-
-exit
diff --git a/pyren3/macro/rlink2/rlink2-HIGH2-screen.cmd b/pyren3/macro/rlink2/rlink2-HIGH2-screen.cmd
deleted file mode 100755
index 0c2171e..0000000
--- a/pyren3/macro/rlink2/rlink2-HIGH2-screen.cmd
+++ /dev/null
@@ -1,18 +0,0 @@
-# Repair script for rlink2 black screen
-$addr = 13
-
-init_can_500 # init can macro
-
-1003
-
-# check if it is rlink2
-exit_if_not F18A 6 4 FFFFFF 434150
-
-# HIGH 2 768x1024
-2E2303032802131303003C000004500014001E001E040014E8002C006967
-
-wait 2
-# reload rlink2
-1101
-
-exit
diff --git a/pyren3/macro/rlink2/rlink2-MID1-screen.cmd b/pyren3/macro/rlink2/rlink2-MID1-screen.cmd
deleted file mode 100755
index e7f6ecf..0000000
--- a/pyren3/macro/rlink2/rlink2-MID1-screen.cmd
+++ /dev/null
@@ -1,18 +0,0 @@
-# Repair script for rlink2 black screen
-$addr = 13
-
-init_can_500 # init can macro
-
-1003
-
-# check if it is rlink2
-exit_if_not F18A 6 4 FFFFFF 434150
-
-# MID 1 480x800
-2E230301F404080801E03C0000039D000A0005006E03200AD7022C006967
-
-wait 2
-# reload rlink2
-1101
-
-exit
diff --git a/pyren3/macro/rlink2/rlink2-MID2-screen.cmd b/pyren3/macro/rlink2/rlink2-MID2-screen.cmd
deleted file mode 100755
index 004952d..0000000
--- a/pyren3/macro/rlink2/rlink2-MID2-screen.cmd
+++ /dev/null
@@ -1,18 +0,0 @@
-# Repair script for rlink2 black screen
-$addr = 13
-
-init_can_500 # init can macro
-
-1003
-
-# check if it is rlink2
-exit_if_not F18A 6 4 FFFFFF 434150
-
-# MID 2 480x800
-2E2303020D02082301E03C000004200080000A007603200D05062C006967
-
-wait 2
-# reload rlink2
-1101
-
-exit
diff --git a/pyren3/macro/rlink2/rlink2-enable-AAandCP.cmd b/pyren3/macro/rlink2/rlink2-enable-AAandCP.cmd
deleted file mode 100755
index 69f7bd0..0000000
--- a/pyren3/macro/rlink2/rlink2-enable-AAandCP.cmd
+++ /dev/null
@@ -1,18 +0,0 @@
-# Enable AndroidAuto and CarPlay on R-Link2
-$addr = 13
-
-init_can_500 # init can macro
-
-1003
-
-# check if it is rlink2
-exit_if_not F18A 6 4 FFFFFF 434150
-
-set_bits 2130 10 5 60 60
-
-wait 2
-
-# reload rlink2
-1101
-
-exit
diff --git a/pyren3/macro/rlink2/rlink2-rotate-screen.cmd b/pyren3/macro/rlink2/rlink2-rotate-screen.cmd
deleted file mode 100755
index 64489b6..0000000
--- a/pyren3/macro/rlink2/rlink2-rotate-screen.cmd
+++ /dev/null
@@ -1,17 +0,0 @@
-# Rotate R-Link2 screen
-$addr = 13
-
-init_can_500 # init can macro
-
-1003
-
-exit_if_not F18A 6 4 FFFFFF 434150
-
-xor_bits 2130 10 4 10 10
-
-wait 2
-
-# reload rlink2
-1101
-
-exit
diff --git a/pyren3/macro/rlink2/rlink2_acoustic_3_and_7.cmd b/pyren3/macro/rlink2/rlink2_acoustic_3_and_7.cmd
deleted file mode 100755
index bd49e64..0000000
--- a/pyren3/macro/rlink2/rlink2_acoustic_3_and_7.cmd
+++ /dev/null
@@ -1,19 +0,0 @@
-# Phone_acoustic and SPVR for RadNav 3.3 and 7.0
-$addr = 13
-
-init_can_500 # init can macro
-
-delay 2
-
-1003
-
-# SPVR
-2E213105B8000122030000000000000002000000000000000042534420535345204261736963205369676E616C70726F63657373696E672044617461204352433A3058393931363830373720000000000000000000000000000000000200000000000A0D0A10000000000000000C0000000B0000000100000001000000010000000000000000000000D00000001E100D0A5353455F4D41494E5F436F6E66696700380000000606060606030403030303030303030303030304030303030403030303030303030303030303030303030303030306060303030603030303FB01000100401F8000000001000000000000000200000002000000020000000200000001000000000000000100000000000000010000000100000001000000030000000000000001000000010000000100000003000000000000000100000001000000000000000200000001000000010000000100000001000000020000000000000001000000000000000100000001000000020000000200000000000000010000000100000002000000010000000100A00F010000000100000000000000000001000000010000000100000002000000000A0D0AC5010000000A0D0A0F00000000000000040000000B000000010000000100000001000000000000000000000018000000030F0D0A5353455F4147435F436F6E666967000C000000050505050505050505050505480000A8FD00001CF39001E8032003E80374FF74FFC800C800000A0D0AB4090000000A0D0A1300000000000000010000000B00000001000000010000000100000000000000000000000C00000062100D0A5353455F414E414C5F4D6963436F6E66696700040000000505030314792879280000000000000000000A0D0A42010000000A0D0A1300000000000000010000000B00000001000000010000000100000000000000000000000C00000066100D0A5353455F414E414C5F526566436F6E66696700040000000505030314007D007D00000000FA000000000A0D0AF4010000000A0D0A0E000000000000000E0000000B000000010000000100000001000000000000000000000008000000D10E0D0A5353455F4E525F436F6E6669670004000000050505051818FC0000112B73FF000A0D0AC2020000000A0D0A1000000000000000010000000B00000001000000010000000100000000000000000000001E000000900F0D0A5353455F4E525F4E66436F6E666967000F0000000505050505050505050505050505055A18FCF4011405D4FE00000000000001000000000064000000881C16FD30F8000A0D0A38070000000A0D0A1500000000000000000000000200000001000000010000001C000000000000000000000070000000DA110D0A5353455F524543565F46696C746572466C6F617400000000400000D0410000A040D36A783F378EECBFF3C6613F861BECBF6A175B3FAB78833F7A53E1BF11AA683F7A53E1BF899B6F3F48C37D3F0343C6BF77DC6C3F0343C6BFBE9F6A3FE4DA843F4A43CDBE1843393F4A43CDBE23F9423FF6EE8B3F4017DD3E50195F3EDECB053F1591613E000A0D0A22310000000A0D0A1300000000000000040000000B00000001000000010000000100000000000000000000001800000037100D0A5353455F524543565F414743436F6E666967000C0000000505050505050505050505054800000000000000005802E8032003E80374FF74FFC800C800000A0D0AC9060000000A0D0A1100000000000000020000000B000000010000000100000001000000000000000000000018000000CE0F0D0A5353455F53594E54485F436F6E6669670007000000030303030305052001000000FF7F00000100000064000000F2060000A00FD007000A0D0A62040000000A0D0A1200000000000000000000000500000001000000010000000F00000000000000000000001E00000014100D0A5353455F53594E54485F45514E6F646573002800FA001AFC5E01C8006400F401C80018FC1C02C8002C01C4095802F001000A0D0ABF090000999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999
-
-# Phone acoustic
-2E211806F6000122030000000000000002000000000000000042534420535345204261736963205369676E616C70726F63657373696E672044617461204352433A3058464245463842463020000000000000000000000000000000000200000000000A0D0A10000000000000000C0000000B0000000100000001000000010000000000000000000000D00000001E100D0A5353455F4D41494E5F436F6E66696700380000000606060606030403030303030303030303030304030303030403030303030303030303030303030303030303030306060303030603030303FB01000100401F8000000001000000000000000200000002000000020000000200000002000000000000000200000000000000010000000100000001000000030000000000000001000000010000000100000003000000000000000100000001000000000000000200000001000000020000000100000001000000020000000000000001000000000000000100000001000000020000000200000000000000010000000100000002000000010000000100A00F010000000100000000000000000001000000010000000100000002000000000A0D0AC8010000000A0D0A0F00000000000000060000000B0000000100000001000000010000000000000000000000A20000008D0F0D0A5353455F4145435F436F6E66696700500000000505050505050505050505050505050505050505050505050505050505050505050505050305050505050505050505050505050505050505050505050505050505050505050505050505050505050505DE44000100BA03A6FD56FF30FF56FF62FF30FF82FF2B01B8FF930BCAFF2B0162FF0E07D00730FF30FF3EFF3EFF4DFF55029600B0FF2C014C1D2E01D10FE803E80300F430F8A1FF43D05A0000000E07D0075A02E80203F10600B4045A02B404D007B404E803D0075A02B4045A02B40445FDCD00CDFCCD00CD049AFFBC0244FD2AFF660006EEC0F1C0E030F890E817F835FF1A030000BA03D4FE64002E01D10F00003A00000A0D0A45450000000A0D0A0F00000000000000040000000B000000010000000100000001000000000000000000000018000000030F0D0A5353455F4147435F436F6E666967000C000000050505050505050505050505480000A8FD00008CF19001E8032003E80374FF74FFC800C800000A0D0A220A0000000A0D0A1300000000000000010000000B00000001000000010000000100000000000000000000000C00000062100D0A5353455F414E414C5F4D6963436F6E66696700040000000505030314792879280000000000000000000A0D0A42010000000A0D0A1300000000000000010000000B00000001000000010000000100000000000000000000000C00000066100D0A5353455F414E414C5F526566436F6E66696700040000000505030314007D007D74000000FA000000000A0D0A68020000000A0D0A0E000000000000000E0000000B000000010000000100000001000000000000000000000008000000D10E0D0A5353455F4E525F436F6E6669670004000000050505051850FB0000112B73FF000A0D0AF9020000000A0D0A1000000000000000010000000B00000001000000010000000100000000000000000000001E000000900F0D0A5353455F4E525F4E66436F6E666967000F0000000505050505050505050505050505055A50FBF4011405000000000000000001000000000064000000881C16FD30F8000A0D0A9D050000000A0D0A1500000000000000000000000200000001000000010000001C000000000000000000000070000000DA110D0A5353455F524543565F46696C746572466C6F617400000000400000D0410000A04071916F3F6C78B2BF1BBD0E3F02B7AEBF5FD1053FFCFB903FB56CDDBF6153433FB56CDDBF8C4B653F2F8B8D3F349DC5BFB01E473F349DC5BF0D35623F779D613F37AA3FBF986B393F37AA3FBFFF081B3FF12EC73FA66429BF444FA23EAA25223D72F92F3E000A0D0A2B2F0000000A0D0A1300000000000000040000000B00000001000000010000000100000000000000000000001800000037100D0A5353455F524543565F414743436F6E666967000C000000050505050505050505050505485802A8FD000000005802E8032003E80374FF74FFC800C800000A0D0AC8080000000A0D0A1100000000000000020000000B000000010000000100000001000000000000000000000018000000CE0F0D0A5353455F53594E54485F436F6E6669670007000000030303030305052001000000FF7F00000100000064000000F2060000A00FD007000A0D0A62040000000A0D0A1200000000000000000000000500000001000000010000000F00000000000000000000001E00000014100D0A5353455F53594E54485F45514E6F646573002800FA0018FC5E01C8006600F401C80018FC1C02C8002D01C4095802F801000A0D0AC8090000999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999
-
-# reload rlink2
-1101
-
-exit
\ No newline at end of file
diff --git a/pyren3/macro/rlink2/rlink2_acoustic_8.cmd b/pyren3/macro/rlink2/rlink2_acoustic_8.cmd
deleted file mode 100755
index 734d0a9..0000000
--- a/pyren3/macro/rlink2/rlink2_acoustic_8.cmd
+++ /dev/null
@@ -1,19 +0,0 @@
-# Phone_acoustic and SPVR for RadNav 8.0
-$addr = 13
-
-init_can_500 # init can macro
-
-delay 2
-
-1003
-
-# SPVR
-2E213109A1000122030000000000000002000000000000000042534420535345204261736963205369676E616C70726F63657373696E672044617461204352433A3058444632393036354320000000000000000000000000000000000200000000000A0D0A1000000000000000110000000B0000000100000001000000010000000000000000000000F000000043100D0A5353455F4D41494E5F436F6E6669670040000000060606060603040303030303030303030303030403030303040303030303030303030303030303030303030303030606030303060303030303030303030303031B01000100401F8000000002000000000000000200000002000000010000000200000002000000000000000200000000000000010000000100000001000000000000000000000001000000010000000100000000000000000000000100000001000000000000000300000001000000010000000100000001000000020000000000000001000000000000000100000001000000020000000100000000000000010000000100000002000000010000000100740E0100000001000000000000000000010000000100000001000000020000000100000001000000010000000100000000000000010000000100000001000000000A0D0A9B010000000A0D0A1B00000000000000010000000B00000001000000010000000100000000000000000000000C000000CC130D0A5353455F4D41494E5F436F6E66696756657273696F6E496E666F00030000000303030C030000001300000000000000000A0D0A16000000000A0D0A1800000000000000010000000B00000001000000010000000100000000000000000000001A0000008A120D0A5353455F4145435F4E6F6E4C696E4F7074436F6E666967000D000000050505050505050505050505054E000065F0A00F8AFA00000300E51E400164005425FA00A1FF3200000A0D0A78080000000A0D0A0F00000000000000080000000B0000000100000001000000010000000000000000000000B20000009F0F0D0A5353455F4145435F436F6E6669670058000000050505050505050505050505050505050505050505050505050505050505050505050505030505050505050505050505050505050505050505050505050505050505050505050505050505050505050505050505050505050E340001009001A6FD56FF30FF56FF62FF30FF82FF2B01B8FF930BCAFF2B0162FF0E07D00730FF30FF3EFF3EFF4DFF550296004CFF2C014C1D2E01D10FE803E80300F430F8A1FF43D05A0000000E07D0075A02E80203F10600B4045A02B404D007B404E803D0075A02B4042D015A0245FDCD00CDFCCD00CD049AFFBC0244FD2AFF660006EEC0F1C0E030F890E817F835FF1A030000BA03D4FE64002E01D10F00006C0064190083D4FE000000000000580238FF000A0D0AB0480000000A0D0A1900000000000000010000000B000000010000000100000001000000000000000000000010000000E3120D0A5353455F4145435F526F6F6D4368616E6765436F6E66696700070000000305050505050528030000004B0020032C01480D46003200000A0D0A6B010000000A0D0A0F00000000000000050000000B00000001000000010000000100000000000000000000001A000000060F0D0A5353455F4147435F436F6E666967000D000000050505050505050505050505054E0000A8FD000068F75802E8032003E80374FF74FFC800C8004600000A0D0A130A0000000A0D0A1300000000000000010000000B00000001000000010000000100000000000000000000000C00000062100D0A5353455F414E414C5F4D6963436F6E666967000400000005050303146A2D6A2D0000000028000000000A0D0A56010000000A0D0A1300000000000000010000000B00000001000000010000000100000000000000000000000C00000066100D0A5353455F414E414C5F526566436F6E66696700040000000505030314007D007DA3000000C8000000000A0D0A65020000000A0D0A1500000000000000030000000B00000001000000010000000100000000000000000000001800000077110D0A5353455F4642465F447269766572436F6E66696700090000000505030303060505053100000000C8000000F4010000960000003A00E8034100FFFF000A0D0AB7050000000A0D0A0E000000000000000F0000000B000000010000000100000001000000000000000000000008000000D20E0D0A5353455F4E525F436F6E6669670004000000050505051888FA7A00C70B73FF000A0D0A40040000000A0D0A1100000000000000030000000B00000001000000010000000100000000000000000000001C00000004100D0A5353455F4E525F526273436F6E666967000E0000000505050505050505050505050505540000FFFF06FFCEFF0000A8FD9808B80B1400D0073200FA004700E803000A0D0A210B0000000A0D0A1000000000000000030000000B000000010000000100000001000000000000000000000024000000980F0D0A5353455F4E525F4E66436F6E66696700120000000505050505050505050505050505050505056C18FCF4011405D4FE00000000000001000100FF7F000064000000881C16FD30F800000000000A0D0AB7080000000A0D0A1000000000000000040000000B00000001000000010000000100000000000000000000001A0000006B0F0D0A5353455F524543565F436F6E666967000A000000060506060404060305053C307501000A000200C8000000983A0000000064000000007D0000000A0D0A2D030000000A0D0A1100000000000000000000000500000001000000010000000F00000000000000000000001E000000AD0F0D0A5353455F524543565F45514E6F646573005600FFFFACFC220296001502210396003AFFAB062002F0009F09007DC800000A0D0A700A0000000A0D0A1300000000000000050000000B00000001000000010000000100000000000000000000001A0000003A100D0A5353455F524543565F414743436F6E666967000D000000050505050505050505050505054E5802A8FD0000ECFA5802E8032003E80374FF74FFC800C8004600000A0D0AF40A0000000A0D0A1100000000000000030000000B00000001000000010000000100000000000000000000001C000000D30F0D0A5353455F53594E54485F436F6E66696700090000000303030303050505052C01000000307500000100000064000000F2060000B80BE8032C01D4FE000A0D0AB0050000000A0D0A1200000000000000000000000500000001000000010000000F00000000000000000000001E00000014100D0A5353455F53594E54485F45514E6F646573002800FA001BFC5E01C8006500F401C8001AFC1C02C8002701C4095802F501000A0D0AC3090000999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999
-
-# Phone acoustic
-2E21180A03000122030000000000000002000000000000000042534420535345204261736963205369676E616C70726F63657373696E672044617461204352433A3058443635344246354220000000000000000000000000000000000200000000000A0D0A1000000000000000110000000B0000000100000001000000010000000000000000000000F000000043100D0A5353455F4D41494E5F436F6E6669670040000000060606060603040303030303030303030303030403030303040303030303030303030303030303030303030303030606030303060303030303030303030303031B01000100401F8000000001000000000000000200000002000000020000000200000002000000000000000200000000000000010000000100000001000000000000000000000001000000010000000100000000000000000000000100000001000000000000000300000001000000020000000100000001000000020000000000000001000000000000000100000001000000020000000100000000000000010000000100000002000000010000000100740E0100000001000000000000000000010000000100000001000000020000000100000001000000010000000100000000000000010000000100000001000000000A0D0A9C010000000A0D0A1B00000000000000010000000B00000001000000010000000100000000000000000000000C000000CC130D0A5353455F4D41494E5F436F6E66696756657273696F6E496E666F00030000000303030C030000001300000000000000000A0D0A16000000000A0D0A1800000000000000010000000B00000001000000010000000100000000000000000000001A0000008A120D0A5353455F4145435F4E6F6E4C696E4F7074436F6E666967000D000000050505050505050505050505054E000065F0A00F8AFA00000300E51E400164005425FA00A1FF3200000A0D0A78080000000A0D0A0F00000000000000080000000B0000000100000001000000010000000000000000000000B20000009F0F0D0A5353455F4145435F436F6E6669670058000000050505050505050505050505050505050505050505050505050505050505050505050505030505050505050505050505050505050505050505050505050505050505050505050505050505050505050505050505050505050E340001009001A6FD56FF30FF56FF62FF30FF82FF2B01B8FF930BCAFF2B0162FF0E07D00730FF30FF3EFF3EFF4DFF550296004CFF2C014C1D2E01D10FE803E80300F430F8A1FF43D05A0000000E07D0075A02E80203F10600B4045A02B404D007B404E803D0075A02B4042D015A0245FDCD00CDFCCD00CD049AFFBC0244FD2AFF660006EEC0F1C0E030F890E817F835FF1A030000BA03D4FE64002E01D10F00006C0064190083D4FE000000000000580238FF000A0D0AB0480000000A0D0A1900000000000000010000000B000000010000000100000001000000000000000000000010000000E3120D0A5353455F4145435F526F6F6D4368616E6765436F6E66696700070000000305050505050528030000004B0020032C01480D46003200000A0D0A6B010000000A0D0A0F00000000000000050000000B00000001000000010000000100000000000000000000001A000000060F0D0A5353455F4147435F436F6E666967000D000000050505050505050505050505054E0000A8FD00008CF19001E8032003E80374FF74FFC800C8004600000A0D0A680A0000000A0D0A1300000000000000010000000B00000001000000010000000100000000000000000000000C00000062100D0A5353455F414E414C5F4D6963436F6E666967000400000005050303146A2D6A2D0000000028000000000A0D0A56010000000A0D0A1300000000000000010000000B00000001000000010000000100000000000000000000000C00000066100D0A5353455F414E414C5F526566436F6E66696700040000000505030314007D007DA3000000C8000000000A0D0A65020000000A0D0A1500000000000000030000000B00000001000000010000000100000000000000000000001800000077110D0A5353455F4642465F447269766572436F6E66696700090000000505030303060505053100000000C8000000F4010000960000003A00E8034100FFFF000A0D0AB7050000000A0D0A0E000000000000000F0000000B000000010000000100000001000000000000000000000008000000D20E0D0A5353455F4E525F436F6E6669670004000000050505051888FA0000112B73FF000A0D0A30030000000A0D0A1000000000000000010000000B00000001000000010000000100000000000000000000000E0000007A0F0D0A5353455F4E525F4866436F6E6669670007000000050505050505052A3C0000000000710253070D036400000A0D0A7D010000000A0D0A1100000000000000030000000B00000001000000010000000100000000000000000000001C00000004100D0A5353455F4E525F526273436F6E666967000E0000000505050505050505050505050505543200FFFF06FFCEFF0100A8FD9808B80B1400D0073200FA004700E803000A0D0A540B0000000A0D0A1000000000000000030000000B000000010000000100000001000000000000000000000024000000980F0D0A5353455F4E525F4E66436F6E66696700120000000505050505050505050505050505050505056C50FBF4011405000000000000000000000100FF7F000064000000881C16FD30F800000000000A0D0A1B070000000A0D0A1000000000000000040000000B00000001000000010000000100000000000000000000001A0000006B0F0D0A5353455F524543565F436F6E666967000A000000060506060404060305053C307501000A000200C8000000983A0000000064000000007D0000000A0D0A2D030000000A0D0A1100000000000000000000000500000001000000010000000F00000000000000000000001E000000AD0F0D0A5353455F524543565F45514E6F646573005600FFFFAEFC2202960010022103960036FFAB062002F0009F09007DC800000A0D0A690A0000000A0D0A1300000000000000050000000B00000001000000010000000100000000000000000000001A0000003A100D0A5353455F524543565F414743436F6E666967000D000000050505050505050505050505054E5802A8FD0000ECFA5802E8032003E80374FF74FFC800C8004600000A0D0AF40A0000000A0D0A1100000000000000030000000B00000001000000010000000100000000000000000000001C000000D30F0D0A5353455F53594E54485F436F6E66696700090000000303030303050505052C01000000307500000100000064000000F2060000B80BE8032C01D4FE000A0D0AB0050000000A0D0A1200000000000000000000000500000001000000010000000F00000000000000000000001E00000014100D0A5353455F53594E54485F45514E6F646573002800FA001AFC5E01C8006000F401C80014FC1C02C8002E01C4095802F801000A0D0AC109000099999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999
-
-# reload rlink2
-1101
-
-exit
\ No newline at end of file
diff --git a/pyren3/macro/terminal_7A.cmd b/pyren3/macro/terminal_7A.cmd
deleted file mode 100755
index a00a380..0000000
--- a/pyren3/macro/terminal_7A.cmd
+++ /dev/null
@@ -1,7 +0,0 @@
-
-# terminal
-$addr = 7A
-
-init_can_500 # init can macro
-
-session 10C0
diff --git a/pyren3/mod_db_manager.py b/pyren3/mod_db_manager.py
index c911532..bcd19b9 100644
--- a/pyren3/mod_db_manager.py
+++ b/pyren3/mod_db_manager.py
@@ -11,21 +11,14 @@ db_dir_list = [
".",
".."
]
-android_dir_list = [
- "/mnt/sdcard/pyren"
-]
def find_DBs():
global db_dir_list
- global android_dir_list
clip_found = False
ddt_found = False
- if mod_globals.os == 'android':
- db_dir_list = db_dir_list + android_dir_list
-
for clip_dir in db_dir_list:
if os.path.exists(os.path.join(clip_dir, 'Vehicles')) and \
os.path.exists(os.path.join(clip_dir, 'Location')) and \
@@ -42,13 +35,6 @@ def find_DBs():
clip_found = True
break
- if mod_globals.os == 'android':
- if not clip_found:
- print("ERROR: CLIP DB not found")
- exit()
- else:
- return
-
for ddt_dir in db_dir_list:
if os.path.exists(os.path.join(ddt_dir, 'DDT2000data', 'ecus')):
mod_globals.ddt_arc = ""
@@ -71,8 +57,7 @@ def find_DBs():
print('CLIP DB :',mod_globals.cliproot)
if ddt_found:
print('DDT DB :',mod_globals.ddtroot)
- if mod_globals.os != 'android':
- mod_globals.opt_ddt = True
+ mod_globals.opt_ddt = True
#check cache version
verfilename = "./cache/version3.txt"
@@ -144,8 +129,7 @@ def get_file_from_clip( filename ):
else:
mode = 'r'
- if (mod_globals.os == 'android'
- or mod_globals.clip_arc != ''):
+ if mod_globals.clip_arc != '':
mode = 'r'
if mod_globals.clip_arc=='':
diff --git a/pyren3/mod_ddt.py b/pyren3/mod_ddt.py
index 312aafb..786d1c5 100755
--- a/pyren3/mod_ddt.py
+++ b/pyren3/mod_ddt.py
@@ -56,29 +56,14 @@ if mod_globals.os == 'nt':
except ImportError:
pip.main(['install', 'pyserial'])
-else:
- # let's try android
- try:
- import androidhelper as android
-
- mod_globals.os = 'android'
- except:
- try:
- import android
-
- mod_globals.os = 'android'
- except:
- pass
-
-if mod_globals.os != 'android':
- try:
- import serial
- from serial.tools import list_ports
- # import ply
- except ImportError:
- print("\n\n\n\tPleas install additional modules")
- print("\t\t>sudo easy_install pyserial")
- sys.exit()
+try:
+ import serial
+ from serial.tools import list_ports
+ # import ply
+except ImportError:
+ print("\n\n\n\tPleas install additional modules")
+ print("\t\t>sudo easy_install pyserial")
+ sys.exit()
from mod_elm import ELM
from mod_optfile import *
@@ -247,7 +232,7 @@ def optParser():
options = parser.parse_args()
- if not options.port and mod_globals.os != 'android':
+ if not options.port:
parser.print_help()
iterator = sorted(list(list_ports.comports()))
print("")
diff --git a/pyren3/mod_ddt_ecu.py b/pyren3/mod_ddt_ecu.py
index f4e02a8..5e0350a 100644
--- a/pyren3/mod_ddt_ecu.py
+++ b/pyren3/mod_ddt_ecu.py
@@ -27,16 +27,15 @@ from mod_elm import AllowedList
os.chdir(os.path.dirname(os.path.realpath(sys.argv[0])))
import mod_globals
-if mod_globals.os != 'android':
- import mod_ddt_screen
- try:
- # Python2
- import tkinter as tk
- import tkinter.ttk
- except ImportError:
- # Python3
- import tkinter as tk
- import tkinter.ttk as ttk
+import mod_ddt_screen
+try:
+ # Python2
+ import tkinter as tk
+ import tkinter.ttk
+except ImportError:
+ # Python3
+ import tkinter as tk
+ import tkinter.ttk as ttk
eculist = None
diff --git a/pyren3/mod_ddt_utils.py b/pyren3/mod_ddt_utils.py
index 20937ee..87181f2 100755
--- a/pyren3/mod_ddt_utils.py
+++ b/pyren3/mod_ddt_utils.py
@@ -8,8 +8,7 @@ import mod_db_manager
from operator import itemgetter
from copy import deepcopy
-if mod_globals.os != 'android':
- import serial
+import serial
try:
import pickle as pickle
diff --git a/pyren3/mod_ecu.py b/pyren3/mod_ecu.py
index e52d812..97cab45 100755
--- a/pyren3/mod_ecu.py
+++ b/pyren3/mod_ecu.py
@@ -1289,4 +1289,4 @@ def find_real_ecuid( eid ):
eid = eid.upper().replace('FG','')
eid = eid.upper().replace('.XML','')
- return eid, fastinit, slowinit, protocol, candst, startDiagReq
+ return eid, fastinit, slowinit, protocol, candst, startDiagReq
\ No newline at end of file
diff --git a/pyren3/mod_ecu_default.py b/pyren3/mod_ecu_default.py
index b3f0763..e16ab0c 100644
--- a/pyren3/mod_ecu_default.py
+++ b/pyren3/mod_ecu_default.py
@@ -112,10 +112,7 @@ def get_default_std_a( df, mn, se, elm, calc, getDTCmnemo ):
interpretation = ''
description = df[dtc].label
- if mod_globals.os=='android':
- defstr = "%-6s(DTC%-6s) %-41s %-6s %-10s"%(df[dtc].agcdRef,dtc+status,description,interpretation,isAlive)
- else:
- defstr = "%-6s(DTC%-6s) %-50s %-6s %-10s"%(df[dtc].agcdRef,dtc+status,description,interpretation,isAlive)
+ defstr = "%-6s(DTC%-6s) %-50s %-6s %-10s"%(df[dtc].agcdRef,dtc+status,description,interpretation,isAlive)
hlpstr = ''
if len(df[dtc].helps):
@@ -225,10 +222,7 @@ def get_default_std_b( df, mn, se, elm, calc, getDTCmnemo ):
description = df[dtc].label
- if mod_globals.os=='android':
- defstr = "DTC%-6s (%s) %-41s %-6s %-10s"%(dtc+dtcType,df[dtc].agcdRef,description,interpretation,isAlive)
- else:
- defstr = "DTC%-6s (%s) %-50s %-6s %-10s"%(dtc+dtcType,df[dtc].agcdRef,description,interpretation,isAlive)
+ defstr = "DTC%-6s (%s) %-50s %-6s %-10s"%(dtc+dtcType,df[dtc].agcdRef,description,interpretation,isAlive)
stBitsDef = ['warningIndicatorRequested',
'testNotCompletedThisOperationCycle',
@@ -333,10 +327,7 @@ def get_default_failflag( df, mn, se, elm, calc ):
interpretation = ""
description = df[dtc].label
- if mod_globals.os=='android':
- defstr = "%-6s %-41s %-6s %-10s"%(df[dtc].agcdRef,description,interpretation,isAlive)
- else:
- defstr = "%-6s %-50s %-6s %-10s"%(df[dtc].agcdRef,description,interpretation,isAlive)
+ defstr = "%-6s %-50s %-6s %-10s"%(df[dtc].agcdRef,description,interpretation,isAlive)
hlpstr = ''
if len(df[dtc].helps):
diff --git a/pyren3/mod_ecu_identification.py b/pyren3/mod_ecu_identification.py
index b91bd4d..c11e02c 100755
--- a/pyren3/mod_ecu_identification.py
+++ b/pyren3/mod_ecu_identification.py
@@ -20,10 +20,7 @@ def get_identification( id, mn, se, elm, calc, raw = False ):
if id.type=='CSTRING' and type(id.value) is str:
id.value = id.value #.decode('ascii', 'ignore')
######
- if mod_globals.os=='android':
- return "%-6s %-40s %-20s"%(id.codeMR,id.label,id.value), id.helps, id.value
- else:
- return "%-6s %-50s %-20s"%(id.codeMR,id.label,id.value), id.helps, id.value
+ return "%-6s %-50s %-20s"%(id.codeMR,id.label,id.value), id.helps, id.value
class ecu_identification:
diff --git a/pyren3/mod_ecu_parameter.py b/pyren3/mod_ecu_parameter.py
index e89e9ca..a8f0477 100755
--- a/pyren3/mod_ecu_parameter.py
+++ b/pyren3/mod_ecu_parameter.py
@@ -42,10 +42,7 @@ def get_parameter( pr, mn, se, elm, calc, dataids = {} ):
tmpmin = ''
tmpmax = ''
- if mod_globals.os=='android':
- return "%-6s %-41s %8s %-5s"%(pr.codeMR,pr.label,pr.value,pr.unit), pr.helps, csv_data
- else:
- return "%-6s %-50s %5s %10s %-10s %-5s"%(pr.codeMR,pr.label,tmpmin,pr.value,pr.unit,tmpmax), pr.helps, csv_data
+ return "%-6s %-50s %5s %10s %-10s %-5s"%(pr.codeMR,pr.label,tmpmin,pr.value,pr.unit,tmpmax), pr.helps, csv_data
class ecu_parameter:
diff --git a/pyren3/mod_ecu_state.py b/pyren3/mod_ecu_state.py
index 9cdd38d..6044dd1 100644
--- a/pyren3/mod_ecu_state.py
+++ b/pyren3/mod_ecu_state.py
@@ -28,12 +28,8 @@ def get_state( st, mn, se, elm, calc, dataids = {} ):
else:
csv_val = str(st.value)
- if mod_globals.os=='android':
- st.value = " "*(8-len(st.value)//2) + str(st.value)
- return "%-6s %-41s %-16s"%(st.codeMR,st.label,st.value), st.helps, csv_val
- else:
- st.value = " "*(16-len(st.value)//2) + str(st.value)
- return "%-6s %-50s %-20s"%(st.codeMR,st.label,st.value), st.helps, csv_val
+ st.value = " "*(16-len(st.value)//2) + str(st.value)
+ return "%-6s %-50s %-20s"%(st.codeMR,st.label,st.value), st.helps, csv_val
class ecu_state:
diff --git a/pyren3/mod_elm.py b/pyren3/mod_elm.py
index 348d795..ce737b7 100644
--- a/pyren3/mod_elm.py
+++ b/pyren3/mod_elm.py
@@ -14,21 +14,8 @@ import socket
from datetime import datetime
from collections import OrderedDict
-try:
- import androidhelper as android
-
- mod_globals.os = 'android'
-except:
- try:
- import android
-
- mod_globals.os = 'android'
- except:
- pass
-
-if mod_globals.os != 'android':
- import serial # sudo easy_install pyserial
- from serial.tools import list_ports
+import serial # sudo easy_install pyserial
+from serial.tools import list_ports
# List of commands which may require to open another Developer session (option --dev)
DevList = ['27', '28', '2E', '30', '31', '32', '34', '35', '36', '37', '3B', '3D']
@@ -176,7 +163,7 @@ class Port:
upPortName = upPortName.replace(':','').replace('.','')
MAC = ':'.join (a + b for a, b in zip (upPortName[::2], upPortName[1::2]))
- if mod_globals.os != 'android' and MAC:
+ if MAC:
try:
self.macaddr = portName
self.channel = 1
@@ -203,30 +190,6 @@ class Port:
print(" \n\nERROR: Can't connect to WiFi ELM\n\n")
mod_globals.opt_demo = True
sys.exit()
- elif mod_globals.os == 'android' and ( portName == 'bt' or MAC != None ):
- self.portType = 2
- self.droid = android.Android ()
- if self.droid:
- print('SL4A loaded')
- print( 'BT is enabled:', self.droid.toggleBluetoothState (True).result)
- print( 'BT discovery canceled:', self.droid.bluetoothDiscoveryCancel().result)
- retry = 0
- while 1:
- time.sleep(1)
- retry = retry + 1
- try:
- if MAC == None:
- self.btcid = self.droid.bluetoothConnect ('00001101-0000-1000-8000-00805F9B34FB').result
- else:
- self.btcid = self.droid.bluetoothConnect (uuid='00001101-0000-1000-8000-00805F9B34FB', address=MAC).result
- except:
- pass
- print( 'Try ',retry, ":", self.btcid )
- if self.btcid != None and len(self.btcid) > 10: #uuid length greater then 10
- break
- if retry > 5:
- print( " \n\nERROR: Can't connect to BT adapter" )
- exit()
else:
self.portName = portName
self.portType = 0
diff --git a/pyren3/mod_scan_ecus.py b/pyren3/mod_scan_ecus.py
index c3bf18b..ffaf9e5 100755
--- a/pyren3/mod_scan_ecus.py
+++ b/pyren3/mod_scan_ecus.py
@@ -274,49 +274,29 @@ class ScanEcus:
listecu = []
- if mod_globals.os == 'android':
- if mod_globals.opt_scan:
- print(pyren_encode( "\n %-40s %s" % ("Name","Warn") ))
- else:
- print(pyren_encode( "\n %-40s %s" % ("Name","Type") ))
-
- for row in self.detectedEcus:
- if families[row['idf']] in list(mod_globals.language_dict.keys()):
- fmlyn = mod_globals.language_dict[families[row['idf']]]
- if mod_globals.opt_scan:
- line = "%-40s %s" % (fmlyn,row['rerr'])
- else:
- line = "%-40s %s" % (fmlyn,row['stdType'])
- else:
- if mod_globals.opt_scan:
- line = "%-40s %s" % (row['doc'].strip(),row['rerr'])
- else:
- line = "%-40s %s" % (row['doc'].strip(),row['stdType'])
- listecu.append( line )
+ if mod_globals.opt_scan:
+ print(pyren_encode( "\n %-7s %-6s %-5s %-40s %s" % ("Addr","Family","Index","Name","Warn") ))
else:
- if mod_globals.opt_scan:
- print(pyren_encode( "\n %-7s %-6s %-5s %-40s %s" % ("Addr","Family","Index","Name","Warn") ))
- else:
- print(pyren_encode( "\n %-7s %-6s %-5s %-40s %s" % ("Addr","Family","Index","Name","Type") ))
-
- for row in self.detectedEcus:
- if 'idf' not in list(row.keys()):
- row['idf'] = ''
- if row['dst'] not in list(m_elm.dnat.keys()):
- m_elm.dnat[row['dst']] = '000'
- m_elm.snat[row['dst']] = '000'
- if row['idf'] in list(families.keys()) and families[row['idf']] in list(mod_globals.language_dict.keys()):
- fmlyn = mod_globals.language_dict[families[row['idf']]]
- if mod_globals.opt_scan:
- line = "%-2s(%3s) %-6s %-5s %-40s %s" % (row['dst'], m_elm.dnat[row['dst']], row['idf'],row['ecuname'],fmlyn,row['rerr'])
- else:
- line = "%-2s(%3s) %-6s %-5s %-40s %s" % (row['dst'], m_elm.dnat[row['dst']], row['idf'],row['ecuname'],fmlyn,row['stdType'])
+ print(pyren_encode( "\n %-7s %-6s %-5s %-40s %s" % ("Addr","Family","Index","Name","Type") ))
+
+ for row in self.detectedEcus:
+ if 'idf' not in list(row.keys()):
+ row['idf'] = ''
+ if row['dst'] not in list(m_elm.dnat.keys()):
+ m_elm.dnat[row['dst']] = '000'
+ m_elm.snat[row['dst']] = '000'
+ if row['idf'] in list(families.keys()) and families[row['idf']] in list(mod_globals.language_dict.keys()):
+ fmlyn = mod_globals.language_dict[families[row['idf']]]
+ if mod_globals.opt_scan:
+ line = "%-2s(%3s) %-6s %-5s %-40s %s" % (row['dst'], m_elm.dnat[row['dst']], row['idf'],row['ecuname'],fmlyn,row['rerr'])
else:
- if mod_globals.opt_scan:
- line = "%-2s(%3s) %-6s %-5s %-40s %s" % (row['dst'], m_elm.dnat[row['dst']], row['idf'],row['ecuname'],row['doc'].strip(),row['rerr'])
- else:
- line = "%-2s(%3s) %-6s %-5s %-40s %s" % (row['dst'], m_elm.dnat[row['dst']], row['idf'],row['ecuname'],row['doc'].strip(),row['stdType'])
- listecu.append( line )
+ line = "%-2s(%3s) %-6s %-5s %-40s %s" % (row['dst'], m_elm.dnat[row['dst']], row['idf'],row['ecuname'],fmlyn,row['stdType'])
+ else:
+ if mod_globals.opt_scan:
+ line = "%-2s(%3s) %-6s %-5s %-40s %s" % (row['dst'], m_elm.dnat[row['dst']], row['idf'],row['ecuname'],row['doc'].strip(),row['rerr'])
+ else:
+ line = "%-2s(%3s) %-6s %-5s %-40s %s" % (row['dst'], m_elm.dnat[row['dst']], row['idf'],row['ecuname'],row['doc'].strip(),row['stdType'])
+ listecu.append( line )
listecu.append( "Rescan errors" )
listecu.append( "" )
diff --git a/pyren3/mod_term.py b/pyren3/mod_term.py
index 0bf800e..34c58c6 100755
--- a/pyren3/mod_term.py
+++ b/pyren3/mod_term.py
@@ -45,28 +45,14 @@ if mod_globals.os == 'nt':
print("\n\n\n\t\t\tGive me access to the Internet for download modules\n\n\n")
sys.exit()
colorama.init()
-else:
- # let's try android
- try:
- import androidhelper as android
- mod_globals.os = 'android'
- except:
- try:
- import android
-
- mod_globals.os = 'android'
- except:
- pass
-
-if mod_globals.os != 'android':
- try:
- import serial
- from serial.tools import list_ports
- except ImportError:
- print("\n\n\n\tPleas install additional modules")
- print("\t\t>sudo easy_install pyserial")
- sys.exit()
+try:
+ import serial
+ from serial.tools import list_ports
+except ImportError:
+ print("\n\n\n\tPleas install additional modules")
+ print("\t\t>sudo easy_install pyserial")
+ sys.exit()
def init_macro():
global macro
@@ -260,7 +246,7 @@ def optParser():
options = parser.parse_args()
- if not options.port and mod_globals.os != 'android':
+ if not options.port:
parser.print_help()
iterator = sorted(list(list_ports.comports()))
print("")
@@ -285,73 +271,6 @@ def optParser():
debug_mode = options.dbg
class FileChooser():
- lay = '''
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-'''
droid = None
folderList = []
macroList = []
@@ -385,48 +304,27 @@ class FileChooser():
def choose(self):
try:
- import androidhelper as android
- mod_globals.os = 'android'
- except:
- try:
- import android
- mod_globals.os = 'android'
- except:
- pass
+ # Python2
+ import tkinter as tk
+ import tkinter.ttk
+ import tkinter.filedialog as filedialog
+ except ImportError:
+ # Python3
+ import tkinter as tk
+ import tkinter.ttk as ttk
+ import tkinter.filedialog as filedialog
- if mod_globals.os != 'android':
- try:
- # Python2
- import tkinter as tk
- import tkinter.ttk
- import tkinter.filedialog as filedialog
- except ImportError:
- # Python3
- import tkinter as tk
- import tkinter.ttk as ttk
- import tkinter.filedialog as filedialog
+ root = tk.Tk()
+ root.withdraw()
- root = tk.Tk()
- root.withdraw()
+ my_filetypes = [('command files', '.cmd')]
- my_filetypes = [('command files', '.cmd')]
+ fname = filedialog.askopenfilename(parent=root,
+ initialdir="./macro",
+ title="Please select a file:",
+ filetypes=my_filetypes)
- fname = filedialog.askopenfilename(parent=root,
- initialdir="./macro",
- title="Please select a file:",
- filetypes=my_filetypes)
-
- return fname
-
- else:
- try:
- self.droid = android.Android()
- self.droid.fullShow(self.lay)
- self.folderList.insert(0,'./macro/')
- self.droid.fullSetList("sp_folder", self.folderList)
- return self.eventloop()
- finally:
- self.droid.fullDismiss()
+ return fname
def play_macro(mname, elm):
global macro
diff --git a/pyren3/mod_utils.py b/pyren3/mod_utils.py
index d77977c..d0ecc6d 100644
--- a/pyren3/mod_utils.py
+++ b/pyren3/mod_utils.py
@@ -266,10 +266,7 @@ def pyren_decode( inp ):
# return inp.decode(sys.stdout.encoding, errors='replace')
def pyren_decode_i( inp ):
- if mod_globals.os == 'android':
- return inp.decode('utf-8', errors='ignore')
- else:
- return inp.decode(sys.stdout.encoding, errors='ignore')
+ return inp.decode(sys.stdout.encoding, errors='ignore')
def clearScreen():
# https://docs.microsoft.com/en-us/windows/console/console-virtual-terminal-sequences
diff --git a/pyren3/pyren3.py b/pyren3/pyren3.py
index e3d7594..d899e09 100755
--- a/pyren3/pyren3.py
+++ b/pyren3/pyren3.py
@@ -28,28 +28,17 @@ if mod_globals.os == 'nt':
print("\n\n\n\t\t\tGive me access to the Internet for download modules\n\n\n")
sys.exit()
colorama.init()
-else:
- # let's try android
- try:
- import androidhelper as android
- mod_globals.os = 'android'
- except:
- try:
- import android
- mod_globals.os = 'android'
- except:
- pass
-
-if mod_globals.os != 'android':
- try:
- import serial
- from serial.tools import list_ports
- #import ply
- except ImportError:
- print("\n\n\n\tPleas install additional modules")
- print("\t\t>sudo easy_install pyserial")
- #print "\t\t>sudo easy_install ply"
- sys.exit()
+
+
+try:
+ import serial
+ from serial.tools import list_ports
+ #import ply
+except ImportError:
+ print("\n\n\n\tPleas install additional modules")
+ print("\t\t>sudo easy_install pyserial")
+ #print "\t\t>sudo easy_install ply"
+ sys.exit()
import mod_utils
import mod_ddt_utils
@@ -222,7 +211,7 @@ def optParser():
options = parser.parse_args()
- if not options.port and mod_globals.os != 'android':
+ if not options.port:
parser.print_help()
iterator = sorted(list(list_ports.comports()))
print("")