|
@@ -3,6 +3,7 @@
|
|
|
|
|
|
from UM.Job import Job
|
|
|
from UM.Logger import Logger
|
|
|
+from plugins.USBPrinting.avr_isp import ispBase
|
|
|
|
|
|
from .avr_isp.stk500v2 import Stk500v2
|
|
|
|
|
@@ -14,12 +15,12 @@ from serial import Serial, SerialException
|
|
|
# It tries a pre-set list of baud rates. All these baud rates are validated by requesting the temperature a few times
|
|
|
# and checking if the results make sense. If getResult() is not None, it was able to find a correct baud rate.
|
|
|
class AutoDetectBaudJob(Job):
|
|
|
- def __init__(self, serial_port):
|
|
|
+ def __init__(self, serial_port: int) -> None:
|
|
|
super().__init__()
|
|
|
self._serial_port = serial_port
|
|
|
self._all_baud_rates = [115200, 250000, 230400, 57600, 38400, 19200, 9600]
|
|
|
|
|
|
- def run(self):
|
|
|
+ def run(self) -> None:
|
|
|
Logger.log("d", "Auto detect baud rate started.")
|
|
|
wait_response_timeouts = [3, 15, 30]
|
|
|
wait_bootloader_times = [1.5, 5, 15]
|
|
@@ -32,7 +33,7 @@ class AutoDetectBaudJob(Job):
|
|
|
try:
|
|
|
programmer.connect(self._serial_port)
|
|
|
serial = programmer.leaveISP()
|
|
|
- except:
|
|
|
+ except ispBase.IspError:
|
|
|
programmer.close()
|
|
|
|
|
|
for retry in range(tries):
|
|
@@ -58,7 +59,7 @@ class AutoDetectBaudJob(Job):
|
|
|
# We already have a serial connection, just change the baud rate.
|
|
|
try:
|
|
|
serial.baudrate = baud_rate
|
|
|
- except:
|
|
|
+ except ValueError:
|
|
|
continue
|
|
|
sleep(wait_bootloader) # Ensure that we are not talking to the boot loader. 1.5 seconds seems to be the magic number
|
|
|
successful_responses = 0
|
|
@@ -81,5 +82,5 @@ class AutoDetectBaudJob(Job):
|
|
|
return
|
|
|
|
|
|
serial.write(b"M105\n")
|
|
|
- sleep(15) # Give the printer some time to init and try again.
|
|
|
+ sleep(15) # Give the printer some time to init and try again.
|
|
|
self.setResult(None) # Unable to detect the correct baudrate.
|