Scripte erstellen und bearbeiten

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

Struktur

Beitragvon ursus65 » 14.11.2007, 10:47

Danke,

sehr fleißig. Ich werde mir das heute Abend auf meine Karte schieben. Haben die Fonts eine Auswirkung? Es geht anscheinend auch ohne!

Ich fände es, vielleicht nicht nur für mich, interessant, wenn man auf die Skripte, Grids usw. näher eingeht. Vieles erklärt sich für den Einen von selbst, aber der Andere braucht halt mehr Infos.

Die Seite ist ein guter Ansatz, braucht aber noch ein wenig Input.

Vielleich kann z. B. Jemand seine Erfahrungen mit z. B. diesem Andy_HDR.bas Script posten. Wie wirken sich Änderungen an den Einstellungen aus? Kann ich das Script anpassen7umbenennen, dass ich mit de Bezeichnungen mehr anfangen kann. Tipps für bessere Ergebnisse usw. Ich bin überzeugt, dass das gerne gelesen wird, Fragen aufwirft und mehr Leben ins Forum bringt.

Ich bin inzwischen soweit, dass CHDK bei mir läuft, brauche aber noch Zeit mich einzufummeln. Wenn ich den Durchblick habe, werde ich natürlich meine Erfahrungen posten.
Gruß

ursus65

Canon A710 IS mit CHDK
ursus65
CHDK-Einsteiger
CHDK-Einsteiger
 
Beiträge: 18
Registriert: 06.11.2007, 16:12
Wohnort: Berlin

Beitragvon CHDKLover » 14.11.2007, 15:04

Hi ursus65,
du kannst du die Dateinamen beliebig umbenennen.
Ein paar grundlegende Sprachelemente der Sprache UBASIC hab ich vor in den nächsten Tagen aufzuarbeiten und ins Forum zu posten.

Bis dahin CHDKlover
Benutzeravatar
CHDKLover
Super-Mod
Super-Mod
 
Beiträge: 878
Bilder: 8
Registriert: 12.09.2007, 19:25
Wohnort: Dresden
Kamera(s): a610 100e

allgemeine Informationen zu UBASIC unter dem CHDK

Beitragvon CHDKLover » 14.11.2007, 20:06

Hi,
wie angekündigt hab ich mal eine kleine Einleitung fürs Scripten für das CHDK geschrieben:

Legende:
    [...] = kann angegeben werden
    <...> = Muss entsprechend ersetzt werden
