IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Contrôle de gain automatique


Sujet :

C#

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2016
    Messages : 104
    Points : 30
    Points
    30
    Par défaut Contrôle de gain automatique
    Bonjour à tous,

    Je pilote actuellement une caméra Basler avec un programme C# et je souhaiterai effectuer un contrôle de gain automatique pour que le gain se règle automatiquement en fonction de la luminosité (intensité lumineuse de l'image capturée).
    J'ai besoin de vos conseils parce qu'à première vue, je ne visualise pas bien comment réaliser ça.

    Je pensais tester la luminosité de l'image (la luminosité des pixels) et si elle n'est pas au maximum alors on peut incrémenter le gain. J'aimerai donc faire ce petit programme qui permettrait le réglage automatique du gain de ma caméra. Est-ce que ma méthode est bonne ? Ou est-ce que vous me conseillerez plutôt quelque chose d'autre ?

    Une bibliothèque est fournie avec la caméra et grâce à elle je contrôle la caméra. L'utilisateur a la possibilité de prendre une capture photo, une capture vidéo et de stopper la capture vidéo. Il peut également contrôler le gain manuellement. Je souhaiterai maintenant programmer le gain automatique, c'est-à-dire que le gain se règle automatiquement en fonction de l'intensité de l'image capturée. L'utilisateur activerait juste ce paramètre et le réglage du gain se ferait automatiquement.

    Je vous remercie d'avance,

    Sebbur

  2. #2
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2010
    Messages
    479
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2010
    Messages : 479
    Points : 762
    Points
    762
    Par défaut
    Salut, selon la version du Firmware de ta caméra tu as peut-être déjà cette fonctionnalité. Il serait donc un peu tordu de la réimplémenter

    Essaye avec cette ligne (librairie Basler.Pylon native .NET; il doit y avoir l'équivalent si tu utilises le wrapper C++/.NET) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    this.m_Camera.Parameters[PLGigECamera.GainAuto].SetValue(PLGigECamera.GainAuto.Continuous);
    Elle demande à la caméra de réguler son gain de façon continu.

    Petit conseil explore un peu le logiciel PylonViewer; en mode "guru" il te donne accès à toutes les fonctionnalités de ta caméra. Plutôt pratique pour tester quand on débute sur ce type de matériel.

    A+ bon courage.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2016
    Messages : 104
    Points : 30
    Points
    30
    Par défaut
    Merci de ta réponse !

    J'ai essayé la fonction en y ajoutant : " using Basler.Pylon; " mais ça a été sans succès. Ma caméra est une USB3.0 et pas une GigE aussi

    J'ai déjà exploré le logiciel PylonViewer mais pas en guru ! Cela signifie quoi ? Et je peux faire ça comment ?
    C'est vrai que ça me serait utile !

    EDIT :

    J'ai trouvé le mode guru ! J'avais seulement utiliser PylonViewer en mode beginner, je vais maintenant un peu manipuler en mode guru
    Pour ce qui est du code pour le réglage du gain auto, ça ne fonctionne pas encore.

    Merci encore,

    Sebbur

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2016
    Messages : 104
    Points : 30
    Points
    30
    Par défaut
    Ton indication avec la ligne de code est bonne mais je ne sais pas comment faire pour faire fonctionner le gain auto avec ma caméra.
    Dans le manuel d'utilisation il y a aussi du code concernant le gain auto :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
     
    // Select auto function ROI 1 (as an example) to allow
    // Gain Auto to control image brightness.
    camera.AutoFunctionROISelector.SetValue
     
    (AutoFunctionROISelector_ROI1);
     
    camera.AutoFunctionROIUseBrightness.SetValue(true);
     
    // Set the position and size of the auto function ROI
    camera.AutoFunctionROIOffsetX.SetValue(0);
    camera.AutoFunctionROIOffsetY.SetValue(0);
    camera.AutoFunctionROIWidth.SetValue(1294);
    camera.AutoFunctionROIHeight.SetValue(964);
     
    // Set the maximum possible size of the selected auto function ROI
    camera.AutoFunctionROIOffsetX.SetValue(0);
    camera.AutoFunctionROIOffsetY.SetValue(0);
    camera.AutoFunctionROIWidth.SetValue( camera.AutoFunctionROIWidth.GetMax() );
    camera.AutoFunctionROIHeight.SetValue( camera.AutoFunctionROIHeight.GetMax() );
     
    // Select gain all and set the upper and lower gain limits for
    // the gain auto function
    camera.GainSelector.SetValue(GainSelector_All);
    camera.AutoGainLowerLimit.SetValue(0.0);
    camera.AutoGainUpperLimit.SetValue(19.745);
     
    // Set the lowest possible lower limit and the highest possible
    // upper limit for the gain auto function
    camera.AutoGainLowerLimit.SetValue( camera.AutoGainLowerLimit.Get-Min());
    camera.AutoGainUpperLimit.SetValue(
    camera.AutoGainUpperLimit.GetMax());
     
    // Set the target gray value for the selected auto function
    // The parameter value range refers to the theoretically maximum
    // available range of gray values for the set pixel format.
    // For example, if an 8 bit pixel format is set, a parameter value
    // of 0.50196 will correspond to a gray value of 128.
    camera.AutoTargetBrightness.SetValue(0.50196);
     
    // Set the mode of operation for the gain auto function
    camera.GainAuto.SetValue(GainAuto_Once);

    J'ai essayé en m'aidant de cette documentation mais je n'y suis pas parvenu. Je ne sais pas ce qu'il faut mettre à la place de "camera" donc j'ai plusieurs erreurs.

    Merci d'avance,

    Sebbur

  5. #5
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2010
    Messages
    479
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2010
    Messages : 479
    Points : 762
    Points
    762
    Par défaut
    C'est quoi ta dll Pylon ? Le wrapper C++/.NET ou bien la librairie .NET ?

    L'exemple que tu donnes dans le MU fait le paramétrage du gain et lance une exécution de la fonction auto gain ("once"). Si tu veux qu'elle régule tout le temps il faut mettre "Continous".

    Il faut aussi remplacer caméra par une instance de Pylon.Camera (si tu utilises la dll Basler.Pylon).

    Montre ton code ? Tu as fait une classe de pilotage de la caméra ?

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2016
    Messages : 104
    Points : 30
    Points
    30
    Par défaut
    J'utilise deux dll de Pylon : Basler.Pylon et PylonC.NET.

    En fait mon code est très long, j'utilise celui qui est fournit avec la documentation Basler et je voulais ajouter la fonction permettant le contrôle du gain automatique.

    J'ai ajouté le code de mon message précédant à mon programme mais j'ai plusieurs erreurs.

  7. #7
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2010
    Messages
    479
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2010
    Messages : 479
    Points : 762
    Points
    762
    Par défaut
    Il ne faut pas mélanger les deux !
    Je te conseille de garder Basler.Pylon. C'est l'implémentation .NET de la librairie d'origine. Ca vient de sortir. Super simple à utiliser.
    Tu as des exemples tout faits dans le répertoire d'installation du SDK Basler : "C:\Program Files\Basler\pylon 5\Development\Samples\pylon.NET samples". Inspire toi de ParametrizeCameraSample :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    // Create a camera object that selects the first camera device found.
                // More constructors are available for selecting a specific camera device.
                using (Camera camera = new Camera())
                {
                    /*************************************************************************
                        * Accessing camera parameters                                           *
                        *************************************************************************/
     
                    // Before accessing camera device parameters, the camera must be opened.
                    camera.Open();
     
      // Some camera models may have auto functions enabled. To set the gain value to a specific value,
                    // the Gain Auto function must be disabled first (if gain auto is available).
                    camera.Parameters[PLCamera.GainAuto].TrySetValue(PLCamera.GainAuto.Continuous); // Set GainAuto to Off if it is writable.
     
       // Close the camera.
                    camera.Close();
    }
    Il faut comprendre aussi qu'en auto gain continious il faut lancer une acquisition pour observer le pilotage auto du gain.

    Pour ton erreur camera n'existe pas... là c'est un problème de compréhension de ton code. La classe Camera représente une caméra.
    Si tu l'as nommée "toto" bien évidemment le compilateur te dit que "camera" n'existe pas.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Camera toto = new Camera();
    A toi d'adapter un petit peu... sinon tu montres ton code et on te fera nos commentaires.

  8. #8
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2016
    Messages : 104
    Points : 30
    Points
    30
    Par défaut
    Merci de ta réponse.
    Oui je m'inspire de ces exemples, ils sont très utiles

    Pour ce qui concerne la visualisation du gain auto, j'avais bien compris qu'il faut lancer une acquisition. Sinon c'est sûr qu'on ne peut rien voir

    Voici mon code pour le gain auto :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    Camera camera = new Camera();
            private void checkBox1_CheckedChanged_1(object sender, EventArgs e)
            {
                PLUsbCamera.AutoFunctionROISelector.SetValue(AutoFunctionROISelector_ROI1);
                camera.AutoFunctionROIOffsetX.SetValue(0);
                camera.AutoFunctionROIOffsetY.SetValue(0);
                camera.AutoFunctionROIWidth.SetValue(1294);
                camera.AutoFunctionROIHeight.SetValue(964);
                camera.AutoFunctionROIOffsetX.SetValue(0);
                camera.AutoFunctionROIOffsetY.SetValue(0);
                camera.AutoFunctionROIWidth.SetValue(camera.AutoFunctionROIWidth.GetMax());
                camera.AutoFunctionROIHeight.SetValue(camera.AutoFunctionROIHeight.GetMax());
                camera.GainSelector.SetValue(GainSelector_All);
                camera.AutoGainLowerLimit.SetValue(0.0);
                camera.AutoGainUpperLimit.SetValue(19.745);
                camera.AutoGainLowerLimit.SetValue(camera.AutoGainLowerLimit.Get - Min());
                camera.AutoGainUpperLimit.SetValue(
                camera.AutoGainUpperLimit.GetMax());
                camera.AutoTargetBrightness.SetValue(0.50196);
                camera.GainAuto.SetValue(GainAuto_Continuous);
            }
    Tout le code en gras sont les erreurs soulignées chez moi.

    Merci d'avance pour votre aide,

    Sebbur

  9. #9
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2010
    Messages
    479
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2010
    Messages : 479
    Points : 762
    Points
    762
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Camera camera = new Camera();
    n'est pas surligné en rouge ? (je suppose que non);

    Cela dit moi aussi tout est surligné en rouge. A vrai dire "AutoFunctionROISelector_ROI1" n'existe pas donc normal que le compilateur râle...
    Je ne sais pas trop où tu as trouvé cet exemple mais pour moi il donne plutôt le principe et non pas un code tout fait...

    Si je remplace :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     camera.AutoFunctionROIHeight.SetValue(964);
    par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    camera.Parameters[PLCamera.AutoFunctionROIHeight].SetValue(964);
    chez moi cela compile.

    Si tu veux du "tout prêt" regardes plutôt les exemples surla solution Visual Studio d'exemples proposée par Basler.
    Quand ça sort du manuel utilisateur il faut adapter

  10. #10
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2016
    Messages : 104
    Points : 30
    Points
    30
    Par défaut
    Non la déclaration de " camera " n'est pas soulignée en rouge

    Le code je l'ai trouvé dans le manuel d'utilisation Basler. Mais comme tu dis, c'est certainement un code sommaire et il faut l'adapter

    J'ai déjà regardé les exemples de solutions Visual Studio proposés par Basler mais il n'y a pas la fonction de gain auto, c'est pour ça que je suis venu demander de l'aide sur le forum parce que je rame un peu

    Merci pour l'aide,

    Sebbur

  11. #11
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2010
    Messages
    479
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2010
    Messages : 479
    Points : 762
    Points
    762
    Par défaut
    Avec un peu d'adaptation :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Camera camera = new Camera();
                    camera.Parameters[PLCamera.GainSelector].SetValue(PLCamera.GainSelector.DigitalAll);
                    camera.Parameters[PLCamera.AutoGainLowerLimit].SetValue(19.745);//gain minimum
                    camera.Parameters[PLCamera.AutoGainUpperLimit].SetToMaximum();//gain maximum (max admissible par la caméra)
                    camera.Parameters[PLCamera.AutoTargetBrightness].SetValue(0.50196);//brillance recherchée
                    camera.Parameters[PLCamera.GainAuto].SetValue(PLCamera.GainAuto.Continuous);//mode du calcul du gain = en continue sur chaque image

  12. #12
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2016
    Messages : 104
    Points : 30
    Points
    30
    Par défaut
    Je te remercie ! Je n'ai plus d'erreur sur ces lignes de code mais en revanche dans mon code " PylonLiveView" il y a trois erreurs :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    using System;
    using System.Collections.Generic;
    using System.Windows.Forms;
    using Basler.Pylon;
    // using PylonC.NET;
    
    namespace PylonLiveView
    {
        static class PylonLiveView
        {
            /// <summary>
            /// The main entry point for the application.
            /// </summary>
            [STAThread]
            static void Main()
            {
    #if DEBUG
                /* This is a special debug setting needed only for GigE cameras.
                    See 'Building Applications with pylon' in the Programmer's Guide. */
                Environment.SetEnvironmentVariable("PYLON_GIGE_HEARTBEAT", "300000" /*ms*/);
    #endif
                Pylon.Initialize();
                try
                {
                    Application.EnableVisualStyles();
                    Application.SetCompatibleTextRenderingDefault(false);
                    Application.Run(new MainForm());
                }
                catch
                {
                   Pylon.Terminate();
                    throw;
                }
                Pylon.Terminate();
               
            }
        }
    }
    Les lignes en gras indiquent des erreurs : " le nom de type ou d'espace noms n'existe pas dans l'espace de noms " Pylon ".

    J'ai fait comme tu me l'as indiqué un peu plus haut, j'ai uniquement gardé la dll " Basler.Pylon " et j'ai supprimé " PylonC.NET ".

    Tu as une idée d'où peut provenir cette erreur ?

    Sebbur

  13. #13
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2010
    Messages
    479
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2010
    Messages : 479
    Points : 762
    Points
    762
    Par défaut
    Oui ce sont les commandes d'initialisation et de fermeture de la librairie PylonC.Net. comme tu ne l'utilises plus tu peux virer.

  14. #14
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2016
    Messages : 104
    Points : 30
    Points
    30
    Par défaut
    D'accord, mais du coup je ne mets rien dans le Main() ?
    Et j'ai lancé mon application et lorsque je coche la checkBox une exception apparaît :
    " Une exception non gérée du type 'System.InvalidOperationException' s'est produite dans PylonLiveView.exe

    Informations supplémentaires*: Parameter in path CameraDevice can only be accessed when the camera is open. "

    Pourtant j'ai essayé en lançant la capture avant de cocher la checkBox et en lançant la capture après avoir coché la checkBox.

    EDIT :

    J'avais tout simplement oublié d'ajouter : " camera.Open(); "
    Maintenant l'exception n'apparaît plus, mais une autre survient :
    " Une exception non gérée du type 'System.Exception' s'est produite dans PylonLiveView.exe

    Informations supplémentaires*: Failed to open device '\\?\usb#vid_2676&pid_ba02&mi_00#7&39c3dbca&0&0000#{79bfeeca-947f-11e1-bc58-001b2163ef96}' for XML file download. Error: 'Device is exclusively opened by another client.' : RuntimeException thrown (file 'PylonUsbTL.cpp', line 413) "

    Tu as une idée de comment corriger l'erreur ?

    Sebbur

  15. #15
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2010
    Messages
    479
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2010
    Messages : 479
    Points : 762
    Points
    762
    Par défaut
    Salut pas de messages privés stp. C'est un forum donc les problèmes et solutions peuvent intéresser plusieurs personnes. Vu le code par message privé je pense que ferme ta caméra en cochant la check box ce qui est un peu bizarre puisque tu souhaite activer le gain.
    Peut être poste ton code une fois que tu auras cherché.
    Pose des try catch autour des blocs douteux et débug. Par de solution miracle en développement.
    A plus.

  16. #16
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2016
    Messages : 104
    Points : 30
    Points
    30
    Par défaut
    Pas de soucis pour les messages privés, je voulais juste te dire où j'en étais

    Je me suis renseigné sur MSDN pour le try-catch parce que je ne l'avais jamais utilisé avant.
    Voici le code que j'ai testé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    Camera camera = new Camera();
            private void checkBox1_CheckedChanged_1(object sender, EventArgs e)
            {
     
                try
                {
                    // camera.Open();
                    camera.Parameters[PLUsbCamera.GainSelector].SetValue(PLUsbCamera.GainSelector.DigitalAll);
                    camera.Parameters[PLUsbCamera.AutoGainLowerLimit].SetValue(0.0); // gain minimum
                    camera.Parameters[PLUsbCamera.AutoGainUpperLimit].SetToMaximum(); // gain maximum admissible par la caméra
                    camera.Parameters[PLUsbCamera.AutoTargetBrightness].SetValue(0.50196); // brillance recherchée
                    camera.Parameters[PLUsbCamera.GainAuto].SetValue(PLUsbCamera.GainAuto.Continuous); // mode du calcul du gain = en continue sur chaque image
     
                }
                catch
                {
                    camera.Open();
                }
            }
    Etant donné que mon exception non gérée dit que l'ouverture du périphérique échoue, j'ai placé " camera.Open(); " dans le catch.
    J'ai testé mais je n'ai pas trouvé l'erreur. Mon code semble bon ? Ou bien j'ai fait une erreur ?

    Sebbur

  17. #17
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2010
    Messages
    479
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2010
    Messages : 479
    Points : 762
    Points
    762
    Par défaut
    Salut non ca ne va pas.
    Tu dois decomposer les etapes de la camera. Par exemple un bouton open. Try camera.open catch message box exemption.
    Si le open réussi tu peux activer le bouton pour démarrer l'acquisition en faisant pareil.
    Et sur la callback de l'événement formclosing du Form tu fermes la caméra.

  18. #18
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2016
    Messages : 104
    Points : 30
    Points
    30
    Par défaut
    Ah d'accord ça marche. Je vais essayer ça ce Week-End et je vous tiendrai au courant
    Mais je suis sur la bonne piste au moins pour que le gain fonctionne ? :p

    Merci pour ton aide

    Sebbur

  19. #19
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2016
    Messages : 104
    Points : 30
    Points
    30
    Par défaut
    Voilà mon test pour le message d'exception :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    private void Open_Click(object sender, EventArgs e)
            {
                try
                {
                    camera.Open();
     
     
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
            }
    Il y a toujours encore une erreur pour l'ouverture de la caméra que je n'arrive pas à rectifier.

  20. #20
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2016
    Messages : 104
    Points : 30
    Points
    30
    Par défaut
    Me revoilà. J'ai essayé de débugué mon programme et j'ai fait des recherches sur internet.
    Je pensais qu'il fallait insérer " camera.Open(); " dans le constructeur de mon formulaire mais lorsque je fais ça, le message d'exception apparaît lors de l'ouverture de la caméra :

    Nom : Exception.PNG
Affichages : 497
Taille : 26,8 Ko

    J'ai alors essayé de trouver le code source pour visualiser la ligne indiquée dans l'exception, mais je n'ai pas ces fichiers sources. Maintenant je ne sais pas trop quoi faire et comme remédier à mon problème afin de faire fonctionner le contrôle de gain automatique.

    Quelqu'un aurait une idée ?

    Je vous remercie d'avance,

    Sebbur

Discussions similaires

  1. Gain automatique en C#
    Par sebbur dans le forum Général Dotnet
    Réponses: 0
    Dernier message: 17/06/2016, 09h47
  2. Réponses: 2
    Dernier message: 06/09/2014, 15h39
  3. Réponses: 2
    Dernier message: 22/12/2011, 19h19
  4. Contrôle préalable et automatique de l'activation des Macros Excel ?
    Par Capt_Nemo dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 21/09/2009, 19h47
  5. Réponses: 1
    Dernier message: 28/09/2005, 10h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo