Affichage des résultats 1 à 44 sur 44
Discussion: ED-SDK 2.7 En Delphi
-
14/01/2010, 07h57 #1
- Inscription
- January 2008
- Localisation
- France
- Messages
- 26
- Boîtier
- Canon EOS 20D ~ EOS 7D
- Objectif(s)
- 10-22 f/3.5-4.5 ~ 50 f/1.4 ~ Sigma 18-50 f/2.8 ~ 100 f/2.8 Macro ~ 100-400 f/4.5-5.6
ED-SDK 2.7 En Delphi
Bonjour à tous,
A terme je souhaite développer une appli pour l'astrophoto qui me permette de commander un Reflex Canon, mais pour le moment j'essaye déjà de maitriser les commandes de base.
Petite difficulté supplémentaire, mon langage de prédilection est le Delphi, abandonné par Canon depuis la version 2.5 du SDK.
J'ai donc commencé par télécharger toutes les version disponible du SDK, pour trouver les dernières sources en Delphi (SDK 2.4). J'ai ensuite essayé d'intégrer les différences avec le SDK le plus récent pour enfin faire mon propre programme de test.
Les bases fonctionnent, mais pas beaucoup plus.
J'arrive à charger le SDK, trouver le reflex, m'y connecter, récupérer ses règlages, les changer, prendre une photo et la télécharger (ce qui n'est déjà pas mal).
Je bloque pour ce qui est de la prise Bulb et du LiveView. Bulb testé avec un 20D et un 7D, LiveView testé avec un 7D.
Bulb
Lorsque j'envoie kEdsCameraCommand_BulbStart
7D : Erreur #44313 (0xAD19) - non documentée
20D : Erreur #7 ( EDS_ERR_NOT_SUPPORTED )
LiveView
Lorsque j'appelle EdsDownloadEvfImage
7D : Erreur de pointeur(là je pense peut-être trouver un jour une solution) + Erreur #97 (0x61 EDS_ERR_INVALID_HANDLE - ce qui me parait logique)
Ces deux problème (Buld Et Liveview sont à prioris tottalement indépendant, mais si vous avez des pistes pour l'un où l'autre, je suis preneur.
Mes sources (inutilisable sans le SDK 2.7 bien sur) : CCCp 0.0.9.rar (216ko)
Juste pour comprendre comment s'articule mes sources : J'ai créé un Objet TCanonCamera pour faciliter l'utilisation du SDK. Les Méthodes de TCanonCamera se chargent d'appeler les méthodes du SDK "qui vont bien".
Je suis ouvert à toute suggestion qui me permetrai d'avancer sur ce projet.
Ah et si ces sources vous sont utiles, je vous en prie, servez-vous.
Dernière modification par pixelk ; 14/01/2010 à 08h00.
-
14/01/2010, 09h39 #2
- Inscription
- January 2008
- Localisation
- France
- Messages
- 26
- Boîtier
- Canon EOS 20D ~ EOS 7D
- Objectif(s)
- 10-22 f/3.5-4.5 ~ 50 f/1.4 ~ Sigma 18-50 f/2.8 ~ 100 f/2.8 Macro ~ 100-400 f/4.5-5.6
J'ai avancé d'une ligne pour le LiveView \o/
J'ai trouvé le format d'appel correct de EdsDownloadEvfImage
et maintenant je bloque sur EvdGetPointer
Source : CCCp 0.0.11 (35ko)
-
15/01/2010, 20h43 #3
- Inscription
- March 2008
- Localisation
- France
- Messages
- 31
- Boîtier
- EOS 40D
- Objectif(s)
- Tamron 17-50 f:2,8 100 mm macro 70-200mm f:4 L
Bonjour PixelK,
Tu as une bonne idée, je m'intéresse également à l'astro...
Voici comment je m'en suis sorti (après de nombreux tests, il y a peut être une autre solution plus performante...Je n'ai pas creusé) :
1) Récupération des données Live View comme indiqué dans le SDK avec :
- EdsCreateMemoryStream(0, FluxLiveview)
- EdsCreateEvfImageRef(FluxLiveView, EvfImage)
- EdsDownloadEvfImage((Camera, EvfImage)
2) Récupération de l'image Live View et de sa taille avec :
- EdsGetPointer(FluxLiveView, ImageData)
- EdsGetLength(FluxLiveView, ImageSize)
Puis envoie de l'image dans un buffer en mémoire avec CopyMemory.
3) Envoie du contenu du buffer dans un JPEG (via un flux)
Note : FluxLiveview, EvfImage, Camera, ImageData sont des pointeurs (déclarés en type Pointer sous Delphi).
-
24/01/2010, 15h03 #4
- Inscription
- January 2008
- Localisation
- France
- Messages
- 26
- Boîtier
- Canon EOS 20D ~ EOS 7D
- Objectif(s)
- 10-22 f/3.5-4.5 ~ 50 f/1.4 ~ Sigma 18-50 f/2.8 ~ 100 f/2.8 Macro ~ 100-400 f/4.5-5.6
J'arrive maintenant à faire le EdsDownloadEvfImage et à en lire les propriétés. Par contre je bloque toujours sur la récupération de l'image LiveView. J'ai mis le projet en pause parce que je me suis fait une petite frayeur : au bout de deux heures d'essais de plus en plus infructueux, plus moyen de reprendre le contrôle manuel du 7D, même après l'avoir éteint rallumé !
Heureusement tout est rentré dans l'ordre après avoir sortis la batterie quelques secondes.
Dès que j'ai un peu de courage, je m'y remet.
-
05/04/2010, 21h02 #5
- Inscription
- September 2009
- Localisation
- Suisse
- Messages
- 27
- Boîtier
- 5D III, 7D II
- Objectif(s)
- EF-S 10-22, EF-S 15-85, EF 70-200 f/4
-
19/06/2010, 15h11 #6SpirtGuest
Any news about LiveView?
-
19/06/2010, 16h41 #7
- Inscription
- January 2008
- Localisation
- France
- Messages
- 26
- Boîtier
- Canon EOS 20D ~ EOS 7D
- Objectif(s)
- 10-22 f/3.5-4.5 ~ 50 f/1.4 ~ Sigma 18-50 f/2.8 ~ 100 f/2.8 Macro ~ 100-400 f/4.5-5.6
Not yet, I postponed this project for the moment.
-
20/06/2010, 05h49 #8SpirtGuest
It's a pity. I am also working on this problem and very need to solve it ASAP. I have a sample on C++ which works with live view and it seems it has pretty easy code realisation.I Don't know why it's still a problem in delphi. EdsDownloadEvfImage still returns EDS_ERR_INVALID_HANDLE. Any help appreciated.
-
20/06/2010, 10h09 #9SpirtGuest
I have solved the problem. Soon I'll give You a code if u need. Just need to order it first.
-
20/06/2010, 10h28 #10
- Inscription
- January 2008
- Localisation
- France
- Messages
- 26
- Boîtier
- Canon EOS 20D ~ EOS 7D
- Objectif(s)
- 10-22 f/3.5-4.5 ~ 50 f/1.4 ~ Sigma 18-50 f/2.8 ~ 100 f/2.8 Macro ~ 100-400 f/4.5-5.6
Excellent News !
I'm really interested by your code, thanks in advance.
-
20/06/2010, 13h00 #11SpirtGuest
A little bit early to celebrate. Got another problem. Here is my code :
function TCanonCamera.downloadLiveData(Image:TImage) : Boolean;
var
evfImage : PEdsEvfImageRef;
......
begin
......
stream := nil;
Self.LastError := EdsCreateFileStream(
'LiveData.jpg',kEdsFileCreateDisposition_CreateAlw ays, kEdsAccess_ReadWrite,stream);
if Self.LastError <> EDS_ERR_OK then
Exit;
evfImage:=nil;
Self.LastError := EdsCreateEvfImageRef(stream, evfImage);
if Self.LastError <> EDS_ERR_OK then
begin
EdsRelease(stream);
Exit;
end;
Self.LastError := EdsDownloadEvfImageLiveView(Self.FRef, evfImage^);
if Self.LastError <> EDS_ERR_OK then
begin
EdsRelease(evfImage);
EdsRelease(stream);
Exit;
end;
....
Result := true;
end;
As You can see i redeclared evfImage from EdsEvfImageRef to PEdsEvfImageRef where PEdsEvfImageRef = ^EdsEvfImageRef;
and
function EdsDownloadEvfImageLiveView ( inCameraRef : EdsCameraRef;
inEvfImageRef : PEdsEvfImageRef) : EdsError; stdcall; external edsdk name 'EdsDownloadEvfImage';
It properly saves liveView data to LiveData.jpg, but after exiting this function TCanonCamera.downloadLiveData(Image:TImage) : Boolean; access violation occurs, so I can take only one frame of LiveView data. Still working on it...Dernière modification par Spirt ; 20/06/2010 à 13h13.
-
20/06/2010, 13h56 #12
- Inscription
- January 2008
- Localisation
- France
- Messages
- 26
- Boîtier
- Canon EOS 20D ~ EOS 7D
- Objectif(s)
- 10-22 f/3.5-4.5 ~ 50 f/1.4 ~ Sigma 18-50 f/2.8 ~ 100 f/2.8 Macro ~ 100-400 f/4.5-5.6
I seems I'm unable to replicate the download of the liveview image on my 7D (the jpeg file is 0ko and I get the same access violation at the end of downloadLiveData.
Could you please post the full function to a site like Pastebin.com - #1 paste tool since 2002! (it preserves the formating) ?
-
20/06/2010, 14h12 #13SpirtGuest
Somethimes I also get jpeg file is 0k after access violations. Don't know what it depends on. Try switch off/on your camera.
Tomorrow I'll give your all code. I am in a hurry.
-
20/06/2010, 14h52 #14
- Inscription
- January 2008
- Localisation
- France
- Messages
- 26
- Boîtier
- Canon EOS 20D ~ EOS 7D
- Objectif(s)
- 10-22 f/3.5-4.5 ~ 50 f/1.4 ~ Sigma 18-50 f/2.8 ~ 100 f/2.8 Macro ~ 100-400 f/4.5-5.6
Here is my version of the fonction, no error and valid liveview jpeg : Delphi | function TCanonCamera.Download - Pk - 25KXhhQw - Pastebin.com
-
20/06/2010, 15h40 #15SpirtGuest
Dernière modification par Spirt ; 20/06/2010 à 15h45.
-
20/06/2010, 15h59 #16
- Inscription
- January 2008
- Localisation
- France
- Messages
- 26
- Boîtier
- Canon EOS 20D ~ EOS 7D
- Objectif(s)
- 10-22 f/3.5-4.5 ~ 50 f/1.4 ~ Sigma 18-50 f/2.8 ~ 100 f/2.8 Macro ~ 100-400 f/4.5-5.6
Here is my full Source CCCp 0.0.17.
Works fine with my 7D, on battery or on AC power, on two different computers, usin SDK 2.7 (I know that 2.8 is out, but for now, 2.7 works)
-
20/06/2010, 16h23 #17SpirtGuest
It works! Thank You very much!!!
-
20/06/2010, 16h29 #18
- Inscription
- January 2008
- Localisation
- France
- Messages
- 26
- Boîtier
- Canon EOS 20D ~ EOS 7D
- Objectif(s)
- 10-22 f/3.5-4.5 ~ 50 f/1.4 ~ Sigma 18-50 f/2.8 ~ 100 f/2.8 Macro ~ 100-400 f/4.5-5.6
Thank you Spirt for publishing your findings !
Now, the next level, get the liveview in a memory stream, to be able to display it with a high refresh rate.
I will also try to drive the focus motor in LiveView.
I'm working on it right now.
-
20/06/2010, 21h35 #19
- Inscription
- January 2008
- Localisation
- France
- Messages
- 26
- Boîtier
- Canon EOS 20D ~ EOS 7D
- Objectif(s)
- 10-22 f/3.5-4.5 ~ 50 f/1.4 ~ Sigma 18-50 f/2.8 ~ 100 f/2.8 Macro ~ 100-400 f/4.5-5.6
An here is a very dirty state (no time to clean the source right now) with working focus control and LiveView Zoom (but still no LiveView directly to memory stream) :
CCCp 0.0.20 BETA
-
21/06/2010, 13h11 #20SpirtGuest
Bonjour pixelk. What do You meant under LiveView zoom? I have a manual zoom on my EOS 1000D and when I a adjust it liveview picture is also zooming...
By the way I compared my yesterday's unworking code with your .17 version code (I mean DownloadLiveView function) and didn't find any serious differences except of variables names. So I really don't understand why it didn't work.
Soon I'll also try to finish with liveView MemoryStream data send. If You will make it first please post the code here. Thank You
-
22/06/2010, 11h05 #21
- Inscription
- January 2008
- Localisation
- France
- Messages
- 26
- Boîtier
- Canon EOS 20D ~ EOS 7D
- Objectif(s)
- 10-22 f/3.5-4.5 ~ 50 f/1.4 ~ Sigma 18-50 f/2.8 ~ 100 f/2.8 Macro ~ 100-400 f/4.5-5.6
LiveView Zoom is a misleading name, but it's the one in the documentation : when in LiveView mode, you can enlarge a zone of the LiveView picture x5 or x10, to perfect your focus.
About what worked, and what didn't, I think it was really just a problem of how we passed some variable to the sdk function. You may have seen that in the end, I didn't use the function and data type you created for the occasion. My success here is more due to luck in trial and error than anything else.
I hope we found le liveview memorystream solution soon, it's the only thing that I'm really missing now (apart from some code cleaning).
-
19/09/2010, 08h36 #22ulduz114Guest
i have 550d , and this camera need to sdk 2.8 , and this application does not work for my camera
i hope this application update to sdk 2.8
-
19/09/2010, 08h37 #23ulduz114Guest
i have 550d , and this camera need to sdk 2.8 , and this application does not work for my camera
i hope this application update to sdk 2.8
-
02/10/2010, 19h47 #24
- Inscription
- October 2010
- Localisation
- Ottawa, Canada
- Âge
- 56
- Messages
- 3
- Boîtier
- Canon EOS 40D
- Objectif(s)
- Astronomie avec Canon EOS DSLR
-
14/10/2010, 20h46 #25
- Inscription
- October 2010
- Localisation
- FRANCE
- Âge
- 65
- Messages
- 3
- Boîtier
- EOS 5D MARK II
- Objectif(s)
- dev Delphi
Bonjour,
Je suis nouveau sur ce cite et j'utilise le module développé par pixelK avec le SDK 2.8.
petit problème d'utilisation sous Delphi 2010 ,
L'utilisation du module fonctionne, mais certaines fonctions comme "EdsGetDeviceInfo" ne récupère pas la bonne structure de donnée pour "FDeviceInfo" qui n'est pas affecté correctement et provoque un manque d'info pour la suite.
Avez vous constaté la même chose et avez vous pu corriger le probleme
PMROG
-
02/11/2010, 12h53 #26
- Inscription
- January 2008
- Localisation
- France
- Messages
- 26
- Boîtier
- Canon EOS 20D ~ EOS 7D
- Objectif(s)
- 10-22 f/3.5-4.5 ~ 50 f/1.4 ~ Sigma 18-50 f/2.8 ~ 100 f/2.8 Macro ~ 100-400 f/4.5-5.6
-
03/11/2010, 07h09 #27
- Inscription
- October 2010
- Localisation
- FRANCE
- Âge
- 65
- Messages
- 3
- Boîtier
- EOS 5D MARK II
- Objectif(s)
- dev Delphi
Bonjour,
ok je comprends, Il faut de toute facon que je passe par la, je regarde les corrections a apporter et j'ajoutterai à la discution, la version 2.9 est sortie pas de modif seul des nouveux boitiers sont ajoutés.
A+
pmrog
-
06/04/2013, 21h44 #28
- Inscription
- April 2013
- Localisation
- Lyon
- Âge
- 43
- Messages
- 22
- Boîtier
- EOS 1000D Modifié et EOS1100D
- Objectif(s)
- 18/55 + samyang 8.5mm F3/5
Bonjour,
Je déterre cette discutions pour vous informer, que CCCP est une bonne base pour utiliser le SDK canon avec delphi.
Cela fait 3 ans qu'on utilise cette base dans un projet et même avec le SDK 2.12, ça fonctionne.
Pour votre information les améliorations sont :
-Live View qui utilise la RAM (plus de création de fichier) et de ce fait extrêmement fluide. accidentellement trouvé en janvier de cette année (2013)
-Gestion du mode Bulb pour les nouveaux boitier (7D-1100D). Fait en 2011
-Affichage des images RAW directement dans delphi (c'est pas de la tarte). Fait fin 2012
-Lecture du numéro de série de l'APN (problème avec certains APN ou le numéro de série ne correspond pas)
Je suis à l'heure actuel en train de développer une DLL pour que l'intégration soit plus facile dans un programme.
Je programme sur DELPHI XE3 Started.
Je remercie pixelk d'avoir commencé ce projet.
Je cherche de l'aide pour gérer les événements renvoyé par le canon directement dans la DLL. ex : PostMessage( HWND(inContext), WM_USER+1 , integer(inEvent) , integer(inPropertyID) );
Note : Je n'avais jamais programmé en Delphi avant de'apprendre à utiliser le SDK. Nous avions commencé avec Delphi 7, maintenant avec Delphi XE3, il faut effectuer pas mal de modification du fichier canoncamera.pas avec des commande qui ne fonctionne plus comme : 'GetModelName'.
-
07/04/2013, 07h57 #29
- Inscription
- January 2008
- Localisation
- France
- Messages
- 26
- Boîtier
- Canon EOS 20D ~ EOS 7D
- Objectif(s)
- 10-22 f/3.5-4.5 ~ 50 f/1.4 ~ Sigma 18-50 f/2.8 ~ 100 f/2.8 Macro ~ 100-400 f/4.5-5.6
Je serais très intéressé de travailler sur ce projet (même si je ne dispose que de Delphi XE 1) si et seulement si tu publies tes sources comme je l'ai fait, pour le bénéfice de tous.
-
07/04/2013, 08h40 #30
- Inscription
- October 2010
- Localisation
- FRANCE
- Âge
- 65
- Messages
- 3
- Boîtier
- EOS 5D MARK II
- Objectif(s)
- dev Delphi
bonjour ,
Bravo pour reprendre l'exploitation de la SDK sous Delphi.
La grande évolution entre les versions Delphi 2010 , Xe1 xe2 xe3 voir xe4 en cours de préparation et la passage sous des version Windows 7 64 Bits voir Windows 8 , les appels ne sont plus aussi simple pour les DLL ainsi que le mécanisme des ActiveX . Si les applications doivent pérenniser il faut migrer vers une XE2 et quitter delphi7.
je suis très intéressé de reprendre cette discutions pour ce développement .
PMROG
-
07/04/2013, 09h18 #31
- Inscription
- January 2008
- Localisation
- France
- Messages
- 26
- Boîtier
- Canon EOS 20D ~ EOS 7D
- Objectif(s)
- 10-22 f/3.5-4.5 ~ 50 f/1.4 ~ Sigma 18-50 f/2.8 ~ 100 f/2.8 Macro ~ 100-400 f/4.5-5.6
Le 64 Bits n'est qu'en beta dans le SDK, avec des méthodes vitales manquante, et de toute façon les version de delphi qui supportent le 64 bit sont hors de ma portée financière.
De la même manière je n'ai pas les moyen de me payer toutes les MAJ de Delphi. J'ai acheté la XE Starter, mais au final je continue de faire la majeure partie de mes dev en D7, le seul attrait de XE étant l'unicode, donc le portage n'est malheureusement pas du tout facilité.
Je viens juste de mettre à jour CCCp avec le SDK 2.12 avec un minimum d'effort, mais il faut encore que je creuse au niveau des différences.
-
07/04/2013, 10h02 #32
- Inscription
- April 2013
- Localisation
- Lyon
- Âge
- 43
- Messages
- 22
- Boîtier
- EOS 1000D Modifié et EOS1100D
- Objectif(s)
- 18/55 + samyang 8.5mm F3/5
Salut,
perso, je n'ai pas les moyens de programmer en 64 bits, de plus les utilisateurs qui vont exploiter ce que je programme sont pour la plupart avec xp.
J'ai toujours 14 avertissements avec le fichier CanonCamera.pas qui concernent des Erreur de transtypage.
@pixelk : Je ne peu pas mettre publiquement les sources, mais tu peux me contacter à l'adresse suivante : gerald[point]leonis[at]gmail.com, je te fournirais un accès au svn. Et désolé si tu fais une crise cardiaque en voyant mon code
-
07/04/2013, 10h23 #33
- Inscription
- January 2008
- Localisation
- France
- Messages
- 26
- Boîtier
- Canon EOS 20D ~ EOS 7D
- Objectif(s)
- 10-22 f/3.5-4.5 ~ 50 f/1.4 ~ Sigma 18-50 f/2.8 ~ 100 f/2.8 Macro ~ 100-400 f/4.5-5.6
Désolé, pour moi c'est open-source ou rien. Si je travaille c'est pour en faire profiter toute la communauté. Sans ça ce topic n'aurait même pas vu le jour.
J'aurais bien aimé faire progresser ce projet, mais seulement avec des sources disponibles pour tous. N'y a-t-il pas moyen de séparer la partie propriétaire du reste ?
-
07/04/2013, 10h32 #34
- Inscription
- April 2013
- Localisation
- Lyon
- Âge
- 43
- Messages
- 22
- Boîtier
- EOS 1000D Modifié et EOS1100D
- Objectif(s)
- 18/55 + samyang 8.5mm F3/5
C'est pas facile de tout séparer, mais actuellement, je bosse juste sur la DLL, donc j'ai le SVN dédié à cette partie. La DLL canon ne sera pas privé, elle sera disponible gratuitement. Contacte moi pour les acces svn, je peut vraiment pas mettre ça en publique.
Pour info voici ce que devrait faire le logiciel : http://www.youtube.com/watch?v=BeU898gAbao
nous disposons d'une version qui le fait (intégration APN, intégration monture, gestion des prises de vue), et nous travaillons sur un code très propre et évolutif.
-
09/04/2013, 15h23 #35
- Inscription
- January 2008
- Localisation
- France
- Messages
- 26
- Boîtier
- Canon EOS 20D ~ EOS 7D
- Objectif(s)
- 10-22 f/3.5-4.5 ~ 50 f/1.4 ~ Sigma 18-50 f/2.8 ~ 100 f/2.8 Macro ~ 100-400 f/4.5-5.6
Des nouvelles du front :
Après plusieurs tentative j'ai enfin réussi à faire marcher le streaming du LiveView, et sous Delphi 7 ! (donc sous XE ce n'est qu'une question de temps)
Je vais mettre ça en forme et releaser un nouveau CCCp dès que possible.
-
09/04/2013, 16h14 #36
- Inscription
- January 2008
- Localisation
- France
- Messages
- 26
- Boîtier
- Canon EOS 20D ~ EOS 7D
- Objectif(s)
- 10-22 f/3.5-4.5 ~ 50 f/1.4 ~ Sigma 18-50 f/2.8 ~ 100 f/2.8 Macro ~ 100-400 f/4.5-5.6
Voilà la version 0.0.30, utilisant le EDK 2.12 :
CCCp_0.0.30_C078D67F.rar
-
09/04/2013, 19h01 #37
- Inscription
- April 2013
- Localisation
- Lyon
- Âge
- 43
- Messages
- 22
- Boîtier
- EOS 1000D Modifié et EOS1100D
- Objectif(s)
- 18/55 + samyang 8.5mm F3/5
-
09/04/2013, 20h12 #38
- Inscription
- January 2008
- Localisation
- France
- Messages
- 26
- Boîtier
- Canon EOS 20D ~ EOS 7D
- Objectif(s)
- 10-22 f/3.5-4.5 ~ 50 f/1.4 ~ Sigma 18-50 f/2.8 ~ 100 f/2.8 Macro ~ 100-400 f/4.5-5.6
c'est mon code de A à Z, c'est pour ça que c'est en Delphi 7, et que sous XE3, ça planterais à cause de l'unicode (sur les ansistring).
-
09/04/2013, 22h15 #39
- Inscription
- April 2013
- Localisation
- Lyon
- Âge
- 43
- Messages
- 22
- Boîtier
- EOS 1000D Modifié et EOS1100D
- Objectif(s)
- 18/55 + samyang 8.5mm F3/5
-
23/04/2013, 22h27 #40
- Inscription
- April 2013
- Localisation
- Lyon
- Âge
- 43
- Messages
- 22
- Boîtier
- EOS 1000D Modifié et EOS1100D
- Objectif(s)
- 18/55 + samyang 8.5mm F3/5
Bonsoir,
J'ai une version en test de la DLL version Pré-release 1.0.4860.3941
Pour le fonctionnement, c'est simple :
j'ai mis en place une fonction de paramètrage :
on définit les endroits ou l'on peut changer les iso, et les autres choses
une fois que c'est fait, là ça devient des plus simple :
Dans le logiciel
Une fonction pour l'initialisation du SDK
une fonction qui permet la detection du canon (dans un timer) : avantage, si je connecte mon apn, que je le deco et que je le reco, ça fonctionne
une fonction pour que lorsque l'on change les paramètres sur le logiciel, elle soit prisent en compte sur l'APN (ça c'est chiant à faire)
une fonction commune pour la prise en mode bulb ou en mode normal, cette fonction permet si le mode bulb est lancer de l'arreter.
d'autre fonction, pour récupérer le model et le numéro de série de l'apn et le liveview.
Dans la DDL tout se corse, c’est un mélange de threads, de fonction, de callback pour faire simple nous trouvons 3 type de threads
Le premier, un thread difficile à écrire mais très important.
Le thread générale. Il sert à la communication entre L'apn <> Logiciel, en clair, si je change le temps de pose sur l'APN directement, ça me le change sur le logiciel et vice versa, si je le change dans le logiciel, il le change sur l'APN. Ce thread est aussi utilisé pour une fonction importante mais toute petite, lorsque l'on est en mode bulb, il permet de récupérer directement le temps de pose fournit par l'APN à la milliseconde prêt. Ce thread est donc une interface de communication.
Le 2eme thread sert au live view, il permet une gestion du LV optimale, avec une fluidité exemplaire, mais un très léger décalage inférieur à la MS. Un thread très gourmand en ressource cependant.
Le 3eme thread sert uniquement en mode bulb, il permet de lancer la prise de vue, contrôler le temps de poses, et arrêter le mode bulb.
Mais vous allez me dire il manque le téléchargement de l'image sur le PC, bien pour ça nous disposons encore d'un thread de contrôle. Ce thread est lancer des que la DLL reçoit la commande de prise de vue. Pourquoi à ce moment là, la raison est simple, si je décide de changer le répertoire de destination de mes images entre 2 séries, si le thread est déjà lancer, mon répertoire ne changera pas. Revenons à ce thread, il est très simple, ça mise en oeuvre à pris quelques minutes. Quand l'APN "signale" qu'une photo est en attente de transfert, le thread intercepte l'information et réagit comme suit : Interception -> Téléchargement -> Affichage de l'image -> Fermeture du thread.
L'avantage de cette DLL réside dans le fait que nous n'avons pas besoin de contrôler l'état des différents processus, nous configurons la DLL à l’ouverture de la DLL, ensuite tout le processus est automatisé, seul le répertoire de destination est mise à jour à chaque prise de vue. Le plus gros inconvenant réside (en tout cas pour le logiciel que je met en place) dans le fait que dans l'état actuel, le logiciel n'est pas notifié qu'il y a une nouvelle photo à l'écran. Dans mon cas, je suis susceptible de lancer des analyses d'images à la volée.
Pour mon logiciel, il s'agit d'un logiciel d'astronomie spécialisé dans l'astrométrie. En fait à partir d'une photo du ciel (la nuit) avec des étoiles, les images sont analysées et le logiciel donne la position du centre du capteur, le champ visible et les divers objets astronomiques sur la photo (nébuleuses, galaxie, etc...). Il est aussi capable à partir d'une photo et de la focale de l'instrument de retrouver les caractéristiques de l'APN utilisé : taille du capteur en mm, taille des pixels en µ et taille de l'image. Pour l'astrométrie, ça avance bien et même trop bien, par exemple, l'analyse d'image prenait lors de la première version jusqu'à 1H voir plus, à maintenant, le record : 10s, et une moyenne inférieur à la minutes.
JE vais donc développer pour l'occasion une petite interface de test de la DLL, afin d'effectuer un maximum de test avant de la rendre public (pas le code source). L'interface sera simplissime, mais vous pourrez utiliser votre apn directement avec votre PC, seul inconvénient pour vous, il me faudra faire des tests et me fournir tous les bugs éventuels. Et votre model d'apn. Perso, j'ai un 1000D et un 1100D, donc je test uniquement avec ces 2 là.
Autre point : le mode bulb ne fonctionne pas avec le câble série.
Contactez moi en MP si vous êtes intéressé.
Merci de m'avoir lu.
-
08/07/2013, 21h06 #41
- Inscription
- April 2013
- Localisation
- Lyon
- Âge
- 43
- Messages
- 22
- Boîtier
- EOS 1000D Modifié et EOS1100D
- Objectif(s)
- 18/55 + samyang 8.5mm F3/5
Bonne nouvelle,
J'ai effectué des centaines de test de la DLL, bon juste avec un 1100D et un 1000D, mais c'est très stable
Pour obtenir la DLL, contactez moi.
-
05/07/2015, 14h31 #42
- Inscription
- July 2015
- Localisation
- NIMES
- Âge
- 52
- Messages
- 1
- Boîtier
- Canon EOS 1100D
- Objectif(s)
- Rien de partiuclier :-) !
Bonjour Xifit,
je viens de tomber sur ce sujet qui m'interresse au plus haut point.
Pourrais-tu me faire parvenir la DLL ?
Merci d'avance.
Gilles
-
11/10/2015, 22h13 #43
- Inscription
- October 2015
- Localisation
- Denmark
- Âge
- 65
- Messages
- 2
- Boîtier
- Canon EOS 1000D
- Objectif(s)
- Skilled in Optics and Delphi programming
I stiil think the code in CCP_0.0.30_C078D67F.rar is interesting for a lot of Delphi programmers working with the Canon SDK and the Canon EOS cameraes.
It was still straight forward to compile the code in Delphi XE7. However, playing around with LiveView made it end up in dead locks. I did fix this by making a few changes to the code in the unit ThreadLiveViewStream.pas. Please notice the added synchronize command.
unit ThreadLiveViewStream;
interface
uses
Classes, CanonCamera, ExtCtrls;
type
TLiveViewStream = class(TThread)
private
{ Déclarations privées }
FCamera: TCanonCamera;
FImage: TImage;
FStatus : Boolean;
protected
procedure DownloadNextLVI;
procedure Execute; override;
public
property Status : Boolean read FStatus;
constructor Create(Camera: TCanonCamera; Image: TImage; CreateSuspended: Boolean = True);
end;
implementation
{ TLiveViewStream }
constructor TLiveViewStream.Create(Camera: TCanonCamera; Image: TImage; CreateSuspended: Boolean = True);
begin
Self.FCamera := Camera;
Self.FImage := Image;
Self.FStatus := False;
Inherited Create(CreateSuspended);
end;
//har selv oprettet denne for at udføre Synchronize
procedure TLiveViewStream.DownLoadNextLVI;
begin
Self.FStatus := FCamera.DownloadLiveViewImage(FImage); //Lecture et affichage du stream dans l'objet
end;
procedure TLiveViewStream.Execute;
begin
if not FCamera.IsInLiveView Then //demare le LV
Exit;
Self.Priority := tpLower; //tpHigher should be tpLower according to the Delphi Help
repeat
try
//FStatus := FCamera.DownloadLiveViewImage(FImage); //Lecture et affichage du stream dans l'objet
Synchronize(DownloadNextLVI); //Did add Synchronize on 11-10-2015 to prevent dead locks
except
FStatus := False;
end;
until Terminated;
End;
end.
-
11/10/2015, 22h49 #44
- Inscription
- October 2015
- Localisation
- Denmark
- Âge
- 65
- Messages
- 2
- Boîtier
- Canon EOS 1000D
- Objectif(s)
- Skilled in Optics and Delphi programming
Avoiding the flickering and speed up things
Next problem in PixelKs code from 09/04/2014 17h 14 is the annoying flickering and bad timing while in zooming in liveView.
I did fix this by downloading the fast jpeg decoder unit jpegdec.pas from http://synopse.info/files/jpegdec.zip
I did include jpegdec in the uses clause of the CanonCamera.pas
Code:unit CanonCamera; interface uses Windows, Messages, Classes, Sysutils, Graphics, Jpeg, EDSDKApi, EDSDKType, EDSDKError, ExtCtrls, jpegdec; //FabInSpace did add reference to jpegdec.pas on 11-10-2015
Code:function TCanonCamera.DownloadLiveViewImage(Image : TImage) : Boolean; var MemStream: TMemoryStream; Stream : EdsStreamRef; evfImage : EdsEvfImageRef; JPG: TJPEGImage; ImageData : Pointer; ImageSize : EdsUInt32; BMP: TBitMap; //Added 11-10-2015 begin Result := False; stream := nil; evfImage := nil; try Self.LastError := EdsCreateMemoryStream( 0, Stream ); if Self.LastError <> EDS_ERR_OK then Exit; try Self.LastError := EdsCreateEvfImageRef( Stream, evfImage ); if Self.LastError <> EDS_ERR_OK then Exit; Self.LastError := EdsDownloadEvfImage(Self.FRef , evfImage); if Self.LastError <> EDS_ERR_OK then begin EdsRelease(stream); Exit; end; Self.LastError := EdsGetPointer(Stream, ImageData); if Self.LastError <> EDS_ERR_OK then begin EdsRelease(evfImage); EdsRelease(stream); Exit; end; Self.LastError := EdsGetLength(Stream, ImageSize); if Self.LastError <> EDS_ERR_OK then begin EdsRelease(evfImage); EdsRelease(stream); Exit; end; MemStream := TMemoryStream.Create; try MemStream.WriteBuffer(ImageData^, ImageSize); MemStream.position := 0; {Old lines from before 11-10-2015 JPG := TJPEGImage.Create; // The Stream is a JPEG Image try JPG.LoadFromStream(MemStream); //JPG.SaveToFile('LVSteam.jpg'); if not Assigned(Image.Picture.Bitmap) then Image.Picture.Bitmap := TBitmap.Create; Image.Picture.Bitmap.Assign(JPG); Result := True; Finally JPG.Free; end; } //New lines elliminating flickering with TMemoryStream.Create do try LoadFromstream(MemStream); BMP := JpegDecode(memory, Size); if BMP <> nil then try Image.Picture.Bitmap := Bmp; finally BMP.free; end; finally Free; end; //end of new lines from 11-10-2015 finally MemStream.Free; end; finally EdsRelease(evfImage); end; finally EdsRelease(stream); end; end;
Informations de la discussion
Utilisateur(s) sur cette discussion
Il y a actuellement 1 utilisateur(s) naviguant sur cette discussion. (0 utilisateur(s) et 1 invité(s))