Liaison série et buffer système

Fireball -  
 Fireball -
Bonsoir,

J'utilise la liaison série pour communiquer mais j'ai un soucis avec le buffer du système. En effet ce dernier est trop petit pour stocker la totalité des données reçues. Bien évidemment je peux le vider avec la méthode write() (en C++) mais le soucis c'est que je ne peux le vider qu'une fois que le buffer a finit de recevoir...

N'y a-t-il pas de méthode afin de le vider régulièrement ce buffer ? Je ne sais pas trop comment y procéder.

Merci de votre aide.

10 réponses

Fireball
 
personne n'a une idée svp ?!!
0
dubcek Messages postés 19031 Date d'inscription   Statut Contributeur Dernière intervention   5 641
 
hello
utiliser un handshake, XON/XOFF, ETX/ACK pour ne pas remplir le buffer ?
0
Fireball
 
Non je ne pense pas que je puisse interrompre le remplissage du buffer.

Ces caractères de contrôle tu les envois au niveau du matériel qui génère les données ou de l'ordinateur qui gère la liaison ?
0
Fireball
 
Ah oui petite précision, je communique par liaison série avec un capteur qui m'envoie des données (de taille assez conséquente) toutes les 100 ms.
0

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

Posez votre question
dubcek Messages postés 19031 Date d'inscription   Statut Contributeur Dernière intervention   5 641
 
le soft lit n bytes, puis envoie un xoff pour que l'envoi stoppe, puis quand le traitement est fini, envoie un xon pour reprendre.
qu'appelles-tu le buffer système ? quel système, Windows,Linux ?
diminuer la vitesse de transmission ?
0
Fireball
 
Si c'est au niveau du matériel qu'on envoi les caractères de contrôle, je n'ai pas vu cette possibilité dans la documentation du matériel.

Je suis sous Windows xp. Le buffer système (peut être qu'il ne s'appelle pas ainsi) c'est celui qui reçoit les données avant de me les transférer dans mon programme lorsque je fais appelle à la méthode read()
0
Fireball
 
Grosso modo ce que je voudrais c'est une fonction ou une méthode qui me permettrait de lire le buffer (ce qui implique donc la suppression des données lues) sans pour autant interrompre l'écriture des données dans ce même buffer.

Ce serait peut être possible si j'utilise 2 threads, l'un pour écrire dans le buffer et l'autre pour le vider... mais je suis perdu, je ne sais comment procéder =(
0
dubcek Messages postés 19031 Date d'inscription   Statut Contributeur Dernière intervention   5 641
 
il me semble que le read devrait vider le buffer
0
Fireball
 
Oui il le fait, mais comment faire pour le vider à plusieurs reprise lors de l'écriture dans le buffer ?
0
Fireball
 
up
0