From 7d1162d1c2e0d7198bf41d0650dcfeafd28edc0c Mon Sep 17 00:00:00 2001 From: Andrew Kay Date: Tue, 30 Jun 2020 18:53:20 -0500 Subject: [PATCH] Fix serial data corruption on Windows with Arduino Mega 2560 Rev 3 --- interface1/firmware/src/main.cpp | 1 + pycoax/coax/serial_interface.py | 6 ++++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/interface1/firmware/src/main.cpp b/interface1/firmware/src/main.cpp index 5d025b7..c790ea4 100644 --- a/interface1/firmware/src/main.cpp +++ b/interface1/firmware/src/main.cpp @@ -212,6 +212,7 @@ void loop() } frameBufferCount = 0; + frameState = WAIT_START; } else if (byte == FRAME_ESCAPE) { frameState = ESCAPE; } else { diff --git a/pycoax/coax/serial_interface.py b/pycoax/coax/serial_interface.py index e6fb501..dd16b29 100644 --- a/pycoax/coax/serial_interface.py +++ b/pycoax/coax/serial_interface.py @@ -21,17 +21,19 @@ class SerialInterface(Interface): def reset(self): original_serial_timeout = self.serial.timeout + self.serial.timeout = 5 + self.serial.reset_input_buffer() self._write_message(bytes([0x01])) - self.serial.timeout = 5 - try: message = self._read_message() finally: self.serial.timeout = original_serial_timeout + self.serial.reset_input_buffer() + if message[0] != 0x01: raise _convert_error(message)