[Lua] Skripte unter Windows testen

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

Re: Skripte unter Windows testen

Beitragvon rudi » 09.06.2015, 18:57

Hallo c_joerg

Danke. Schön, dass es dir gefällt und Spaß am Hobby ist immer gut.

c_joerg hat geschrieben:Gibt es eigentlich eine einfache Möglichkeit, dass sich das keypad nach Beendigung des Scripts nicht gleich automatisch schließt?
Das kannst du im Kontextmenü von Keypad einstellen. Einfach mal die rechte Maustaste klicken.
"GUI Close Type"
  • "On Exit Script" (nach Skriptende)
  • "After 10 Seconds" (nach 10 s Wartezeit)
  • "On Lost Focus" (wenn keypad nicht mehr im Vordergrund ist)

c_joerg hat geschrieben:Eine Sache die mir aufgefallen ist:

Starte ich mein Script mit ‚CHDK LUA local‘ dann bekomme ich die Fehlermeldung
‘attempt to call global 'set_lcd_display' (a nil value)’ weil die Funktion nicht in camera_funcs.lua vorhanden ist.
Mit ‘CHDK LUA local keypad’ bekomme ich die Fehlermeldung nicht.
Das haben wir glatt vergessen. Doch msl hat es sofort berichtigt, wie du hier sehen kannst.
Die Datei im 1. Beitrag ist aktualisiert.

Gruß rudi

-- 09.06.2015, 19:37 --

Hallo Werner_O,

seit Version 3.0 ist die Einrichtung von CHDK-hostlua mit Editor Notepad++Portable vereinfacht. Alles wird in einem Hauptordner untergebracht und alles ohne wirkliche systemverändernde Installation.

