backup progress py3 port

This commit is contained in:
tza 2024-04-29 16:11:54 +03:00
parent 5176af2409
commit 03b34aa750
9 changed files with 44 additions and 158 deletions

View File

@ -141,15 +141,13 @@ def get_file_from_clip( filename ):
or '/sg' in filename.lower() \
or '\\sg' in filename.lower()):
mode = 'rb'
enc = None
else:
mode = 'r'
if (mod_globals.os == 'android'
or mod_globals.clip_arc != ''):
mode = 'r'
enc = "utf-16le" if "Vehicles" in filename else "utf-8"
if mod_globals.clip_arc=='':
return open(os.path.join(mod_globals.cliproot, filename), mode)
return open(os.path.join(mod_globals.cliproot, filename), mode, encoding=enc)
else:
if filename.startswith('../'):
filename = filename[3:]

View File

@ -16,8 +16,6 @@ from mod_elm import ELM
from mod_elm import snat
from mod_elm import dnat
from mod_elm import AllowedList
if mod_globals.os != 'android':
from mod_ddt import DDT
import mod_globals
import mod_db_manager
@ -529,13 +527,13 @@ class ECU:
header = 'ECU : '+self.ecudata['ecuname']+ connectionData +self.ecudata['doc']+'\n'
header = header + "Screen : "+path
newScreen = newScreen + pyren_encode( header ) + '\n'
newScreen = newScreen + pyren_encode( header ).decode("utf-8") + '\n'
H = 25
pages = len(strlst)/H
for l in strlst[page*H:(page+1)*H]:
newScreen = newScreen + pyren_encode( l ) + ' \n'
newScreen = newScreen + pyren_encode( l ).decode("utf-8") + ' \n'
if not path[:3] == 'FAV':
if pages>0:
newScreen = newScreen+'\n'+"[Page "+str(page+1)+" from "+str(pages+1)+"] [N-next P-prev.] H for help or any other to exit"
@ -1260,25 +1258,6 @@ def find_real_ecuid( eid ):
def main():
try:
import androidhelper as android
mod_globals.os = 'android'
except:
try:
import android
mod_globals.os = 'android'
except:
pass
if mod_globals.os == 'android':
ecuid = input('Enetr ECU ID:')
lanid = input('Language [RU]:')
if len(lanid)<2: lanid = 'RU'
sys.argv.append(ecuid)
sys.argv.append(lanid)
sys.argv.append('TORQ')
if len(sys.argv)<3:
print("Usage: mod_ecu.py <ID> <language> [torq] [nochk]")
print("Example:")
@ -1332,13 +1311,6 @@ def main():
print("Loading mnemonics")
mm_class = ecu_mnemonics ( Mnemonics, mdoc, opt_file.dict, lang.dict )
#for p in Parameters.values():
# print p
#for s in States.values():
# print s
#for m in Mnemonics.values():
# print m
if len(sys.argv)==3:
print()
print("Defaults")
@ -1370,11 +1342,6 @@ def main():
for i in sorted(Commands.keys()):
print(pyren_encode( Commands[i].codeMR+"["+i+"] "+Commands[i].label ))
sys.exit(0)
if len(sys.argv)>3 and sys.argv[3].upper()!='TORQ':
sys.exit(0)
family = sys.argv[1][:2]
eindex = sys.argv[1][2:]
if len(candst)>1:
@ -1386,9 +1353,6 @@ def main():
ddd = '82'+F2A[family]+'F1'
filename = "PR_"+F2A[family]+"_"+eindex+"_"+sys.argv[2]+".csv"
if mod_globals.os=='android' and os.path.exists('/sdcard/.torque/extendedpids'):
filename = '/sdcard/.torque/extendedpids/'+filename
cf = open( filename, "w")
line = "%s,%s,%s,%s,%s,%s,%s,%s\n"%("name","ShortName","ModeAndPID","Equation","Min Value","Max Value","Units","Header")
@ -1494,49 +1458,7 @@ def main():
print(slow05init)
print()
# make profile for torque
profilename = str(int(time.time()))+'.tdv'
if mod_globals.os=='android' and os.path.exists('/sdcard/.torque/vehicles'):
profilename = '/sdcard/.torque/vehicles/'+str(int(time.time()))+'.tdv'
prn = open( profilename, "w")
prn.write( '#This is an ECU profile generated by pyren\n'.encode('utf-8') )
prn.write( 'fuelType=0\n'.encode('utf-8') )
prn.write( 'obdAdjustNew=1.0\n'.encode('utf-8') )
prn.write( 'lastMPG=0.0\n'.encode('utf-8') )
prn.write( 'tankCapacity=295.5\n'.encode('utf-8') )
prn.write( 'volumetricEfficiency=85.0\n'.encode('utf-8') )
prn.write( 'weight=1400.0\n'.encode('utf-8') )
prn.write( 'odoMeter=0.0\n'.encode('utf-8') )
prn.write( 'adapterName=OBDII [00\:00\:00\:00\:00\:0]\n'.encode('utf-8') )
prn.write( 'adapter=00\:00\:00\:00\:00\:00\n'.encode('utf-8') )
prn.write( 'boostAdjust=0.0\n'.encode('utf-8') )
prn.write( 'mpgAdjust=1.0\n'.encode('utf-8') )
prn.write( 'fuelCost=0.18000000715255737\n'.encode('utf-8') )
prn.write( 'ownProfile=false\n'.encode('utf-8') )
prn.write( 'displacement=1.6\n'.encode('utf-8') )
prn.write( 'tankUsed=147.75\n'.encode('utf-8') )
prn.write( 'lastMPGCount=0\n'.encode('utf-8') )
prn.write( 'maxRpm=7000\n'.encode('utf-8') )
prn.write( 'fuelDistance=0.0\n'.encode('utf-8') )
prn.write( 'fuelUsed=0.0\n'.encode('utf-8') )
prn.write( 'alternateHeader=true\n'.encode('utf-8') )
prn.write( ('name=PR_'+ecuid+'\n').encode('utf-8') )
if len(candst)>1:
prn.write( ('customInit='+can500init.replace('\\','\\\\')+'\n').encode('utf-8') )
prn.write( 'preferredProtocol=7\n'.encode('utf-8') )
elif len(fastinit)>1:
prn.write( ('customInit='+fast10init.replace('\\','\\\\')+'\n').encode('utf-8') )
prn.write( 'preferredProtocol=6\n'.encode('utf-8') )
else:
prn.write( ('customInit='+slow05init.replace('\\','\\\\')+'\n').encode('utf-8') )
prn.write( 'preferredProtocol=5\n'.encode('utf-8') )
prn.close()
print()
print("Torque profile:", profilename, "created")
print()
self.show_screens()
if __name__ == "__main__":
main()

