diff --git a/app.py b/app.py index bdf3b56..d187c4a 100644 --- a/app.py +++ b/app.py @@ -438,6 +438,7 @@ class App(tk.Tk): self._lens_type = None self._focus_reported = False self._af_hint_shown = False + self._denied_retries = 0 self._notice = None self.web_cmds = queue.Queue() @@ -2145,6 +2146,14 @@ class App(tk.Tk): elif kind == "error": self.log(f"ERROR {ev['text']}") self.notify(ev["text"], "error", 10 if ev.get("popup") else 6) + # Al abrir justo después de cerrar otra copia, Windows aún retiene el enlace unos segundos + # y la cámara responde «acceso denegado»: reintentamos solos dos veces antes de rendirnos. + if (not self.connected and "Acceso denegado" in ev["text"] and self._denied_retries < 2 + and ev["text"].startswith("Conexión")): + self._denied_retries += 1 + self.status_var.set(f"Enlace ocupado: reintento {self._denied_retries} de 2 en 10 s...") + self.after(10000, self.toggle_connect) + return if not self.connected: self.btn_connect.configure(state="normal") self.btn_scan.configure(state="normal") @@ -2203,6 +2212,7 @@ class App(tk.Tk): self.btn_pair.configure(state="normal") elif kind == "connected": self.connected = True + self._denied_retries = 0 self._connect_time = time.time() self._payload_count = 0 self._payload_warned = False