Hier beschreibe ich eine Testeinrichtung unter D:\chdk und 2 Beispiele zur Benutzung.
  1. Öffne Windows-Explorer
  2. wähle Laufwerk D:
  3. erstelle Ordner chdk
  4. wechsle in Ordner chdk
  5. lade hostlua_V3.0.zip aus 1. Beitrag und speichere es im Ordner chdk
  6. klicke die rechte Maustaste auf hostlua_V3.0.zip und wähle In neuem Fenster öffnen
  7. positioniere die beiden Fenster nebeneinander
  8. bei gedrückter linker Maustaste schiebe den Ordner hostlua in das andere Fenster wo die Datei hostlua_V3.0.zip liegt und lasse die Maustaste los
  9. schließe den Windows-Explorer der nur hostlua enthält
  10. wechsle im ersten Windows-Explorer in den Ordner hostlua
  11. lade den Editor Notepad++ Portable von hier [http://portableapps.com/apps/development/notepadpp_portable]
    • dazu klickst du auf die Schaltfläche Download Now oberhalb von Version 6.7.8.2 for Windows, Multilingual
    • nach dem Wechsel der Seite zu Sourceforge musst du einfach nur ein paar Sekunden warten, bis das Downloadfenster des Browsers erscheint
    • und speichere die Datei NotepadPlusPlusPortable_6.7.8.2.paf.exe im aktuellen Ordner D:\chdk\hostlua
  12. der Browser kann geschlossen werden
  13. mit einem Doppelklick auf die NotepadPlusPlusPortable_6.7.8.2.paf.exe wird Notepad++ Portable ausgepackt
    • die Sprachauswahl mit OK bestätigen
    • dann Weiter
    • Installieren drücken (!!! den angezeigten Pfad D:\chdk\hostlua\Notepad++Portable so lassen)
    • Fertig stellen drücken (!!! keinen Haken bei Notepad++Portable ausführen)
  14. mit Doppelklick in den Ordner plugin_NppExec wechseln
  15. mit Doppelklick auf local_config.cmd die Konfiguration ausführen
    bei mir sieht das so aus:
    Code: Alles auswählen
    D:\chdk\hostlua\plugin_NppExec\config\npes_saved.txt
    D:\chdk\hostlua\plugin_NppExec\config\NppExec.ini
            2 Datei(en) kopiert.
            1 Datei(en) kopiert.
            1 Datei(en) kopiert.
            1 Datei(en) kopiert.

    * Konfiguration hinzugefuegt!

    * Ziel:
     D:\chdk\hostlua\Notepad++Portable\

    Startlink Notepad++:
     "D:\chdk\hostlua\Start Notepad++.lnk"
  16. eine Taste drücken und das Fenster schließt sich
  17. wieder zurück in den Ordner hostlua wechseln
  18. die Einrichtung ist abgeschlossen
(Aufräumen? Die beiden heruntergeladenen Dateien D:\chdk\hostlua_V3.0.zip und D:\chdk\hostlua\NotepadPlusPlusPortable_6.7.8.2.paf.exe werden nicht mehr benötigt.)


Erste Schritte:
  • der Startpunkt ist hier immer D:\chdk\hostlua, am einfachsten den Pfad im Windows-Explorer öffnen
  • ein Doppelklick auf den Link Start Notepad++ öffnet den Editor
Beispiel 1, ein Lua-Skript lokal ausführen
  1. über das Menü Datei->Öffnen das Skript emu_info.lua aus dem Unterordner test öffnen
  2. über das Menü Makro->CHDK LUA local das Skript ausführen, dabei öffnet sich die Console automatisch
    (Zur besseren Lesbarkeit lege ich mir die Console an die rechte Seite. Das geht am schnellsten, indem du auf die Titelzeile der Console klickst und mit gedrückter Maustaste zum rechten Fensterrand bewegst. Wenn sie rechts andockt, lässt du einfach die Maustaste los. Dann kannst du die breite noch einstellen.)
  3. das Beispiel-Skript zeigt alle im Emulator nutzbaren Kamera-Funktionen an (hier 146)
Beispiel 2, ein Lua-Skript lokal mit Keypad ausführen
  1. über das Menü Datei->Öffnen das Skript draw_test.lua
  2. über das Menü Makro->CHDK LUA local keypad das Skript ausführen
    (die Satuszeile zeigt links den Zustand des Skriptes und daneben mögliche Eingabezustände)
  3. bei > wait_click < drücke, wie auf der Kamera, eine Taste und das Skript wird beendet

Gruß rudi
Benutzeravatar
rudi
CHDK-Spezialist
CHDK-Spezialist
 
Beiträge: 510
Registriert: 11.09.2009, 11:27
Kamera(s): A590IS_101B, SX260_100B

Re: Skripte unter Windows testen

Beitragvon msl » 10.06.2015, 15:50

Hallo Skripter,

vielen Dank für die nochmalige ausführliche Installationsbeschreibung. Damit sollte alle Fragen geklärt sein.

An der Stelle möchte ich mich noch einmal ausdrücklich bei rudi dafür bedanken, dass er das Projekt zielführend in die Hand genommen hat. Aus der ursprünglichen Idee, bei einem lokalen Skripttest auch Tastatureingaben der Kamera zu simulieren, ist binnen Wochen eine so umfangreiche Skriptsimulation entstanden, die die Skriptentwicklung um ein Vielfaches erleichtert.

Das Projekt unterstützt mittlerweile 149 CHDK-Skriptfunktionen. 32 Funktionen fehlen noch. Sie sind teils nicht unbedingt wichtig und teils nicht wirklich umsetzbar, weil spezielle Rückgabeparameter der Kamera fehlen.

Alle fototechnischen Werte werden anhand von Vorgabewerten simuliert. Diese lassen sich in der Datei emu.lua individuell anpassen. Bestimmte Vorgänge wie z.B. alle Fokuseinstellungen lassen sich nicht wirklich simulieren. Hier erfolgt nur eine entsprechende Rückmeldung, dass die entsprechende Skriptfunktion abgearbeitet wurde. Für bestimmte zu erwartende Werte muss man die Vorgabewerte ebenfalls in emu.lua anpassen.

Die Vorgabewerte in emu.lua sind in einer Tabelle zusammengefasst und umfangreich dokumentiert. Es sollte also kein Problem sein, diese Werte anzupassen.

Und nun viel Spaß beim Experimentieren.

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: Skripte unter Windows testen

Beitragvon Werner_O » 10.06.2015, 17:48

Hallo rudi,

vielen lieben Dank für Deine ausführlichen neuen Installationsanleitungen zu diesem Thema :-)

Da ich aber bereits seit Windows-95-Zeiten den Windows-Explorer total umgehe und stattdessen immer das Programm "Total Commander" verwende (ein Windows-Pendant zum ehemaligen DOS-Norton-Commander) machen Deine Bedienhinweise zum Windows-Explorer für mich (und vermutlich auch für viele andere Leute) m.E. nicht wirklich Sinn.

Anstelle von Bedienhilfen für den Windows-Explorer wäre es darum m.E. sinnvoller, die seit hostlua_V3.0.zip möglichen (oder sogar nötigen?) Änderungen im Verzeichnis/Datei-System klar zu benennen.
Mein Notepad++ Portable liegt bspw. aktuell auf F:\Meine Dateien\Notepad++ Portable\, der Ordner "hostlua" dagegen in F:\Meine Dateien\CHDK\hostlua\ und das Programm chdkptp.exe im Ordner F:\Meine Dateien\CHDK\PTP\

