[Info] CHDK 1.4 - Änderungen und neue Funktion

Allgemeine Informationen zum CHDK für Neueinsteiger

Re: CHDK 1.4 - Änderungen und neue Funktion

Beitragvon Werner_O » 05.04.2015, 13:22

@Jörg:

Sorry - Dein eigentliches Anliegen hatte ich tatsächlich leider nicht verstanden :-(

@msl:

Gerade der neue alternative Skriptkopf soll die rudimentären Möglichkeiten der bisherigen Technik deutlich verbessern.

OK - Deine Argumente dazu sind einleuchtend und ich muß meine Einstellung dazu revidieren.

Das hilft insbesondere, wenn man nicht lineare Werte oder Zeichenketten aus den Parametervorgaben verarbeiten möchte.

Bzgl. Zeichenketten ist mir aufgefallen, dass sich mit CHDK 1.4 im Skriptheader generierte Listen mit Strings von skriptinternen Listen mit Strings dadurch unterscheiden, dass anscheinend keine Leerzeichen (Space) zugelassen werden: Bereits das Einstellen solcher Vorgabewerte im Skriptmenü ist dann nicht mehr sinnvoll möglich.

Ich habe dazu folgendes kurze Lua-Testskript geschrieben, welches die Problematik verdeutlichen soll:
Code: Alles auswählen
--[[
@title Parameterlisten
@chdk_version 1.4
#userstring1=1 "Mein Name 1" {"Name 1" "Name 2" "Name 3"} table
#userstring2=1 "Mein Name 2" {"Name1" "Name2" "Name3"} table
#username=1 "Mein Name 3" {Name1 Name2 Name3} table
]]
print(userstring1)
print(userstring2)
print(tostring(username))

Der Parameter "Mein Name 1" kann dabei nicht korrekt voreingestellt bzw. verarbeitet werden.

Habe ich jetzt etwas übersehen und bin einfach nur zu blöde?
Bis auf weiteres werde ich deshalb jedenfalls in meinen Testskripten zu CHDK 1.4 auf im Skriptheader vordefinierte Listen mit Stringobjekten verzichten.

Liebe Grüße
Werner_O
Zuletzt geändert von Werner_O am 05.04.2015, 14:27, insgesamt 1-mal geändert.
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: CHDK 1.4 - Änderungen und neue Funktion

Beitragvon msl » 05.04.2015, 14:18

Hallo Werner_O,

bei deinem Beispiel gibt es ein paar Syntaxprobleme. Einzig die letzte Version ist gültig:
#username=1 "Mein Name 3" {Name1 Name2 Name3} table
Anführungszeichen und Leerzeichen sind nicht vorgesehen. Das hat etwas mit der Kompatibilität zu @values zu tun. Hier wird das Leerzeichen als Trennzeichen benutzt.

Wenn unbedingt ein Leerzeichen für den späteren Skriptverlauf erwünscht wird, kann man sich mit einem Ersatzzeichen, z.B. ein Unterstrich, behelfen. Dieses lässt sich dann durch eine String-Funktion einfach durch ein Leerzeichen austauschen.

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: CHDK 1.4 - Änderungen und neue Funktion

Beitragvon Werner_O » 05.04.2015, 17:13

Hallo msl,

Vielen Dank für Deine erklärenden Hinweise.

Im Skriptheader eingebundene "Tables" mit eigentlich gewünschten String-Objekten inkl. gewollter Leerzeichen (Space) lassen sich somit anscheinend nur über Tricks realisieren, weil es bisher unter CHDK 1.4 noch keine Möglichkeit gibt, auf diese Weise Tables mit Stringobjekten zu erstellen.

Allerding kann man CHDK 1.4 m.W. und laut msl an dieser Stelle durchaus austricksen:
Statt der Leerzeichen kann dann bspw. im Skriptheader (wie von msl vorgeschlagen) bei gewünschten Texten vorläufig der Unterstrich anstelle eines Leerzeichen verwendet werden (davon gehe ich nachfolgend aus).
Dazu wäre (in Bezug auf die vorherigen Postings mit meinem Testskript) bspw. folgende Zeile im Skriptheader nötig:
Code: Alles auswählen
--[[
@title Parameterlisten
@chdk_version 1.4
#username=1 "Mein Name 3" {Name_1 Name_2 Name_3} table
]]

Jetzt bleiben aber noch zwei Probleme übrig:

1) Die Angaben in der Liste sind noch keine String-Objekte.
Braucht man diese Vorgaben als String lässt sich das leicht lösen über den Lua-Befehl:
Code: Alles auswählen
myname = tostring(username)

