Change ELM UART baudrate

This commit is contained in:
Marianpol 2021-02-12 19:08:00 +01:00
parent 4932bb9e65
commit 1d0edfa360

View File

@ -202,8 +202,7 @@ class Port:
mod_globals.opt_demo = True mod_globals.opt_demo = True
exit (2) exit (2)
# print self.hdr.BAUDRATES # print self.hdr.BAUDRATES
if mod_globals.opt_speed == 38400 and mod_globals.opt_rate != mod_globals.opt_speed: self.check_elm ()
self.check_elm ()
#self.elm_at_KeepAlive () #self.elm_at_KeepAlive ()
@ -404,16 +403,19 @@ class Port:
print "Changing baud rate to:", boudrate, print "Changing baud rate to:", boudrate,
if boudrate == 38400: if mod_globals.opt_obdlink:
self.write ("at brd 68\r") self.write("ST SBR " + str(boudrate) + "\r")
elif boudrate == 57600: else:
self.write ("at brd 45\r") if boudrate == 38400:
elif boudrate == 115200: self.write ("at brd 68\r")
self.write ("at brd 23\r") elif boudrate == 57600:
elif boudrate == 230400: self.write ("at brd 45\r")
self.write ("at brd 11\r") elif boudrate == 115200:
elif boudrate == 500000: self.write ("at brd 23\r")
self.write ("at brd 8\r") elif boudrate == 230400:
self.write ("at brd 11\r")
elif boudrate == 500000:
self.write ("at brd 8\r")
# search OK # search OK
tb = time.time () # start time tb = time.time () # start time
@ -432,19 +434,10 @@ class Port:
break break
if (tc - tb) > 1: if (tc - tb) > 1:
print "ERROR - command not supported" print "ERROR - command not supported"
sys.exit () return
self.hdr.timeout = 1 self.hdr.timeout = 1
if boudrate == 38400: self.hdr.baudrate = boudrate
self.hdr.baudrate = 38400
elif boudrate == 57600:
self.hdr.baudrate = 57600
elif boudrate == 115200:
self.hdr.baudrate = 115200
elif boudrate == 230400:
self.hdr.baudrate = 230400
elif boudrate == 500000:
self.hdr.baudrate = 500000
# search ELM # search ELM
tb = time.time () # start time tb = time.time () # start time
@ -459,7 +452,7 @@ class Port:
continue continue
self.buff += byte self.buff += byte
tc = time.time () tc = time.time ()
if 'ELM' in self.buff: if 'ELM' or 'STN' in self.buff:
break break
if (tc - tb) > 1: if (tc - tb) > 1:
print "ERROR - rate not supported. Let's go back." print "ERROR - rate not supported. Let's go back."
@ -486,6 +479,7 @@ class Port:
self.buff += byte self.buff += byte
tc = time.time () tc = time.time ()
if '>' in self.buff: if '>' in self.buff:
mod_globals.opt_rate = mod_globals.opt_speed
break break
if (tc - tb) > 1: if (tc - tb) > 1:
print "ERROR - something went wrong. Let's back." print "ERROR - something went wrong. Let's back."
@ -588,7 +582,29 @@ class ELM:
self.lastCMDtime = 0 self.lastCMDtime = 0
self.ATCFC0 = mod_globals.opt_cfc0 self.ATCFC0 = mod_globals.opt_cfc0
if self.lf != 0:
tmstr = datetime.now ().strftime ("%x %H:%M:%S.%f")[:-3]
self.lf.write('#' * 60 + "\n#[" + tmstr + "] Check ELM type\n" + '#' * 60 + "\n")
self.lf.flush()
# check OBDLink
elm_rsp = self.cmd("STPR")
if '?' not in elm_rsp:
mod_globals.opt_obdlink = True
# check STN
elm_rsp = self.cmd("STP 53")
if '?' not in elm_rsp:
mod_globals.opt_stn = True
# Max out the UART speed for the fastest polling rate
if mod_globals.opt_csv:
if mod_globals.opt_obdlink:
self.port.soft_boudrate(2000000)
else:
self.port.soft_boudrate(230400)
def __del__(self): def __del__(self):
if not mod_globals.opt_demo: if not mod_globals.opt_demo:
print '*' * 40 print '*' * 40
@ -1156,7 +1172,7 @@ class ELM:
# deal with exceptions # deal with exceptions
# boudrate 38400 not enough to read full information about errors # boudrate 38400 not enough to read full information about errors
if mod_globals.opt_rate < 50000 and len (command) == 6 and command[:4] == '1902': if not mod_globals.opt_obdlink and len (command) == 6 and command[:4] == '1902':
command = '1902AF' command = '1902AF'
if command.upper()[:2] in ["AT","ST"] or self.currentprotocol != "can": if command.upper()[:2] in ["AT","ST"] or self.currentprotocol != "can":
@ -1830,22 +1846,13 @@ class ELM:
if self.lf != 0: if self.lf != 0:
tmstr = datetime.now ().strftime ("%x %H:%M:%S.%f")[:-3] tmstr = datetime.now ().strftime ("%x %H:%M:%S.%f")[:-3]
self.lf.write('#' * 60 + "\n#[" + tmstr + "] Init CAN\n" + '#' * 60 + "\n") self.lf.write('#' * 60 + "\n# Init CAN\n" + '#' * 60 + "\n")
self.lf.flush() self.lf.flush()
# reset ELM # reset ELM
elm_ver = self.cmd("at ws") elm_ver = self.cmd("at ws")
self.check_answer(elm_ver) self.check_answer(elm_ver)
# check OBDLink
elm_rsp = self.cmd("STPR")
if '?' not in elm_rsp:
mod_globals.opt_obdlink = True
# check STN
elm_rsp = self.cmd("STP 53")
if '?' not in elm_rsp:
mod_globals.opt_stn = True
self.check_answer(self.cmd("at e1")) self.check_answer(self.cmd("at e1"))
self.check_answer(self.cmd("at s0")) self.check_answer(self.cmd("at s0"))
self.check_answer(self.cmd("at h0")) self.check_answer(self.cmd("at h0"))