--[[ rem 20080815 test script by cpr @title cprDeOhEfxperiment ]] set_console_layout(0, 0, 44, 16) props = require "propcase" zoom_table = { 0, 32, 64, 100 } focus_table = {200, 1000, 10000, 20000, -1} fstop_table = {2800, 4000, 5600, 8000, 11000, 16000} --zoom_table = { 0, 32 } --fstop_table = {2800, 4000} --av96_table = {285, 384, 477, 576, 664, 768} tv96 = get_tv96() tv96_overridden = tv96 av96 = get_av96() ev = get_ev()/32 --// logfile_basename = "cprDeOhEfxperiment" logfile_path = "A/" --http://chdk.setepontos.com/index.php?topic=12260.msg120830#msg120830 --sprintf to a buffer, fwrite() or write() the buffer to the file. function prepareLogEntry(pattern, datetime, level, lastimg, message) local logEntry = pattern or "%datetime|%level|%lastimg|%message\n" message = string.gsub(message, "%%", "%%%%") --FIXME needed? logEntry = string.gsub(logEntry, "%%datetime", datetime) logEntry = string.gsub(logEntry, "%%level", level) logEntry = string.gsub(logEntry, "%%lastimg", lastimg) logEntry = string.gsub(logEntry, "%%message", message) return logEntry end --http://neopallium.github.io/lualogging/file.html --LuaLogging function openLogfile(filename, datePattern) local filename = filename.."_"..os.date(datePattern)..".log" if (lastFileNameDatePattern ~= filename) then local f = io.open(filename, "a") if (f) then f:setvbuf ("line") lastFileNameDatePattern = filename lastFileHandler = f return f else return nil, string.format("file `%s' could not be opened for writing", filename) end else return lastFileHandler end end function writeLogEntry(message) local message = message or "" message=message.."\n" filehandle=openLogfile(logfile_basename, "%Y-&m-%d") if not filehandle then return nil end local logline = prepareLogEntry(logPattern, getDateTimeIso(), "INFO", string.format('%s/IMG_%04d.JPG',get_image_dir(),get_exp_count()), message) filehandle:write(s) return true end --///////////////////////////////////////////////////////////////////////////// function getDateTimeIso() _datetime = os.date("!*t") datetime = string.format("%04d-%02d-%02d %02d:%02d:%02d", _datetime["year"], _datetime["month"], _datetime["day"], _datetime["hour"], _datetime["min"], _datetime["sec"] ) --print(datetime) return datetime end function printDateTimeIso() print(getDateTimeIso()) end --///////////////////////////////////////////////////////////////////////////// MAIN set_mf(1) --There is CHDK v1.3 installed set_prop(props.FLASH_MODE, 2) set_prop(props.IS_MODE, 3) set_prop(props.AF_ASSIST_BEAM,0) set_nd_filter(2) set_raw(0) set_capture_mode(4) --4:Av i=1 j=1 k=1 while (i <= #zoom_table) do --print(zoom_table[i]) set_zoom(zoom_table[i]) sleep(2000) press("shoot_half") repeat sleep(50) until get_shooting() == true release("shoot_half") -- dof=get_dofinfo() --set dof.hyp_dist _focus_table=focus_table --make a copy each zoomlevel table.insert(_focus_table, dof.hyp_dist) while (j <= #_focus_table) do set_focus(_focus_table[j]) --docs: "Use a click or press/release "shoot_half" command to implement a refocusing if needed." --sleep(3000) -- or repeat * until until get_shooting() == true --docs: "If in doubt, use a sleep 3000 until everything is working." sleep(2000) press("shoot_half") repeat sleep(50) until get_shooting() == true release("shoot_half") --//now get_prop(props.MIN_AV) should be avilable av96_mina=get_prop(props.MIN_AV) --FIXME ununsed --iterate over fstop_table, calculate av96 value, compare if get_prop(props.MIN_AV) is higher while (k <= #fstop_table) do set_nd_filter(2) press("shoot_half") --now current exposure is available set_nd_filter(2) --sleep(3000) repeat sleep(50) until get_shooting() == true bv96_bycamera=get_bv96() av96_bycamera=get_av96() sv96_bycamera=get_sv96() tv96_bycamera=get_tv96() print(getDateTimeIso().."|bv96_bycamera:"..bv96_bycamera.."|av96_bycamera:"..av96_bycamera.."|av96_min_available:"..av96_mina.."|sv96_bycamera:"..sv96_bycamera.."|tv96_bycamera:"..tv96_bycamera) av96_override = aperture_to_av96(fstop_table[k]) tv96_override = bv96_bycamera+sv96_bycamera-av96_override print("zoom:"..zoom_table[i].."|focus:".._focus_table[j].."|fstop:"..(fstop_table[k]/1000).."." ..((fstop_table[k]%1000)/100).."|tv:"..tv96_override.."|sv:"..sv96_bycamera) set_tv96_direct(tv96_override) set_av96_direct(av96_override) --FIXME check if sv96 needs to be set, check AutoISO or fixed --FIXME: check if ND filter needs to be inserted press("shoot_full") release("shoot_full") release("shoot_half") writeLogEntry(getDateTimeIso().."|bv96_bycamera:"..bv96_bycamera.."|av96_bycamera:"..av96_bycamera.."|av96_min_available:"..av96_mina.."|sv96_bycamera:"..sv96_bycamera.."|tv96_bycamera:"..tv96_bycamera) --repeat sleep(50) until not get_shooting() --until get_shooting() ~= true k = k+1 --sleep(2000) --repeat sleep(50) until get_shooting() ~= true repeat sleep(50) until get_shooting() ~= true end k=1 j=j+1 end j=1 i=i+1 end i=1 print("FInished.")