Anscheinend muß die Installation von hostlua_V3.0 zudem in einer geordneten Reihenfolge stattfinden, wobei Notepad++ Portable möglicherweise gar in einem neuen Ordner neu installiert werden muß, auch wenn es bereits installiert war.

Sorry, dass ich jetzt rummeckere :-(
Meine anfangs reine Tester-Funktion in diesem Forum habe ich aber bis heute nicht aufgegeben und melde weiterhin alles, was mir irgendwie suspekt erscheint. Bspw. müßten m.E. auch die Dateien "liesmich-txt" und "readme.txt" in "hostlua_V3.0.zip" überarbeitet werden.

Last not least:
Ich will hier weder rudi noch msl an die Karre pissen - ganz im Gegenteil!
Dieses Projekt ist überaus bemerkenswert und für Lua-Entwickler ein Segen - ich freue mich schon auf den Tag, eigene Skripte selber mal "virtuell" ausprobieren zu können. Was die beiden zusammen geleistet haben ist überaus bemerkenswert!
Meine geäußerte Kritik betrifft nur, dass die bisherigen Installationshinweise m.E. noch nicht optimal sind, weil ich sie selber nicht kapieren kann, obwohl ich viel PC-Erfahrung habe und mein erster PC noch ein 486DX 66 MHz war (mit damals sehr stolzen 8MB RAM).

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: Skripte unter Windows testen

Beitragvon rudi » 10.06.2015, 18:29

Hallo Werner_O,

Werner_O hat geschrieben:Da ich aber bereits seit Windows-95-Zeiten den Windows-Explorer total umgehe und stattdessen immer das Programm "Total Commander" verwende (ein Windows-Pendant zum ehemaligen DOS-Norton-Commander) machen Deine Bedienhinweise zum Windows-Explorer für mich (und vermutlich auch für viele andere Leute) m.E. nicht wirklich Sinn.
Ich finde eine Anleitung mit dem kleinsten gemeinsamen Nenner, also Betriebssystem eigene Programme, flexibler. Versuch es doch einfach mal.

Werner_O hat geschrieben:Anstelle von Bedienhilfen für den Windows-Explorer wäre es darum m.E. sinnvoller, die seit hostlua_V3.0.zip möglichen (oder sogar nötigen?) Änderungen im Verzeichnis/Datei-System klar zu benennen.
Ich bin der Meinung, so steht es in liesmich.txt. Da der genaue Speicherort nutzerabhängig ist, sind alle Pfade relativ zum Speicherort angegeben.
Ein Beispiel:
  • Speicherort: F:\Werner_O
    PLUS
  • liesmich.txt: hostlua\plugin_NppExec
    ERGIBT DEN PFAD
  • F:\Werner_O\hostlua\plugin_NppExec

Werner_O hat geschrieben:Mein Notepad++ Portable liegt bspw. aktuell auf F:\Meine Dateien\Notepad++ Portable\, der Ordner "hostlua" dagegen in F:\Meine Dateien\CHDK\hostlua\ und das Programm chdkptp.exe im Ordner F:\Meine Dateien\CHDK\PTP\
Deine Pfadnamen werden ein Problem sein. Die Hauptlast des Projektes wird über Batchdateien erledigt und mögen keine Pfadnamen mit Leerzeichen oder Umlauten. DOS und Win3.1 lassen grüßen.

Gruß rudi
Benutzeravatar
rudi
CHDK-Spezialist
CHDK-Spezialist
 
Beiträge: 510
Registriert: 11.09.2009, 11:27
Kamera(s): A590IS_101B, SX260_100B

Re: Skripte unter Windows testen

Beitragvon Werner_O » 10.06.2015, 20:00

Hallo rudi,

Deine Pfadnamen werden ein Problem sein. Die Hauptlast des Projektes wird über Batchdateien erledigt und mögen keine Pfadnamen mit Leerzeichen oder Umlauten. DOS und Win3.1 lassen grüßen.

Danke für diese Info!
Warum wird bei diesem Projekt aber nicht von vorneherein darauf hingewewiesen, dass Leerzeichen oder Umlaute in Verzeichnispfaden zu kritischen Problemen führen und das Projekt dann nicht mehr funktioniert?
Das Problem ist ja anscheinend bekannt, trotzdem wird aber darauf bisher nicht explizit hingewiesen und ich musste erst in diese Falle laufen, damit diese Problematik jetzt an dieser Stelle vermutlich erstmals publik wird.

Ich finde eine Anleitung mit dem kleinsten gemeinsamen Nenner, also Betriebssystem eigene Programme, flexibler.

Sorry, aber eine Bedienungsanleitung für den Windows-Explorer ist für die Installation der nötigen Dateien m.E. total überflüssig. Die Leute, die sich auf dieses Projekt einlassen, werden darauf wahrscheinlich verzichten können und brauchen nur genaue Ortsangaben für die nötigen Verzeichnisse/Dateien.

Last not least möchte ich noch auf folgendes Problem hinweisen:
1) Es ist die eine Sache, über besonders viel Wissen zu verfügen:
Du und auch msl sind auf dieses Thema bezogen ja besonders kompetent und ermöglichen für andere CHDK-User tolle neue Möglichkeiten.
2) Es ist aber die andere Sache, sein Wissen in diesem Forum möglichst effektiv an andere CHDK-User weiterzugeben:
Dazu habt ihr euch zwar auch bisher verdammt viel Mühe gemacht, aber das reicht m.E. noch nicht und ihr müsstet mindestens einen Brikett zulegen damit ein "Schuh mit Hut" daraus wird.
3) Als Maßstab dafür sehe ich mich momentan selber - wenn selbst ich sowas nicht kapiere, liegen vermutlich Verständigungsprobleme vor, die unbedingt beseitigt werden müssen. Eine Aktualisierung der offiziellen Installationsanleitung ist darum m.E. unerlässlich.

