einfaches Script funktioniert nicht

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

einfaches Script funktioniert nicht

Beitragvon Knipser_500 » 03.11.2014, 13:20

Hallo Canoniere :-D,

ich bin mich hier am durchwurschteln und möchte folgendes machen:

meine SX 200 IS wird über Netzbetrieb mit Strom versorgt und soll jeden Tag zu einer festgelegten Zeit ein Foto machen. Dazu probiere ich gerade ein wenig und habe dieses Script zusammen geschrieben:

Code: Alles auswählen
@title Analemma
@param s Stunde
@default s 14
@param m Minute
@default m 15
a=0
rem --- Schaul mal, wie spaet es ist ---
:pruefe
print "Fotos bisher: ", a
t=get_time 2
n=get_time 1
if t=s and n=m then
goto "knips"
else
cls
goto "pruefe"
endif

end

:knips
press "shoot_full"
sleep 3000
release "shoot_full"
rem ---- einen Momang warten ----
sleep 60000
cls
a=a+1
goto "pruefe"



Zuerst mal eine Frage: Kann man das so realisieren oder gibt´s andere Möglichkeiten. Solche Zusatzdinger, wie Display abschalten usw. kommt später.... Alle Werte habe ich manuell eingestellt (Belichtung, ISO, Fokus usw.)
Bei dem obigen Script wird dann aber dieser Fehler ausgegeben: "ubasic: 13 if: Stack ful"
Hmmm *Stirn gerunzelt* Was das denn jetzt?

Also mein Script funktioniert nicht und ich bin selber auch nicht so der Programmierbär und im Handbuch und bei Tante Gugel hab ich zwar was davon gelesen, aber ne Lösung des Problems nicht wirklich (und verständlich für mich) gefunden.
Zuletzt geändert von msl am 03.11.2014, 18:58, insgesamt 2-mal geändert.
Grund: edit by Mod: Skript-Code in Code-Tag gefasst.
Knipser_500
CHDK-Einsteiger
CHDK-Einsteiger
 
Beiträge: 3
Registriert: 03.11.2014, 12:56
Kamera(s): SX 200 IS

Re: einfaches Script funktioniert nicht

Beitragvon Werner_O » 03.11.2014, 19:24

Hallo Knipser_500,

zunächst einmal herzlich willkommen hier im Forum.

Zu Deinem Skript kann ich leider nichts sagen, weil ich von uBasic kaum Ahnung habe.

Warum aber das Rad neu erfinden wollen wenn es hier bereits fertige Intervallskripte gibt, welche Aufnahmen in 24 Stunden-Intervallen ausführen können, etwa mein Luaskript IntervWO mit "Intervallzeit grob = 1440 min" (== 24h).
Zudem bietet dieses Skript größtmögliche Freiheit bzgl. der Verwendung von Programmen, wobei im standardmäßig aktiviertem "Save Mode" allerdings nur die Programme P, Tv, Av und M zugelassen werden (siehe die Skriptbeschreibung).

In der neuesten Testversion v1.09 alpha (siehe hier) ist sogar ein manuelles Aus-/Einschalten des Displays über die Taste DISPLAY während der Intervalle vorgesehen, wobei man das im Prinzip sogar beliebig oft machen kann ohne Angst haben zu müssen, sich dadurch die festgelegte Intervallzeit zu versauen.
Dazu muß nur vor Skriptstart der Skript-Vorgabeparameter "Display aus nach Bild-Nr" dieser Testversion im CHDK-Skriptmenü auf "MAN" gesetzt werden.

Ansonsten kannst Du vor Absenden eines Postings in den Optionen ganz unten die graphischen Smileys ausschalten :) :-) :-)))

Liebe Grüße
Werner_O
Benutzeravatar
Werner_O
CHDK-Legende
CHDK-Legende
 
Beiträge: 1027
Registriert: 22.10.2010, 13:12
Wohnort: Köln
Kamera(s): SX20 1.02d
SX240 1.01a
S100 1.01a
S3 1.00a

Re: einfaches Script funktioniert nicht

Beitragvon msl » 03.11.2014, 20:44

