diff --git a/Terminal.exe b/Terminal.exe new file mode 100644 index 0000000..047bbad Binary files /dev/null and b/Terminal.exe differ diff --git a/getLogs.py b/getLogs.py index bf9e3b3..afca809 100644 --- a/getLogs.py +++ b/getLogs.py @@ -122,7 +122,7 @@ class ESPLoggerTerminal(QWidget): try: self.status_label.setText("Connecting to ESP32...") QApplication.processEvents() - ser = serial.Serial(port, baud, timeout=2) # короче таймаут + ser = serial.Serial(port, baud, timeout=0.1) # короче таймаут ser.reset_input_buffer() ser.reset_output_buffer() ser.write(b'd\n') @@ -191,6 +191,8 @@ class ESPLoggerTerminal(QWidget): self.status_label.setText(f"Log saved to {fname}") QMessageBox.information(self, "Success", f"CSV saved: {fname}") + + def clear_logs(self): """Очистка логов на ESP32""" port = self.port_combo.currentData() @@ -205,18 +207,55 @@ class ESPLoggerTerminal(QWidget): return try: - ser = serial.Serial(port, baud, timeout=3) + ser = serial.Serial(port, baud, timeout=0.1) ser.write(b'c\n') - response = ser.readline().decode(errors='ignore').strip() - ser.close() - if "CLEARED" in response: - self.status_label.setText("Logs cleared on ESP32") - QMessageBox.information(self, "Success", "Logs cleared on ESP32") - else: - QMessageBox.warning(self, "Warning", "No confirmation from ESP32") + + + # Ждём первую реакцию от ESP32 (например "=== LOG DUMP START ===") + pre_line = ser.readline().decode(errors='ignore').strip() + first_line = ser.readline().decode(errors='ignore').strip() + if not first_line or "LOG ERASING" not in first_line: + ser.close() + QMessageBox.warning(self, "Error", "Selected port is not responding like ESP32") + return + + self.status_label.setText("Erasing... May take a few second") + QApplication.processEvents() + + + import time + lines = [] + start_time = time.time() + timeout_sec = 15 + + while True: + if time.time() - start_time > timeout_sec: + QMessageBox.warning(self, "Timeout", "No confirmation from ESP32 (timeout).") + break + + line = ser.readline().decode(errors='ignore').strip() + if line: + start_time = time.time() + if not line: + continue + + if "CLEARED" in line: + self.status_label.setText("Logs cleared on ESP32") + QMessageBox.information(self, "Success", "Logs cleared on ESP32") + QApplication.processEvents() + break + + + + + except Exception as e: QMessageBox.critical(self, "Error", f"Serial error: {e}") + finally: + if 'ser' in locals() and ser and ser.is_open: + ser.close() + if __name__ == "__main__": app = QApplication(sys.argv) w = ESPLoggerTerminal()