--[[ @title Foto + Dark-Frame by fudgey 2010/11/16 zzgl. DE-Anpassung + Restore by msl --]] propcase=require("propcase") -- Speichere Einstellungen RAW + Rauschreduktion rawmode=get_raw() dfrmode=get_raw_nr() -- Verschluss-Kontrolle-Prozedur abhängig vom Kamera-betriebssystem -- openshutter() und closeshutter() zur Steuerung des mech. Verschlusses function init() -- Überprüfung Native-Call-Interface: if (type(call_event_proc) ~= "function" ) then error("Dein CHDK unterstützt Native Calls nicht") end local bi=get_buildinfo() if bi.os=="vxworks" then closeproc="CloseMShutter" openproc="OpenMShutter" if (call_event_proc("InitializeAdjustmentFunction") == -1) then error("InitAdjFunc fehlt") end elseif bi.os=="dryos" then closeproc="CloseMechaShutter" openproc="OpenMechaShutter" if (call_event_proc("Mecha.Create") == -1) then error("Mecha.Create fehlt") end else error("Unbekanntes OS:" .. bi.os) end -- mech. Verschluss schließen function closeshutter() if (call_event_proc(closeproc) == -1) then print("closeshutter fehlt") end end -- mech. Verschluss öffnen function openshutter() if (call_event_proc(openproc) == -1) then print("openshutter fehlt") end end -- Ist Aufnahmenahme-Modus Foto aktiviert? rec,vid=get_mode() if rec ~= true then error("Kein Aufnahme-Modus") elseif vid == true then error("Video nicht unterstützt") end end -- Ende init() -- Diese Funktion wird auch bei Skriptabbruch aufgerufen. function restore() -- Wiederherstellung der Einstellungen für RAW und Rauschreduzierung set_raw(rawmode) set_raw_nr(dfrmode) -- möglicherweise muss der Verschluss bei Skriptabbruch wieder geöffnet werden. if (type(openshutter) == "function" ) then openshutter() end end -- Speichere aktuelle Belichtungswerte (nach halbgedrücktem Auslöser und automatischer Berechnung) function get_exposure_params() print("Werte speichern") --tv96=get_tv96() -- Verschlusszeit --sv96=get_sv96() -- ISO tv96=get_prop(propcase.TV) -- Verschlusszeit sv96=get_prop(propcase.SV) -- ISO if get_nd_present() ~= 1 then -- Av-Wert wenn Kamera Irisblende hat --av96=get_av96() av96=get_prop(propcase.AV) end end -- Setze gespeicherte Belichtungswerte (nach halbgedrücktem Auslöser und automatischer Berechnung) function set_exposure_params() print("Werte setzen") --set_tv96_direct(tv96) -- Verschlusszeit --set_sv96(sv96) -- ISO set_prop(propcase.TV,tv96) -- Verschlusszeit set_prop(propcase.SV,sv96) -- ISO if get_nd_present() ~= 1 then -- Av-Wert wenn Kamera Irisblende hat --set_av96_direct(av96) set_prop(propcase.AV,av96) end end function expcontrol_shoot(dark) -- halber Auslöser und warten Belichtungswerte ermittelt sind press("shoot_half") repeat sleep(1) until get_shooting() == true if dark == true then -- wenn Dark-Frame set_exposure_params() -- Setze gespeicherte Werte closeshutter() -- Schließe Verschluss sleep(1) -- möglicherweise nicht notwendig end -- Foto machen press("shoot_full") sleep(1) if dark ~= true then -- Foto machen und Werte speichern get_exposure_params() end -- Shooting abschließen release("shoot_full") sleep(1) release("shoot_half") repeat sleep(1) until get_shooting() ~= true end -- Skript-Start init() set_raw(1) -- aktiviere RAW/DNG set_raw_nr(1) -- Rauschreduktion (Dark-Frame-Subtraktion) ausschalten print("Shooting RAW+JPG") expcontrol_shoot(false) -- Foto machen und Werte speichern print("Shooting Dark Frame") expcontrol_shoot(true) -- Dark-Frame mit gespeicherten Werten machen restore() -- Wiederherstellung von Voreinstellungen