+ Répondre à la discussion
Affichage des résultats 1 à 10 sur 10

Discussion: Un petit coup de main pour un projet de fin d'études

  1. #1
    Zulfeiye est déconnecté Membre
    Boîtier: 350D
    Objectif(s): 28-80mm
    Date d'inscription
    March 2010
    Localisation
    Aubenas
    Genre :
    Femme
    Messages
    4

    Question Un petit coup de main pour un projet de fin d'études

    Bonjour à tous,

    Comme je l'ai dis dans ma présentation, je suis actuellement étudiante en BTS Iris et je travail en ce moment sur mon projet de fin d'études. Ce projet consiste à développer un logiciel pour contrôler un APN Canon de puis en PC (en mode local ou via un réseau). Pour vous donner une idée, c 'est le même genre de logiciel que EOS Utility ou ZoomBrowser (en un peu moins avancé).
    Je travail donc avec l'EDSDK Canon en C++ et, comme mon projet doit être réalisé en C#, j'utilise un "wrapper". J'avoue que j'ai un peu de mal à bien prendre en main la librairie, et la présence du wrapper n'est pas pour me simplifier les choses !
    J'espère donc pouvoir trouver un peu d'aide sur ce forum et je vous pose de ce pas ma première question :

    De nombreuses fonctions du EDSDK retourne une variable de type EdsError, par exemple pour la prise de vue :


    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.IntPtr;
    using EDSDKLib;

    /* Déclencher la prise de vue */
    public bool PrendreLaPhoto()
    {
    EdsError valeurDeRetour;
    EDSDK.EdsSendCommand(kEdsCameraCommand_TakePicture , 0);

    if (valeurDeRetour == EDS_ERR_OK)
    {
    photoPrise = true;
    }else (valeurDeRetour != EDS_ERR_OK)
    {
    photoPrise = false;
    }

    return photoPrise;
    }


    Le problème c'est que visual studio m'envoie ballader car il ne reconnait ni "EdsError" ni "EDS_ERR_OK" ni "kEdsCameraCommand_TakePicture", j'ai essayé de rajouté, comme pour les fonction, 'EDSDK.' devant chacun d'entre eux, mais visual studio ne les reconnait toujours pas. Je pense qu'il doit falloir appelé chacun de ces types d'une manière particulière ou peut être rajouté des using, mais je ne trouve pas la solution.

    Merci par avance à vous de prendre le temps de lire ma question,

    Amicalement,
    Cécile


  2. #2
    Avatar de willz
    willz est déconnecté Abonné
    Boîtier: 5DII
    Objectif(s): 17-40L · 28-75/2.8 · 50/1.8 II · 85/1.8 · 70-200/4L IS
    Date d'inscription
    July 2009
    Localisation
    Toulouse
    Genre :
    Homme
    Messages
    3 722

    Par défaut

    As tu essayé de chercher sur Your Page Title ? Je n'ai pas parcouru le site mais sait-on jamais...


    Sinon autre piste : as-tu bien importé dans VS toutes les lib et dll du SDK ? Tu sais dans les options du projet en demandant qu'ils prennent en compte ces répertoires lorsqu'il ne reconnait pas le type d'une variable non standard.

  3. #3
    Zulfeiye est déconnecté Membre
    Boîtier: 350D
    Objectif(s): 28-80mm
    Date d'inscription
    March 2010
    Localisation
    Aubenas
    Genre :
    Femme
    Messages
    4

    Par défaut

    Merci pour le site je ne connaissais pas je vais y faire un tour ! Normalement j'ai bien importé tout ce qu'il faut, je ne pense pas que le soucis vienne de là. :s

  4. #4
    Avatar de willz
    willz est déconnecté Abonné
    Boîtier: 5DII
    Objectif(s): 17-40L · 28-75/2.8 · 50/1.8 II · 85/1.8 · 70-200/4L IS
    Date d'inscription
    July 2009
    Localisation
    Toulouse
    Genre :
    Homme
    Messages
    3 722

    Par défaut

    Désolé je ne saurais pas t'aider plus ne connaissant pas le SDK Canon... J'ai trouvé quelques sites qui en parlent, le mieux est à mon avis de fouiller google dans tous les sens avec tous les mots clé possibles pour trouver dans quel fichier est déclaré ce type ^^


    Par contre ton projet est assez sympa, moi en fin de BTS IRIS j'avais eu un truc carrément moins intéressant :p

  5. #5
    Avatar de sebmafate
    sebmafate est déconnecté Membre
    Boîtier: Canon EOS 7D+40D & SpeedLite 430EX
    Objectif(s): Canon 10-22 f/4-5,6 | Canon 24-70 f/2.8L | Canon 70-200 f/4L | Canon 35-350 f4-5.6L
    Date d'inscription
    August 2007
    Localisation
    Villers-Cotterêts, Aisne, France
    Âge
    35
    Genre :
    Homme
    Messages
    221

    Par défaut

    sinon... je peux te proposer de poster ton problème sur le forum CSharpFR.com (dont je suis admin)

    tu auras plus de réponses "techniques".

    Séb

  6. #6
    chanqueo est déconnecté Membre
    Boîtier: 1000D
    Objectif(s): 18-55, 50 1.8
    Date d'inscription
    February 2010
    Localisation
    Rennes
    Âge
    30
    Genre :
    Homme
    Messages
    3

    Par défaut

    Bonjour,

    Le type de données EdsError doit être décrit dans un fichier .h du sdk.
    Tu ne peux pas importer ce fichier puisque tu développes en C# et non pas en C++.

    Il s'agit probablement d'une énumération, très utilisées pour décrire les codes d'erreur de fonctions.
    Tu dois donc créer ce type de données dans ton wrapper, par exemple :

    Enum EdsError
    {
    EDS_ERR_OK = 0, // Pas d'errur.
    EDS_ERR_ARG, // Argument non correct.
    ...
    }

    Bien entendu, tes constantes EDS_ERR_OK, ... doivent avoir les mêmes valeurs que dans le SDK.

    Bon courage,

    Olivier
    Dernière modification par chanqueo ; 02/03/2010 à 14h07.

  7. #7
    Avatar de sebmafate
    sebmafate est déconnecté Membre
    Boîtier: Canon EOS 7D+40D & SpeedLite 430EX
    Objectif(s): Canon 10-22 f/4-5,6 | Canon 24-70 f/2.8L | Canon 70-200 f/4L | Canon 35-350 f4-5.6L
    Date d'inscription
    August 2007
    Localisation
    Villers-Cotterêts, Aisne, France
    Âge
    35
    Genre :
    Homme
    Messages
    221

    Par défaut

    oui...

    sauf qu'en C#, c'est enum et non Enum

    public enum EdsError
    {
    EDS_ERR_OK = 0, // Pas d'erreur.
    EDS_ERR_ARG, // Argument non correct.
    ...
    }

    à l'utilisation :

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.IntPtr;
    using EDSDKLib;

    /* Déclencher la prise de vue */
    public bool PrendreLaPhoto()
    {
    EdsError valeurDeRetour = EDSDK.EdsSendCommand(kEdsCameraCommand_TakePicture , 0);

    if (valeurDeRetour == EdsError.EDS_ERR_OK)
    {
    photoPrise = true;
    }else (valeurDeRetour != EdsError.EDS_ERR_OK)
    {
    photoPrise = false;
    }

    return photoPrise;
    }

  8. #8
    chanqueo est déconnecté Membre
    Boîtier: 1000D
    Objectif(s): 18-55, 50 1.8
    Date d'inscription
    February 2010
    Localisation
    Rennes
    Âge
    30
    Genre :
    Homme
    Messages
    3

    Par défaut

    Ne t'arrêtes pas la dessus.
    Ça ne change rien.
    Quoi qu'il arrive le type de donnée EdsError est probablement une valeur entière.
    Tu peux donc la remplacer pas "int".
    Il suffit juste après de connaître la valeur des constantes EDS_ERR_OK,...

    Si je peux me permettre, ton code serait plus léger comme suivant :


    public bool PrendreLaPhoto()
    {
    EdsError valeurDeRetour = EDSDK.EdsSendCommand(kEdsCameraCommand_TakePicture , 0);

    return EdsError.EDS_ERR_OK == valeurDeRetour;
    }

    Olivier

  9. #9
    Zulfeiye est déconnecté Membre
    Boîtier: 350D
    Objectif(s): 28-80mm
    Date d'inscription
    March 2010
    Localisation
    Aubenas
    Genre :
    Femme
    Messages
    4

    Par défaut

    Merci à tous pour vos conseils, je pense m'inspirer un peu de tout ça.

    Citation Envoyé par sebmafate Voir le message
    sinon... je peux te proposer de poster ton problème sur le forum CSharpFR.com (dont je suis admin)

    tu auras plus de réponses "techniques".

    Séb
    Je connais le forum mais comme il s'agit d'une Library Canon je me suis dis que ce forum serait peut être plus approprié. :p
    Dernière modification par Zulfeiye ; 02/03/2010 à 17h38.

  10. #10
    JuTs est déconnecté Membre
    Boîtier: 350D défiltré IR, 50D défiltré astro
    Objectif(s): EF-S 10-22, EF-S 15-85, EF 70-200 f/4
    Date d'inscription
    September 2009
    Localisation
    Suisse
    Genre :
    Homme
    Messages
    27

    Par défaut

    Les erreurs sont définies comme constantes dans le wrapper C#, il te suffit de faire :

    Code:
    if (EDSDK.EDS_ERR_OK != valeurDeRetour)
    {
            //...
    }

+ Répondre à la discussion

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

     

Discussions similaires

  1. Un petit coup de main ?
    Par ludovigier dans le forum Atelier Retouche
    Réponses: 7
    Dernier message: 07/03/2008, 11h52
  2. un petit coup de main
    Par CHIRON dans le forum Discussions générales
    Réponses: 2
    Dernier message: 06/06/2007, 10h23
  3. coup de main
    Par yoyo92 dans le forum Discussions générales
    Réponses: 3
    Dernier message: 18/02/2007, 22h38
  4. Besoin d'un petit coup de main
    Par FZeder dans le forum Discussions techniques
    Réponses: 23
    Dernier message: 01/12/2006, 07h06

Les tags pour cette discussion

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