I believe there may be one scenario where 'shoot' can hang; but I think it is very rare, although using flash seems to increase the likelihood. The attached version should fix it - if the issue is what I think it is then the script should not hang; but it may skip shots.
@philmozI´m impressed ! You are spot on.I used your version with my first script (with shoot) to make a 276 shot stack (with flash).It never stopped , but skipped ca 5 shots as you suspected.Great work ! Whats the solution ?/Leif K
sleep 2000 for s=1 to n shoot v if v=1 then get_focus f get_dof d g=f+d*2/3 set_focus g print f,d,g if g>500000 then s=n if d<0 then s=n else print "Missed shot" sleep 500 endif next send
Quote from: philmoz on 31 / December / 2012, 04:31:16I believe there may be one scenario where 'shoot' can hang; but I think it is very rare, although using flash seems to increase the likelihood. The attached version should fix it - if the issue is what I think it is then the script should not hang; but it may skip shots.If anyone could figure it out, you could Phil! Can you tell me what you changed, and what the problem was?Thanks.
It appears that even though the camera goes through all the motions of shooting it doesn't actually take the shot. This means raw_savefile doesn't get called so state_shooting_progress is never set to SHOOTING_PROGRESS_PROCESSING. The action stack then hangs on the AS_WAIT_SAVE step.The change is to wait for !shooting_in_progress() in AS_WAIT_SAVE instead.Using the flash seems to make this happen more often.
There's also an AS_WAIT_FLASH in there that doesn't seem to be necessary on my sx260. get_shooting() stays 0 until the flash is charged, it appears.
Do you know why the camera misses shots? My theory is that the press/release shoot_full happens before the camera can recognize it. Maybe the flash makes that more likely?
Happy New Year all.
rem Leif Karlsson@title Focus bracketing@param n Max number of steps @default n 300sleep 2000 for s=1 to n shoot v if v=1 then get_focus f get_dof d g=f+d*2/3 set_focus g print f,d,g if g>500000 then s=n if d<0 then s=n else print "Missed shot" sleep 500 endif next send
Started by airman99 Script Writing
Started by Barney Fife Feature Requests
Started by SpumCo Script Writing
Started by mellow-yellow Script Writing
Started by Andre-K General Help and Assistance on using CHDK stable releases