[Lua] Skripte unter Windows testen

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

Re: Skripte unter Windows testen

Beitragvon rudi » 05.04.2015, 12:28

Hallo LUA-Skripter,

CHDK 1.4 hat eine menge Veränderungen gebracht. Es ist höchste Zeit das hostlua-Paket anzupassen.

Änderungen in Version 2.5:
  • Anpassung für CHDK 1.4
  • Unterstützung für CHDK 1.3 mit wrap13.lua (automatisch in /bin/emu.lua und /bin/lremote.lua)
  • /bin/camera_funcs.lua: on_off_value eingeführt, Rückgabewerte selektiv auf Boolean umgesetzt, wrap13.lua-relevante Funktionen funktionslos hinzugefügt
  • vereinfachte Anzeige bei LUA-Fehlermeldungen
  • CHDK-hostlua Dateien /bin/lua.exe, /bin/luac.exe neu erzeugt

Datei im ersten Post.

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 c_joerg » 09.04.2015, 07:15

Hallo Rudi,

wenn ich die camera_funcs.lua aus hostlua_V2.5.zip nehme, dann fehlen jetzt einige Funktionen,
die vorher schon mal da waren:

get_display_mode()
tv96_to_usec(n)
av96_to_aperture(n)
sv96_to_iso(n)
set_lcd_display(n)
shot_histo_write_to_file()

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 » 09.04.2015, 11:38

Hallo,

ich würde mal behaupten, das sind alles Funktionen, die du selbst hinzugefügt hattest. Das musst du dann bei neuen Version nachholen.

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 » 09.04.2015, 13:43

Hallo msl,

jetzt wo du es sagst, ich dachte, die wären in deiner Version schon enthalten.
Wäre aber sicherlich sinnvoll, wenn Rudi sie auch aufnehmen würde…

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 cpr » 12.05.2015, 15:05

Ich beschäftige mich erst seit sehr kurzer Zeit mit dem scripting unter CHDK. Mit Notepad++ und hostlua kann ich bereits einfache Scripte local auf dem Windows-PC testen.

Gibt es eine copy&paste-Lösung, wie ich auch aperture_to_av96() lokal testen kann?
cpr
CHDK-Einsteiger
CHDK-Einsteiger
 
Beiträge: 4
Registriert: 12.05.2015, 14:56
Kamera(s): G1X

Re: Skripte unter Windows testen

Beitragvon c_joerg » 12.05.2015, 17:40

Hallo,
wenn es dir nur darum geht, dass die Funktion vorhanden ist, dann kannst du einfach

Code: Alles auswählen
function camera_funcs.aperture_to_av96(x)
  return x
end


in
\\hostlua\bin\camera_funcs.lua

ergänzen. Ich benutze die Funktion nur, um meine Daten zu loggen.
Das heißt, bei der Simulation erwarte ich nicht, das sie richtige Ergebnisse liefert.

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 cpr » 12.05.2015, 20:37

OK, vielen Dank!

Parallel dazu habe ich jetzt doch ein passendes USB-Kabel gefunden und kann auch den remote-Modus testen.
cpr
CHDK-Einsteiger
CHDK-Einsteiger
 
Beiträge: 4
Registriert: 12.05.2015, 14:56
Kamera(s): G1X

Re: Skripte unter Windows testen

Beitragvon msl » 14.05.2015, 20:37

Hallo,
c_joerg hat geschrieben: Ich benutze die Funktion nur, um meine Daten zu loggen. Das heißt, bei der Simulation erwarte ich nicht, das sie richtige Ergebnisse liefert.
Das könnte man aber bei dieser Funktion relativ einfach organisieren, indem man die zu erwartenden Werte in einer Tabelle definiert.
Syntax: [ Download ] [ Verstecken ]
Benutze Lua Syntax Highlighting
local aperture = {2000, 2200, 2500, 2800, 3200, 3500, 4000, 4500, 5000, 5600, 6300, 7100, 8000, 9000, 10000, 11000, 13000, 14000, 16000}
local av96 = {200, 224, 256, 288, 320, 352, 384, 416, 448, 480, 512, 544, 576, 608, 640, 672, 704, 736, 768}

