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 :

appel de classe


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Février 2010
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 99
    Par défaut appel de classe
    Bonjour à tous,

    J'aimerai pouvoir récupérer la température grâce à ce programme mais je récupère toujours "0".
    Comment appelé la fonction qui me permet d'acquérir la température (2eme code).
    Capteur de température sur port I²C.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    private void GetTemperature_Click(object sender, EventArgs e)
            {
                textBox17.Text = convert.ToString(Technord.UV.Devices.Pyrometer.m_decTemperatureAmbiante);

    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
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    {
        /// <summary>
        /// Implémente le périphérique pyromètre sur bus I2C (Marque : Plannar)
        /// </summary>
        public class Pyrometer
        {
     
            #region Propriétés privées
     
            /// <summary>
            /// Adresse I2C du pyrometre
            /// </summary>
            //byte byPyroAdresse = 0xA0;
            public static readonly byte byPyroAdresse = 0x64;
     
            /// <summary>
            /// Handle obtenu lors de la connection
            /// </summary>
            private int m_iHandle;
     
            /// <summary>
            /// Pause en millisecondes entre l'envoi de la commande I2C et la lecture. (en plus du temps prévu dans la fonction I2C_Write)
            /// </summary>
            private int m_iI2CPause = 20;
            /// <summary>
            /// Commande I2C pour la lecture des températures
            /// </summary>
            byte[] byCmdTemp = new byte[] { 0x07 };
            /// <summary>
            /// Transaction I2C pour l'envoi de la commande de lecture des températures
            /// </summary>
            BaseboardI2CCommand.U2C_TRANSACTION I2C_CmdTemp = new BaseboardI2CCommand.U2C_TRANSACTION();
     
            #endregion 
     
     
            #region Propriétés
            /// <summary>
            /// Température ambiante (Corps du pyromètre)
            /// </summary>
            public static decimal m_decTemperatureAmbiante;
            /// <summary>
            /// Température de l'objet (ie : poche)
            /// </summary>
            public static decimal m_decTemperatureObjet;
     
            /// <summary>
            /// Température de l'objet (ie : poche)
            /// </summary>
            public static decimal TemperatureObjet
            {
                get { return m_decTemperatureObjet; }
                set { m_decTemperatureObjet = value; }
            }
     
            /// <summary>
            /// Température ambiante (Corps du pyromètre)
            /// </summary>
            public static decimal TemperatureAmbiante
            {
                get { return m_decTemperatureAmbiante; }
                set { m_decTemperatureAmbiante = value; }
            }
     
            #endregion
     
            /// <summary>
            /// Lecture des températures du pyrometre et mise à jour des propriétés public
            /// </summary>
            /// <returns>True : lecture correcte / False : lecture incorrecte
            /// </returns>
            public bool GetTemperatures()
            {          
                byte[] bDataRecu = new byte[] { 0x00, 0x00, 0x00, 0x00 };
                try
                {
                    //Envoi de la commande 
                    BaseboardI2CCommand.U2C_RESULT WriteResult = BaseboardI2CCommand.I2C_Write(m_iHandle, ref I2C_CmdTemp);
                    // si ecriture I2C correcte alors on relit 4 bytes 
                    if (WriteResult == BaseboardI2CCommand.U2C_RESULT.U2C_SUCCESS)
                    {
                        // temporisation
                        Thread.Sleep(m_iI2CPause);
     
                        //Lecture des 4 bytes 
                        BaseboardI2CCommand.U2C_RESULT ReadResult = BaseboardI2CCommand.I2C_Read(m_iHandle, byPyroAdresse, 4, ref  bDataRecu, false);
     
                        if (ReadResult == BaseboardI2CCommand.U2C_RESULT.U2C_SUCCESS)
                        {
                            // Mise a jour des propriétés
                            if ((bDataRecu[0] != 0xFF) && (bDataRecu[1] != 0xFF))
                                m_decTemperatureAmbiante = (decimal)(((256 * bDataRecu[0]) + bDataRecu[1]) / 10.0);
                            if ((bDataRecu[2] != 0xFF) && (bDataRecu[3] != 0xFF))
                                m_decTemperatureObjet = (decimal)(((256 * bDataRecu[2]) + bDataRecu[3]) / 10.0);
                            return true;
                        }
                        else
                        {
                            throw new Exception("Error while reading I2C answer from pyrometer");
                            return false;
                        }
                    }
                    else
                    {
                        throw new Exception("Error while writing I2C getTemperature command");
                        return false;
                    }
                }
                catch
                {
     
                    return false;
                }
     
            }
     
            #region Constructeur
     
            /// <summary>
            /// Constructeur
            /// </summary>
            /// <param name="handle">handle de connection à la carte IO</param>
            public Pyrometer(int handle)
            {
                // affectation du handle de connection 
                m_iHandle = handle;
     
                I2C_CmdTemp.InitializeForWrite(byPyroAdresse, byCmdTemp, false);
     
            }
     
     
            #endregion
     
            #region Methodes
     
     
     
            #endregion
     
        }
    }

  2. #2
    Rédacteur
    Avatar de Louis-Guillaume Morand
    Homme Profil pro
    Cloud Architect
    Inscrit en
    Mars 2003
    Messages
    10 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Cloud Architect
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 10 839
    Par défaut
    euhhh. comment on peut savoir pour toi?

    qui l'a écrit ce code? il a plein d'incohérences
    pour moi, si t'as zéro c'est que ton code marche pas.
    t'as essayé le debug et les points d'arrêt pour voir où ca plante?

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 97
    Par défaut
    A première vue il faut d'abord que tu appelles la fonction GetTemperatures pour pouvoir récupérer la température.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    127
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Mars 2007
    Messages : 127
    Par défaut
    Bizarre tout de même, tu crées des accesseurs et tu laisses les variables publiques. pourquoi ne pas mettre les valeurs en private, utiliser les accesseurs, et si dans le get la valeur n'est pas intialisée, tu fais un relevé de température(getTemp), ou alors sur chaque get selon tes besoins

  5. #5
    Membre chevronné Avatar de MetalGeek
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    412
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 412
    Par défaut
    Salut,

    ouaip, à priori tu as besoin d'une instance dobjet "Pirometer" qui permet de valoriser la température.
    Comme dit plus haut, tes champs statiques sont publics ce qui est très étrange vu qu'il y a des propriétés qui les encapsulent. Tu ne devrais pas appeler directement le champ dans ton premier extrait de code.

  6. #6
    Membre confirmé
    Inscrit en
    Février 2010
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 99
    Par défaut
    Très bien merci pour toutes vos réponses.
    j'ai mis les variables public vu que je n'arrivais pas à les appeler dans ma Form autrement que directement. Je vais les remettre en private.
    Mais comment l'appeler alors?

    Encore merci pour votre aide

Discussions similaires

  1. [Package] Appel à une classe
    Par GLDavid dans le forum Langage
    Réponses: 2
    Dernier message: 15/02/2006, 12h49
  2. Appeler une classe CSS avec Javascript
    Par p0Kep0K dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 13/02/2006, 14h50
  3. Appeler 2 classes en même temps?
    Par Death83 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 04/02/2006, 23h38
  4. Réponses: 14
    Dernier message: 15/12/2005, 18h46
  5. [Exception]Connaitre la pile d'appel de classes/méthodes
    Par salome dans le forum Général Java
    Réponses: 2
    Dernier message: 19/03/2005, 20h21

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