Erreur, besoin d'aide

Signaler
Messages postés
15
Date d'inscription
jeudi 24 mai 2007
Statut
Membre
Dernière intervention
11 février 2008
-
Messages postés
1137
Date d'inscription
lundi 17 novembre 2003
Statut
Membre
Dernière intervention
23 janvier 2016
-
Voici mon problème: lors de la compilation, je n'est pas d'erreur, mais quand je lance le débugueur, l'application se lance, puis se refermer, avec ce message d'erreur:






Une exception non gérée du type 'System.NullReferenceException' s'est produite dans testTemp.exe





Informations supplémentaires : La référence d'objet n'est pas définie à une instance d'un objet.



Voici mon code:






#pragma



once
#include





"stdafx.h"

#include




"DS18B20.h"




using





namespace


com::dalsemi::onewire::adapter;


using



namespace


System;






int
main(

void

){


// ****** Déclaration des Variables *****

const



int

DS18B20_FAMILY = 0x28;
OneWireContainer28 ^container;              

// ^container = ^tc

DSPortAdapter ^testCapteur;                   



// ^testCapteur = ^adapteur

cli::

array
<

signed



char


> ^state;
String ^id;





try

{






      
container = gcnew OneWireContainer28;



      testCapteur = OneWireAccessProvider::getDefaultAdapter();





}



catch

(Exception ^e){
      

if


( !testCapteur )
            Console::WriteLine(

"Capteur non détécté !"


);
}





testCapteur->targetFamily(DS18B20_FAMILY);

// recherche d'un capteur DS18B20





testCapteur->beginExclusive(





true
);

// accès exclusif



testCapteur->reset();




testCapteur->setSearchAllDevices();






try

{


      testCapteur->findFirstDevice();
      



if

( !testCapteur )   


            throw



gcnew


Exception();
}





catch

(Exception ^e){
      Console::WriteLine(

"Aucun peripherique DS18B20 1-Wire !"


);
      testCapteur->endExclusive();
}


container = (OneWireContainer28 ^)testCapteur->getDeviceContainer(id);
testCapteur->endExclusive();

state = container->readDevice();

container->doTemperatureConvert(state);




// le capteur fait une acquisition


state = container->readDevice();


// lecture du resultat



container->getTemperature(state);


Console::Write(



"La température acquise est : "

);







Console::WriteLine(container);








}





Cette application consiste à relever la valeur d'une température acquise par un capteur, via un réseau 1-Wire. Merci

8 réponses

Messages postés
1100
Date d'inscription
jeudi 24 avril 2003
Statut
Membre
Dernière intervention
17 octobre 2012
7
Bonjour,

Essaye un :
int main(
void){
// ****** Déclaration des Variables *****
try

{
avant tout le code la fonction main() et :
}
catch
(..)

{
    // Erreur
}
à la fin de tout ton code avant de fermer la fonction main()

Merci et bonne prog,
@++

Le créateur du site http://victorlogiciels.com
Messages postés
1137
Date d'inscription
lundi 17 novembre 2003
Statut
Membre
Dernière intervention
23 janvier 2016
24
Salut,

A mon avis tu as un InvalidCastException qui provoque le NullReferenceException ici :

container = (OneWireContainer28 ^)testCapteur->
getDeviceContainer(id);

testCapteur->endExclusive();

state = container->readDevice();

Selon ta hiérarchie de classe, peut etre faut-il un dynamic_cast<> à la place du static_cast<> ?
Messages postés
15
Date d'inscription
jeudi 24 mai 2007
Statut
Membre
Dernière intervention
11 février 2008

Heu, je ne vois pas où j'ai utilisé un static cast :s
Messages postés
1137
Date d'inscription
lundi 17 novembre 2003
Statut
Membre
Dernière intervention
23 janvier 2016
24
En c++ cli le static cast est Ici :
   (OneWireContainer28 ^)testCapteur->...
Messages postés
15
Date d'inscription
jeudi 24 mai 2007
Statut
Membre
Dernière intervention
11 février 2008

Ok, je test tout ça Lundi, merci
Messages postés
15
Date d'inscription
jeudi 24 mai 2007
Statut
Membre
Dernière intervention
11 février 2008

Par conte je n'ai pas trouvé comment faire se cast en dynamique, sais-tu comment faire ?
Messages postés
15
Date d'inscription
jeudi 24 mai 2007
Statut
Membre
Dernière intervention
11 février 2008

Par conte je n'ai pas trouvé comment faire se cast en dynamique, sais-tu comment faire ?
Messages postés
1137
Date d'inscription
lundi 17 novembre 2003
Statut
Membre
Dernière intervention
23 janvier 2016
24
Salut,

Pour etre sur que le problème se situe bien ici tu peux essayer ceci :
(try dynamic cast)

try
{
       container =  __try_cast<OneWireContainer28^>
                       (testCapteur->getDeviceContainer(id));
}
catch(System::InvalidCastException^)
{
       Console::WriteLine("Invalid Cast !");
}

Si cela passe, pas de problème de cast.