Allgemeiner Aufbau einer Script Datei (in einem Standard GrAnd Build ab #144):
Es gibt noch weitere Befehle in anderen (spezial) Builds.

Header:
    @title <Scriptname max. 24 Zeichen>
    @param <Variable (Zeichen von "a" bis "j")> <Text der die Variable beschreibt, wird in den Scripteinstellungen angezeigt.
    @default <Variable aus @param> <Standardwert beim laden des Scriptes>
Code: Alles auswählen
@title Test
@param a Anzahl der Fotos
@default a 5
    Besonderheiten:
    Scripte ohne @title haben den Dateinamen als Titel
    Scripte ohne @param werden standardmäßig 3 Variablen (a,b,c) zur Verfügung gestellt
Zuweisung:
    <Variable>=<Wert> oder let <Variable>=<Wert>
Code: Alles auswählen
a=5
oder
let a=5

Verzweigung ("wenn ... dann ... [ansonsten ...]"):
    if <Variable> <Vergleichsoperator> <Wert> then <Anweisung> [else <Anweisung>]

    Vergleichsoperatoren:
    = (gleich)
    > (größer)
    < (kleiner)
Code: Alles auswählen
if a<0 then goto "main"
if a<0 then a=1 else goto "ende"

Zählschleife("Von ... bis ... mache"):
    for <Variable>=<Startwert> to <Endwert>
    <Anweisung(en)>
    next <Variable>
Code: Alles auswählen
for i=1 to 10
  print "Foto", i
next i

Weitere wichtige Befehle in Kurzform:
    gosub "<label>" :leer: Springt in eine Prozedur (Unterprogramm) mit dem Namen <label> und gehrt an die aufgerufene Stelle wieder zurück wenn in der Prozedur der Befehl "return" steht
    goto "<label>" :leer: Springt in eine Prozedur
    :<label> :leer: Einsparungspunkt einer Prozedure
    return :leer: Springt aus der Prozedur raus und kehrt in das Hauptprogramm zurück
    print "<Text>" oder <Variable> :leer: Schreibt den Text auf den Infobildschirm (Durch Komma getrennt können weitere Variablen oder Texte angehängt werden
    cls :leer: Löscht den Infobildschirm
    click "<taste>" :leer: Drückt eine Taste
    sleep <Zeit in ms> :leer: Verzögert das Ausführen des Scriptes um X ms
    rem :leer: leitet eine Kommentarzeile ein
    end :leer: Beendet ein Script

    Tasten (für click):
    up / down / left / right / set / shoot_half / shoot_full / zoom_in / zoom_out / menu / display / print (="shortcut" für die S-Serie) / erase (="func" für die S-Serie) / remote / no_key
    Weitere Tasten der S-Serie: iso / flash / mf / macro / video / timer
    Tasten für die G7: expo_corr / fe
Bspe:
Code: Alles auswählen
for i=1 to 10 gosub "display" next i
:display print "Hallo";
return
Code: Alles auswählen
print "Bild", i, "von", a
Code: Alles auswählen
sleep 1500
Code: Alles auswählen
rem Hier geht es los

Und jetzt noch ein komplettes Script mit Kommentaren:
    rem Zweck: Belichtungsreihe anfertigen (z.B. für spätere HDR-Bearbeitung)
    Name des Programms (nicht Dateiname)
    @title Belichtungsreihe
    Variable a soll die anzahle der Aufnahmen enthalten
    @param a Zahl der Aufnahmen
    Beim laden des Scriptes hat a den Wert 5
    @default a 5
    Eine 2. Variable b soll die Schritte die nach jedem Foto gemacht werden sollen speichern
    @param b Schrittweite (1/3 EV)
    Satandartwert für b ist 3
    @default b 3
    Wenn a kleiner als 1 ist, soll a auf 3 gesetzt werden (negative Anzahl an Aufnahmen gibt es nun mal nicht)
    if a<1 then let a=3
    Wie eine Zeile drüber nur mit b
    if b<1 then let b=3
    Wartet eine Secunde
    sleep 1000
    Schreibt den Text "Bereite vor..." auf den Infobildschirm
    print "Bereite vor..."
    Drückt die Löschtaste, um die Belichtung korrigieren zu können
    click "erase"
    Nun wird der Schieberegler auf -2 EV gesetzt (die nächsten drei "Stellbefehle" sind nicht notwendig. Wenn man es weiß was hier passiert kann man durch weglassen die Ausfuhrgeschwindigkeit erhöhen)
    for n=1 to 12 click "left" next n
    Und jetzt genau auf 0 EV
    for n=1 to 6 click "right" next n
    Schieberegler auf Startposition fahlen
    for n=1 to a*b/2 click "left" next n
    1. Foto machen (mit Textausgabe)
    print "Aufnahme", 1, "von", a
    shoot
    Jetzt müssen nur noch a-1 Fotos gemacht werden da gerade schon das erste geschossen wurde
    for s=1 to a-1
    :leer: Schieberegler um b Schritte verschieben
    :leer: for n=1 to b click "right" next n
    :leer: s. Aufnahme machen (mit Textausgabe)
    :leer: print "Aufnahme", s+1, "von", a
    :leer: shoot
    Schleifenende springt zum Schleifenkopf
    next s
    Schreibt "Bereite nach..." auf den Infobildschirm
    print "Bereite nach..."
    Stellt den Schieberegler auf 0 EV
    for n=1 to 12 click "left" next n
    for n=1 to 6 click "right" next n
    Kehrt zur Standardansicht zurück
    click "erase"
    Beendet das Script
    end


Hab nicht auf Vollständigkeit geachtet, werde es mit der Zeit (vielleicht mit eurer Hilfe noch ausbauen).

bis dahin CHDKLover
Benutzeravatar
CHDKLover
Super-Mod
Super-Mod
 
Beiträge: 878
Bilder: 8
Registriert: 12.09.2007, 19:25
Wohnort: Dresden
Kamera(s): a610 100e


Zurück zu Code-Ecke

Wer ist online?

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