schlage mich hier mit einem merkwürdigen Verhalten von "set_focus" herum. Würde mich sehr interessieren, ob andere dazu schon Erkenntnisse haben. Habe mit der SuFu zunächst nichts gefunden.
Hintergrund war mein Wunsch, das minimale SD, welches eine Kamera kann, in meinen Scripts (z.B. Focus Brackets) automatisch zu bestimmen, statt manuell im Code vorzugeben. (Hätte auch den Vorteil, dass es auch stimmt, wenn man eine andere Brennweite, d.h. Zoomstufe, gewählt hat.) Die Idee basiert schlicht darauf, wiederholt ein bestimmtes SD versuchen zu setzen und auszulesen, ob die Kamera das auch annimmt.
Teste mit folgendem Code:
- Code: Alles auswählen
rem TestFocus
@title TestFocus
@param f SD (mm)
@default f 500
@param d Delay (ms)
@default d 300
print "Old: "; get_focus
print "Set: "; f
set_focus f
sleep d
get_focus g
print "Get: "; g
end
Stelle nun fest, dass das mit dieser Abfrage (die des weiteren in den Scripts einfach mit "if g=f ..." usw. gehen sollte) nicht so funktioniert, wie ich mir das dachte.
Ich hatte erwartet, dass - wenn ich nur d notfalls lang genug mache - g immer gleich f sein sollte, sofern der SD-Wert erreichbar ist.
Mache aber nun folgende Beobachtungen (A620, Modus M, MF), immer mit f=500:
d ganz kurz (z.B. d = 0):
Start von SD=inf aus (also worst case sozusagen):
Old: 65535
Set: 500
Get: 448
Interpretation: hat nicht genügend Zeit gehabt, ganz bis 500 zu fahren. (*)
Zweiter Aufruf unmittelbar danach:
Old: 448
Set: 500
Get: 498
Alle weiteren Aufrufe danach:
Old: 498
Set: 500
Get: 498
Die Kamera liefert also nie 500 zurück, egal wie "nahe dran" ich starte.
Das lustige: selbst wenn ich nun d erhöhe, sogar auf 500 oder so, ändert sich daran nichts. (Kann sogar sein, dass der "get-Wert" noch ein klein wenig falscher wird.) Also auch mit sleep 500 folgendes:
Old: 496
Set: 500
Get: 496
usw. usf. bis in alle Ewigkeit.
Scheint als ob die Kamera set-Werte, die "zu nahe dran" sind am aktuellen SD-Werte, einfach ignoriert.
[Zunächst vermutete ich, vielleicht sind die zulässigen SD-Werte ja auch nicht kontinuierlich und einen Wert von 500 gibt's gar nicht, wohl aber 498 und 496. Stimmt aber auch nicht, denn bei späteren Tests habe ich durchaus get-Werte von exakt 500 schon gesehen.]
Noch verwirrender: auch die Interpretation (*) oben stimmt irgendwie nicht:
Habe Tests mit extrem langem delay gemacht, d = 1000. Ergebnis:
Old: 65535
Set: 500
Get: 443
, also fast dasselbe Ergebnis wie bei d=0!
Sieht also fast so aus, als ob die Kamera es überhaupt nicht kann, "in einem Rutsch" von inf auf 500 zu gehen, egal wie lange man wartet.
Bin nun ganz verwirrt und verstehe meine Kamera nicht.
](./images/smilies/eusa_wall.gif)
Hat irgend jemand eine Idee, was hier vor sich geht??