About: PTP Extension/ptpcam Examples   Sponge Permalink

An Entity of Type : owl:Thing, within Data Space : 134.155.108.49:8890 associated with source dataset(s)

Some contributed examples using ptpcam and the Lua script from ptpCamGui To give yourself access to the same functionality as ptpcamgui create the file A/CHDK/LUALIB/lptpgui.lua with the text from below. This is a copy of what ptpcamgui copies to your SD card to enable many of its functions. If you want the latest version, you will find this on your memory card after using ptpcamgui to download files from your camera. -- lptpgui.lua -- store this file in CHDK/LUALIB lptpgui = {} lptpgui.version=120 -- begin -- DCIM Download -- local function getfileson(path,hfile) local fd,c,s,fpath,stat,i,tc,ts=os.listdir(path),0,0 if fd~=nil and #fd>0 then for i=1, #fd do fpath=path .. "/" .. fd[i] stat=os.stat(fpath) if stat~=nil then if stat.is_dir==true then if fd[i]~="CANONMSC" then tc,ts=getfileso

AttributesValues
rdfs:label
  • PTP Extension/ptpcam Examples
rdfs:comment
  • Some contributed examples using ptpcam and the Lua script from ptpCamGui To give yourself access to the same functionality as ptpcamgui create the file A/CHDK/LUALIB/lptpgui.lua with the text from below. This is a copy of what ptpcamgui copies to your SD card to enable many of its functions. If you want the latest version, you will find this on your memory card after using ptpcamgui to download files from your camera. -- lptpgui.lua -- store this file in CHDK/LUALIB lptpgui = {} lptpgui.version=120 -- begin -- DCIM Download -- local function getfileson(path,hfile) local fd,c,s,fpath,stat,i,tc,ts=os.listdir(path),0,0 if fd~=nil and #fd>0 then for i=1, #fd do fpath=path .. "/" .. fd[i] stat=os.stat(fpath) if stat~=nil then if stat.is_dir==true then if fd[i]~="CANONMSC" then tc,ts=getfileso
