+13
−1
+18
−1
+18
−1
+20
−1
+4
−2
Loading
1) Loop toggle → anche binning, non solo exptime:
- loop-toggle.js: wireLoopToggle() accetta un getBinning opzionale,
incluso nel body POST solo se valorizzato.
- api/camera.py Loop.post(): legge "binning" dal payload e lo applica
al device prima di avviare il loop.
- Cablato sia nel pannello Guider (guider-binning-sel) sia nel widget
Expose (binning-sel-imaging/spectro) — prima il binning del Guider
veniva letto solo da Guider.start() (pulsante Guide), mai dal Loop.
2) "camera occupata" su Expose/Stop e Guide/Stop dopo un loop:
looping=False è sempre stato un segnale "smetti di ritriggerare", mai
un abort del frame in corso — chi lo usava (Guider.start(), start() su
stx/atik/mako) procedeva subito dopo senza aspettare, quindi _start()/
il setter binning si rifiutavano con "camera not idle" se il loop era
ancora a metà frame.
Nuovo metodo stop_looping() su stx.py/atik.py/mako.py: ferma il loop
e ATTENDE davvero l'idle (bloccante, quindi va chiamato da un thread
worker, non dall'event loop):
- stx.py: abort() + attesa (nessun bug noto sull'abort STX)
- atik.py: solo attesa, NESSUN abort — bug noto (la camera non riprende
ad acquisire dopo un abort), lasciato come punto aperto a sé stante
- mako.py: solo attesa (nessun abort() disponibile per Mako)
start() (le tre classi), Guider.start() (via run_in_executor) e
Loop.post() (via run_blocking) ora chiamano stop_looping() invece del
solo looping=False, prima di procedere.
Co-Authored-By:
Claude Sonnet 5 <noreply@anthropic.com>