Hallo,

das uBASIC-Skript produziert einen Stapelüberlauf in der If-Verzweigung, weil diese nie abgeschlossen wird. Der If-Befehl erlaubt eine maximale Verkettung von 4 If-Anweisungen. Durch den Goto-Aufruf kommt es zu den ungewollten Verkettungen. Im Programmierjargon spricht man dann auch von Spaghetti-Code.

Ein Lösungsansatz ist der Einsatz von Gosub +Return statt Goto. Außerdem ist die Else-Anweisung überflüssig. Den Block :pruefe würde ich in eine Schleife (Do-Until) umwandeln. Generell ist es aber schwierig, das Skript für nur eine Aufnahme am Tag zu trimmen. Da sind Probleme vorprogrammiert. Ich würde mehrere Fotos pro Tag erstellen, z.B. stündlich.

Werners Skript ist alternativ geeignet. Allerdings ist dieses Skript nicht auf Langzeitbetrieb getrimmt. Da gibt es ein spezielles Skript: http://chdk.wikia.com/wiki/Ultimate_Intervalometer

Gruß msl
Benutzeravatar
msl
Super-Mod
Super-Mod
 
Beiträge: 4567
Bilder: 271
Registriert: 22.02.2008, 11:47
Wohnort: Leipzig
Kamera(s): A720 1.00c
SX220 1.01a

Re: einfaches Script funktioniert nicht

Beitragvon Werner_O » 03.11.2014, 21:09

msl schrieb:
Werners Skript ist alternativ geeignet.
Allerdings ist dieses Skript nicht auf Langzeitbetrieb getrimmt

Was meinst Du damit bei einer Kamera wie die von Knipser_500, die ständig von Strom versorgt wird?
Du kannst Deine Antwort auch gerne im Thread zu diesem Skript posten.

Liebe Grüße
Werner_O
Benutzeravatar
Werner_O
CHDK-Legende
CHDK-Legende
 
Beiträge: 1027
Registriert: 22.10.2010, 13:12
Wohnort: Köln
Kamera(s): SX20 1.02d
SX240 1.01a
S100 1.01a
S3 1.00a

Re: einfaches Script funktioniert nicht

Beitragvon Knipser_500 » 03.11.2014, 21:56

Hallo Werner, hallo msl,

vielen Dank für die schnellen Antworten. Ich werde mir beide Scripte mal ansehen und auch ausprobieren. Zu meinem Projekt nur soviel noch: Also wie der Script-Titel schon sagt, möchte ich ein Analemma aufnehmen, also den Stand der Sonne jeden Tag zur gleichen Zeit. Wenn man die Bilder (auf denen dann hoffentlich die Sonne zu sehen ist) überlagert, erhält man eine Aufnahme mit vielen Sonnen, die eine "Acht" darstellen. Das Script ist notwendig nicht nur weils automatisch ablaufen soll, sondern weil man ja auch noch seine Rente verdienen muss ;-)
Die Kamera wird über einen Akku-Dummy mit Strom aus der Wand versorgt. Aufgebaut wird sie in einem beheizbarem (Winterbetrieb) Wetterschutzgehäuse, welches fest an der Balkonbrüstung meiner Hütte installiert wird. Als Filter dient Astro-Solar-Folie von Baader Planetarium.

VG
Micha
Knipser_500
CHDK-Einsteiger
CHDK-Einsteiger
 
Beiträge: 3
Registriert: 03.11.2014, 12:56
Kamera(s): SX 200 IS

Re: einfaches Script funktioniert nicht

Beitragvon msl » 03.11.2014, 23:43

Werner_O hat geschrieben:Was meinst Du damit...

Hallo Werner,

es geht hier grundsätzlich um Probleme bei Langzeitintervallen. Über die ganzen Jahre hinweg, in denen mit CHDK-Intervall-Skripten experimentiert wurde, gab es immer wieder Meldungen über unerklärliche Kameraabstürze. Vermutlich spielt die Speicherverwaltung eine Rolle.