View File

@ -28,7 +28,7 @@ def get_state( st, mn, se, elm, calc, dataids = {} ):
st.value = " "*(8-len(st.value)/2) + st.value
return "%-6s %-41s %-16s"%(st.codeMR,st.label,st.value), st.helps, csv_val
else:
st.value = " "*(16-len(st.value)/2) + st.value
st.value = " "*int(16-len(st.value)/2) + st.value.decode("utf-8")
return "%-6s %-50s %-20s"%(st.codeMR,st.label,st.value), st.helps, csv_val
class ecu_state:

View File

@ -210,7 +210,7 @@ class Port:
print("")
print("Available COM ports:")
for port, desc, hwid in iterator:
print("%-30s \n\tdesc: %s \n\thwid: %s" % (port, desc.decode ("windows-1251"), hwid))
print("%-30s \n\tdesc: %s \n\thwid: %s" % (port, desc, hwid))
print("")
mod_globals.opt_demo = True
exit (2)
@ -304,22 +304,25 @@ class Port:
byte = self.hdr.read(inInputBuffer)
else:
byte = self.hdr.read(1)
except:
except Exception as e:
print(e)
print('*' * 40)
print('* Connection to ELM was lost')
mod_globals.opt_demo = True
if byte:
print("READINGG", byte)
return byte
def write(self, data):
if type(data) is str:
data = data.encode("utf-8")
# dummy sync
self.rwLock = True
i = 0
while self.kaLock and i < 10:
time.sleep (0.02)
i = i + 1
print("WRITINGG", data)
try:
if self.portType == 1:
try:
@ -333,7 +336,8 @@ class Port:
return self.droid.bluetoothWrite (data)
else:
return self.hdr.write (data)
except:
except Exception as e:
print(e)
print('*' * 40)
print('* Connection to ELM was lost')
mod_globals.opt_demo = True
@ -381,15 +385,15 @@ class Port:
# search > string
tb = time.time () # start time
self.buff = ""
self.buff = b""
while True:
if not mod_globals.opt_demo:
byte = self.read ()
byte = self.read() or b""
else:
byte = '>'
byte = '>'.encode("ascii")
self.buff += byte
tc = time.time ()
if '>' in self.buff:
if '>'.encode("ascii") in self.buff:
mod_globals.opt_speed = s
print("\nStart COM speed: ", s)
self.hdr.timeout = self.portTimeout
@ -1227,12 +1231,12 @@ class ELM:
if cmd_len < 8: # single frame
# check L1 cache here
if isCommandInCache and int('0x' + self.l1_cache[command], 16) < 16:
raw_command.append (("%0.2X" % cmd_len) + command + self.l1_cache[command])
raw_command.append (("%0.2X" % int(cmd_len)) + command + self.l1_cache[command])
else:
raw_command.append (("%0.2X" % cmd_len) + command)
raw_command.append (("%0.2X" % int(cmd_len)) + command)
else:
# first frame
raw_command.append ("1" + ("%0.3X" % cmd_len)[-3:] + command[:12])
raw_command.append ("1" + ("%0.3X" % int(cmd_len))[-3:] + command[:12])
command = command[12:]
# consecutive frames
frame_number = 1
@ -1409,10 +1413,10 @@ class ELM:
raw_command = []
cmd_len = len(command) / 2
if cmd_len < 8: # single frame
raw_command.append(("%0.2X" % cmd_len) + command)
raw_command.append(("%0.2X" % int(cmd_len)) + command)
else:
# first frame
raw_command.append("1" + ("%0.3X" % cmd_len)[-3:] + command[:12])
raw_command.append("1" + ("%0.3X" % int(cmd_len))[-3:] + command[:12])
command = command[12:]
# consecutive frames
frame_number = 1
@ -1610,10 +1614,10 @@ class ELM:
raw_command = []
cmd_len = len (command) / 2
if cmd_len < 8: # single frame
raw_command.append (("%0.2X" % cmd_len) + command)
raw_command.append (("%0.2X" % int(cmd_len)) + command)
else:
# first frame
raw_command.append ("1" + ("%0.3X" % cmd_len)[-3:] + command[:12])
raw_command.append ("1" + ("%0.3X" % int(cmd_len))[-3:] + command[:12])
command = command[12:]
# consecutive frames
frame_number = 1

