Vorrei tornare a parlare delle Canon SDK ( o EDSDK ), un potente strumento che Canon mette a disposizione dei suoi consumatori. Scrissi qualcosa a riguardo in questo post, ora vi vorrei dare qualche dettaglio in più in merito agli strumenti a disposizione. Una volta aperto il pacchetto delle SDK ( versione per Windows, esiste pure una versione per Mac ) ci troveremo davanti a tre cartelle: Document, EDSDK e Sample. Nella prima troviamo il vademecum del programmatore, con le sue 150 pagine di references. In EDSDK troviamo il fulcro delle SDK, ossia le DLL, le librerie e headers, senza di queste il vostro lavoro non può nemmeno cominciare. Nell'ultima cartella invece troviamo degli esempi, creati da Canon, con lo scopo di darci degli indizi sulla tecnica di programmazione necessaria per controllare da PC la nostra DLSR e capire come utilizzare le API disponibili.
Le attuali EDSDK ci permetto di iniziare a lavorare immediatamente con i seguenti tre linguaggi: C++, Visual Basic .NET e C#. Di questi abbiamo già i wrapper pronti all'uso, dovremmo solo scrivere il nostro codice e fare la chiamata ai metodi ( possibilmente con i parametri giusti 😀 ). Se invece vogliamo agire fuori dagli schemi, ad esempio creando un'applicazione in Java per controllare la camera, avremmo bisogno di creare un wrapper seguendo le specifiche del JNI ( Java Native Interface ), questo permetterà all'applicazione Java di utilizzare le DLL senza problemi. Però il wrapper dovremmo crearcelo noi, una bella seccatura, sempre se non ci ha pensato qualcun altro. Per Java esiste questo progetto, ormai morto, ma chissà, forse si riesce comunque a cavarci fuori qualcosa.
Io personalmente ho optato per la strada più semplice, vado di C# ( o, ironicamente, C Cancelletto 😀 ). C# è un linguaggio molti simile a Java, anche se ci sono delle belle differenze e non è portabile quanto il fratello. C# infatti è sviluppato da Microsoft e rigorosamente per sistemi Microsoft, tuttavia grazie al progetto Momo, il codice C# può essere reso disponibile per altre piattaforme molto semplicemente. Dato che il mio progettino non prevede l'utilizzo di librerie grafiche il porting dovrebbe essere piuttosto indolore ( fiuuu 😀 ).
Se nel frattempo vi siete un po' arrugginiti in materia C# vi consiglio di dare una letta a queste guide: Guida C# da html.com, C# Language da redhost.net ed ovviamente non poteva mancare la MSDN.
Per i più curiosi uploado il file EDSDK.cs che è il wrapper utilizzato per dialogare con le dll. Queste ultime però non posso metterle a disposizione, stando alla licenza, dovrete richiederle a Canon ( vd. link alla prima riga ).
EDSDK (1739 download )Al momento però il mio progetto va un po' a rilento, da una parte perchè sto "rispolverando" C# ( grande balla, lo sto imparando :D, non ho mai usato C# ) e da un'altra perchè per ora non posseggo una DSLR Canon EOS, quindi devo "andare a scrocco" per testare l'applicazione. 😀 (( Tornerò presto su questo argomento 😉 ))
Come ultima cosa torno a ribadire un concetto già espresso nel precedete post. E' davvero un peccato che con tutti gli strumenti che Canon mette a disposizione non ci sia nessuna comunità di sviluppatori ben radicata.