Script zum Steuern und Loggen des Tv-Overrides?

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

Script zum Steuern und Loggen des Tv-Overrides?

Beitragvon AaTeWe » 26.04.2011, 19:53

Hallo zusammen,

ich hab mir die Möglichkeiten zum Scripten jetzt mal eine Weile angesehen - da ich aber zeitlich arg limitiert bin, wollte ich gerne eine Machbarkeitseinschätzung von Euch, bevor ich mich da ins Scripten vergrabe (Programmieren selbst ist nicht das Problem, aber einen neue Scriptsprache lernen ist doch mit etwas Aufwand verbunden).

Ich benutze CHDK hauptsächlich, um auf meiner S90 Langzeitbelichtungen zum machen, sprich einen Tv-Override zu setzen. Gleichzeitg hab ich als Stativ meist nur mein Gorilla-Pod da, d.h. ich knie dann irgendwo rum, um die Parameter einstellen zu können. Um das etwas komfortabler zu gestalten hätte ich gerne ein Script, mit dem ich die Tv-Override einstellen kann, ohne im entsprechenden CHDK Menü rumturnen zu müssen. Dann würde ich gerne Auslösen mit Zeitverzögerung (so dass das Gorilla-Pod sich ausschwingen kann). Gleichzeitig wäre es für mich wichtig, hinterher zu wissen, welches Bild mit welcher Tv aufgenommen wurde (das wäre eigentlich sogar die Hauptfunktion, weil ich hinterher immer nie weiss, wie lange ich eigentlich belichtet habe...).

Ich würde mir das so vorstellen: mit der Wippe hoch/runter kann man den Tv-Override Wert einstellen (muss man den vom Script anzeigen, oder würde die automatische Anzeige aktualisiert werden?). Mit der Funktionstaste kann man Auslösen, die Kamera sucht den Fokus (oder nimmt den manuell eingestellten) und löst nach ca. 5 Sekunden aus. Nach der Aufnahme wird der Name des Bildes mit der gewählten Tv-Override ins Log geschrieben. Die restlichen Randbedingungen werden ganz normal eingestellt bzw. automatisch von der Kamera vorgegeben.

Bislang hab ich ein bisschen mit LUA rumgespielt. Das Setzen des Tv_Overrides dürfte mit set/get_config_value (Parameter 102/103 / 141) gehen, die Tastaturbelegungen müste man auch hinbekommen, und das Logging gibt es ja bereits.

Wie gesagt, ich würde gerne wissen, ob Ihr da irgendwo ein Problem seht, oder ob es etwas Vergleichbares bereits gibt, das man vielleicht ausbauen könnte.

Vielen Dank im Voraus.

Gruß, Axel
Canon Powershot S90 1.01c - CHDK-DE Revision: 644 (14:36, 26.04.2011)
AaTeWe
CHDK-Einsteiger
CHDK-Einsteiger
 
Beiträge: 11
Registriert: 19.07.2010, 12:32

Re: Script zum Steuern und Loggen des Tv-Overrides?

Beitragvon msl » 26.04.2011, 21:31

Hallo Axel,

dein Ansatz ist prinzipiell machbar.

Aus meiner Sicht wäre es aber sinnvoller, den Befehl set_tv96_direct() einzusetzen. Dieser entspricht der Override-Funktion, überschreibt also den von der Kamera ermittelten Wert zur Verschlusszeit. Die Override-Einstellungen im CHDK-Menü bleiben unverändert. Im Anhang vom CHDK-Handbuch findest du eine entsprechende Werte-Tabelle. Die Schrittweite beträgt in diesem APEX-System 32. Die APEX-Werte sind im Gegensatz zu den Konfigurationswerten sicherlich auch besser auswertbar, was das Logging betrifft. Die Verzögerung ist unproblematisch (sleep(5000)). Als umfangreiches Beispiel hilft vielleicht dieses Skript. Das ist aber schon etwas älter.

Das Auslesen des Dateinamens fürs Logging ist schon etwas anspruchsvoller. Siehe dazu dieses Skript als Beispiel.

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: Script zum Steuern und Loggen des Tv-Overrides?

Beitragvon AaTeWe » 27.04.2011, 09:37

Hallo msl,

besten Dank für sie Starthilfe.

Ich werde mich da mal durchgraben - wird allerdings etwas dauern.

Lieben Gruß, Axel
Canon Powershot S90 1.01c - CHDK-DE Revision: 644 (14:36, 26.04.2011)
AaTeWe
CHDK-Einsteiger
CHDK-Einsteiger
 
Beiträge: 11
Registriert: 19.07.2010, 12:32

Re: Script zum Steuern und Loggen des Tv-Overrides?

Beitragvon AaTeWe » 28.04.2011, 21:24

Hallo zusammen,

ok, ich hab mir das mal alles aus den Beispielen zusammengesucht und ein bisschen was gemacht.

