Fernbedienung für 25 und mehr SX200IS gleichzeitig?

Kamera-Hardware, Selbstbaufernbedienung und sonstige Hardware-Erweiterungen

Beitragvon Karmaschinken » 09.10.2010, 17:59

Wie gesagt, ich kann den Schreibschutz der Karten nicht aktivieren...
50 Stück SX 200 IS
Karmaschinken
CHDK-Begeisterter
CHDK-Begeisterter
 
Beiträge: 114
Registriert: 13.08.2010, 09:24
Wohnort: Woltersdorf
Kamera(s): 50 Stck. SX200IS

Beitragvon Karmaschinken » 09.10.2010, 19:14

Also es ist tatsächlich so, dass meine heute kompilierte Version gestartet wird, wenn ich den Kartenschutz aktiviere. Wenn ich CHDK per Firmwareupdate lade, habe ich die "alte" Version. Wieso ist das so? Liegt CHDK sowohl in der FI2-Datei als auch in der DISKBOOT?

Und wenn ich jetzt meine nunmehr NATIVE_CALL-fähige Variante nach einem CHDK-Autoload starte und dann das videexp.lua starte, dann hängt sich die Kamera auf.... Mist, ich komme nicht voran, weder mit synchroner Mehrfachauslösung noch mit manuellem Videomodus...
50 Stück SX 200 IS
Karmaschinken
CHDK-Begeisterter
CHDK-Begeisterter
 
Beiträge: 114
Registriert: 13.08.2010, 09:24
Wohnort: Woltersdorf
Kamera(s): 50 Stck. SX200IS

Beitragvon msl » 10.10.2010, 12:36

Bei der Kompilierung wird zuerst die Datei diskboot.bin generiert. Diese wird dann benutzt, um die Datei ps.fi2 zu generieren. In der Tat enthalten beide Dateien das CHDK. ps.fi2 besitzt zusätzlich die Fähigkeit, der Kamera vorzugaukeln, es wäre ein Firmware-Update.

Gut, Mehrfachauslösungen kann man auch per Skript organisieren. Einziger Nachteil, es geht nicht so schnell.

Das CALL-Native-Problem scheint ein DIGICIV-Problem zu sein. asm1989 scheint aber der Lösung nahe zu sein - siehe hier ff.

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 Karmaschinken » 10.10.2010, 13:14

Gibst Du mir einen Tip, wie aus der DISKBOOT die FI2 generiert wird? Ich dachte, die Option "OPTION_FI2 in der Shell würde die Generierung der FI2 bewirken, wofür aber diese "Keys" benötigt werden, was auch immer diese Keys sind und wo auch immer man sie herbekommt....
50 Stück SX 200 IS
Karmaschinken
CHDK-Begeisterter
CHDK-Begeisterter
 
Beiträge: 114
Registriert: 13.08.2010, 09:24
Wohnort: Woltersdorf
Kamera(s): 50 Stck. SX200IS

Beitragvon msl » 10.10.2010, 13:35

Du hast Post. :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

Re: Fernbedienung für 25 und mehr SX200IS gleichzeitig?

Beitragvon Karmaschinken » 06.12.2010, 13:12

Hallo, Leute,

das Projekt geht weiter, inzwischen sind die Kameras da, das Trägersystem im Auftrag usw.

Jetzt habe ich eine neue Frage: Ich habe ja für die 50 Kameras einen Fernbedienungsauslöser gebaut, indem ich die Strom führenden USB-Kabel miteinander verbunden und an einen Schalter angeschlossen habe. Spricht eigentlich etwas dagegen, die zwei Datenleitungen der Kameras jeweils über Hubs an Rechner anzuschließen? Sollte so nicht eine Verbindung zu einem Daten sammelnden PC möglich sein? Hat da jemand von Euch Gurus Bedenken, Einwände, Kritik, Panikattacken oder ähnliches?

Danke Euch!
50 Stück SX 200 IS
Karmaschinken
CHDK-Begeisterter
CHDK-Begeisterter
 
Beiträge: 114
Registriert: 13.08.2010, 09:24
Wohnort: Woltersdorf
Kamera(s): 50 Stck. SX200IS

Re: Fernbedienung für 25 und mehr SX200IS gleichzeitig?

Beitragvon Karmaschinken » 05.02.2011, 17:27

Hallo Leute,

ich sitze nunmehr tatsächlich vor 50 Stck. SX200IS, die zum Array verbunden werden sollen.

Jetzt habe ich eine Frage: Ich würde gerne Scripts erstellen, die mir die Kameras in bestimmte Modi versetzen, beispielsweise ein Script, das ISO 200 einstellt, auf 50mm-Äquivalent zoomt sowie 1/160tel bei Blende 5.6 einstellt. Sollte doch gehen, oder?

