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 :

Modification de variables innatendues


Sujet :

C++

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

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2012
    Messages : 41
    Points : 26
    Points
    26
    Par défaut Modification de variables innatendues
    Bonjour,

    je viens vers vous car je ne comprend absolument pas ce qui se passe lors de la compilation de mon programme...

    je communique via le port parallèle de mon pc avec un lecteur RFID qui me retourne des "états" que je matérialise par des booléens.

    Durant le développement j'ai d'abord tenu a afficher les valeurs pour être sur que jetais sur la bonne voie et tout fonctionnait normalement.

    voici le code :

    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
    int cpt=0;
    	while(cpt<26)
    	{
    		if(!readData0()||!readData1())
    		{
    			sleepus(15);
    			if(!readData0()||!readData1())
    			{	
    				cpt++;
    				cout<<readData0()<<"   "<<endl;
    				sleepus(50);
    			}
    		}
    		else
    		{
    			sleepus(10);
    		}
    Ceci m'affiche : 11111010111100011010010010 qui est la trame correct.

    Maintenant je souhaite enregistrer cette trame dans un vector de booléens je remplace donc la ligne cout<<readData0()<<" "<<endl; par trame.push_back(readData0()) et la ma trame est complétement modifiée elle ne contient presque que des 1 ce qui n'est plus du tout juste...

    Comment se phénomène se produit-il et comment l’empêcher svp?

    Merci d'avance !

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 130
    Points : 33 063
    Points
    33 063
    Billets dans le blog
    4
    Par défaut
    Bonsoir,

    quel est le type de readdata0 pour en faire un push_back tel quel ?

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2011
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Octobre 2011
    Messages : 27
    Points : 34
    Points
    34
    Par défaut
    Peut-être qu'à chaque readData0 et readData1 tu reçois le dernier info qui circule sur le port et ton buffer de périphérique est modifié à mesure qu'il y a des données qui entre, donc ce que tu reçois par readData0 et readData1 entre deux if ne doit pas absolument être tout le temps celui que tu veux.

    Ça fait que stock les valeurs dans des variables et ensuite entre dans ta boucle while puis fait tes comparaison avec des variables et si c'est ce que tu veux garder alors là stock le variable dans ton vector plutôt que la valeur de que la fonction retourne.

    Comme ça je crois que tu pourrais être sure de ce que tu stock dans ton vector.

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

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2012
    Messages : 41
    Points : 26
    Points
    26
    Par défaut
    Mon readData() retourne un booléen et mon vector est de type booleen aussi.
    Le soucis cest que le prélèvement de donnée doit s'effectuer 26 fois et très rapidement.

    Je n'ai pas compris la méthode des variables

  5. #5
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Mars 2011
    Messages : 59
    Points : 120
    Points
    120
    Par défaut
    bonjour

    si tu fais référence à std:vector<bool> , ça dépend de l'implémentation stl que tu utilises, ce dernier a une spécification controversée ( ni lui ni son iterator ne satisfont les exigences que rempli std::vector)
    Cela est dicté par une volonté d'optimisation.

    regarde plutôt boost::dynamic_bitset :

    http://www.boost.org/doc/libs/1_55_0...ic_bitset.html

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

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2012
    Messages : 41
    Points : 26
    Points
    26
    Par défaut
    D'accord je comprend bien que le vector n'est donc pas la bonne méthode mais j'avais essayé de stocker mes booleens dans un tableau statique et le résultat était le même. Est ce normal?

    Étant donnée que je travail en microseconde je pensais peut être au fait que la sauvegarde des données est peut être trop couteuse je ne sais pas.

    Notre prof nous a dis que l'instruction cout prenait trop de temps et pouvait fausser la réception mais dans mon code cette instruction en semble pas poser problème.

  7. #7
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Mars 2011
    Messages : 59
    Points : 120
    Points
    120
    Par défaut
    ma réponse était basée sur l'hypothèse que ton vector restituait mal les booleans qu'on y stocke, et qu'en contre partie std::cout montrait bien que les valeurs que tu récupèrent étaient bonnes

    maintenant si ça ne passe pas avec un tableau C non plus il convient de voir comment tu écrit/extrait les données de ce tableau/vector,

    en combinant les cout avec les push_back est ce que tu as les mêmes différences ?

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

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2012
    Messages : 41
    Points : 26
    Points
    26
    Par défaut
    Bon alors je pense que le soucis de base c'est la temporisation car voila le résultat quand je laisse ET le push_back ET le cout



    Le problème se resoud en laissant le cout, n'ayant pas le temps de chercher la solution en l'enlevant et qui serait sans doute de changer la valeur de ma fonction sleepus() je vais laisser ceci comme ca et continuer.


    Merci pour vos réponses

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XSLT] Modifications de variable
    Par koopajah dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 04/06/2007, 10h51
  2. modification de variable d'environnement (PS1)
    Par trax44 dans le forum Administration système
    Réponses: 3
    Dernier message: 28/05/2007, 18h52
  3. modification de variable
    Par sloshy dans le forum Général Python
    Réponses: 4
    Dernier message: 04/03/2007, 23h33
  4. modification des variables difine dans un movieclip
    Par 3adoula dans le forum Flash
    Réponses: 1
    Dernier message: 21/08/2006, 19h19
  5. Réponses: 3
    Dernier message: 01/09/2005, 12h56

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