View File

@ -94,7 +94,7 @@ class optfile:
if progress and (i&0xff==0):
pr = (i+2-keyoff)*100/(tb-keyoff)
print('\r['+'X'*(pr/2)+' '*(50-pr/2)+'] '+str(int(pr))+'%', end=' ')
print('\r['+'X'*int(pr/2)+' '*int(50-pr/2)+'] '+str(int(pr))+'%', end=' ')
sys.stdout.flush()
lf.seek(i)

View File

@ -88,6 +88,7 @@ class ScanEcus:
#if model_n<86: continue
except ValueError:
pass
print(file)
DOMTree = xml.dom.minidom.parse(mod_db_manager.get_file_from_clip(file))
vh = DOMTree.documentElement
if vh.hasAttribute("defaultText"):
@ -169,7 +170,7 @@ class ScanEcus:
self.allecus[ecu]['pin1']==canH and
self.allecus[ecu]['pin2']==canL):
i = i+1
print('\r'+'\t\t\t\t'+'\rScanning:'+str(i)+'/'+str(len(self.allecus))+" Detected: "+str(len(self.detectedEcus)), end=' ')
print('\r'+'\t\t\t\t'+'\rScanning CAN:'+str(i)+'/'+str(len(self.allecus))+" Detected: "+str(len(self.detectedEcus)), end=' ')
sys.stdout.flush()
self.elm.set_can_addr( self.allecus[ecu]['dst'], self.allecus[ecu] )
@ -186,7 +187,7 @@ class ScanEcus:
self.allecus[ecu]['pin2']=='15'):
i = i+1
print('\r'+'\t\t\t\t'+'\rScanning:'+str(i)+'/'+str(len(self.allecus))+" Detected: "+str(len(self.detectedEcus)), end=' ')
print('\r'+'\t\t\t\t'+'\rScanning KWP:'+str(i)+'/'+str(len(self.allecus))+" Detected: "+str(len(self.detectedEcus)), end=' ')
sys.stdout.flush()
self.elm.set_iso_addr( self.allecus[ecu]['dst'], self.allecus[ecu] )
@ -989,7 +990,6 @@ def readECUIds( elm ):
return StartSession, DiagVersion, Supplier, Version, Soft, Std, VIN
def findTCOM( addr, cmd, rsp ):
ecuvhc = {}
vehicle = ''
@ -1047,6 +1047,7 @@ def findTCOM( addr, cmd, rsp ):
print(r, se.allecus[r]['doc'], se.allecus[r]['ids'], ecuvhc[r])
except:
print()
def generateSavedEcus( eculist, fileName ):
se = ScanEcus( 0 )
se.read_Uces_file( all = True )

