From a74b84e8e2de3432a7d291a4ca655b22b9c1996f Mon Sep 17 00:00:00 2001 From: Lucio Rossi Date: Mon, 18 Nov 2024 18:16:07 +0100 Subject: [PATCH 1/2] fix: ALVIKDEV-108 UART read extremely slow on bytewise access --- arduino_alvik/arduino_alvik.py | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/arduino_alvik/arduino_alvik.py b/arduino_alvik/arduino_alvik.py index d83305a..4ec339e 100644 --- a/arduino_alvik/arduino_alvik.py +++ b/arduino_alvik/arduino_alvik.py @@ -272,8 +272,7 @@ def _flush_uart(): Empties the UART buffer :return: """ - while uart.any(): - uart.read(1) + uart.read(uart.any()) def _begin_update_thread(self): """ @@ -641,21 +640,22 @@ def _update(self, delay_=1): self.set_behaviour(2) if not ArduinoAlvik._update_thread_running: break - if self._read_message(): - self._parse_message() + self._read_message() sleep_ms(delay_) - def _read_message(self) -> bool: + def _read_message(self) -> None: """ Read a message from the uC :return: True if a message terminator was reached """ - while uart.any(): - b = uart.read(1)[0] - self._packeter.buffer.push(b) - if b == self._packeter.end_index and self._packeter.checkPayload(): - return True - return False + buf = bytearray(uart.any()) + uart.readinto(buf) + if len(buf): + uart.readinto(buf) + for b in buf: + self._packeter.buffer.push(b) + if b == self._packeter.end_index and self._packeter.checkPayload(): + self._parse_message() def _parse_message(self) -> int: """ From 6a69b1fdcd9f2927a61f2445e6bf95079f067596 Mon Sep 17 00:00:00 2001 From: Lucio Rossi Date: Tue, 19 Nov 2024 10:59:53 +0100 Subject: [PATCH 2/2] ver: 1.1.2 ready --- arduino_alvik/__init__.py | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/arduino_alvik/__init__.py b/arduino_alvik/__init__.py index a5353de..dbdfc6a 100644 --- a/arduino_alvik/__init__.py +++ b/arduino_alvik/__init__.py @@ -4,7 +4,7 @@ __author__ = "Lucio Rossi , Giovanni Bruno " __license__ = "MPL 2.0" -__version__ = "1.1.1" +__version__ = "1.1.2" __maintainer__ = "Lucio Rossi , Giovanni Bruno " __required_firmware_version__ = "1.1.0" diff --git a/package.json b/package.json index 52b08a2..134ac1b 100644 --- a/package.json +++ b/package.json @@ -13,5 +13,5 @@ ["github:arduino/ucPack-mpy", "0.1.7"], ["github:arduino/arduino-runtime-mpy", "0.4.0"] ], - "version": "1.1.1" + "version": "1.1.2" }