mirror of https://github.com/Desuuuu/klipper.git
palette2: Fix UART encoding
Raised from issue #5645, UTF-8 encoded symbols or other unexpected symbols on the UART raise an exception which causes klipper to stop. This change support UTF-8 encoded characters (from file names) as well as ignoring unexpected bytes. Signed-off-by: Clifford Roche <clifford.roche@gmail.com>
This commit is contained in:
parent
b1dcd35b7a
commit
ce27d35924
|
@ -544,13 +544,15 @@ class Palette2:
|
||||||
self.cmd_Disconnect()
|
self.cmd_Disconnect()
|
||||||
return self.reactor.NEVER
|
return self.reactor.NEVER
|
||||||
if len(raw_bytes):
|
if len(raw_bytes):
|
||||||
text_buffer = self.read_buffer + str(raw_bytes.decode())
|
new_buffer = str(raw_bytes.decode(encoding='UTF-8',
|
||||||
|
errors='ignore'))
|
||||||
|
text_buffer = self.read_buffer + new_buffer
|
||||||
while True:
|
while True:
|
||||||
i = text_buffer.find("\n")
|
i = text_buffer.find("\n")
|
||||||
if i >= 0:
|
if i >= 0:
|
||||||
line = text_buffer[0:i+1]
|
line = text_buffer[0:i + 1]
|
||||||
self.read_queue.put(line.strip())
|
self.read_queue.put(line.strip())
|
||||||
text_buffer = text_buffer[i+1:]
|
text_buffer = text_buffer[i + 1:]
|
||||||
else:
|
else:
|
||||||
break
|
break
|
||||||
self.read_buffer = text_buffer
|
self.read_buffer = text_buffer
|
||||||
|
@ -566,7 +568,7 @@ class Palette2:
|
||||||
|
|
||||||
heartbeat_strings = [COMMAND_HEARTBEAT, "Connection Okay"]
|
heartbeat_strings = [COMMAND_HEARTBEAT, "Connection Okay"]
|
||||||
if not any(x in text_line for x in heartbeat_strings):
|
if not any(x in text_line for x in heartbeat_strings):
|
||||||
logging.debug("%0.3f P2 -> : %s" %(eventtime, text_line))
|
logging.debug("%0.3f P2 -> : %s" % (eventtime, text_line))
|
||||||
|
|
||||||
# Received a heartbeat from the device
|
# Received a heartbeat from the device
|
||||||
if text_line == COMMAND_HEARTBEAT:
|
if text_line == COMMAND_HEARTBEAT:
|
||||||
|
@ -621,7 +623,7 @@ class Palette2:
|
||||||
idle_time = est_print_time - print_time
|
idle_time = est_print_time - print_time
|
||||||
if not lookahead_empty or idle_time < 0.5:
|
if not lookahead_empty or idle_time < 0.5:
|
||||||
return eventtime + \
|
return eventtime + \
|
||||||
max(0., min(1., print_time - est_print_time))
|
max(0., min(1., print_time - est_print_time))
|
||||||
|
|
||||||
extrude = abs(self.remaining_load_length)
|
extrude = abs(self.remaining_load_length)
|
||||||
extrude = min(50, extrude / 2)
|
extrude = min(50, extrude / 2)
|
||||||
|
@ -646,5 +648,6 @@ class Palette2:
|
||||||
status["ping"] = self.omega_pings[-1]
|
status["ping"] = self.omega_pings[-1]
|
||||||
return status
|
return status
|
||||||
|
|
||||||
|
|
||||||
def load_config(config):
|
def load_config(config):
|
||||||
return Palette2(config)
|
return Palette2(config)
|
||||||
|
|
Loading…
Reference in New Issue