Ich habe es nun immerhin geschafft, ein erstes Script zu erstellen, das mir vor einem Foto den ISO Wert setzt, aber da habe ich nun eine Frage:

Wenn ich die Kamera per normalem Canon-Menü auf ISO 80 einstelle und dann

set_iso 3
shoot

im Script laufen lasse, dann wird ein Foto mit ISO 200 erstellt. Aber die ISO-Einstellung "fällt" nach dem Foto auf ISO 80 zurück. Wieso das? Wird denn mit set_iso nur der Wert für das folgende Foto eingestellt, aber sozusagen nicht für die Kamera?

Wie kann ich den ISO-Wert auf einen Fixeintrag festlegen?

Danke Euch sehr!
50 Stück SX 200 IS
Karmaschinken
CHDK-Begeisterter
CHDK-Begeisterter
 
Beiträge: 114
Registriert: 13.08.2010, 09:24
Wohnort: Woltersdorf
Kamera(s): 50 Stck. SX200IS

Re: Fernbedienung für 25 und mehr SX200IS gleichzeitig?

Beitragvon msl » 06.02.2011, 11:30

Warum benutzt du nicht die Einstellungen im Menü "Extra-Foto-Einstellungen"? Da kannst du Iso200, 1/60s und Blende 5.6 vorgeben. Sind die Override-Einstellungen aktiviert, kommen diese, egal was eingestellt ist oder von der Kamera berechnet wird, zur Anwendung. Mit etwas Geschick lassen sich die Override-Werte auch per Skript einstellen. dazu müsste man dann die Befehle get/set_config_value anwenden.

Die Brennweiteneinstellung geht nur per Skript (set_zoom). Ob genau 50 mm möglich sind, ist unwahrscheinlich, da nur bestimmte Postionen ja nach Anzahl der verfügbaren Zoom-Schritte möglich sind.

set_iso gilt immer nur für die aktuelle Auslösung. Willst du eine permanente Umschaltung von Iso80 auf Iso200, dann musst die "Tasten-Klick-Technik" im Skript anwenden.

Dein Skript-Beispiel im internationalen Forum ist falsch. Du musst dich entscheiden, Lua oder uBasic. Im übrigen können die Tastatur-Klick-Befehle ("click mf" u.s.w) bei dir nicht funktionieren, weil die SX200 solche Tasten gar nicht besitzt! Diese Funktionen sind auf dem Steuerkreuz integriert. Demzufolge sind up, down, left und right zu benutzen. Siehe dazu auch CHDK-Handbuch Seite 84.

Gruß msl

P.S. Wir sind auch gern bereit, eine maßgeschneiderte (Skript-)Lösung gemeinsam zu erarbeiten, wenn die Aufgabenstellung genauer umschrieben wird.
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: Fernbedienung für 25 und mehr SX200IS gleichzeitig?

Beitragvon Karmaschinken » 06.02.2011, 12:18

Top! Vielen Dank! Ich werde mich sofort daran versuchen! Es wäre sehr nett, wenn Du diesen meinen Thread ein bisschen mit verfolgen kannst, ich bin zwar Programmierer, aber ich Sachen CHDK blutiger Anfänger!

Vielen Dank! Sofort ans Werk! :p
50 Stück SX 200 IS
Karmaschinken
CHDK-Begeisterter
CHDK-Begeisterter
 
Beiträge: 114
Registriert: 13.08.2010, 09:24
Wohnort: Woltersdorf
Kamera(s): 50 Stck. SX200IS

Re: Fernbedienung für 25 und mehr SX200IS gleichzeitig?

Beitragvon Karmaschinken » 06.02.2011, 14:44

So, nachdem ich es geschafft hatte, die Kamera auf Werksvorgaben zu resetten folgte dank msls Post auch das setzen des manuellen Fokus.

Jetzt hänge ich am nächsten Problem: Ich bin inzwischen auf LUA umgestiegen und habe gleich mehrere Fragen:

1. Wenn ich programmiere:

x_var = 3.45

bekomme ich eine Fehlermeldung "malformed numeric value". Wieso ist das so? Ich muss doch Kommazahlen verwenden können?

2. Wenn ich programmiere:

tvnow=get_tv96()
print("TVNOW: ", tvnow)

wird mir immer "TVNOW: 0" ausgegeben. Gleiches habe ich bei get_av96(). Was bedeutet das "96", ich verstehe die Erklärung im Manual nicht.

3. Wenn ich tvnow = get_tv() programmiere, bekomme ich eine Fehlermeldung "attempt to call global 'get_tv' (a nil value)" Gibt es die Funktion nicht oder was bedeutet mir das?