Das von mir empfohlene Skript benutzt einige Techniken, um dem genannten Problem etwas entgegenzuwirken. So kann beispielsweise ein regelmäßiger automatischer Kameraneustart (Reboot) eingestellt werden.

Für lange Intervallabstände ist der Warte-Befehl sleep() nur die zweite Wahl. Das Auslesen der Systemzeit ist die bessere Option.

Gruß msl
Benutzeravatar
msl
Super-Mod
Super-Mod
 
Beiträge: 4567
Bilder: 271
Registriert: 22.02.2008, 11:47
Wohnort: Leipzig
Kamera(s): A720 1.00c
SX220 1.01a

Re: einfaches Script funktioniert nicht

Beitragvon Werner_O » 03.11.2014, 23:50

Hallo Micha,

Also wie der Script-Titel schon sagt, möchte ich ein Analemma aufnehmen, also den Stand der Sonne jeden Tag zur gleichen Zeit. Wenn man die Bilder (auf denen dann hoffentlich die Sonne zu sehen ist) überlagert, erhält man eine Aufnahme mit vielen Sonnen, die eine "Acht" darstellen.

Das ist eine sehr ehrgeizige Aufgabe von Dir, die aber schon wegen des wechselndes Wetters (Wolken, verschiedene Lichtverhältnisse etc.) extrem schwierig wird.

Deine geplante Vorgehensweise mit Programm M (msl hat diese Info ja leider aus Deinem Anfangsposting weggeschnitten) kannst Du darum gleich vergessen, da Du ja zumindest halbwegs korrekt belichtete Bilder für diese Aufnahmeserien brauchst.
Somit bleiben nur noch die Programme P, Tv und Av als Alternativen übrig. Bei fest eingestelltem Fokus könnte da evtl. Programm P für diesen Zweck die sinnvollste Alternative zu sein, aber ich bin mir dazu nicht zu 100% sicher, weil ja eigentlich nur Programm Av für identische Schärfeverhältnisse bei allen Aufnahmen sorgen kann.

Eine "pefekte Acht" wirst Du jedenfalls niemals bekommen können wegen des wechselnden Wetters.
Eine last not least "nicht perfekte Acht" wäre aber auch interessant, weil sie immerhin den Jahresverlauf angenähert darstellen könnte.

Liebe Grüße
Werner_O
Benutzeravatar
Werner_O
CHDK-Legende
CHDK-Legende
 
Beiträge: 1027
Registriert: 22.10.2010, 13:12
Wohnort: Köln
Kamera(s): SX20 1.02d
SX240 1.01a
S100 1.01a
S3 1.00a

Re: einfaches Script funktioniert nicht

Beitragvon Knipser_500 » 04.11.2014, 06:23

Hallo Werner,

na, na, na.... nicht gleich so pessimistisch ;-) Ich möchte Dir mal zwei interessante Links zum Besten geben.

http://www.spektrum.de/wissen/das-analemma/1295440

http://robertnufer.ch/12_analemma_shutt ... hutter.htm

Wie Du siehst, handelt es sich bei dem Analemma um ein Komposit aus mehreren Aufnahmen. Der Hintergrund (oder ist es doch der Vordergrund?) wird ohne Filter aufgenommen, das Sonnenbild mit Filter. Diese Sonnenfilter haben die Eigenart, nur einen winzigen Bruchteil des Lichts durchzulassen. Man sieht auf den einzelnen Bildern also eh nur einen "winzigen weißen Fleck" (siehe zweiter Link, Bild von 11:30 Uhr). Die Belichtungszeit und Blende wird, weil ja auch nur die Bilder Verwendung finden, auf denen die Sonne zu sehen ist, vorgegeben. Also komplett manuell "M". Die "Acht" wird dann schon entsprechend der Ausrichtung der Kamera schön abgebildet sein, nur eben mehr oder weniger "lückenhaft".

Gruß
Micha
Knipser_500
CHDK-Einsteiger
CHDK-Einsteiger
 
Beiträge: 3
Registriert: 03.11.2014, 12:56
Kamera(s): SX 200 IS


Zurück zu Code-Ecke

Wer ist online?

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