View File

@ -157,7 +157,7 @@ def Choice(list, question ):
sys.exit()
if ch=='q': ch = 'Q'
if ch=='cmd': mod_globals.opt_cmd = True
if ch in list(d.keys()):
if ch in d.keys():
return [d[ch],ch]
def ChoiceLong(list, question, header = '' ):
@ -178,7 +178,7 @@ def ChoiceLong(list, question, header = '' ):
while( 1 ):
clearScreen()
# clearScreen()
#os.system('cls' if os.name == 'nt' else 'clear') # clear screen
#print chr(27)+"[2J"+chr(27)+"[;H", # clear ANSI screen (thanks colorama for windows)
@ -218,7 +218,7 @@ def ChoiceLong(list, question, header = '' ):
break
if ch=='cmd': mod_globals.opt_cmd = True
if ch in list(d.keys()):
if ch in d.keys():
return [d[ch],ch]
def ChoiceFromDict(dict, question, showId = True ):

View File

@ -1330,7 +1330,7 @@ class Production(object):
return len(self.prod)
def __bool__(self):
return 1
return True
def __getitem__(self, index):
return self.prod[index]
@ -1718,7 +1718,7 @@ class Grammar(object):
def undefined_symbols(self):
result = []
for p in self.Productions:
if not p:
if not p is None:
continue
for s in p.prod:

View File

@ -9,48 +9,6 @@ mod_globals.os = os.name
os.chdir(os.path.dirname(os.path.realpath(sys.argv[0])))
import pickle
if mod_globals.os == 'nt':
import pip
try:
import serial
except ImportError:
pip.main(['install','pyserial'])
try:
import colorama
except ImportError:
pip.main(['install','colorama'])
try:
import colorama
except ImportError:
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()
import mod_utils
import mod_ddt_utils
@ -60,6 +18,9 @@ from mod_ecu import ECU
from mod_optfile import *
from mod_utils import *
from serial.tools import list_ports
from os import getenv
def optParser():
'''Parsing of command line parameters. User should define at least com port name'''
@ -221,7 +182,7 @@ def optParser():
print("")
print("Available COM ports:")
for port, desc, hwid in iterator:
print("%-30s \n\tdesc: %s \n\thwid: %s" % (port,desc.decode("windows-1251"),hwid))
print("%-30s \n\tdesc: %s \n\thwid: %s" % (port,desc,hwid))
print("")
exit(2)
else:
@ -229,7 +190,7 @@ def optParser():
mod_globals.opt_ecuid = options.ecuid
mod_globals.opt_speed = int(options.speed)
mod_globals.opt_rate = int(options.rate)
mod_globals.opt_lang = options.lang
mod_globals.opt_lang = options.lang.strip()
mod_globals.opt_car = options.car
mod_globals.opt_log = options.logfile
mod_globals.opt_demo = options.demo