Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : utilisation d'une FIFO pour stocker des données recu sur un port série et les traiter ensuite. [ Divers / Débutants ] (norber59480)

lundi 28 avril 2008 à 17:17:29 | utilisation d'une FIFO pour stocker des données recu sur un port série et les traiter ensuite.

norber59480

Bonjour à tous.

   Je vous expose mon probléme : 
Je dois récupérer des trames sur le port série et effectuer differentes actions en fonction de la données récuperer.
Les données arrive sur le port série par paquets de trames. Il sera donc impossible de traiter les données en direct.
On m'a suggerer d'utiliser une FIFO.
Je connais bien le principe mais le probleme, c'est que je ne sait pas du tout comment réaliser cette FIFO. Les infos trouvées sur ce site ne m'ont pas aidé. Je ne comprend pas bien la structure des programmes qui sont réalisés.
Si quelqu'un pouvait venir a mon secour ca serait sympa...


lundi 28 avril 2008 à 18:43:02 | Re : utilisation d'une FIFO pour stocker des données recu sur un port série et les traiter ensuite.

Kristof_Koder

Google est ton ami !!
ici par ecxemple : http://faq.vb.free.fr/index.php?question=159

lundi 28 avril 2008 à 19:45:55 | Re : utilisation d'une FIFO pour stocker des données recu sur un port série et les traiter ensuite.

casy

Membre Club
Solution du buffer à double index très utilisé en communication série. (le lien donné au post précédent en est une implémentation plus générale)

Le principe :
- un tableau de caractère suffisament grand
- un index de lecture servant de pointeur sur le tableau
- un index d'écriture servant de pointeur sur le tableau

Le fonctionnement :
- sur l'évènement reception du port série et à l'aide du pointeur écriture, tu remplie le tableau caractère par caractère. Si l'index arrive à la fin du tableau, il continue au début du tableau, et ainsi en boucle.

Indépendemment, et avec l'index de lecture, tu lis les caractères qui restent à lire dans le tableau, un à un et éventuellement tu reconstruit une chaine si tu as besoin. Si l'index arrive à la fin du tableau, il continue au début

Si les 2 index sont différents, c'est que des caractères sont à lire. Eventuellement tu peux faire une fonction pour cela. Pense au fait que un des 2 index a pu repartir au début du tableau.

Cela fonctionne très bien, est relativement, et travaille surtout de mainière asynchrone comme le port. Les fonctions de lecture et d'écriture sont totalement indépendante l'une de l'autre.

Pour ce qui est de la taille du tableau, trop n'est pas necessaire, trop peu est risqué. Si tu reçois tes données de façon régulière sous forme de trame, la taille du tableau ne devrait pas etre inférieure à 10 trames complètes.

Perso je ne descends jamais en dessous de 8192 caractères. La pluspart du temps ça me laisse bien plus de marge que necessaire.

---- Sevyc64  (alias Casy) ----
# LE PARTAGE EST NOTRE FORCE #    [ Lien ]

mardi 29 avril 2008 à 09:30:58 | Re : utilisation d'une FIFO pour stocker des données recu sur un port série et les traiter ensuite.

norber59480

Merci pour vos réponses....
Cependant google doit pas ete mon amis parce que les site que j'ai trouver à ce sujet et particulierement le tien, ne repondait pas a mes questions....
J'ai une autre questions qui est lié. Est ce que je peux lire le port serie en continue, et traiter les trames en parralléle? Ou bien je doit créer une interruption de la lecture pour traiter les trames?!


mardi 29 avril 2008 à 20:39:47 | Re : utilisation d'une FIFO pour stocker des données recu sur un port série et les traiter ensuite.

casy

Membre Club
Réponse acceptée !

Ben c'est justement le principe des piles, listes, et autres buffers dans les solutoins que l'on t'a donné.

Tu as du coté une tache qui remplie le buffer, déclenchée par l'évènement de reception sur le port.

Tu as de l'autre coté, le reste de ton programme qui vient de temps en temps voir si des données sont arrvées, les lit et les traites.

C'est du traitement parallèle si on regarde de loin, car dans la réalité, l'évènement reception va interrompre ce que tu es en train de faire pour venir remplir le buffer, puis te rendre la main pour que tu continue ton boulot.

Macroscopiquement, c'est du traitement parallèle car les 2 taches sont totalement indépendantes


L'idéal serait évidemment de faire du multithreading en mettant la reception dans un thread à part, mais c'est tout simplement impossible en VB6.


---- Sevyc64  (alias Casy) ----
# LE PARTAGE EST NOTRE FORCE #    [ Lien ]

vendredi 2 mai 2008 à 16:21:56 | Re : utilisation d'une FIFO pour stocker des données recu sur un port série et les traiter ensuite.

norber59480

Réponse acceptée !
MErci beaucoup pour votre aide!!!!
J'ai résolu mon probleme meme si je pense qu'au final c'était pas utile d'utilisé une FIFO car, l'analyse est assez rapide pour traiter les donner directement (le débit est seulement de 9600Kbit/s). Cependant cela me permet d'avoir une sécurité quand à la reception des donner et donc dans l'analyse ce qui doit me permettre de rater aucune trame.




Cette discussion est classé dans : port, données, série, traiter, fifo


Répondre à ce message

Sujets en rapport avec ce message

Problème d'emission de données sur un port série [ par Lolo ] Plusieurs collègues et moi même avont constaté un bug du contrôle activeX MSComm32.ocxEn effet lors de l'envoi de données sur le port série en XOn Xof Problème d'emission de données sur un port série [ par Lolo ] Plusieurs collègues et moi même avont constaté un bug du contrôle activeX MSComm32.ocxEn effet lors de l'envoi de données sur le port série en XOn Xof envoie de données via la port série [ par zedyo ] j'aimerais envoyer sur le port série un chiffre en Héxa. J'ai donc : MsComm1.Outport = Hex(0) & Hex(4)Mon problème est que je dois effectivement envoy comment récupérer des données du port série et les exploitées sous access [ par Ben ] je veux récupérer des données que j'ai préalablement stocké dans la mémoire d'un 68hc11 via le port série et exploitées ces données dans une base de d reception par le port série [ par tibops ] Bonjour à tous !Je dois réaliser une application permettant la communication par une liaison série avec un microcontrôleur PIC(Envoi et réception de d plantage prog com port série [ par Strike ] Bonjour,j'ai une application qui envoie des données par le port série sur une carte electronique. L'application fonctionne à la première execution (la lecture de données à partir d'un port série et les stocker dans une base de données [ par maryouma ] bonjourje veux configurer le port série pour faire une lecture des mesures changeantes, les afficher et les stocker ces mesures dans une base de donn dll et port série [ par cmoilastar ] Salut tout le monde, voila, j'ai fait un programme qui lit les données sur le port série sous forme de chaines de caracteres avec mscomm et qui, en su Récupérer des données sur le port série [ par briwax ] Bonjour à tous,Je suis étudiant en informatique et j'ai un mémoire à faire pour ma dernière année, je dois récupérer des données sur le port série d'u Recevoir des données par port série avec Visual Basic [ par duquep ] Bonjour à tous,En deux mots:J'ai programmé un PIC ( Microcontroleur de type PIC 16f876àCe microcontroleur lit deux variables (byte). Les variables son


Nos sponsors

Sondage...

CalendriCode



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,374 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.