In der neuen Variablen "myname" liegt die Vorgabe aus der "table username" nun als String bereit, bspw. "Name_1".

2) Jetzt müssen noch alle Unterstriche durch ein Leerzeichen ersetzt werden.
Dafür gibt es den Lua-Befehl string.gsub, welcher hier ausführlich beschrieben wird.
Ganz so kompliziert, wie es im ersten Moment aussehen mag, ist das aber GsD nicht, weil wir ja a) nur ein Zeichen durch ein anderes austauschen wollen (Space statt bisher Unterstrich) und wir das b) ja auch für sämtliche gefundenen Unterstriche machen wollen.
Dazu reicht darum bereits folgender kleiner Lua-Befehl aus:
Code: Alles auswählen
myname2 = string.gsub(myname, "_", " ")

In der neuen Variablen "myname2" sollten nun sämtliche Unterstriche durch ein Space ersetzt worden sein.

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: CHDK 1.4 - Änderungen und neue Funktion

Beitragvon msl » 05.04.2015, 21:35

Hallo Werner_O,

eigentlich geht es jetzt wieder um Lua-Grundlagen, die wie schon schon an anderer Stelle geschrieben hier nicht unbedingt passend sind.

Wir haben es mit einer Tabelle zu tun, deren Werte anhand von Tabellenname und Index zugeordnet werden. Wenn du nur print(Tabellename) ohne Index verwendest, erhältst du eine Seriennummer, die Lua dieser Tabelle automatisch zugeordnet hat.

Du brauchst dich auch vorläufig nicht darum kümmern, ob der Inhalt einer Variablen einen numerischen oder String-Charakter hat. Das organisiert Lua automatisch.

Das nachstehende Beispiel zeigt das Umwandeln nach dem Vorher-Nachher-Prinzip:
Code: Alles auswählen
--[[
@title Parameterlisten
@chdk_version 1.4
#username=1 "Mein Name 3" {Name_1 Name_2 Name_3} table
]]

for i=1, #username do
    print(username[i])
    username[i]=string.gsub(username[i], "_", " ")
    print(username[i])
end
Mit einer einfachen numerischen Schleife kann man alle Elemente der Tabelle in einem Durchgang bearbeiten. #username ermittelt die Anzahl der Elemente der Tabelle username.

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: CHDK 1.4 - Änderungen und neue Funktion

Beitragvon Werner_O » 11.04.2015, 15:29

Hallo zusammen,

aus gegebenem Anlass (sprich: ich hatte es selber noch nicht kapiert) möchte ich an dieser Stelle noch darauf hinweisen, dass die Variable "username" nach Skriptstart immer noch ein "Table" ist und nicht den gewünschten vorgewählten Inhalt (Name_1, Name_2 oder Name_3) darstellt.

Zur Verwendung des gewünschten vorgewählten Inhaltes in einem Skript braucht man dafür bspw. folgende Code-Zeile:
Code: Alles auswählen
inhalt = username.value

welche den gewählten Vorgabeparameter für "username" (Name_1, Name_2 oder Name_3) aus dem Table extrahiert und in der neuen Variable "inhalt" speichert. Mit dieser Variable kann man dann in einem Skript weiterarbeiten (etwa: print(inhalt) ).

Eine neue Variable "inhalt" muss dabei aber nicht zwangsläufig erstellt werden, da die Verwendung von "username.value" in Befehlen (etwa: print(username.value) ) zum gleichen Ergebnis führt.

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: CHDK 1.4 - Änderungen und neue Funktion

Beitragvon msl » 19.08.2015, 12:33

Hallo,

niemand sollte denken, bei den Entwicklung von CHDK geht es nicht weiter.

Alle im letzten Winter neu eingeführten Funktionen haben sich als stabil erwiesen. Deshalb wird jetzt an der Realisierung der Version 1.4 als stabile Version gearbeitet.

Die ersten DIGIC4+-Kameras (Ixus160, SX530) wurden portiert und in den Quellcode integriert. Testversionen können angefragt werden. Damit ist die Basis für weitere Portierung geschaffen. Allerdings hat sich die DIGIC4+Portierung als große Aufgabe herausgestellt. das war so nicht unbedingt zu erwarten.

Außerdem laufen nun alle notwendigen Vorbereitungen, die schon erfolgreich portierten DIGIC6-Kameras SX270/280 in das CHDK-Quellcode-System zu integrieren.

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: CHDK 1.4 - Änderungen und neue Funktion

Beitragvon msl » 13.09.2015, 10:00

Für die bessere Übersicht im Skriptmenü gibt es für uBASIC und Lua einen weiteren Skriptkopf-Befehl:

@subtitle <optionaler Text>

Damit können die Skriptparameter im Skriptmenü mit Trennlinien und optional mit einer Beschreibung versehen werden. Das ist dann besonders hilfreich, wenn ein Skript sehr viele einstellbare Parameter besitzt.

Außerdem wurde das Benchmark-Modul überarbeitet. U.a. können die Ergebnisse in eine Log-Datei geschrieben werden. Das vereinfacht die Weitergabe der Werte.

Die SX270 und SX280 sind jetzt Bestandteil des offiziellen CHDK-Quellcodes. Damit ist ein weiterer Schritt der DIGIC6-Integration erfolgt.

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: CHDK 1.4 - Änderungen und neue Funktion

Beitragvon msl » 08.11.2015, 11:37

Prinzipiell kann man jetzt bei Kameras mit dem Betriebssystem DryOS 2.3 Revision 31 oder höher Fokuswerte bis 2.000.000 eingeben. Inwiefern diese Werte nutzbar sind, ist in erster Linie von Hardware abhängig. Ist der ein Wert nicht einstellbar, wird automatisch der nächstmögliche Wert eingestellt, meistens -1 für unendlich.

Bei Kameras mit VxWorks oder mit DryOS 2.3 Revision niedriger als 31 ist die Obergrenze nach wie vor 65535.

Hier kann man nachlesen, welche Kamera welches Betriebssystem hat: http://chdk.wikia.com/wiki/P-ID_%28Table%29
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: CHDK 1.4 - Änderungen und neue Funktion

Beitragvon msl » 26.11.2015, 21:54

Wenn nichts dazwischen kommt, wird am 29.11.2015 die CHDK-Version 1.4 zur stabilen Version erklärt.

Damit wird die Bereitstellung der Version 1.3 eingestellt. Die CHDK-Weiterentwicklung erfolgt dann in der neuen Version 1.5.
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: CHDK 1.4 - Änderungen und neue Funktion

Beitragvon msl » 29.11.2015, 13:41

Die Umstellung wurde nun vollzogen.

Als stabile Version gilt nun die Version 1.4.1. Der Unterversionspunkt .1 wurde hinzugefügt, um die Version von der bisherigen Entwicklerversion 1.4 zu unterscheiden.

An dieser Stelle gilt auch der Dank an rudi für die Bereitstellung und Organisation des Autobuild-Servers.

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: CHDK 1.4 - Änderungen und neue Funktion

Beitragvon c_joerg » 30.11.2015, 09:09

Hallo,

ich möchte an dieser Stelle auch noch einmal ein großes Lob aussprechen und mich bei allen bedanken die dazu beigetragen haben, dass die Version 1.4 nun zu einer stabilen Version geworden ist.

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

Vorherige

Zurück zu Grundwissen CHDK

Wer ist online?

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