Status Check - a quick check of important camera & SD card info

  • 1 Replies
  • 2166 Views
*

Offline SkyWalker9

  • ****
  • 301
  • SX20 IS (fw 1.02b)
Status Check - a quick check of important camera & SD card info
« on: 29 / January / 2011, 17:33:57 »
Advertisements
Like many photographers, I tend to use my camera for a lot of differnt scenarios. As a result, it was cumbersome to always have to check the settings to make sure I was ready for the next event. Usually I was in a rush and sometimes wondered if I got everything set back to my "normal" setup.

This script simply reports the current status of most of the "To Do" items on my list before taking the next set of pictures. It's a simple script that has helped me avoid the most common mistakes.

Basically there are two screens of information that will be displayed. After the first screen is displayed the script waits for you to press the "set" button then it displays the final page.

There is only one parameter - to save the info in a log rather than display on the screen. The log is named using the hour and minute of the day as the file name (for a log saved at 12:4:33, the name would be LOG_1204.TXT). Here is a sample of the logged data in file "LOG_1711.TXT":

--------------------------
Date: 29/1/2011
Time: 17:11:58
 
Av: F2.7
Tv: 1/5
ISO: 50 or 80
IS: Continuous
Display: Do Not Show
IMG Size: Large
IMG Qual: 640x480
Disk Size(MB): 3887
Free Space(MB):3569
--------------------------

Place "Status.bas" in CHDK/Scripts folder.

Code: [Select]
rem Author SkyWalker9
@title Status Check
@param h Save log (0=No)
@default h 0

if h<>1 then goto "skip_log"
z=get_time 0
y=get_time 1
x=get_time 2
m=get_time 3
n=get_time 4
p=get_time 5
g=x*100+y
if g<1 then g=1
if g>9999 then g=9999
print_screen g
print "Date: "m"/"n"/"p
print "Time: "x":"y":"z
print " "

:skip_log
  if h=0 then cls
  gosub "first_set"
  if h=0 then gosub "wait_loop"
  gosub "second_set"
  goto "finished"

:first_set
  x=get_user_av_id
  select x
    case 9; print "Av: F2.8"
    case 10; print "Av: F3.2"
    case 11; print "Av: F3.5"
    case 12; print "Av: F4.0"
    case 13; print "Av: F4.5"
    case 14; print "Av: F5.0"
    case 15; print "Av: F5.6"
    case 16; print "Av: F6.3"
    case 17; print "Av: F7.1"
    case 18; print "Av: F8.0"
  end_select

  x=get_user_tv_id
  select x
    case -12; print "Tv: 15s"
    case -11; print "Tv: 13s"
    case -10; print "Tv: 10s"
    case -9; print "Tv: 8s"
    case -8; print "Tv: 6s"
    case -7; print "Tv: 5s"
    case -6; print "Tv: 4s"
    case -5; print "Tv: 3.2s"
    case -4; print "Tv: 2.5s"
    case -3; print "Tv: 2s"
    case -2; print "Tv: 1.6s"
    case -1; print "Tv: 1.3s"
    case 0; print "Tv: 1s"
    case 1; print "Tv: 0.8s "
    case 2; print "Tv: 0.6s"
    case 3; print "Tv: 0.5s"
    case 4; print "Tv: 0.4s"
    case 5; print "Tv: 0.3s"
    case 6; print "Tv: 1/4"
    case 7; print "Tv: 1/5"
    case 8; print "Tv: 1/6"
    case 9; print "Tv: 1/8"
    case 10; print "Tv: 1/10"
    case 11; print "Tv: 1/13"
    case 12; print "Tv: 1/15"
    case 13; print "Tv: 1/20"
    case 14; print "Tv: 1/25"
    case 15; print "Tv: 1/30"
    case 16; print "Tv: 1/40"
    case 17; print "Tv: 1/50"
    case 18; print "Tv: 1/60"
    case 19; print "Tv: 1/80"
    case 20; print "Tv: 1/100"
    case 21; print "Tv: 1/125"
    case 22; print "Tv: 1/160"
    case 23; print "Tv: 1/200"
    case 24; print "Tv: 1/250"
    case 25; print "Tv: 1/320"
    case 26; print "Tv: 1/400"
    case 27; print "Tv: 1/500"
    case 28; print "Tv: 1/640"
    case 29; print "Tv: 1/800"
    case 30; print "Tv: 1/1000"
    case 31; print "Tv: 1/1250"
    case 32; print "Tv: 1/1600"
    case 33; print "Tv: 1/2000"
    case 34; print "Tv: 1/2500"
    case 35; print "Tv: 1/3200"
  end_select

  x=get_iso
  select x
    case 0; print "ISO: AutoISO"
    case 1; print "ISO: 50 or 80"
    case 2; print "ISO: 100"
    case 3; print "ISO: 200"
    case 4; print "ISO: 400"
    case 5; print "ISO: 800"
    case -1; print "ISO: HiISO"
  end_select

  x=get_IS_mode
  select x
    case 0; print "IS: Continuous"
    case 1; print "IS: Shoot Only"
    case 2; print "IS: Panning"
    case 3; print "IS: OFF"
  end_select
  x=get_display_mode
  select x
    case 0; print "Display: Show Icons"
    case 1; print "Display: Do Not Show"
    case 2; print "Display: LCD off"
    case 3; print "Display: EVF"
  end_select
