Problem mit set_aflock(x)

CHDK-Skripte, CHDK-Entwicklung, PC-Zusatzprogramme, Informationen für Tüftler

Problem mit set_aflock(x)

Beitragvon kaozz » 22.07.2011, 01:17

Hallo, ich hab mit folgendem Skript das Problem dass meine Kamera (Ixus120 mit Firmware 1.03B und CHDK-DE Build 1.1.0-697) beim initialisieren oder beim beenden des Skripts abstürtzt. Sprich das System friert für eine Sekunde ein, danach geht die Kamera ohne Vorwarnung aus und die Optik bleibt ausgefahren bis zum nächsten Neustart.
Das ganze passiert relativ zufällig, in ca. 40-50% von allen Testläufen.
Mein Verdacht ist dass es an dem set_aflock-Befehl liegt, denn beim Beenden wird z.B. der Zoom zurückgestellt und danach stürtzt sie ab, bevor playsound ausgeführt wird.

Wäre nett wenn sich mal jemand kurz das Script angucken kann, ob ich irgendwelche offensichtlichen Fehler gemacht hab (in UBDB liefs wie erwartet).
Code: Alles auswählen

@title digitizer
@param a zoomlevel
@default a 5

gosub "initialize"
goto "session"

:initialize
   print "initialisiere..."
   x = get_zoom
   set_zoom a
   print "setze Zoom"
   sleep 3000
   cls
   set_aflock(1)
   sleep 1000
   n=1
   cls
   print "bereit ..."
   playsound(4)
   sleep 60
   playsound(4)
   sleep 60
   playsound(4)
   return
      
:session
   i=1
   wait_click 1
   is_key k "remote"
   while k
      if (i=1) then
         click "shoot_full"
         if (n=1) then
            cls
         endif
         print "Bild";n,"gespeichert"
         n=(n+1)
      endif
      i=(i+1)
      is_key k "remote"
   wend
   goto "session"

:restore
   print "setze Zoom zurueck"
   set_zoom(x)
   sleep 3000
   cls
   set_aflock(0)
   playsound(4)
   sleep 60
   playsound(4)
   sleep 60
   playsound(4)
   end


Noch kurz zum Sinn des Scripts:
1. Beim Initialisieren wird der eingegebene Zoom gesetzt, danach fokussiert und der Fokus gelockt
2. Nach der Initialisierung kommt der Hauptteil(session) wo die USB-Fernbedienung in einem Loop überwacht wird, beim gedrückt halten des Tasters wird einmalig ausgelöst
3. Wenn das Skript manuell unterbrochen wird, wird der Zoom zurückgesetzt und der Fokus wieder freigegeben
kaozz
CHDK-Einsteiger
CHDK-Einsteiger
 
Beiträge: 2
Registriert: 22.07.2011, 00:59
Kamera(s): ixus 120

Re: Problem mit set_aflock(x)

Beitragvon msl » 22.07.2011, 11:41

Hallo und willkommen.

Das Skript an sich scheint ja in Ordnung zu sein. Lass aber bitte bei uBasic die Klammern für einzelne Argumente weg, solange du nicht rechnest. Oder mache es einheitlich.

Reichen die 3 Sekunden wirklich immer aus, dass die angegebene Zoom-Position vollständig erreicht wird?

kaozz hat geschrieben:1. Beim Initialisieren wird der eingegebene Zoom gesetzt, danach fokussiert und der Fokus gelockt
In deinem Skript wird aber nicht fokussiert, denn dazu ist ein press/release "shoot_half" notwendig. Möglicherweise fehlt der Kamera dadurch der Wert, den set_aflock festsetzen soll.

Für das Debugging kannst du auch zwischen den fraglichen Befehlen wait_click setzen. Dann geht es erst nach Benutzung einer Taste weiter. So lässt sich der Fehler vielleicht besser einkreisen.

Gruß msl
■ "Hey you, don't tell me there's no hope at all. Together we stand, divided we fall."CHDK inside FAQCHDK-Neuigkeiten auf Twitter
Benutzeravatar
msl
Super-Mod
Super-Mod
 
Beiträge: 4512
Bilder: 271
Registriert: 22.02.2008, 12:47
Wohnort: Leipzig
Kamera(s): A720 1.00c
SX220 1.01a

Re: Problem mit set_aflock(x)

Beitragvon kaozz » 22.07.2011, 14:13

Hallo, danke erstmal für die schnelle Hilfe.

Also die Passage ...

Code: Alles auswählen
...
press "shoot_half"
sleep 1000
release "shoot_half"
set_aflock(1)
...


...hatte ich vorher schonmal drin. Auch damit crasht die Kamera.
Irgendwo meine ich mal gelesen zu haben, dass beim Ausführen von set_aflock(1) auch automatisch fokussiert wird, deswegen hab ich es weggelassen (zumindest ging die Fokushilfsleuchte an).
Die sleep 3000 scheinen auszureichen, ich habs mit Ausgangszoomstufe 0 und einem Parameter von 9 probiert (9 ist das Maximum bei der Ixus120).

Und zu den Klammern... im Nachhinein siehts wirklich chaotisch aus ^^, ich dachte erst die CHDK-Befehle müssen vom Syntax her genauso geschrieben werden wie in der Referenz angegeben.

UPDATE: Ich hab jetzt auch mal testweise die Zeit zum Zoomen verdoppelt, der Fehler trit trotzdem noch auf.
Gibts evtl. eine propcase-Alternative zu set_aflock?
kaozz
CHDK-Einsteiger
CHDK-Einsteiger
 
Beiträge: 2
Registriert: 22.07.2011, 00:59
Kamera(s): ixus 120


Zurück zu Code-Ecke

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 4 Gäste