TV-Ersatzwert per Skript abfragen?

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

TV-Ersatzwert per Skript abfragen?

Beitragvon Stephan_T » 19.11.2009, 22:59

Hallo CHDK-Freunde,

ich bastel gerade an einem Intervall-Skript für Langzeitbelichtungen. Dazu würde ich gerne die per "Extra-Fotoeinstellungen" gewählte "Ersetz(t)e Verschlusszeit" abfragen. Leider habe ich weder einen dazu passenden Skript-Befehl. noch einen PropCase-Eintrag gefunden. Zur Suche habe ich folgendes Test-Skript benutzt:

Syntax: [ Download ] [ Verstecken ]
Benutze uBasic Syntax Highlighting

@title STh Test

@param n LogFile Num

@default n 1

@param m max. PropNum

@default m 512



print_screen n



print "-----------------"

print get_time 5; "-"; get_time 4; "-"; get_time 3, get_time 2; ":"; get_time 1; ":"; get_time 0



print "propset=", get_propset

print "exp_cunt=", get_exp_count

print "tick_count=", get_tick_count



print "temp(Optic)=", get_temperature 0

print "temp(CCD)=", get_temperature 1

print "temp(Bat.)=", get_temperature 2

print "ev=", get_ev

print "iso_real=", get_iso_real

print "iso=", get_iso

print "tv96=", get_tv96

print "user_tv96=", get_user_tv96

print "user_tv_id=", get_user_tv_id





print "-------"



  print "DRIVE_MODE=", get_prop 6

  print "FOCUS_MODE=", get_prop 12

  print "FLASH_MODE=", get_prop 16

  print "FLASH_FIRE=", get_prop 79

  print "FLASH_ADJUST_MODE=", get_prop 15

  print "FLASH_MANUAL_OUTPUT=", get_prop 29

  print "USER_TV=", get_prop 40

  print "TV=", get_prop 69

  print "USER_AV=", get_prop 39

  print "AV=", get_prop 68

  print "MIN_AV=", get_prop 77

  print "SV=", get_prop 73

  print "DELTA_SV=", get_prop 70

  print "SV_MARKET=", get_prop 72

  print "BV=", get_prop 71

  print "ISO_MODE=", get_prop 21

  print "SUBJECT_DIST1=", get_prop 65

  print "SUBJECT_DIST2=", get_prop 66

  print "SHOOTING=", get_prop 205

  print "IS_FLASH_READY=", get_prop 221

  print "OVEREXPOSURE=", get_prop 76

  print "SHOOTING_MODE=", get_prop 0

  print "IS_MODE=", get_prop 229

  print "QUALITY=", get_prop 23

  print "RESOLUTION=", get_prop 24

  print "EV_CORRECTION_1=", get_prop 25

  print "EV_CORRECTION_2=", get_prop 26

  print "ORIENTATION_SENSOR=", get_prop 37

  print "DIGITAL_ZOOM_STATE=", get_prop 58

  print "DIGITAL_ZOOM_POSITION=", get_prop 57

  print "DISPLAY_MODE=", get_prop 181

  print "BRACKET_MODE=", get_prop 36

  print "FLASH_SYNC_CURTAIN=", get_prop 20

  print "METERING_MODE=", get_prop 9

  print "WB_ADJ=", get_prop 100

  print "OPTICAL_ZOOM_POSITION=", get_prop 99



print "------"



for I=0 to m

  P=get_prop I

  if P<>0 then print "prop("; I; ")=", P

next I



print "tick_count=", get_tick_count



print_screen 0



end



 
Erstellt in 0.009 Sekunden, mit GeSHi 1.0.8.9


Bei meiner S3 scheinen ab "get_prop 230" (zumindest bis 512) alle Werte nur noch Null zu sein. Soll ich da noch weiter aufwärts Testen, oder macht das keinen Sinn mehr?

Die Logfiles mit und ohne aktiven Ersatzwerten (EV-Angabe 32" mit Multiplikator 1 vs. Off) unterscheiden sich gar nicht (nur Zeitstempel, Temperaturen und tick_counts differieren). Die Belichtungszeitwerte geben alle nur die normale Standardeinstellung (hier 2") der Kamera wider, welche ja durch die CHDK-Werte ersetzt werden:

Code: Alles auswählen
 -----------------
