Lua: Same camera, same script but one gives errors

Started by garry23, April 26, 2016, 08:37:13 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

garry23

David

I hope you like mysteries.

The following script runs on my 5D3 OK.

--[[
Still photography toggler script
Version 1.0 (should work on all ML enabled cameras with the Lua module)
Garry George March 2016
http://photography.grayheron.net/
Workflow toggler script to help with focus and exposure setting.
Toggle through your workflow using the selected option ie a button or the top of the main dial or toggle switch.
For focus feedback yellow means move more towards the infinity end, Red means move more towards macro end,
Green means at the sweet spot. If Green not seen, move to just being in the yellow from being in the Red.
--]]
-- Declare variables
factor = 0.2
b1 = lens.dof_far
a2 = 0
fp = 0
c1 = 0
inf = 1000000
started = false
current_tv = 0
play = 0
toggler = 0

-- Change toggler value to your choice of button, eg KEY.RATE, KEY.UP, KEY.INFO or KEY.PLAY.
-- See http://davidmilligan.github.io/ml-lua/modules/constants.html for key constants
-- Default is KEY.RATE for non-EOSM cameras. EOSM self selects upper toggle on main dial as the EOSM doesn't have many buttons!
if camera.model_short == "EOSM" then toggler = KEY.UP else toggler = KEY.RATE end

event.keypress = function(key)
if keymenu.submenu["Turn On/Off"].value == "Off" then
started = false
return true
elseif key == toggler 
then
play = play + 1
if play == 7 then play = 0 end
return false
elseif key == KEY.FULLSHUTTER and play ~= 6
then
b1 = lens.dof_far -- in mm
fp = lens.focus_distance -- in mm
c1 = b1 - (b1 - fp)*factor
started = true
return true
elseif key == KEY.HALFSHUTTER and play == 6
then
b1 = lens.dof_far -- in mm
fp = lens.focus_distance -- in mm
c1 = b1 - (b1 - fp)*factor
started = true
return true
end
end

lv.info
{
    name = "Info 1",
    value = "",
    priority = 100,
    update = function(this)
    this.value = ""
    if keymenu.submenu["Turn On/Off"].value == "On" and started and fp ~= 0
    then
this.foreground = COLOR.BLACK
a2 = lens.dof_near
if a2 > b1 then
this.background = COLOR.RED
elseif a2 < c1 then
this.background = COLOR.YELLOW
else
this.background = COLOR.GREEN1
end
if lens.dof_far >= inf then
this.value = "INF"
else
this.value = "   "
end
else
this.value = ""
end
end
}

lv.info
{
    name = "Info 2",
    priority = 100,
    value = "",
    update = function(this)
    if keymenu.submenu["Turn On/Off"].value == "On" then
    menu.set("Shoot","Advanced Bracket",0)
menu.set("Expo","Auto ETTR",0)
menu.set("Expo","Dual ISO",0)
menu.set("Shoot","Silent Picture",0)
this.foreground = COLOR.YELLOW
this.background = COLOR.BLUE
if play == 0 then
current_tv = camera.shutter.ms
this.value = " Off"
elseif play == 1 then
this.value = " BE "
camera.shutter.ms = 1
menu.set("Shoot","Advanced Bracket",0)
elseif play == 2 then
this.value = " Off"
camera.shutter.ms = current_tv
elseif play == 3 then
this.value = "ETTR"
menu.set("Expo","Auto ETTR",1)
menu.set("Auto ETTR","Trigger mode",3)
elseif play == 4 then
this.value = "Auto"
menu.set("Shoot","Advanced Bracket",1)
elseif play == 5 then
this.value = "Dual"
menu.set("Expo","Dual ISO",1)
elseif play == 6 then
this.value = "FRSP"
menu.set("Shoot","Silent Picture",1)
else
this.value = ""
end
end
end
}

keymenu = menu.new
{
parent = "Shoot",
name = "Landscape Helper",
help = "Toggle through workflow",
help2 = "Grab exposure or take picture as required",
depends_on = DEPENDS_ON.LIVEVIEW,
submenu =
{
{
name = "Turn On/Off",
help = "Switches the script on/off",
help2 = "Provides access to ML functionality",
choices = {"On","Off"},
},
{
name = "Bracket to bracket overlap",
help = "Amount to overlap each bracket",
help2 = "% of FP-2-DoF(far) distance",
choices = {"20","10", "5"},
update = function(this)
factor = tonumber(keymenu.submenu["Bracket to bracket overlap"].value)/100
end,
}
}
}


On my friends 5D3 it generates the following errors:

ML/SCRIPTS/TOGGLE~1.LUA:101 set 'camera.shutter.ms'failed
stack traceback:
[c]: in metamethod '__newindex'
ML/SCIRPTS/TOGGLE~1.LUA:101: ...


Any ideas what's going on? I don't understand the metamethod reference.

Cheers

Garry

dmilligan

The error message should be more descriptive, but probably the camera is in a mode that doesn't allow changing shutter speed (like aperture priority).

garry23

David

Thanks, great hint.

I get it checked out, but we're debugging over 7 time zones ;-)

garry23

David

Just to confirm it was the mode that did it. My friend in the US had his 5D3 in aperture priority mode. 

Once again thanks for your prompt feedback.

BTW I've got my auto bracketing script working in focus and exposure mode, i.e. together.

Once I've assured myself it is debugged I'll publish it on the forum.

Cheers

Garry