Das Ganze funktionierte auch genau so, wie ich das wollte, mit Logging usw. Dann habe ich was am Logging geändert (Formatierungen & Spaces etc.).

Seitdem schaltet ich die S90 nach dem Shoot aus - sie schafft es auch nicht, das JPG abzulegen, nur das CR2 ist da. Log schreibt das Script natürlich auch keines, weil alles abbricht.

Falls jemand mag, kann er gerne mal drübergucken.

Ach ja: Ich hab zwar prinzipiell verstanden, wie diese APEX-Geschichte funktioniert, habe es aber nicht geschafft, mittels Formel vom Tv Id auf die Belichtungszeit zu kommen. Bislang schreibt das Script nur die Id mit, mir wäre da aber eine Umrechung in einen Zeitwert lieber.

Muß ich die Info in einer Tabelle ablegen, oder bekommt man das irgendwie ausgerechnet?

Danke & Gruß, Axel

exp_log.lua
(5.56 KiB) 336-mal heruntergeladen
Canon Powershot S90 1.01c - CHDK-DE Revision: 644 (14:36, 26.04.2011)
AaTeWe
CHDK-Einsteiger
CHDK-Einsteiger
 
Beiträge: 11
Registriert: 19.07.2010, 12:32

Re: Script zum Steuern und Loggen des Tv-Overrides?

Beitragvon msl » 28.04.2011, 22:18

Hallo,

prinzipiell arbeitet das Skript bei mir. Fotos werden gemacht, Die Log-Datei wird geschrieben. Die Absturz hat evt. eine andere Ursache. Möglicherweise sind die CHDK-Binär-Dateien durch häufigen SD-Karten-Wechsel beim Probieren beschädigt. Bitte mal CHDK neu einrichten.

Du hast das Prinzip verstanden und bestehende Funktionen clever für dich genutzt. =D>

Um eine Tabelle für die reellen Belichtungswerte kommst du nicht herum. Im Skript "erweiterter Tv-Modus" ist eine enthalten. Für eine Berechnung bräuchten wir Logarithmus-Funktionen, die wir mit CHDK-Lua nur sehr umständlich durch Approximation nachbilden könnten, da nur mit Ganzzahlen gerechnet werden kann. Du brauchst aber nur die Tv-ID mit dem Index der Tabelle abzustimmen, um jeweils den richtigen reellen Belichtungswert zur Anzeige zu bringen.

Wenn alles funktioniert, wäre noch eine Skriptbereinigung fällig, z.B. ist set_aflock(0) in der restore()-Funktion überflüssig. Im Menü ist das Pfeil-Symbol nicht konform zu den verwendeten Richtungstasten. Das sind aber alles Kleinigkeiten.

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: Script zum Steuern und Loggen des Tv-Overrides?

Beitragvon AaTeWe » 29.04.2011, 08:13

Moin msl,

danke für die Blumen... :-)

CHDK scheint prinzipiell noch zu tun - ich kann ohne das Script noch Fotos mit CHDK machen. Mit der Karte hatte ich gestern wirklich Schwierigkeiten, hatte sie auch schonmal formatiert und neu bestückt, allerdings nur mit einem Backup der bereits bestehenden Version - werde heute Abend mal ein komplett neues CHDK aufsetzen.

Das die Kamera einfach ausgeht passiert leider desöfteren. Das Problem hatte ich auch schon mit einer der vorhergehenden CHDK Versionen - da kommte ich CHDK bisweilen einfach nicht starten - es kam der Startbildschirm von Canon und dann war wieder alles schwarz.

Wobei die Wechselei des Chips beim Debuggen schon arg lästig ist. Ein Simulator wäre cool (ich hab mir den LUA-Edit installiert, mit dem kann man wenigstens die formellen Sachen abhandeln), aber ist wahrscheinlich wirklich etwas viel verlangt!

Was mir noch einfällt: Ich hatte in der letzten bei mir lauffähigen Version ein weiteres Logging direkt nach dem Shoot - mit einer newline. Vielleicht isses ja ein Timing-Issue.

Das mit dem Log2 für die Umrechung der Werte hatte ich mir schon fast gedacht - wobei ich es auch mit Excel nicht geschafft hab, die Formel anzuwenden (bin aber auch nicht so der Mathematiker...)

Den Kleinkram mache ich dann auch heute Abend - vielen Dank für durchschauen.

Gruß, Axel
Canon Powershot S90 1.01c - CHDK-DE Revision: 644 (14:36, 26.04.2011)
AaTeWe
CHDK-Einsteiger
CHDK-Einsteiger
 
Beiträge: 11
Registriert: 19.07.2010, 12:32

Re: Script zum Steuern und Loggen des Tv-Overrides?

Beitragvon msl » 29.04.2011, 11:30

Hallo Axel,