return

:second_set
  x=get_resolution
  select x
    case 0; print "IMG Size: Large"
    case 1; print "IMG Size: Medium 1"
    case 2; print "IMG Size: Medium 2"
    case 4; print "IMG Size: Send"
    case 8; print "IMG Size: Wide"
  end_select

  x=get_quality
  select x
    case 0; print "IMG Qual: 1280x720"
    case 1; print "IMG Qual: 640x480"
    case 2; print "IMG Qual: 320x240"
  end_select

  x=get_disk_size
  x=x/1000
  print "Disk Size(MB): "x

  x=get_free_disk_space
  x=x/1000
  print "Free Space(MB):"x
return

:wait_loop
     wait_click 10000
     is_key k "set"
     if k=1 then goto "exit_loop"
   goto "wait_loop"
:exit_loop
 cls
return

:finished
 if h=1 then print_screen 0
end

Update 4-19-11: When using the wait_click statements, some cameras require the timeout be specified; recommend starting with "wait_click 10000" (10secs). The script has been updated to reflect the change.
« Last Edit: 19 / April / 2011, 17:55:06 by SkyWalker9 »

*

Offline SkyWalker9

  • ****
  • 301
  • SX20 IS (fw 1.02b)
Re: Status Check - a quick check of important camera & SD card info
« Reply #1 on: 29 / January / 2011, 23:31:42 »
I'm including an updated script that uses additional PropCas statements designed for the SX20. The PropCas values didn't seem to be documented for the SX20 yet, so this update took me a while to test and verify.

The log info now has the following:

Code: [Select]
Date: 29/1/2011
Time: 23:22:42
 
Av: F2.7
Tv: 1/5
ISO: 50 or 80
IS: Continuous
Pic Size: Large
IMG Qual: 640x480
Disk Size(MB): 3887
Free Space(MB):3569
Exp Comp: 0
Flash Exp Comp: -96
WhiteBal: Auto
Mode Dial: Av
Meter: Evaluative
Display: Do Not Show


The updated script...

Code: [Select]
rem Author SkyWalker9
@title Status Check
@param h Save log (0=No)
@default h 0

if h<>1 then goto "skip_log"
z=get_time 0
y=get_time 1
x=get_time 2
m=get_time 3
n=get_time 4
p=get_time 5
g=x*100+y
if g<1 then g=1
if g>9999 then g=9999
print_screen g
print "Date: "m"/"n"/"p
print "Time: "x":"y":"z
print " "

:skip_log
  if h=0 then cls
  gosub "first_set"
  if h=0 then gosub "wait_loop"
  gosub "second_set"
  if h=0 then gosub "wait_loop"
  gosub "third_set"
  if h=0 then gosub "wait_loop"
  goto "finished"