Ich möchte erreichen, dass solange "wheel_right" ausgeführt wird, bis ein bestimmter Wert erreicht wird, etwa so:

function set_shutter(tvset)

print("Set shutter 1/", tvset)
click("up")
sleep(1000)

tvnow=get_tv()

while(tvnow~=tvset) do
wheel_right()
sleep(500)
tvnow=get_tv()
print("TVNOW ", tvnow)
sleep(500)
end

sleep(1000)

end

Vielen Dank für all die Erleuchtung!
50 Stück SX 200 IS
Karmaschinken
CHDK-Begeisterter
CHDK-Begeisterter
 
Beiträge: 114
Registriert: 13.08.2010, 09:24
Wohnort: Woltersdorf
Kamera(s): 50 Stck. SX200IS

Re: Fernbedienung für 25 und mehr SX200IS gleichzeitig?

Beitragvon msl » 06.02.2011, 15:34

Du wirst nicht drumherum kommen, wenigstens die Passagen zur Skript-Programmierung im Handbuch komplett zu lesen. Auch wenn es für dich als Programmierer teilweise trivial erscheint.

Vieles in Lua baut auf uBasic auf, insbesondere was kameraspezifische Befehle betrifft.

CHDK-Skripte können nur mit Integer (Ganzzahlen) umgehen. Schließlich hat die Kamera keine FPU.

In Lua gibt es nur noch APEX-bezogene fototechnische Skriptbefehle, zu erkennen an der 96. Deshalb kommt auch die Fehlermeldung bei get_tv().Das steht auch im Handbuch auf Seite 106. Das APEX-System mit der Basiszahl 96 vereinfacht das Rechnen mit Ganzzahlen. Im Handbuch-Anhang gibt es einige Tabelle, die die Zusammenhänge verdeutlichen.

Hier gibt es einen Artikel, der die mathematischen Zusammenhänge der fototechnischen Werte inkl. dem APEX-Wert 96 beschreibt.

Und hier findest du Informationen, wie man mit dem Shoot-Befehl umgehen kann.

Ich würde bei Schleifen zur Einstellung von bestimmten Werten mit up, down oder left, right arbeiten. Das lässt sich einfacher managen.
Syntax: [ Download ] [ Verstecken ]
Benutze Lua Syntax Highlighting
while wert == wert_soll do
wait_click(0) -- 0 bedeutet: warte bis auf Tasten-Klick, anderer Wert Wartezeit in Millisekunden
if is_pressed == "up" then wert=wert+1 end
if is_pressed == "down" then wert=wert-1 end
end
Erstellt in 0.005 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: Fernbedienung für 25 und mehr SX200IS gleichzeitig?

Beitragvon Karmaschinken » 06.02.2011, 16:17

Ok, das mit den Kommazahlen habe ich verstanden, deshalb die Werte für Aperture und Shutterspeed als Indextables. So weit so gut.

Inzwischen kann ich auch die Werte entsprechend auslesen. Beispielsweise habe ich das hier hinbekommen:

Syntax: [ Download ] [ Verstecken ]
Benutze Lua Syntax Highlighting
function set_shutter(tvset)
    print("Set shutter index: ", tvset)

    tvnow = get_user_tv_id()
   
    while(tvnow~=tvset) do
        wheel_right()
        sleep(500)
        tvnow = get_user_tv_id()
        print("TVNOW ", tvnow)
        sleep(500)
    end
    sleep(500)
end
Erstellt in 0.005 Sekunden, mit GeSHi 1.0.8.9


Das funktioniert war grundsätzlich, seltsamerweise werden die Werte mit wheel_right() aber jeweils um 2 Indexpunkte erhöht. wheel_left() "substrahiert" auch immer 2!?! Wenn ich wheel_left() bis zum "Anschlag" wiederholt aufrufe, dann wird in der letzten Position nur 1 step gemacht, wenn es nicht weiter "abwärts geht".

Grundsätzlich verhält es sich also so:

tvnow = get_user_tv_id() -- z.B. 21
wheelright()
tvnow = get_user_tv_id() -- sollte jetzt 22 sein, ist aber 23... Verstehe ich nicht...

Das hier sind die für die SX200IS gültigen Werte, wenn ich das richtig sehe...

