2017-08-30 4 views
0

J'écoute le port série en utilisant pySerial. Les données traitées seulement quand j'ai eu un morceau de données, que je peux traiter. Le répartiteur d'événements simple écoute les événements à partir de readet, puis les données d'événement sont gérées. La gestion peut impliquer des E/S, des réseaux et d'autres types d'opérations de système d'exploitation qui prennent beaucoup de temps. Mais qui va lire les données de série en temps de traitement des dernières données?Travailler avec la série sans perte de données

Par exemple

Port stream >> | 1111111111111111 | 222222 | 2222222 | 33333 
        --------------------------------------------- 
Programm thread >> | listen port 1 -> | handle | listen2 | ..... 

Ainsi les données du port qui viennent dans le temps sur la manipulation seront perdues? comme le début du paquet de 2?

Comment garantir que toutes les données du port seront traitées à temps?

  • matériel: Raspberry PI 3b
  • OS: Raspbian
  • python: v2.7

Répondre

1

L'utilisation de tampons circulaires et les fils en python serait une solution. Une autre solution consisterait à implémenter un protocole différent afin que l'expéditeur attende que l'auditeur accuse réception avant d'envoyer de nouvelles données.