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 :

Comment attendre une trame sur le port série ?


Sujet :

C++

  1. #41
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut Donc toujours ce problème de formatage !!!!
    Il n'y a pas de bonne raison pour que fwrite écrive dans le fichier autre chose que ce que ne fait write.
    Si tu veux écrire les données reçues en représentation hexa, il faut utiliser fprintf.
    Mais la question du format du fichier que tu souhaites reste entière...
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  2. #42
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    508
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Haute Vienne (Limousin)

    Informations forums :
    Inscription : Avril 2008
    Messages : 508
    Points : 100
    Points
    100
    Par défaut
    Ce que je reçois est en hexa, ce que je stocke dans le fichier avec la fonction write() est de l'hexa.

    Moi ce que j'aimerai c'est par exemple que l'octet 5 (il y a toujours au total 18 octets) soit stocké dans mon fichier au format décimal (conversion hexadécimal->décimal).


  3. #43
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 379
    Points : 41 568
    Points
    41 568
    Par défaut
    • Tu fais un ReadFile() d'un seul octet, donc nblu sera toujours soit zéro, soit 1.
    • Donc, pour ta boucle de printf(), inutile d'aller jusqu'à 18.
    • La première partie de ton for est bizarre.
    • Après la boucle, i est égal à 19 : Le fwrite écrit donc un octet qui n'a jamais été affecté.

    --> Déplace ton fwrite à l'intérieur de la boucle for, ou bien écris les nblu octets d'un coup:
    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    fwrite (buf, nblu , sizeof buf[0], fichier);
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  4. #44
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    508
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Haute Vienne (Limousin)

    Informations forums :
    Inscription : Avril 2008
    Messages : 508
    Points : 100
    Points
    100
    Par défaut
    Aï, ça m'énerve ce fwrite() qui veut toujours pas fonctionner !!!



  5. #45
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    508
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Haute Vienne (Limousin)

    Informations forums :
    Inscription : Avril 2008
    Messages : 508
    Points : 100
    Points
    100
    Par défaut
    J'ai écris ceci pour la fonction d'écriture dans le fichier :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    fwrite (&buf[i], 1  ,sizeof (buf[i]) , fichier);
    Cela devrait fonctionner, mais non !!!!!

    Quelqu'un pourrait me dire pourquoi SVP ?




  6. #46
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 379
    Points : 41 568
    Points
    41 568
    Par défaut
    As-tu lu mon post ?
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  7. #47
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    508
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Haute Vienne (Limousin)

    Informations forums :
    Inscription : Avril 2008
    Messages : 508
    Points : 100
    Points
    100
    Par défaut
    Oui j'ai lu ton post Médinoc, et j'ai fait des modifications dans mon code.

    Cependant, quand j'arrive à la fonction d'écriture fwrite(), rien ne s'écrit dans le fichier (fichier créé mais vide) !!!





  8. #48
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    508
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Haute Vienne (Limousin)

    Informations forums :
    Inscription : Avril 2008
    Messages : 508
    Points : 100
    Points
    100
    Par défaut
    Vous ne connaitriez pas une fonction qui convertit de l'hexadécimal en décimal svp ?

  9. #49
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Dans ton programme tu utilises déjà:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    printf ("Octets lus : %X\n\n", buf[i]);
    Est ce si compliqué de faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fprintf (fichier, "%d", buf[i]);
    ???
    -W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  10. #50
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 379
    Points : 41 568
    Points
    41 568
    Par défaut
    Sinon, une méthode simple pour convertir l'hexadécimal en décimal:
    1. reconvertir l'hexadécimal en valeur brute
    2. convertir la valeur brute en décimal.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  11. #51
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    508
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Haute Vienne (Limousin)

    Informations forums :
    Inscription : Avril 2008
    Messages : 508
    Points : 100
    Points
    100
    Par défaut
    Est ce si compliqué de faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    fprintf (fichier, "%d", buf[i]);
    Non bien sûr, mais ça n'écrit rien dans le fichier !!!!

    Sinon, une méthode simple pour convertir l'hexadécimal en décimal:

    1. reconvertir l'hexadécimal en valeur brute
    2. convertir la valeur brute en décimal.
    Ce sont déjà des valeurs brutes et justement j'aimerai les mettre en décimal, mais comment ???

  12. #52
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Citation Envoyé par c_boireau Voir le message
    Non bien sûr, mais ça n'écrit rien dans le fichier !!!!
    Est ce que ton fichier est fermé "proprement" par "close" ou est-ce que tu sors du programme en l'interrompant méchament?

    Ce sont déjà des valeurs brutes et justement j'aimerai les mettre en décimal, mais comment ???
    Essayons de comprendre pourquoi ton fichier est vide...
    Puis essayons d'y mettre dedans les informations dans la représentation que tu souhaite (hexadécimal, décimal, binaire)...
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  13. #53
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 379
    Points : 41 568
    Points
    41 568
    Par défaut
    Normalement, un simple fprintf("%d", valeur) suffit (avec sans doute un espace en plus).
    Mais il faut:
    1. Avoir un fichier ouvert en écriture.
    2. Être sûr d'écrire la bonne valeur, et non pas une valeur jamais écrite.
    3. Être sûr que l'appel à fwrite() est au bon endroit dans le code, et non pas à l'extérieur de la bonne boucle, etc...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  14. #54
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    508
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Haute Vienne (Limousin)

    Informations forums :
    Inscription : Avril 2008
    Messages : 508
    Points : 100
    Points
    100
    Par défaut
    Ok, c cool

    les données inscrites dans le fichiers sont bonnes en décimal.

    Maintenant, il faut que je trouve le moyen de faire un retour à la ligne entre chaque données !!!

    Mais ce que je n'avais pas compris c'est que fprintf() c'est comme fwrite() !!!

  15. #55
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 379
    Points : 41 568
    Points
    41 568
    Par défaut
    Ajoute un \n dans le format de ton fprintf()...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  16. #56
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    508
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Haute Vienne (Limousin)

    Informations forums :
    Inscription : Avril 2008
    Messages : 508
    Points : 100
    Points
    100
    Par défaut
    Merci beaucoup à tous !!!

    Tout fonctionne bien pour l'instant !!!

    Juste une chose, est ce que vous savez comment faire pour que par exemple buf [4] s'écrive une fois dans le fichier à la 1ère ligne après ouverture et qu'ensuite il ne se réécrive plus ?

    A bientôt !
    Et encore merci !

+ Répondre à la discussion
Cette discussion est résolue.
Page 3 sur 3 PremièrePremière 123

Discussions similaires

  1. Réponses: 0
    Dernier message: 24/06/2008, 16h12
  2. Comment envoyer une adresse par le port série
    Par christophe_s46 dans le forum WinDev
    Réponses: 3
    Dernier message: 10/09/2007, 01h52
  3. Comment lire une pin sur le port série du pc
    Par KENPACHI dans le forum LabVIEW
    Réponses: 1
    Dernier message: 25/05/2007, 12h56
  4. Réponses: 3
    Dernier message: 18/07/2006, 13h37
  5. [USB]envoyer une trame sur le port USB
    Par ced38100 dans le forum Entrée/Sortie
    Réponses: 3
    Dernier message: 03/11/2005, 12h54

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