| 154 | | It can be usefull to call an external program to make tethered shooting, instead of using the Merlin/Orion triggering. |
| 155 | | |
| 156 | | If a '''{{{shoot.py}}}''' python script is found in the user config. dir, the functions '''{{{init()}}}''', '''{{{mirrorLockup()}}}''' and '''{{{shoot(bracketNumber)}}}''' contained in this script will be called instead of internal ones. |
| 157 | | |
| 158 | | Here is a minimalistic example script: |
| 159 | | |
| 160 | | {{{ |
| 161 | | #!python |
| 162 | | import subprocess |
| 163 | | |
| 164 | | |
| 165 | | def init(): |
| 166 | | """ Init the shooting sequence. |
| 167 | | |
| 168 | | @return: error code, stdout, stderr |
| 169 | | @rtype: tuple of int, str, str |
| 170 | | """ |
| 171 | | |
| 172 | | # See shoot() function |
| 173 | | return 0, "", "" |
| 174 | | |
| 175 | | |
| 176 | | def mirrorLockup(): |
| 177 | | """ Lockup the mirror. |
| 178 | | |
| 179 | | @return: error code, stdout, stderr |
| 180 | | @rtype: tuple of int, str, str |
| 181 | | """ |
| 182 | | |
| 183 | | # See shoot() function |
| 184 | | return 0, "", "" |
| 185 | | |
| 186 | | |
| 187 | | def shoot(bracketNumber): |
| 188 | | """ Shoot. |
| 189 | | |
| 190 | | @param bracketNumber: number of the current bracket picture |
| 191 | | @type bracketNumber: int |
| 192 | | |
| 193 | | @return: error code, stdout, stderr |
| 194 | | @rtype: tuple of int, str, str |
| 195 | | """ |
| 196 | | |
| 197 | | # Launch external command |
| 198 | | args = ["gphoto2", "--capture-image"] |
| 199 | | p = subprocess.Popen(args, stdout=subprocess.PIPE, stderr=subprocess.PIPE) |
| 200 | | |
| 201 | | # Wait end of execution |
| 202 | | stdout, stderr = p.communicate() |
| 203 | | |
| 204 | | return p.returncode, stdout, stderr |
| 205 | | }}} |
| 206 | | |
| 207 | | The external program name (here, '''"gphoto2"''') must be the first element of the '''{{{args}}}''' list; optional params (here '''"--capture-image"''') can be given as additional elements of the list. If you want to give the '''{{{bracketNumber}}}''' value, use '''{{{"%d" % bracketNumber}}}''' (or '''{{{str(bracketNumber)}}}''') as param value. |
| 208 | | |
| 209 | | Under Windows, the full path of the program must be given, like '''{{{"C:\\Program Files\\notepad.exe"}}}'''. |
| 210 | | |
| 211 | | * ''Note:the tethered program needs to support command-line call.'' |
| 212 | | |
| 213 | | More informations about ''subprocess'' module usage can be found here: |
| 214 | | |
| 215 | | * [http://www.python.org/doc/2.5.4/lib/node528.html] |
| 216 | | * [http://www.python.org/doc/2.5.4/lib/node532.html] |
| | 153 | Tethered shooting is now done through plugins. |
| 307 | | ==== Camera tab ==== |
| 308 | | |
| 309 | | * '''Time value''': shooting time. If set to 0, skip shooting sequence |
| 310 | | * '''Pulse width (high/low)''': width of the shutter triggering pulse (high level duration, and minimum low level duration between too consecutive shots) |
| 311 | | * '''Bracketing''': number of picture to take at each position, and the intent of the bracketing |
| 312 | | * '''Sensor (coef/ratio)''': ratio to 24x36 size, width vs height ratio |
| | 244 | ==== Camera/lens tab ==== |
| | 245 | |
| | 246 | * '''Sensor (coef, ratio)''': ratio to 24x36 size, width vs height ratio |