From b9eb7cb7f026e710a87800549a892bd3b0551d40 Mon Sep 17 00:00:00 2001 From: Roland Dobai Date: Wed, 6 May 2020 15:39:47 +0200 Subject: [PATCH] tools: Fix IDF Monitor so it will wait for the device to reconnect --- .../main/console_usb_example_main.c | 1 + tools/idf_monitor.py | 19 ++++++++++++++++++- 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/examples/system/console_usb/main/console_usb_example_main.c b/examples/system/console_usb/main/console_usb_example_main.c index fab9d9e55..a4e2168ee 100644 --- a/examples/system/console_usb/main/console_usb_example_main.c +++ b/examples/system/console_usb/main/console_usb_example_main.c @@ -78,6 +78,7 @@ void app_main(void) /* Register commands */ esp_console_register_help_command(); register_system_common(); + register_system_sleep(); register_nvs(); /* Prompt to be printed before each line. diff --git a/tools/idf_monitor.py b/tools/idf_monitor.py index 92e2c46bc..51437dfea 100755 --- a/tools/idf_monitor.py +++ b/tools/idf_monitor.py @@ -382,7 +382,24 @@ class SerialReader(StoppableThread): self.serial.dtr = self.serial.dtr # usbser.sys workaround try: while self.alive: - data = self.serial.read(self.serial.in_waiting or 1) + try: + data = self.serial.read(self.serial.in_waiting or 1) + except (serial.serialutil.SerialException, IOError) as e: + data = b'' + # self.serial.open() was successful before, therefore, this is an issue related to + # the disapperence of the device + red_print(e) + yellow_print('Waiting for the device to reconnect', newline='') + self.serial.close() + while self.alive: # so that exiting monitor works while waiting + try: + time.sleep(0.5) + self.serial.open() + break # device connected + except serial.serialutil.SerialException: + yellow_print('.', newline='') + sys.stderr.flush() + yellow_print('') # go to new line if len(data): self.event_queue.put((TAG_SERIAL, data), False) finally: