Schreibe ubasic skript mit der kamera

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

Schreibe ubasic skript mit der kamera

Beitragvon silas » 11.11.2008, 16:49

Ich bin gerade daran ein skript wo man ein anderen script damit schreiben kann.
Jezt will ich wissen ob jemand mithelfen will das skript weiter entwickeln ;) .
Jezt gecht es zum beispiel nicht längere scripte alls eine reie zu schreiben.
Die skripts wo gescreiben werden werden alls LOG_0001.TXT gespart (in dem logs folder).
Hier kommt noch das skript.
Syntax: [ Download ] [ Verstecken ]
Benutze Lua Syntax Highlighting
--[[

@title char input

@param f key delay

@default f 200

]]




key_delay = f

output=""



function button()

 local x = 0

 repeat

 wait_click(key_delay)

  if is_pressed "remote" then

   key = "REMOTE"

   x = 1

  end

  if is_pressed "set" then

   key = "SET"

   x = 1

  end

  if is_pressed "erase" then

   key = "ERASE"

   x = 1

  end

  if is_pressed "display" then

   key = "DISP."

   x = 1

  end

  if is_pressed "menu" then

   key = "MENU"

   x = 1

  end

  if is_pressed "up" then

   key = "UP"

   x = 1

  end

  if is_pressed "down" then

   key = "DOWN"

   x = 1

  end

  if is_pressed "left" then

   key = "LEFT"

   x = 1

  end

  if is_pressed "right" then

   key = "RIGHT"

   x = 1

  end

  if is_pressed "zoom_in" then

   key = "ZOOM_IN"

   x = 1

  end

  if is_pressed "zoom_out" then

   key = "ZOOM_OUT"

   x = 1

  end

 until  x == 1

 set_led (8,1)

 sleep (10)

 set_led (8,0)

end



function tabToStr()

    output=table.concat(word)

end



function input()



    abc_lower = {"a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p",

                                "q","r","s","t","u","v","w","x","y","z"}

    abc_upper = {"A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P",

                                "Q","R","S","T","U","V","W","X","Y","Z"}

    abc_spec = {"0","1","2","3","4","5","6","7","8","9",",",".","-",";",":","_",

                            "/",".JPG",".CRW",".CR2",".THM",".WAV",".LUA",".BAS",".TXT"," "}

    word = {}

    a=0

    b=0

    actChar=""

    repeat

        print("[<-][->][SET] [+/-][MENU]")

        print("[ZOOM in/out]  [UP][DOWN]")

        button()

    cls()

    if key == "RIGHT" then a=a+1 end

    if key == "LEFT" then a=a-1 end

    if key == "UP" then b=b+1 end

    if key == "DOWN" then a=1 end

    if key == "ZOOM_IN" then a=a+5 end

    if key == "ZOOM_OUT" then a=a-5 end

    if a >= 27 then a=1 end

    if a <= 0  then a=26 end

    if b>=3 then b=0 end

    if b==0 then

            actChar=abc_lower[a]

            char_info="lower case"

        end

        if b==1 then

            actChar=abc_upper[a]

            char_info="upper case"

        end

        if b==2 then

            actChar=abc_spec[a]

            char_info="special char"

        end

        print(char_info..": "..actChar)

    if key == "SET" then table.insert(word,actChar) end

    if key == "ERASE" then table.remove(word) end

    tabToStr()

    print("input: "..output)

    print (" ")

  until key == "MENU"

end



function make_dir(dirname)

    os.mkdir(dirname)

end





x=0

repeat

  input()

  cls()

  print("INPUT: "..output)

  print("[SET]  new input")

  print("[DISP] make dir and stop")

  print("[MENU] stop")

  button()

  if key == "SET" then cls() end

  if key == "DISP." then

      dir = "A/"..output

      make_dir(dir)

      print "ready"

      sleep(3000)

      x=1

  end

  if key == "MENU" then

      cls ()

      print_screen (001)

      print(""..output)

      sleep(3000)

      x=1

  end

until x==1



--[[



***possible commands***



function make_dir(dirname)

    os.mkdir(dirname)

end



function delete_dir(dirname)

    os.remove(dirname)

end



function rename_file(old_filename, new_filename)

    os.rename(old_filename, new_filename)

end



function delete_file(filename)

    os.remove(filename)

end



***missing commands***



-os.list_dir



]]


 
Erstellt in 0.029 Sekunden, mit GeSHi 1.0.8.9
Dateianhänge
scriptwriting.lua
(2.96 KiB) 246-mal heruntergeladen
a550,IXUS 80IS (1.01a)
aktuelle version
Flickr
Benutzeravatar
silas
CHDK-Begeisterter
CHDK-Begeisterter
 