function camera_funcs.aperture_to_av96(val)
     local i = 1
     while i <= #aperture and val > aperture[i] do i=i+1 end
     return av96[i]
end

function camera_funcs.av96_to_aperture(val)
     local i = 1
     while i <= #av96 and val > av96[i] do i=i+1 end
     return aperture[i]
end
Erstellt in 0.004 Sekunden, mit GeSHi 1.0.8.9


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 » 15.05.2015, 10:00

Hallo msl,

stimmt, dabei ist mir aufgefallen, dass ich aperture_to_av96 gar nicht nutze sonder nur die andere Richtung av96_to_aperture. Bei dieser, wie auch bei den oben aufgeführten Funktionen, geht es mir bei der Simulation eigentlich nur darum, dass die Simulation durchläuft, und nicht wegen fehlender Funktionen anhält.

Wäre jetzt wohl sinnvoll, deinen Code gleich in camera_funcs.lua zu kopieren … ;)

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 » 31.05.2015, 09:48

c_joerg hat geschrieben:Wäre jetzt wohl sinnvoll, deinen Code gleich in camera_funcs.lua zu kopieren … ;)


Hallo Jörg,

ist zwar schon eine Weile her. Das Anliegen ist aber in Arbeit. Gibt es weitere wichtige Funktionen, die bei der Simulation fehlen?

Eine neue Version des Paketes für die Arbeit Notepad++ ist in Arbeit. Diese wird gravierende Neuerungen mit sich bringen, die den lokalen Skripttest deutlich realistischer gestaltet.

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 » 01.06.2015, 07:48

Hallo msl,


ist zwar schon eine Weile her


Was lange braucht wird meistens gut... :)

Gibt es weitere wichtige Funktionen, die bei der Simulation fehlen?


Die bereits oben aufgeführten

get_display_mode()
tv96_to_usec(n)
av96_to_aperture(n)
sv96_to_iso(n)
set_lcd_display(n)
shot_histo_write_to_file()

und die Umkehrfunktionen für xx96_to_xxx.

Aber wie ich schon erwähnt hatte, kommt es mir bei diesen Funktionen im Wesentlichen nur darauf an, dass sie vorhanden sind. Wenn sie dann auch noch ein richtiges Ergebnis liefern, dann ist das natürlich nice to have.

Die Umsetzung von ‚hookutil‘ und ‚rawoplib‘ geht sicherlich zu weit. So etwas sollt dann vermutlich unter Zuhilfenahme von chdkptp erfolgen. Leider fehlte mir bisher die Zeit, mich näher mit chdkptp zu beschäftigen.

Diese wird gravierende Neuerungen mit sich bringen


Da bin ich dann mal gespannt….

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 » 01.06.2015, 09:47

Hallo Jörg,

die Umrechnungsfunktionen sind allesamt für die neue Version mit realistischen Umrechnungsfunktionen fertig. Die neuen Hook-Funktionen habe ich als reine Dummy-Funktionen vorgesehen, damit Skripte wenigstens auf Syntaxfehler getestet werden können.

get_display_mode() ist keine Lua-Funktion! Sie steht nur für uBASIC bereit. In Lua wird das per Propertycases geregelt.

shot_histo_write_to_file() hat als Lua-Funktion eher einen Sonderstatus. Eine Dummy-Funktion ist denkbar.

Funktionen wie set_lcd_display() werden zukünftig ganz speziell behandelt. Lass dich überraschen ...

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 rudi » 07.06.2015, 16:54

Hallo Skripter,

die Version 3.0 ist da!
msl hatte die Idee einer virtuellen Tastatur um Skripte lokal besser testen zu können.
Da das hostlua-Projekt nur unter Windows arbeitet, haben wir uns für AutoIT entschieden. Gemeinsam wurde diese Idee Wirklichkeit und bekam den Namen "keypad". Dem Notepad++ haben wir dafür ein neues Makro "CHDK LUA local keypad" spendiert.

Mittlerweile ist daraus ein Emulator für Bedienung und Anzeige geworden.

draw_test_keypad.png

Die Kommunikation zwischen der Oberfläche und dem LUA-Skript erfolgt über die Notepad++ Console.

