Question erreur code

Fermé
yyannd Messages postés 44 Date d'inscription mercredi 31 mai 2006 Statut Membre Dernière intervention 2 mars 2007 - 8 févr. 2007 à 14:58
yyannd Messages postés 44 Date d'inscription mercredi 31 mai 2006 Statut Membre Dernière intervention 2 mars 2007 - 9 févr. 2007 à 08:09
Bonjour,

Programme en c#

J'ai un programme qui récupere des données et quand je lance n'affiche pas d'erreur..

Il tourne pendant 15-20 minutes en actualisant toujours les valeurs qu'il faut

Au bout de 15 minutes il y a une erreur et le programme s'arrete

L'erreur est : L'exceptionInvalidCastExcepetion n'a pas été gérée

Le cast specifié n'est pas valide
------------------------------------------
public float NivNat;



CWDSLib.CWDataSocket opcNivNat = new CWDSLib.CWDataSocket();
opcNivNat.URL = @"opc:/national instruments.opcfieldpoint/FP @ 150_100_130_5\FP-AI-110 @1\Channel 1";
opcNivNat.Connect();
ici l'erreur>>>>>>>>> NivNat = (float)opcNivNat.Data.Value * 10;
A voir également:

10 réponses

teebo Messages postés 33491 Date d'inscription jeudi 14 octobre 2004 Statut Modérateur Dernière intervention 24 février 2011 1 793
8 févr. 2007 à 15:03
Bonjour,

A mon avis opcNivNat.Data.Value * 10 dépasse 3,4*10^38, c'est possible?
Essaye de faire un try catch et dans ton erreur de mettre dans un log ou une message box la valeur de opcNivData...
0
teebo Messages postés 33491 Date d'inscription jeudi 14 octobre 2004 Statut Modérateur Dernière intervention 24 février 2011 1 793
8 févr. 2007 à 15:04
Heureux de voir que tu es revenu à de meilleurs sentiments néanmoins...
0
yyannd Messages postés 44 Date d'inscription mercredi 31 mai 2006 Statut Membre Dernière intervention 2 mars 2007 4
8 févr. 2007 à 15:10
Non je ne pense pas qu'elle depasse car c'est du type

0.6145112 *10 par exemple ou
1.04121544 *10 ...

J'ai rajouté un float ici :

ICI
NivNat = (float)opcNivNat.Data.Value * (float)10;

J'ai relancé pour linstant pas d'erreur j'attend que ça plante et je vous tiens au courant
0
teebo Messages postés 33491 Date d'inscription jeudi 14 octobre 2004 Statut Modérateur Dernière intervention 24 février 2011 1 793
8 févr. 2007 à 15:11
Sinon tu mets
 NivNat = (opcNivNat.Data.Value * 10) as float;


et tu vérifies que c'est pas null, c'est plus élégant
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
yyannd Messages postés 44 Date d'inscription mercredi 31 mai 2006 Statut Membre Dernière intervention 2 mars 2007 4
8 févr. 2007 à 15:12
Bah voila justement j'envoi mon message et mon programme plante...

Et il me dise donc :

Lorsque vous effectuez un cast à partir d'un nombre , la valeur doit etre inférieur à l'infini..

Bizarre?
0
teebo Messages postés 33491 Date d'inscription jeudi 14 octobre 2004 Statut Modérateur Dernière intervention 24 février 2011 1 793
8 févr. 2007 à 15:17
Tu bosses avec visual studio?
Règle le pour "breaker" sur toutes les erreurs pour voir ...

Quel est le type de base de ton opcNivNat.Data.Value?
0
yyannd Messages postés 44 Date d'inscription mercredi 31 mai 2006 Statut Membre Dernière intervention 2 mars 2007 4
8 févr. 2007 à 15:23
Oui visual studio..

Je sais pas comment regler pour breaker..Ce serait bien que lorsque le programme plante que je puisse voir quel était la valeur de nivnat mais je sais pas comment le faire..

et je connais pas le type de opc.nivnat.data.value c'est un chiffre a virgule variable ( 0.5121451 , 0.7201420, 0.654561)
0
teebo Messages postés 33491 Date d'inscription jeudi 14 octobre 2004 Statut Modérateur Dernière intervention 24 février 2011 1 793
8 févr. 2007 à 15:27
Dans la version anglophone:

Menu Debug|Exception

Et là tu coches la case "thrown" en face de Common Langage Runtime exceptions


et je connais pas le type de opc.nivnat.data.value
Dans ton code, place ton curseur sur le mot "value" et appuie sur F12
0
yyannd Messages postés 44 Date d'inscription mercredi 31 mai 2006 Statut Membre Dernière intervention 2 mars 2007 4
8 févr. 2007 à 15:33
ok , jai fait les manip et j'ai relancé le programme j'atend l'erreur..

Sinon avec le F12 ça ma dirigé sur ça :

[DispId(1)]
object Value { get; set; }
0
teebo Messages postés 33491 Date d'inscription jeudi 14 octobre 2004 Statut Modérateur Dernière intervention 24 février 2011 1 793 > yyannd Messages postés 44 Date d'inscription mercredi 31 mai 2006 Statut Membre Dernière intervention 2 mars 2007
8 févr. 2007 à 15:36
Merde, c'est de type object...
Pas aidé avec ça :(
0
yyannd Messages postés 44 Date d'inscription mercredi 31 mai 2006 Statut Membre Dernière intervention 2 mars 2007 4
8 févr. 2007 à 16:04
Bah voila ça a planté à nouveau..

avec cette ligne la surligné en jaune :

NivNat = (float)opcNivNat.Data.Value * 10;

quand je me positionne sur nivnat il vaut 40.297123
quand je me positionne sur value il vaut 0
quand je me positionne sur opcnivnat il y a des petis sous onglet qui s'ouvre avec des données et j'ai aperçu
>>> LastError = -2147467259
0
yyannd Messages postés 44 Date d'inscription mercredi 31 mai 2006 Statut Membre Dernière intervention 2 mars 2007 4
8 févr. 2007 à 16:22
Fini ma journée de boulot je repasserai demain merci teebo

Bonne journée a demain
0
yyannd Messages postés 44 Date d'inscription mercredi 31 mai 2006 Statut Membre Dernière intervention 2 mars 2007 4
9 févr. 2007 à 08:09
C'est reparti avec la même erreur ^^
0