2009-11-19 20:34:21
propset= 1
exp_cunt= 3593
tick_count= 421390
temp(Optic)= 27
temp(CCD)= 27
temp(Bat.)= 31
ev= 0
iso_real= 0
iso= 1
tv96= 0
user_tv96= -96
user_tv_id= -3
-------
DRIVE_MODE= 0
FOCUS_MODE= 1
FLASH_MODE= 2
FLASH_FIRE= 0
FLASH_ADJUST_MODE= 1
FLASH_MANUAL_OUTPUT= 0
USER_TV= -96
TV= 0
USER_AV= 576
AV= 0
MIN_AV= 0
SV= 0
DELTA_SV= 0
SV_MARKET= 0
BV= 0
ISO_MODE= 80
SUBJECT_DIST1= -1
SUBJECT_DIST2= -1
SHOOTING= 0
IS_FLASH_READY= 0
OVEREXPOSURE= 0
SHOOTING_MODE= -32767
IS_MODE= 1
QUALITY= 0
RESOLUTION= 4
EV_CORRECTION_1= 0
EV_CORRECTION_2= 0
ORIENTATION_SENSOR= 0
DIGITAL_ZOOM_STATE= 0
DIGITAL_ZOOM_POSITION= 0
DISPLAY_MODE= 0
BRACKET_MODE= 0
FLASH_SYNC_CURTAIN= 0
METERING_MODE= 0
WB_ADJ= 929
OPTICAL_ZOOM_POSITION= 0
------
prop(0)= -32767
prop(5)= 1
prop(8)= 1
prop(12)= 1
prop(14)= 2000
prop(15)= 1
prop(16)= 2
prop(19)= 1
prop(21)= 80
prop(22)= 1
prop(24)= 4
prop(34)= 2
prop(38)= 1
prop(39)= 576
prop(40)= -96
prop(64)= 1
prop(65)= -1
prop(66)= -1
prop(100)= 929
prop(126)= 30
prop(127)= 2
prop(128)= 1
prop(131)= 24899
prop(133)= 28483
prop(134)= 1
prop(136)= 24832
prop(171)= 128
prop(173)= -1
prop(183)= 12570
prop(185)= 1
prop(186)= 1
prop(192)= 1
prop(194)= 2816
prop(195)= 2816
prop(196)= 258
prop(204)= 4
prop(211)= -22785
prop(212)= -20225
prop(213)= -29185
prop(223)= 2
prop(224)= 1
prop(225)= 1
prop(226)= -32767
prop(227)= 3
prop(228)= 1
prop(229)= 1
tick_count= 445920


Irgendwie kann ich mir schwer Vorstellen, dass es per Skript keine Möglichkeit gibt, auf diese CHDK-eigenen Parameter (Ersatzwerte) zuzugreifen. Neben der Belichtungszeit würde ich gerne auch noch die Option "Rausch-Reduktion" abfragen. Es geht mir dabei nämlich darum, ungefähr zu schätzen (berechnen) wie lange die ganze Belichtungssequenz dauern wird.

Nachtrag: Gerade hatte ich noch die Funktion "set_tv96_direct" gefunden:
"Tv*96 APEX-System Benutzung der Override-Routine".

Das habe ich jetzt zwar noch nicht direkt ausprobiert, aber es sollte doch im Prinzip der Wert sein, den ich gerne auslesen würde.
Eine Funktion "get_tv96_direct" gibt es aber anscheinend nicht. Da stürtzt mir das Skript gnadenlos ab, wenn ich die aufrufe.
:roll: Kamera geht aus, aber das Objektiv bleibt draussen.


Viele Grüße
Stephan
S3 IS (s3is-100a-1.0.0-DE-full rev.111)
Stephan_T
CHDK-Einsteiger
CHDK-Einsteiger
 
Beiträge: 8
Registriert: 11.11.2009, 22:49

Beitragvon gehtnix » 19.11.2009, 23:19

Hi,

sieh Dir das mal an. Und hierkönnte auch noch was drinnen stehen.

gruß gehtnix
Bild
Benutzeravatar
gehtnix
CHDK-Legende
CHDK-Legende
 
Beiträge: 2406
Bilder: 8
Registriert: 17.04.2008, 13:42
Wohnort: München
Kamera(s): A610 100e+f + IXUS50 101b

Beitragvon msl » 19.11.2009, 23:43

Hallo Stephan_T,

um den mit set_tv96_direct gesetzten Wert auszulesen, kannst Du get_tv96 verwenden. Der richtige Wert wird sich aber erst nach Auslösen oder halb gedrückten Auslöser ermitteln lassen.