AaTeWe hat geschrieben:Wobei die Wechselei des Chips beim Debuggen schon arg lästig ist. Ein Simulator wäre cool (ich hab mir den LUA-Edit installiert, mit dem kann man wenigstens die formellen Sachen abhandeln), aber ist wahrscheinlich wirklich etwas viel verlangt!
Da kann geholfen werden. 8)

Bei der aktuellen ptpCamGui-Version (siehe hier) hat rudi einen Lua-Editor eingebaut. Damit lässt sich schon viel testen. Mit der GUI kann man Skript-Dateien auch per USB auf Kamera (SD-Karte) laden. Das spart einiges Karten-Jonglieren.

Hilfreich ist auch die Modifikation eines Billig-Karten-Lesers, damit man nicht laufend den Schreibschutz der Karte umstellen muss. Das schont die Karte erheblich.

Ein Timing-Problem sehe ich eigentlich nicht. Eher zufällige Fehler gerade im Zusammenhang mit einem Skript sind meiner Meinung nach im Speicher-Management der Kamera zu suchen. Und da wird gerade fleißig gewerkelt.

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: Script zum Steuern und Loggen des Tv-Overrides?

Beitragvon AaTeWe » 03.05.2011, 12:00

Hallo zusammen,

die Probleme mit der Karte hab ich gelöst - ich hatte meinen Computer umgezogen. Anscheinend kam mein externer Kartenleser mit dem anderen USB-Port nicht klar. Er steckt jetzt wieder da, wo er vorher war, und seitdem hab ich auch keine Zugriffsprobleme mehr. Allerdings musste ich die Karte neu formatieren und aufsetzen.

Das Script läuft mittlerweile stabil (die Absturz-Probleme habe ich mit einem 2s Delay nach dem Trigger in den Griff bekommen), allerdings habe ich Probleme mit dem Befehl set_tv96_direct. Irgendwie kommt die gesetzte Info erst immer nach einem Trigger an, d.h. beim zweiten Foto. Ändert man dann die Zeit, dauert es wieder eine Auslösung, bis der Wert gesetzt wird. Bislang habe ich keinen Weg gefunden, die Werte direkt nutzen zu können... Muss man nach der Benutzung des Befehls irgerndwas flushen?

Danke & Gruß, Axel
Canon Powershot S90 1.01c - CHDK-DE Revision: 644 (14:36, 26.04.2011)
AaTeWe
CHDK-Einsteiger
CHDK-Einsteiger
 
Beiträge: 11
Registriert: 19.07.2010, 12:32

Re: Script zum Steuern und Loggen des Tv-Overrides?

Beitragvon msl » 03.05.2011, 12:42

Hallo,

AaTeWe hat geschrieben:Irgendwie kommt die gesetzte Info erst immer nach einem Trigger an, d.h. beim zweiten Foto.
Das sollte eigentlich nicht sein. Das sieht mir eher danach aus, als hättest du irgendwo eine zweite Schleife zum Shooting o.ä. Aber um eine generelles Problem S90 und set_tv96_direct()-Befehl auszuschließen, teste doch mal folgendes Skript mit verschiedenen Parameter-Werten:
Syntax: [ Download ] [ Verstecken ]
Benutze Lua Syntax Highlighting
--[[@title Test
@param a Tv ID
@default a 0
]]


TV96 = 32 * a
set_tv96_direct(TV96)
shoot()
Erstellt in 0.006 Sekunden, mit GeSHi 1.0.8.9

Vorgabe ist eine Sekunde Belichtungszeit. Wenn das und andere Werte funktionieren, ist der Fehler im Skript zu suchen. In deinem Skript könnte die Funktion fastshoot() auch durch den CHDK-Befehl shoot() ersetzt werden. Das macht es für den Anfang übersichtlicher.

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: Script zum Steuern und Loggen des Tv-Overrides?

Beitragvon AaTeWe » 04.05.2011, 21:00

Hallo msl,

ok, ich habs kapiert...

set_tv96_direct() funktioniert nur im Aufnahmemodus. Das erste fasthoot() schaltet in den Aufnahmemodus um. Dann wird der Wert korrekt gesetzt!

Ich hänge die aktuelle Version des Scriptes mal an - da ist noch ein bisschen Cleanup etc. vonnöten, aber prinzipiell tut es.

Aktuell offene Punkte:
- Prüfen, dass der Index der Tv-Zeiten-Tabelle eingehalten wird
- Prüfen, dass die Kamera sich im Aufnahmemodus befindet.
- Menükosmetik

Danke für Deine Hilfe!

Gruß, Axel

exp_log.lua
(6.74 KiB) 341-mal heruntergeladen
Canon Powershot S90 1.01c - CHDK-DE Revision: 644 (14:36, 26.04.2011)
AaTeWe
CHDK-Einsteiger
CHDK-Einsteiger
 
Beiträge: 11
Registriert: 19.07.2010, 12:32


Zurück zu Code-Ecke

Wer ist online?

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

cron