Derzeit werden 29 Funktionen verarbeitet:
cls(), console_redraw(), draw_clear(), draw_ellipse(), draw_ellipse_filled(), draw_line(), draw_pixel(), draw_rect(), draw_rect_filled(), draw_string(), file_browser(), get_draw_title_line(), get_gui_screen_height(), get_gui_screen_width(), get_tick_count(), get_usb_power(), is_key(), is_pressed(), print(),
print_screen(), set_backlight(), set_console_autoredraw(), set_console_layout(), set_draw_title_line(), set_exit_key(), set_lcd_display(), sleep(), textbox(), wait_click()


Einstellungen können im Kontext-Menü geändert werden und bleiben durch die ini-Datei erhalten:
  • "LCD Width"
    • "LCD 360 px"
    • "LCD 480 px"
  • "Code Page"
    • "1250"
    • "1251"
    • "1252"
    • "1253"
    • "1254"
    • "1257"
  • "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)
  • "Exit"

Diese Tastenkürzel können benutzt werden:
    [STRG]+[UP]Taste UP
    [STRG]+[DOWN]Taste DOWN
    [STRG]+[RIGHT]Taste RIGHT
    [STRG]+[LEFT]Taste LEFT
    [STRG]+[ENTER]Taste FUNC/SET
    [STRG]+[h]Taste SHOOT HALF
    [STRG]+[s]Taste SHOOT FULL
    [STRG]+[v]Taste VIDEO
    [STRG]+[+]Taste ZOOM IN
    [STRG]+[-]Taste ZOOM OUT
    [STRG]+[m]Taste MENU
    [STRG]+[d]Taste DISP
    [STRG]+[1]Taste RC1
    [STRG]+[2]Taste RC2
    [STRG]+[3]Taste RC3
    [STRG]+[4]Taste RC4
    [F2]wechsle LCD-Breite
    [F3]LCD-Breite 360 px
    [F4]LCD-Breite 480 px
    [ESC]EXIT - Abbruch des laufenden Skripts und beenden von keypad

Was sonst noch?
Großen Dank an msl!
Nicht nur für die unermüdlichen Tests, sondern auch für Erweiterung der Emulator-Skripte emu.lua und camera_funcs.lua. Es ist zusätzlich zu neuen Funktionen auch Funktionalität hinzugekommen.

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 c_joerg » 09.06.2015, 07:09

Hallo rudi, Hallo msl,

wirklich super Arbeit. Ich kann mir gut vorstellen, wieviel Schweiß euch das gekostet hat.
Macht richtig Spaß damit zu arbeiten…

Gibt es eigentlich eine einfache Möglichkeit, dass sich das keypad nach Beendigung des Scripts nicht gleich automatisch schließt?

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.

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 Werner_O » 09.06.2015, 15:17

Hallo zusammen,

ich finde dieses Projekt echt klasse und ich versuche auch schon seit einiger Zeit (bisher noch erfolglos), meine Skripte unter Notepad++ Portable auf diese Weise virtuell am Windows-PC auszuprobieren.

Die bisherigen Anleitungen zur Installation der nötigen Pakete (z.B. das neue hostlua_V3.0.zip) sind m.E. bisher nicht ausführlich genug für Leute wie mich, welche sich als Nichtprogrammierer erst mühsam in dieses Thema einarbeiten müssen.
Bspw. soll ja m.W. das Ausführen von ..hostlua\plugin_NppExec\create_config.cmd zu einem Unterordner mit einer/mehreren Datei(en) führen, welche dann in einen speziellen Unterordner von Notepad++ Portable kopiert werden sollen.
Bei mir tut sich dann aber rein gar nichts und ich finde keine neuen zu kopierenden Ordner/Dateien.

Ein weiteres Problem ist bereits das Öffnen einer Konsole in Notepad++:
In der Hilfedatei von Notepad++ Portable kann ich dazu anscheinend nicht "nach Name" suchen, und Recherchen dazu im Internet waren ebenfalls nicht hilfreich. Auch hier stehe ich völlig auf dem Schlauch.

Insofern würde ich mir eine deutliche präzisere Dokumentation/Hilfedateien wünschen, damir auch ich irgendwann mal meine Skripte unter Windows testen kann. Momentan bin ich davon jedenfalls noch meilenweit entfernt...

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

VorherigeNächste

Zurück zu Code-Ecke

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast

cron