Beiträge: 150
Registriert: 23.04.2008, 13:11
Wohnort: Schweden

Beitragvon msl » 12.11.2008, 22:30

Hallo silas,

ich glaube nicht, dass über diese Eingabemöglichkeit viele Lust hätten, ganze Skripte zuschreiben. Das wird wohl eine Aufgabe für den PC bleiben.

In erster Linie stelle ich mir mit dieser Eingabemöglichkeit ein Datei-Handling vor, Ordner anlegen, Dateien umbenennen usw.. Vielleicht könnte man diese Form auch für Kurznotizen verwenden.

Außerdem funktioniert es so nicht. Die Log-Datei wird bei jeder Eingabe neu geschrieben.Außerdem kann man dann nicht zwischen der Ausgabe in Log-Datei und der Skript-Konsole unterscheiden.

Hier muss eine andere Lösung her. Diese ist in der IO-Biblithek von Lua zu suchen. Mit dieser Bibliothek stehen Befehle für das Öffnen von Dateien, Lesen und Schreiben in Dateien sowie vieles mehr zur Verfügung. Man müßte dann eine Datei anlegen und Inhalte mit mit io.write oder file:write in die Datei schreiben. Genaueres dazu gibt es hier und hier nachzulesen.

Sinnvoll wäre es, dazu allgemeine Funktionsbibliotheken anzulegen, auf die Skripte per "require" zugreifen. Dann muss man das Rad nicht laufend neu erfinden.

Nebenbei sollte man nicht vergessen, dass alle Befehle, die auf das Dateisystem zugreifen, bei unsachgemäßer Anwendung zu Datenverlusten führen können.

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 Paparazzi » 13.11.2008, 09:53

Hallo
msl hat geschrieben:ich glaube nicht, dass über diese Eingabemöglichkeit viele Lust hätten, ganze Skripte zuschreiben.

Ganze Skripte nicht, aber schnell mal unterwegs einen kleinen Fehler in einem Skript verbessern zu können, wäre schon eine feine Sache. Oft sind das nur ganz wenige Zeichen, um die es in solchen Fällen geht.
Also generell finde ich die Idee, Skripte in der Kamera selbst verändern zu können, sehr interessant, zum Schreiben dergleichen natürlich nicht.

Gruß
Der Paparazzi
A550 und SX10IS, beide mit aktuellen CHDK-Versionen
Paparazzi
CHDK-Begeisterter
CHDK-Begeisterter
 
Beiträge: 70
Registriert: 11.04.2008, 08:35

Beitragvon PhyrePhoX » 13.11.2008, 10:06

das liesse sich alles gut mit einer "richtigen" tastatur realisieren, nicht mit einer die in der konsole eingebaut ist. d.h. sie müsste direkt in C geschrieben werden. ich betone immer wieder dass dieser vorgang nicht schwer ist, es muss nur jemand machen.
Benutzeravatar
PhyrePhoX
CHDK-Begeisterter
CHDK-Begeisterter
 
Beiträge: 490
Registriert: 04.07.2008, 21:31

Beitragvon msl » 13.11.2008, 15:13

Paparazzi hat geschrieben:Also generell finde ich die Idee, Skripte in der Kamera selbst verändern zu können, sehr interessant, zum Schreiben dergleichen natürlich nicht.

Ok, Skripte zu editieren, kann ich mir auch noch vorstellen.

Dazu wäre es aber auch nicht schlecht, wenn man die Konsolengröße per Skript oder Menü für solche Fälle verändern könnte. 5 Zeilen mit je 25 Zeichen sind nicht gerade komfortabel.

Wenn man dann noch Zeichen positionieren und invers darstellen könnte, dann wäre schon viel möglich. Über Farbe wollen wir nicht sprechen. Das ist auf Grund der 4 unterschiedlichen Farbtabellen relativ schwierig zu managen.

Über eine Vollbild-Skriptkonsole würden sich sicherlich auch die Spiele-Freaks freuen. :D

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


Zurück zu Code-Ecke

Wer ist online?

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

cron