|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||
|
Invité de passage
![]() Étudiant Inscription : janvier 2012 Messages : 30 ![]() |
J'ai réalisé un petit programme qui traite des trames reçu sur un port serie pour en extraire les données importantes !
J'arrive à traiter toutes les trames une par une mais j'ai un problème sur la longueur des trames quand je veut les traiter en une fois. Exemple des trames que je traite Code :
Ma méthode pour récupérer ma trame : Code :
Merci d'avance pour votre aide |
||||
|
|
00
|
|
|
#2 |
|
Membre éclairé
![]() Inscription : décembre 2008 Messages : 236 ![]() |
Si LExtract->ReadBuffer(Trame,Erreur) revoit un false en fin de trame, alors c'est plutôt cette valeur de retour qu'il faut caser dans le test de ton while.
Ou, s'il est convenu que tes trames se terminent par des caractères spéciaux, compare Trame à ce caractère dans ton test. Quoiqu'il arrive, prédéterminer "en dur" une taille de trame est probablement une mauvaise idée (ou alors une taille max, à la limite). |
|
|
10
|
|
|
#3 |
|
Membre du Club
![]() Jérôme Développeur informatique Inscription : août 2011 Messages : 59 ![]() |
Je me trompe peut-être mais j'ai l'impression que chaque trame commence par le caractère "$". Pourquoi ne pas lire ta trame jusqu'a ce que tu rencontre ce caractère ? Si c'est le cas, bien sur, tu ne l'ajoute pas et tu le compte pour la suivante.
Le soucis, si ca en est un, c'est que pour achever une trame, ton application attendrai la suivante |
|
|
10
|
|
|
#4 |
|
Invité de passage
![]() Étudiant Inscription : janvier 2012 Messages : 30 ![]() |
Déjà merci pour vos réponses.
cob59 j'avais pas pensé et je vais test mais le problème qu'il va y avoir c'est qu'il n'y a pas d'arrêt au niveau des trames reçus vu que se sera toujours true ! Jerome S je pensais faire comme ça mais je ne sais pas comment le réaliser |
|
|
00
|
|
|
#5 | ||
![]() ![]() Inscription : juin 2008 Messages : 7 494 ![]() |
Salut,
Code :
|
||
|
|
10
|
|
|
#6 | ||
|
Invité de passage
![]() Étudiant Inscription : janvier 2012 Messages : 30 ![]() |
je savais même pas qu'on pouvait mettre un while sans do
merci ![]() J'ai lu la faq sur RAII mais comme j'ai pas super bien compris et que je ne serais pas l'expliquer, je préfère m'en passer. Code :
![]() J'ai donc fait quelques retouches mineurs pour que mon code tourne sans provoqué de fuite mémoire ou d'erreur - j'ai rajouté un petit affichage de texte (pour expliquer ce que le programme attend) et j'ai rajouté un getch pour qu'il reçoit la trame car si la trame est reçu pendant while, returnok passe à true mais sans avoir récupérer la trame ! - J'ai aussi rajouter mon fermerport dans le if car sinon il ne se ferme pas et un petit affichage pour voir ma trame ! je sais pas si ce que j'ai fait est correct mais pour moi ça me semble pas mal ! PS: si c'est bon ma prochaine étape sera "de me passer du getch" pour pouvoir analyser des trames à la suite sans quitter le programme et non une seule trame traitée puis relancer le programme mais bon faut déjà que ma première étape soit bonne pour faire cela ! |
||
|
|
00
|
|
|
#7 | ||||
|
Membre du Club
![]() Jérôme Développeur informatique Inscription : août 2011 Messages : 59 ![]() |
Dans le cas
Code :
Par contre, dans Code :
En gros, les deux sont identiques à l'exception de la première entrée dans la boucle (dans tous les cas pour l'un, selon la condition pour l'autre).
__________________
Dans le monde, il y a 10 types de personnes. Ceux qui comprennent ce message et les autres |
||||
|
|
20
|
|
|
#8 |
![]() ![]() Inscription : juin 2008 Messages : 7 494 ![]() |
C'est un concept fondamental dans le développement C++. Si tu ne l'appliques pas, alors arrêtes le C++.
|
|
|
10
|
|
|
#9 |
|
Invité de passage
![]() Étudiant Inscription : janvier 2012 Messages : 30 ![]() |
Je viens de lire la définition sur wiki et en faites je l'utilise déjà sans savoir le nom exact donc RAII, simplement avec la faq c++ je pensais à quelques choses de plus développer !
Je voudrais maintenant pouvoir traiter plusieurs trames à la suite sans redémarrer le programme mais si je mets une grosse boucle do-while mais au final c'est une par une au lieu de traiter à la suite |
|
|
00
|
|
|
#10 | ||
|
Invité de passage
![]() Étudiant Inscription : janvier 2012 Messages : 30 ![]() |
Personne pour m'aider pour traiter les trames non stop sans relancer le programme
Code :
|
||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com