Sorry für meine wie so oft krasse Kritik - als "CHDK-Tester" muß ich aber die gefundenen Probleme beim Namen nennen.

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: Skripte unter Windows testen

Beitragvon msl » 20.08.2015, 11:03

Hallo Bastler,

nach dem das neue Hostlua-Paket mit virtueller grafischer Ausgabe und virtuellen Kameratasten einige Wochen störungsfrei bei mir läuft, kann ich sagen, dass damit ein Quantensprung bei den Hilfsprogrammen zur Skriptentwicklung vollzogen wurde.

Wenn man die von Microsoft auferlegten Hürden bei der Installation und Einrichtung von Notepad++ und dem CHDK-Hostlua-Paket überwunden hat, erhält man eine komfortable Entwickleroberfläche für CHDK-Lua-Skripte.

An der Stelle sei noch einmal vermerkt, dass man bei der Einrichtung von komplexen CMD-Paketen auf Windows-Rechnern unbedingt vermeiden sollte, Ordnernamen mit Leer- und/oder Sonderzeichen zu verwenden. CMD/Batch-Dateien können damit nicht umgehen. Das bedeutet, die Einrichtung unter "eigene Dateien" ist nicht geeignet.

Meisten sind Windows-PCs mit einer Systempartition und einer oder mehrerer Arbeitspartitionen ausgestattet. Ich habe beispielsweise unter meiner Arbeitspartition D eine Ordner CHDK eingerichtet. In diesem Ordner befinden sich alle! Hilfsprogramme und diverses Material im Zusammenhang mit CHDK (CHDK-Shell, ptpCamGui, chdkptp, hostlua, alle möglichen CHDK-Einrichtungsprogramme für Testzwecke sowie die Skriptsammlung und Dokumentationen). Notepad++ nutze ich als installierte Version. Der Editor kann aber auch als portables Programm eingerichtet werden. Für die Quellcode-Verwaltung ist dann noch Tortoise installiert, was aber für viele uninteressant sein dürfte.

Wenn man die CHDK-PTP-Funktionen nutzen möchte, ist dann noch die Installation des notwendigen USB-Treiber erforderlich. Dieser ist aber im Gegensatz zu vielen anderen Treibern recht nutzerfreundlich organisiert.

Bei Beachtung einiger Grundregeln ist es also kein Problem, die diversen CHDK-Hilfsprogramme wie eben Hostlua zu nutzen.

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: Skripte unter Windows testen

Beitragvon c_joerg » 24.08.2015, 12:51

nach dem das neue Hostlua-Paket mit virtueller grafischer Ausgabe und virtuellen Kameratasten einige Wochen störungsfrei bei mir läuft, kann ich sagen, dass damit ein Quantensprung bei den Hilfsprogrammen zur Skriptentwicklung vollzogen wurde.


Dem kann ich absolute nur zustimmen und nochmal ein großen Dank für die Realisierung aussprechen…

Grüße Jörg
c_joerg
CHDK-Begeisterter
CHDK-Begeisterter
 
Beiträge: 456
Registriert: 14.08.2014, 06:50
Wohnort: Bremen
Kamera(s): S110 103a
S45
2 * G1X 101a, 100e
G9xII 1.00c,
SX230 101a
SX50hs 100c
EOS M3 101a
EOS M100 100a

