Bonjour & Bienvenue sur EOS-Numerique
Réseaux Sociaux : Follow us on Facebook Follow us on Twitter


Sign Up






Affichage des résultats 1 à 44 sur 44

Discussion: ED-SDK 2.7 En Delphi

Vue hybride

  1. #1
    Membre
    Inscription
    avril 2013
    Localisation
    Lyon
    Âge
    44
    Messages
    22
    Boîtier
    EOS 1000D Modifié et EOS1100D
    Objectif(s)
    18/55 + samyang 8.5mm F3/5

    Par défaut

    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.

  2. #2
    Membre
    Inscription
    avril 2013
    Localisation
    Lyon
    Âge
    44
    Messages
    22
    Boîtier
    EOS 1000D Modifié et EOS1100D
    Objectif(s)
    18/55 + samyang 8.5mm F3/5

    Par défaut

    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.

  3. #3
    Nouvel utilisateur
    Inscription
    juillet 2015
    Localisation
    NIMES
    Âge
    53
    Messages
    1
    Boîtier
    Canon EOS 1100D
    Objectif(s)
    Rien de partiuclier :-) !

    Par défaut

    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

  4. #4
    Nouvel utilisateur
    Inscription
    octobre 2015
    Localisation
    Denmark
    Âge
    65
    Messages
    2
    Boîtier
    Canon EOS 1000D
    Objectif(s)
    Skilled in Optics and Delphi programming

    Par défaut 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
    And I did the following changes to the last part of the unit:


    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))

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •  
Fuseau horaire GMT +1. Il est actuellement 22h37.
Powered by vBulletin® Version 4.2.5
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.
Search Engine Optimisation provided by DragonByte SEO (Pro) - vBulletin Mods & Addons Copyright © 2025 DragonByte Technologies Ltd.
Auto Closing Of Threads provided by Threads Auto Close (Lite) - vBulletin Mods & Addons Copyright © 2025 DragonByte Technologies Ltd.
Copyright © Eos-numerique 2004-2025
vBulletin Skin By: PurevB.com