Effacer le port de réception du port série en C #
Veux juste savoir comment effacer le tampon de réception de mon port série en C#. Semble que les données dans le tampon de réception juste continuer à s'accumuler.
Par exemple, le flux de données entrant est: [A], [B], [C]. Les données que je veux c'est juste [C].
Je pense que je vais faire comme, lorsque je reçois [A] et [B], je fais effacer la mémoire. Uniquement lorsque [C] est reçu, je continue des processus. Est-ce la manière de le faire en C#?
source d'informationauteur maniac84
Vous devez vous connecter pour publier un commentaire.
Si vous utilisez le
System.IO.Ports.SerialPort
alors vous pouvez utiliser les deux méthodes:DiscardInBuffer()
etDiscardOutBuffer()
de vider les tampons.Si vous êtes à la lecture des données à partir d'un port série:
Utilisation
port.DiscardOutBuffer(); and port.DiscardInBuffer();
pour désactiver le port série de tamponsvous pouvez utiliser comme
Il y a deux tampons. Un tampon est associé avec le port série et l'autre avec ses flux de base, où les données à partir du port de tampon est en streaming en. DiscardIn Tampon() récupère les données à partir du Port Série de la mémoire tampon jeté. Il y a encore des données dans le Flux de Base que vous allez lire. Donc, en plus de l'utilisation DiscardInBuffer, aussi l'utilisation de la SP.BaseStream.Flush(). Maintenant, vous avez une ardoise propre! Si vous n'obtenez pas beaucoup de données, il suffit de se débarrasser de la base de flux: SP.BaseStream.Dispose().
Puisque vous êtes toujours obtenir les données reçues de l'événement, yo peut le lire et de ne pas vous mettre en danger de perdre des données.