Re: Skripte unter Windows testen

Beitragvon msl » 26.09.2015, 09:52

Hallo,

das hostlua-Paket enthält im Ordner 'bin' zwei Lua-Dateien, die für die Emulation der kameraspezifischen Lua-Funktionen zuständig sind, emu.lua und camera_funcs.lua. Die verwendeten virtuellen Werte entsprechen keiner spezifischen Kamera, um ein möglichst neutrales Verhalten zu simulieren.

Manchmal ist es aber notwendig, bestimmte Werte für die eigene Kamera anzupassen. Das kann man in der Datei emu.lua erledigen. Dort gibt es einen Abschnitt 'camera_state{}'. In diesem lassen sich die Vorgaben anpassen:
Syntax: [ Download ] [ Verstecken ]
Benutze Lua Syntax Highlighting
camera_state={
    tick_count      = 0,                -- sleep, tick count
    exp_count       = 1000,             -- current image number (IMG_1000.JPG)
    image_dir       = "A/DCIM/100CANON",-- path of the recent image dir
    jpg_count       = 1000,             -- jpg image counter
    raw             = 0,                -- raw status
    raw_count       = 100,              -- raw image counter
    raw_nr          = 0,                -- noise reduction status (0 = Auto 1 = OFF, 2 = ON)
    mem             = {},               -- peek and poke
    av96            = 320,              -- F3.2
    bv96            = 388,              -- tv96+av96-sv96
    tv96            = 576,              -- 1/60s
    sv96            = 508,              -- ISO200
    iso_market      = 200,              -- Canon ISO value
    iso_mode        = 2,                -- number of ISO mode
    ev96            = 0,                -- exposure correction (APEX96)
    nd              = 0,                -- ND filter status
    disk_size       = 1024*1024*1024,   -- value in byte
    free_disk_space = 1000000,          -- value in byte
    propset         = 4,                -- propset 1 - 6
    rec             = true,             -- status of capture mode (false = play mode)
    vid             = false,            -- status of video mode
    mode            = 258,              -- P mode
    drive           = 0,                -- 0 = single 1 = continuous 2 = timer (on Digic 2) 3 = timer (on Digic 3,4,5)
    video_button    = true,             -- camera has extra video button
    movie_state     = 0,                -- 0 or 1 = movie recording is stopped or paused, 4 = recording, 5 or 6 = recording has stopped, writing movie to SD card
    flash           = 0,                -- 0 = flash auto, 1 = flash on, 2 = flash off
    coc             = 5,                -- coc x 1000
    focus           = 2000,             -- subject distance
    sd_over_modes   = 0x04,             -- 0x01 AutoFocus mode, 0x02  AFL active, 0x04  MF active
    f_mode          = 0,                -- focus mode, 0=auto, 1=MF, 3=inf., 4=macro, 5=supermacro
    focus_state     = 1,                -- focus ok = 1, not ok = 0, MF < 0
    focus_ok        = false,            -- can be true after release/click "shoot_half"
    zoom_steps      = 15,               -- maximum zoomsteps
    zoom            = 0,                -- zoom position
    IS_mode         = 0,                -- 0 = continuous, 1 or 2 = shoot only, 2 or 3 = panning, 3 or 4 = off
    user_av_id      = 1,                -- av id for Av and M mode
    user_tv_id      = 1,                -- tv id for Tv and M mode
    histo_range     = 100,              -- return value of a histogram range
    autostarted     = 0,                -- 0 = false, 1 = true
    autostart       = 0,                -- autostart status (0 = off, 1 = on, 2 = once)
    alt_mode        = true,             -- alte mode status
    usb_sync        = false,            -- usb sync mode for mulitcam sync
    yield_count     = 25,               -- maximum number of lua VM instructions
    yield_ms        = 10,               -- maximum number of milliseconds
    props           = {},               -- propcase values
    title_line      = 1,                -- CHDK line 1 = on, 0 = off
    remote_timing   = 0,                -- value for high precision USB remote timing
    camera_os       = "dryos",          -- camera OS (vxworks or dryos)
    platformid      = 0xDEADBEEF,       -- platform ID of the camera
    battmax         = 3000,             -- maximum battery value
    battmin         = 2300,             -- minimum battery value
    screen_width    = 360,              -- LCD screen width (360 or 480 px)
    screen_height   = 240               -- LCD screen heigth
}
Erstellt in 0.020 Sekunden, mit GeSHi 1.0.8.9
Die meisten Angaben sind selbsterklärend. Unbekannte Werte sollte man unberührt lassen.

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

Vorherige

Zurück zu Code-Ecke

Wer ist online?

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