:first_set
  x=get_user_av_id
  if x=9 then print "Av: F2.8"
  if x=10 then print "Av: F3.2"
  if x=11 then print "Av: F3.5"
  if x=12 then print "Av: F4.0"
  if x=13 then print "Av: F4.5"
  if x=14 then print "Av: F5.0"
  if x=15 then print "Av: F5.6"
  if x=16 then print "Av: F6.3"
  if x=17 then print "Av: F7.1"
  if x=18 then print "Av: F8.0"
  x=get_user_tv_id
  if x=-12 then print "Tv: 15s"
  if x=-11 then print "Tv: 13s"
  if x=-10 then print "Tv: 10s"
  if x=-9 then print "Tv: 8s"
  if x=-8 then print "Tv: 6s"
  if x=-7 then print "Tv: 5s"
  if x=-6 then print "Tv: 4s"
  if x=-5 then print "Tv: 3.2s"
  if x=-4 then print "Tv: 2.5s"
  if x=-3 then print "Tv: 2s"
  if x=-2 then print "Tv: 1.6s"
  if x=-1 then print "Tv: 1.3s"
  if x=0 then print "Tv: 1s"
  if x=1 then print "Tv: 0.8s "
  if x=2 then print "Tv: 0.6s"
  if x=3 then print "Tv: 0.5s"
  if x=4 then print "Tv: 0.4s"
  if x=5 then print "Tv: 0.3s"
  if x=6 then print "Tv: 1/4"
  if x=7 then print "Tv: 1/5"
  if x=8 then print "Tv: 1/6"
  if x=9 then print "Tv: 1/8"
  if x=10 then print "Tv: 1/10"
  if x=11 then print "Tv: 1/13"
  if x=12 then print "Tv: 1/15"
  if x=13 then print "Tv: 1/20"
  if x=14 then print "Tv: 1/25"
  if x=15 then print "Tv: 1/30"
  if x=16 then print "Tv: 1/40"
  if x=17 then print "Tv: 1/50"
  if x=18 then print "Tv: 1/60"
  if x=19 then print "Tv: 1/80"
  if x=20 then print "Tv: 1/100"
  if x=21 then print "Tv: 1/125"
  if x=22 then print "Tv: 1/160"
  if x=23 then print "Tv: 1/200"
  if x=24 then print "Tv: 1/250"
  if x=25 then print "Tv: 1/320"
  if x=26 then print "Tv: 1/400"
  if x=27 then print "Tv: 1/500"
  if x=28 then print "Tv: 1/640"
  if x=29 then print "Tv: 1/800"
  if x=30 then print "Tv: 1/1000"
  if x=31 then print "Tv: 1/1250"
  if x=32 then print "Tv: 1/1600"
  if x=33 then print "Tv: 1/2000"
  if x=34 then print "Tv: 1/2500"
  if x=35 then print "Tv: 1/3200"
  x=get_iso
  if x=0 then print "ISO: AutoISO"
  if x=1 then print "ISO: 50(80)"
  if x=2 then print "ISO: 100"
  if x=3 then print "ISO: 200"
  if x=4 then print "ISO: 400"
  if x=5 then print "ISO: 800"
  if x=6 then print "ISO: 1600"
  if x=7 then print "ISO: 3200"
  if x=-1 then print "ISO: HiISO"
  x=get_IS_mode
  if x=0 then print "IS Mode: Continuous"
  if x=1 then print "IS Mode: Shoot Only"
  if x=2 then print "IS Mode: Panning"
  if x=3 then print "IS Mode: OFF"
  b=get_resolution
  if b=0 then print "Resolution: Large"
  if b=1 then print "Resolution: Medium 1"
  if b=2 then print "Resolution: Medium 2"
  if b=3 then print "Resolution: Medium 3"
  if b=4 then print "Resolution: Small"
  if b=8 then print "Resolution: Wide"
  return

:second_set
  get_prop 169 x
  if x=1 then print "Video Quality: 320x240"
  if x=2 then print "Video Quality: 640x480"
  if x=4 then print "Video Quality: 1280x720"
  x=get_disk_size
  x=x/1000
  print "Disk Size(MB): "x
  x=get_free_disk_space
  x=x/1000
  print "Free Space(MB): "x
  get_prop 209 b
  print "Exp Comp: "b
  get_prop 127 b
  print "Flash Exp Comp: "b
return

:third_set
  get_prop 270 b
  if b=0 then print "WB: Auto"
  if b=1 then print "WB: Daylight"
  if b=2 then print "WB: Cloudy"
  if b=3 then print "WB: Tungsten"
  if b=4 then print "WB: Fluorescent"
  if b=5 then print "WB: Fluorescent H"
  if b=6 then print "WB: Flash"
  if b=7 then print "WB: Custom"
  get_prop 50 b
  if b=8228 then print "Mode Dial: Custom"
  if b=-32767 then print "Mode Dial: Manual"
  if b=-32766 then print "Mode Dial: Av"
  if b=-32765 then print "Mode Dial: Tv"
  if b=-32764 then print "Mode Dial: Program"
  if b=-32768 then print "Mode Dial: Auto"
  if b=-32755 then print "Mode Dial: Portrait"
  if b=-32756 then print "Mode Dial: Landscape"
  if b=-32757 then print "Mode Dial: Night Snapshot"
  if b=-32249 then print "Mode Dial: Sports"    
  if b=16402 then print "Mode Dial: Sunset"  
  if b=-32246 then print "Mode Dial: Stitch Assist"    
  if b=2600 then print "Mode Dial: Movie"
  get_prop 155 b
  if b=0 then print "Meter: Evaluative"
  if b=1 then print "Meter: Spot"
  if b=2 then print "Meter: Center Wgt"
  get_prop 66 b
  if b=0 then print "Date Stamp: OFF"
  if b=1 then print "Date Stamp: Date"
  if b=2 then print "Date Stamp: Date & Time"
  get_prop 281 b
  if b=0 then print "Safety MF: OFF"
  if b=1 then print "Safety MF: ON"

return

:wait_loop
     wait_click 10000
     is_key k "set"
     if k=1 then goto "exit_loop"
   goto "wait_loop"
:exit_loop
 cls
return

:finished
 if h=1 then print_screen 0
end

Update 4-19-11: When using the wait_click statements, some cameras require the timeout be specified; recommend starting with "wait_click 10000" (10secs). The script has been updated to reflect the change.
« Last Edit: 19 / April / 2011, 17:56:08 by SkyWalker9 »

 

Related Topics