--[[ SHUTTER SPEED INDEX TEABLE
Value index (w/ black-frame) Value index
15" -12 (~33") 1/15 12
13" -11 (~27") 1/20 13
10" -10 (~21") 1/25 14
8" -9 (~17") 1/30 15
6" -8 (~13") 1/40 16
5" -7 (~11") 1/50 17
4" -6 (~9") 1/60 18
3"2 -5 (~7") 1/80 19
2"5 -4 (~6") 1/100 20
2" -3 (~5") 1/125 21
1"6 -2 (~4") 1/160 22
1"3 -1 (~3") 1/200 23
1"" 0 1/250 24
0"8 1 1/320 25
0"6 2 1/400 26
0"5 3 1/500 27
0"4 4 1/640 28
0"3 5 1/800 29
1/4 6 1/1000 30
1/5 7 1/1250 31
1/6 8 1/1600 32
1/8 9 1/2000 33
1/10 10 1/2500 34
1/13 11 1/3200 35
50 Stück SX 200 IS
Karmaschinken
CHDK-Begeisterter
CHDK-Begeisterter
 
Beiträge: 114
Registriert: 13.08.2010, 09:24
Wohnort: Woltersdorf
Kamera(s): 50 Stck. SX200IS

Re: Fernbedienung für 25 und mehr SX200IS gleichzeitig?

Beitragvon Karmaschinken » 07.02.2011, 00:31

Hmmm, hat niemand eine Antwort, warum wheel_left() und wheel_right() doppelt wirken könnten, also wie deren zwei Aufrufe nacheinander?

Ich komme nicht dahinter...
50 Stück SX 200 IS
Karmaschinken
CHDK-Begeisterter
CHDK-Begeisterter
 
Beiträge: 114
Registriert: 13.08.2010, 09:24
Wohnort: Woltersdorf
Kamera(s): 50 Stck. SX200IS

Re: Fernbedienung für 25 und mehr SX200IS gleichzeitig?

Beitragvon msl » 07.02.2011, 10:29

wheelright/left sind bei den meisten Kameras, wenn ich den Code richtig verstehe, auf 2 Ticks eingestellt. Warum das so ist, kann ich nicht sagen. Man wird sich aber bei der Portierung etwas dabei gedacht haben.

Das ganze ist aber kein probates Mittel. Du kannst get/set_user_tv_id() nur im Tv- oder M-Modus einsetzen. Warum arbeitest du nicht mit get/set_tv96. Das ist einfache Mathematik. Aber dazu müsste man sich auch mal die Mühe machen, die entsprechenden Artikel zu lesen. ;)

Der tv96-Wert 0 entspricht einer Belichtungszeit von einer Sekunde. Eine Belichtungseinheit hat den Wert 96. Will man die Belichtungszeit halbieren, addiert man 96. Will man verdoppeln, wird der Wert 96 subtrahiert. Also wären tv96(-96)=2 Sekunden und tv96(96)=0,5 Sekunden. Die Zwischenschritte lassen sich dritteln. Man rechnet also mit einer Schrittweite von 32, wenn man jeden Zwischenwert erreichen möchte. Siehe dazu Tabelle im Handbuch Anhang Seite 132.

Soll z.B. eine Belichtungszeit von 1/60 programmiert werden, entspricht das dem Wert 576 oder 18x32.

Abfragen lassen sich die augenblicklichen Werte mit get_tv96. Mit set_tv96 kann man den Wert setzen. Dieser Befehl funktioniert aber nur nach dem Fokussieren. Besser ist set_tv96_direct(). Das ganze ist hier ausführlich beschrieben. Deshalb muss ich es nicht noch einmal schreiben.

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: Fernbedienung für 25 und mehr SX200IS gleichzeitig?

Beitragvon CHDKLover » 07.02.2011, 10:31

Hallo Karmaschinken,
das scheint beim Jog Dial normal zu sein, denn (platform\sx200is\lib.c):
Syntax: [ Download ] [ Verstecken ]
Benutze C Syntax Highlighting
void JogDial_CW(void){
 _PostLogicalEventForNotPowerType(0x874, 2);  // RotateJogDialRight
}

void JogDial_CCW(void){
 _PostLogicalEventForNotPowerType(0x875, 2);  // RotateJogDialLeft
}
Erstellt in 0.004 Sekunden, mit GeSHi 1.0.8.9

Der zweite Parameter wird die Sprungweite sein.
Vielleicht kannst du nach dem Einmaligen betätigen des Jog Dails mit den Steuerkreuz die Werte um 1 erhöhen/verringern? Oder noch besser msl angesprochene get/set Funktionen nutzen.

Oh msl war schneller 8)

CHDKLover
A610 100e CHDK-DE: aktuelle Version
Benutzeravatar
CHDKLover
Super-Mod
Super-Mod
 
Beiträge: 878
Bilder: 8
Registriert: 12.09.2007, 18:25
Wohnort: Dresden
Kamera(s): a610 100e

VorherigeNächste

Zurück zu Technik-Ecke

Wer ist online?

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

cron