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