Gruß msl
■ "Hey you, don't tell me there's no hope at all. Together we stand, divided we fall."CHDK inside FAQCHDK-Neuigkeiten auf Twitter
Benutzeravatar
msl
Super-Mod
Super-Mod
 
Beiträge: 4512
Bilder: 271
Registriert: 22.02.2008, 12:47
Wohnort: Leipzig
Kamera(s): A720 1.00c
SX220 1.01a

Beitragvon Stephan_T » 22.11.2009, 18:19

Hallo msl,

msl hat geschrieben:Der richtige Wert wird sich aber erst nach Auslösen oder halb gedrückten Auslöser ermitteln lassen.


Danke! Der Tip mit dem shoot_half war goldrichtig. Allerdings war ich auch hiermit erstmal in die Asynchronitätsfalle getappt, und hatte es mit click "shoot_half" probiert. Die kurz darauf folgenden Wertabfragen hatten somit weiterhin ein falsches Ergebnis geliefert, aber mir war aufgefallen, dass in der langwierigen Testschleife über sämtliche get_prop's dann plötzlich doch der gewünschte Wert auftauchte. Drum habe ich nun auf eine
Syntax: [ Download ] [ Verstecken ]
Benutze uBasic Syntax Highlighting
press "shoot_half"

sleep 1000

release "shoot_half"

F=get_tv96
Erstellt in 0.002 Sekunden, mit GeSHi 1.0.8.9

Sequenz umgestellt.

Für die Umrechnung von TV96 in Sekunden habe ich mir folgendes gebastelt:

Syntax: [ Download ] [ Verstecken ]
Benutze uBasic Syntax Highlighting
rem calculate shutter in millisec.

if F<0 then

   Z=(-F/32)

   F=1000

   rem F=(2^1/3)^Z

   for I=1 to Z

     F=(F*1260)/1000

   next I

else

   rem estimate shorter values as one second

   F=1000

endif



rem round to sec.

if (F%1000)>=500 then

  F=(F/1000)+1

else

  F=F/1000

endif

 
Erstellt in 0.002 Sekunden, mit GeSHi 1.0.8.9


Zur Erklärung: 1260/1000 (=1.260) ist eine gute Näherung für die dritte Wurzel aus zwei. Durch die "for I=1 to Z"-Schleife wird diese Zahl mit -TV96/32 potenziert. Das Ganze wird in Millisekunden gerechnet und anschießend auf volle Sekunden gerundet. Bis auf wenige vernachlässigbare Rundungsfehler klappt das recht genau.

Gibt es hier im Forum eigentlich irgendwo einenThread als "get_prop-Sammelstelle"?
Da ich die SELF_TIMER-Verzögerung in meine Zeitschätzung mit einrechnen möchte, und in der "CHDK/LUALIB/GEN/propset1.lua" keinen entsprechenden Eintrag fand, habe ich über selbstgenerierte get_prop-logfiles die zugehörige Stelle identifiziert:

get_prop 14
liefert den Wert in Millisekunden.

Nur für die Länge des "Rückblick" habe ich leider keine solche Möglichkeit gefunden.

Viele Grüße
Stephan
S3 IS (s3is-100a-1.0.0-DE-full rev.111)
Stephan_T
CHDK-Einsteiger
CHDK-Einsteiger
 
Beiträge: 8
Registriert: 11.11.2009, 22:49

Beitragvon msl » 22.11.2009, 18:52

Hallo Stephan,

hier gibt es eine Liste zum Thema Propertycases.

Die Rückblickzeit wird, wenn ich mich nicht irre, in den Kamera-abhängigen Parameter-Daten abgelegt. Die kann man auch per Skript auslesen. Das funktioniert aber nur mit Lua. Da das alles in Abhängkeit der jeweiligen Kamera erfolgen muss, kann ich da keine allgemeinen Tipps geben.

Hier findest Du aber die notwendigen Informationen zum Auslesen der Parameter per Skript.

Die Parameter können auch per CHDK-Funktion ausgelesen werden: CHDK-Menü -> verschiedene Einstellungen -> Debugging-Einstellungen - Debug-Daten-Anzeige [Params].

Gruß msl
■ "Hey you, don't tell me there's no hope at all. Together we stand, divided we fall."CHDK inside FAQCHDK-Neuigkeiten auf Twitter
Benutzeravatar
msl
Super-Mod
Super-Mod
 
Beiträge: 4512
Bilder: 271
Registriert: 22.02.2008, 12: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 4 Gäste