dcterms:subject
abstract
  • Some contributed examples using ptpcam and the Lua script from ptpCamGui To give yourself access to the same functionality as ptpcamgui create the file A/CHDK/LUALIB/lptpgui.lua with the text from below. This is a copy of what ptpcamgui copies to your SD card to enable many of its functions. If you want the latest version, you will find this on your memory card after using ptpcamgui to download files from your camera. -- lptpgui.lua -- store this file in CHDK/LUALIB lptpgui = {} lptpgui.version=120 -- begin -- DCIM Download -- local function getfileson(path,hfile) local fd,c,s,fpath,stat,i,tc,ts=os.listdir(path),0,0 if fd~=nil and #fd>0 then for i=1, #fd do fpath=path .. "/" .. fd[i] stat=os.stat(fpath) if stat~=nil then if stat.is_dir==true then if fd[i]~="CANONMSC" then tc,ts=getfileson(fpath,hfile) c=c+tc s=s+ts end elseif stat.is_file==true then hfile:write(path .. "/" .. "|" .. fd[i] .. "|" .. os.date("%Y%m%d%H%M%S", stat.mtime) .. " ") s=s+(stat.size-1)/4096+1 c=c+1 end end end end return c,s end local function getdcimfiles() local fn,count,size,tc,ts="A/ptpgui.txt",0,0 local file=io.open(fn,"wb") if file then tc,ts=getfileson("A/DCIM",file) count=count+tc size=size+ts file:close() end if count>0 then size=(size-1)/256+1 else size=0 end return count .. " " .. fn .. " " .. size end function lptpgui.dcimdl() return getdcimfiles() end -- end -- DCIM Download -- -- begin -- GetCamMode -- function lptpgui.getcammode() modemap=require("GEN/modelist") capmode=require("capmode") mode="" for i=1, #modemap do if capmode.valid(modemap[i]) then mode=mode..modemap[i].."|" end end return mode end -- end -- GetCamMode -- -- begin -- GetCamInfo -- function lptpgui.getcaminfo() info="" info=info..get_vbatt().."|"..get_config_value(8).."|"..get_config_value(9).."|"..get_free_disk_space() return info end -- end -- GetCamInfo -- -- begin -- ExecLuaString -- local function init_defaultvars(tvars) if type(tvars)=="table" then for var,val in pairs(tvars) do rawset(_G,var,val) end end end local function gui_print(...) local str="" for i=1,select("#",...) do if str~="" then str=str.." " end str=str..tostring(select(i,...)) end write_usb_msg(str) cam_print(...) end function lptpgui.exec_luastring(script,tvars) init_defaultvars(tvars) script=string.gsub(script,"\002"," ") script=string.gsub(script,"\003","]]") cam_print=print print=gui_print func,merr=loadstring(script) if func==nil then print(merr) else func() end end -- end -- ExecLuaString -- -- begin -- ExecLuaFile -- function lptpgui.exec_luafile(filename,tvars) init_defaultvars(tvars) cam_print=print print=gui_print func,merr=loadfile(filename) if func==nil then print(merr) else func() end end -- end -- ExecLuaFile -- return lptpgui Note the redefine of print before your script runs in the exec_luafile code above. This allows your print commands to also be seen by your (batch file, perl,...) script running on the PC. The output can be fetched using the ptpcam --chdk="getm" command (see perl script below for an example). This print output stays in memory on your camera until you perform a getm so if you don't plan on reading the messages using getm you may want to add if cam_print==nil then cam_print=print end and use cam_print in your scripts instead to avoid a possible memory over-use issue. The following is the help given from the command line of ptpcam and ptpcam --chdk, followed by some examples showing some common tasks you will likely want to do. C:\ptpcam_V2.0>ptpcam -h USAGE: ptpcam [OPTION] Options: --bus=BUS-NUMBER USB bus number --dev=DEV-NUMBER USB assigned device number -r, --reset Reset the device -l, --list-devices List all PTP devices -i, --info Show device info -o, --list-operations List supported operations -p, --list-properties List all PTP device properties (e.g. focus mode, focus distance, etc.) -s, --show-property=NUMBER Display property details (or set its value, if used in conjunction with --val) --set-property=NUMBER Set property value (--val required) --set=PROP-NAME Set property by name (abbreviations allowed) --val=VALUE Property value (numeric for --set-property and string or numeric for --set) --show-all-properties Show all properties values --show-unknown-properties Show unknown properties values -L, --list-files List all files -g, --get-file=HANDLE Get file by given handler -G, --get-all-files Get all files --overwrite Force file overwrite while savingto disk -d, --delete-object=HANDLE Delete object (file) by given handle -D, --delete-all-files Delete all files form camera -c, --capture Initiate capture --nikon-ic, --nic Initiate Nikon Direct Capture (no download!) --nikon-dc, --ndc Initiate Nikon Direct Capture and download --loop-capture=N Perform N times capture/get/delete -f, --force Talk to non PTP devices -v, --verbose Be verbose (print more debug) -h, --help Print this help message --chdk[=command] CHDK mode. Interactive shell unless optional command is given. Run interactive shell and press 'h' for a list of commands. C:\ptpcam_V2.0> C:\ptpcam_V2.0>ptpcam --chdk <conn> h q quit quit program h help list commands r reset reconnect to camera version get CHDK PTP version (ptpcam and camera) shutdown shutdown camera (soft) reboot reboot camera reboot <filename> reboot camera using specified firmware update reboot-fi2 reboot camera using default firmware update m memory <address> get byte at address m memory <address>- <address> get bytes at given range m memory <address> <num> get num bytes at given address set <address> <long> set long value at address c call <address> <arg1> ... call function at address with given arguments upload <local> <remote> upload local file to camera download <remote> <local> download file from camera mode <val> set mode (0=playback,1=record) lua <code> execute lua code luar <code> execute "return <code>" and retreive result script-support show supported script interfaces script-status show script execution and message status getm get messages / return values from script putm <message> send <message> to running script <conn> #======================= <b>EXAMPLES</b> =========================== <conn> <conn> #----- generate the file list ------------------------------- <conn> #the following will call CHDK/LUALIB/lptpgui.lua and will <conn> #create a file called A/ptpgui.txt on your SD card that contains <conn> #a complete list of jpg files on your camera including path names <conn> #and date and time of creation (change false to true if you have gps) <conn> luar require("lptpgui").dcimdl(false) script:1 1:ret:'420 A/ptpgui.txt 712' <conn> <conn> #----- download the file list, download a file -------------- <conn> #download the file list generated above <conn> download A/ptpgui.txt fileList.txt <conn> #now that you have complete path info you can easily download <conn> #only the image you require <conn> download A/DCIM/101___07/IMG_0419.JPG img.jpg <conn> <conn> #----- upload your CHDK LUA script -------------------------- <conn> #after you tweak your script, you can upload it to your camera <conn> upload myRevisedScript.lua A/CHDK/SCRIPTS/myRevisedScript.lua <conn> <conn> #----- run your CHDK LUA script on your camera -------------- <conn> #put your camera into record mode <conn> mode 1 <conn> #then run your scipt with params 0,1,2,3 <conn> lua require('lptpgui').exec_luafile([[A/CHDK/SCRIPTs/myRevisedScript.lua]],{0,1,2,3}) </conn> </conn> </conn> </conn> </conn> </conn> </conn> </conn> </conn> </conn> </conn> </conn> </conn> </conn> </conn> </conn> </conn> </conn> </conn> </conn> </conn> </conn> </conn> </conn> </conn> </message> </message></code> <dl> <dd> The following (activestate 5.10) perl script will download the last N files from your camera. </dd> </dl> <pre> <code> #!perl #--------------------------------------------------------------------------- # Fetches last N files (based on date/time of pic) from camera. (montana123) #--------------------------------------------------------------------------- my $numFilesToGet=5; #--------------------------------------------------------------------------- printf(" Fetching file list. "); my @fileListResponse = `ptpcam --chdk="luar require('lptpgui').dcimdl(false)"`; sleep 2; my @downLoadResponse = `ptpcam --chdk="download A/ptpgui.txt fileList.txt"`; sleep 2; printf(" Fetching last $numFilesToGet files. "); open FH, " <filelist.txt" or die $!; my @filelist="<FH"> ; close FH; my $lastFile = $#fileList; my $firstFile = $lastFile-($numFilesToGet-1); for ($i=$firstFile;$i<=$lastFile;$i++) { ($path,$name,$datetime,$junk)=split(/\|/,$fileList[$i]); #printf("$path-$name-$datetime-$junk "); $result=`ptpcam --chdk="download $path$name $name"`; printf (" > $path - $name result= $result "); sleep 2; } printf(" -- All done. Hit ENTER to quit."); $response= <stdin> ; exit (0); </stdin> </filelist.txt"></code></pre> <p> </p> <dl> <dd> The following (activestate 5.10) perl script will (optionally) upload your CHDK LUA script to your camera and (optionally) run it. </dd> </dl> <pre> <code> #!perl #--------------------------------------------------------------------------- # Optionally upload/run script to/on camera (montana123) #--------------------------------------------------------------------------- my $myScript="myRevisedScript.lua"; my $upload=0; my $run=1; #--------------------------------------------------------------------------- if ($upload) { printf(" Uploading $myScript script to camera. "); my @upLoadResponse = `ptpcam --chdk="upload $myScript A/CHDK/SCRIPTS/$myScript"`; } if ($run) { if ($upload) { sleep 3; } $scriptMessage = `ptpcam --chdk="getm"`; #discard existing messages sleep 1; printf(" Running $myScript script on camera. "); my $modeResponse = `ptpcam --chdk="mode 1"`; sleep 3; my $scriptResponse = `ptpcam --chdk="lua require('lptpgui').exec_luafile([[A/CHDK/SCRIPTS/$myScript]])"`; printf(" > launch response= $scriptResponse "); my $wait=100; while ($wait) { sleep 3; $scriptStatus = `ptpcam --chdk="script-status"`; ($junk,$run,$msg)=split(/\s+/,$scriptStatus); printf(" > status: $run - $msg "); $wait--; if ($run =~ /no/) {$wait=0;} } if ($msg =~ /yes/) { sleep 1; $scriptMessage = `ptpcam --chdk="getm"`; printf(" Output From Script PRINT command(s): $scriptMessage -- "); } sleep 1; my $modeResponse = `ptpcam --chdk="mode 0"`; } printf(" All done. Hit ENTER to quit."); $response= <stdin> ; exit(0); </stdin></code></pre> <p> </p> </code></code> </val> </local> </remote> </remote> </local> </arg1> </address> </long> </address> </num> </address> </address> </address> </address> </filename></conn>
Alternative Linked Data Views: ODE     Raw Data in: CXML | CSV | RDF ( N-Triples N3/Turtle JSON XML ) | OData ( Atom JSON ) | Microdata ( JSON HTML) | JSON-LD    About   
This material is Open Knowledge   W3C Semantic Web Technology [RDF Data] Valid XHTML + RDFa
OpenLink Virtuoso version 07.20.3217, on Linux (x86_64-pc-linux-gnu), Standard Edition
Data on this page belongs to its respective rights holders.
Virtuoso Faceted Browser Copyright © 2009-2012 OpenLink Software