I'm in the process of working on an app using PTP to communicate with the camera, and then LUA to actually control it... I've got most of what I would have considered to be the harder things done, for instance I get the display from the back of the LCD and display it in my program (corrected for aspect), I can copy files off of it, and I can do some of the controlling of the device, and I can control multiple cameras at the same time. Ideally I would like this to work on any chdk camera - currently I'm testing it on a SD1100IS, SD1200IS, SD1200IS, SX30IS and SX130IS. For me development, I'm working on the SX130IS most of the time.
The first thing I do is set the camera to manual mode via:
capmode=require('capmode') capmode.set('M')
I then focus once and lock:
set_aflock(0);set_aflock(1);
I can get zoom working properly using get_zoom(), set_zoom(), get_zoom_steps() and set_zoom_speed(). It seems to work consistently between all cameras.
I can get focus working properly using get_focus(), set_focus().
I can control the flash using set_prop(props.FLASH_MODE, x).
Where I'm totally stuck, and can't seem to get working any way is shutter and exposure... I've tried using set_iso_real()/get_iso_real(), but this is what happens:
cmd: get_iso_real();
rtn: 93
cmd: set_iso_real(400);
cmd: get_iso_real();
rtn: 93
cmd: set_iso_real(800);
cmd: get_iso_real();
rtn: 93
I also tried set_iso_mode(), but nothing was reflected on the LCD screen on the device.
I've read about set_sv96/get_sv96, and they seem like they might have something to do with it, but I haven't been able to make heads or tails out of it yet.
Any help would be greatly appreciated - if I can get this working reasonably well with all the devices I have, then I plan to release it for others to use, but if I can't resolve these issues than I'm probably just going to have to figure out some other way to do things. I know chdk can do what I want, it's just frustrating not being able to figure out how...
Thanks for any help or insight anyone can share!