[Info] neue Skript-Befehle (CHDK-DE Rev. 175 / CHDK Rev 847)

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

neue Skript-Befehle (CHDK-DE Rev. 175 / CHDK Rev 847)

Beitragvon msl » 02.12.2009, 23:50

Hallo Skript(ik)er,

es gibt einige neue Befehle, die ich noch einmal gesondert vorstellen möchte.

gültig für CHDK-DE und CHDK

alles zu Thema Steuerung der Kamera-Modi

get_capture_mode -> Auslesen der CHDK Modemaps (nicht für Lua)
set_capture_mode_canon -> Setzen der Modi entsprechend der Canon-Nummerierung (siehe Propcases)
set_capture_mode -> Setzen der Modi lautCHDK-Modi-Liste
is_capture_mode_valid -> Test, ob Modus vorhanden ist.
set_record -> Umschalten zwischen Wiedergabe und Aufnahme

Mehr Infos hier.

Nachfolgende Befehle sind nur unter Lua möglich und dienen der Steuerung logischer Kamera-Events, die im Kamera-Betriebssystem vorprogrammiert sind. Damit lassen sich Kamera-abhängige Funktionen ganz gut steuern. Beispielsweise könnte man die Canon-Akku-Anzeige ausschalten. Wichtig sind diese Befehle auch für die PTP-Fernsteuerung der Kamera im Zusammenhang mit dem in der Entwicklung befindlichen PTP-Interface.

get_levent_def(event)
get_levent_index(event)
get_levent_def_by_index(index)
post_levent_to_ui(event,[unk])
post_levent_for_npt(event,[unk])
set_levent_active(event,state)
set_levent_script_mode(state)


Mehr Infos für Interessierte gibt es hier.

gültig nur für CHDK-DE

alles zum Thema Skript-Konsolen-Steuerung

CHDKLover hat ein Paket zur Steuerung der Skript-Konsole zusammengestellt:

set_console_layout x1 y1 x2 y2 -> Position und Größe der Konsole, x=0 bis 45 y=0 bis 14
set_console_autoredraw -> automatischen neuschreiben der Konsole aus- und einschalten, 0=aus 1=an
console_redraw -> manuelles Neuschreiben der Skript-Konsole


Im Anhang befindet sich ein kleines Beispielskript zu den Konsolen-Befehlen. Außerdem enthält das Komplett-Paket im Skript-Unterordner TEST einige Skripte zum Testen der Modi-Steuerung (setmode.bas, setmode.lua, setrec.bas)

Viel Spaß beim Testen.

Gruß msl
Dateianhänge
console.bas
Beispiel Konsolen-Befehle
(153 Bytes) 338-mal heruntergeladen
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

Beitragvon naddel » 04.12.2009, 17:08

Hallo,

Console_redraw setzt vor dem Neuschreiben die Konsole irgendwie auf 1 Zeile zurück und schreibt auch alle andern Anzeigen neu.
Dadurch blinken hinter der Konsole liegende Objekte wie Fokussierrahmen auf, das kann ziemlich störend sein und lässt sich sicher leicht ändern.
Ob gelegentlich kuzrfristig am falschen Ort aufblitzende Worte auch damit zusammenhängen kann ich nicht sagen. Vielleicht überschneiden sich da der Refresh der Konsole und des Bildschirms.

Beim Editor habe ich zum Vergleich eine Version mit Console_redraw eingestellt.


Sonst arbeiten die Funktionen klasse. Ich hätte gedacht, daß man die Auswahl der
Konsolengröße ins Skriptmenü packt, aber das ist ja schon recht voll und so funktionierts.

Muß man die Rücksetzung auf normale Werte in eine restore-Funktion packen oder wird das
bei jedem Skript neu initialisiert?

Gruß naddel
S2 1.00f mit aktueller DE Version
Benutzeravatar
naddel
CHDK-Begeisterter
CHDK-Begeisterter
 
Beiträge: 156
Registriert: 26.01.2009, 19:42
Kamera(s): G3 s2 ixusii

Beitragvon msl » 04.12.2009, 19:05

Hallo,

ja, das Rücksetzen man selbst organisieren. Empfehlenswert ist da natürlich restore.

Die Sache mit console_redraw ist mir beim Testen gar nicht so aufgefallen. Aber dazu wird CHDKLover mehr sagen können.

Es wird sowieso problematisch, größere Skript-Konsolflächen im Aufnahme-Modus zu verwenden. Da werden immer andere Canon-eigene oder CHDK-Anzeigen dazwischenfunken. Deshalb sollte man vielleicht auch darüber nachdenken, komplexe große Anzeigeblöcke auf den Wiedergabemodus zu legen. Mit set_record ist eine schnelle Umschaltung schnell organisiert.

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

Beitragvon CHDKLover » 06.12.2009, 13:08

Hallo naddel,
das bei dem Skript-Befehl console_redraw() die Konsolengröße verändert wird kann ich leider nicht nachvollziehen. Kannst du bitte ein Beispielsktipt zur Verfügung stellen? Das neu zeichnen aller OSD-Elemente lässt sich leider nicht umgehen.
Generell sollte man bei Verwendung von dem Sktipt-Befehl set_console_layout(x1,y1,x2,y2) darauf achten, dass auch bei einem Skiptabbruch und anschließendes Neustart ein definiertes Layout eingestellt ist. Das bedeutet das Skript sollte ein Initialisierungsteil haben, indem das Layout festgelegt wird. Ob man die Konsole am Ende auf die Standardwerte zurückstellt oder nicht ist eigentlich egal, da beim Laden anderer Skripte alle Einstellungen automatisch zurückgesetzt werden.

CHDKLover
A610 100e CHDK-DE: aktuelle Version
Benutzeravatar
CHDKLover
Super-Mod
Super-Mod
 
Beiträge: 878
Bilder: 8
Registriert: 12.09.2007, 18:25
Wohnort: Dresden
Kamera(s): a610 100e

Beitragvon naddel » 06.12.2009, 17:48

Hallo CHDKLover,

Wahrscheinlich habe ich das missverstanden und Console_Redraw muß nur nach Set_console_layout
aufgerufen werden. Dann muß natürlich alles neu eingestellt werden. In der Version editderd.lua
wird am Anfang der autoredraw abgeschaltet und alle Akualisierungen erfolgen über console_redraw nachdem
die Konsole komplett neu beschrieben wurde.
Wie bei einem normalen cls wird dann die Konsole gänzlich vom Bildschirm gelöscht und mit den aktuellen Parametern neu gezeichnet.
Zwischendurch erscheint das dahinter liegende Bild.
Bei editde wird wie in meiner alten erweiterten cls_Version verfahren.
Autoredraw wird vor dem neu schreiben der Konsole ausgesachaltet und vor dem letzten print wieder
eingeschaltet. Die Ausgabe ist perfekt. Keine Batteieanzeige oder ähnliches was da kurzfristig im Vordergrund erscheint.

Gruß naddel
S2 1.00f mit aktueller DE Version
Benutzeravatar
naddel
CHDK-Begeisterter
CHDK-Begeisterter
 
Beiträge: 156
Registriert: 26.01.2009, 19:42
Kamera(s): G3 s2 ixusii


Zurück zu Code-Ecke

Wer ist online?

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