Maison  >  Article  >  développement back-end  >  Comment lire les données d'un port série en continu avec une boucle While en Go ?

Comment lire les données d'un port série en continu avec une boucle While en Go ?

DDD
DDDoriginal
2024-10-27 04:47:30872parcourir

How to Read Data from a Serial Port Continuously with a While-Loop in Go?

Lecture à partir d'un port série avec boucle While en Go

En Go, la lecture à partir d'un port série nécessite de comprendre le fonctionnement de Read(). Alors que le programme original utilisait time.Sleep pour faire une pause avant de lire, une approche en boucle while est souvent préférée pour l'acquisition continue de données. Cependant, cela présente un défi en raison du comportement de Read().

Dans l'implémentation de la boucle while, Read() renverra les données chaque fois qu'elles seront disponibles, écrasant potentiellement le tampon à chaque itération de la boucle. Pour résoudre ce problème, nous devons attendre que toutes les données entrantes aient été reçues avant de lire.

Une solution consiste à utiliser un bufio.Reader, qui fournit une interface tampon pour lire à partir d'un flux. Il nous permet de spécifier un délimiteur, tel que « x0a » (saut de ligne), et d'attendre que ce délimiteur soit rencontré avant de renvoyer les données.

Le code révisé ci-dessous montre comment utiliser bufio.Reader pour lire des données. depuis un port série jusqu'à ce que le délimiteur 'x0a' soit reçu :

<code class="go">reader := bufio.NewReader(s)
reply, err := reader.ReadBytes('\x0a')
if err != nil {
    panic(err)
}
fmt.Println(reply)</code>

Ce code attendra que le délimiteur 'x0a' soit reçu avant de renvoyer les données dans la variable 'reply'. Le tampon utilisé par bufio.Reader garantit que les données ne sont pas écrasées lors de plusieurs appels Read().

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn