首頁  >  文章  >  後端開發  >  Go中如何使用While迴圈連續讀取串列埠資料?

Go中如何使用While迴圈連續讀取串列埠資料?

DDD
DDD原創
2024-10-27 04:47:30872瀏覽

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

Go 中使用 While-Loop 讀取串列埠

在 Go 中,從串列埠讀取需要了解 Read() 的操作方式。雖然原始程式使用 time.Sleep 在讀取之前暫停,但 while 循環方法通常更適合連續資料收集。然而,由於 Read() 的行為,它提出了一個挑戰。

在 while 迴圈實作中,Read() 會在可用時傳回數據,可能會在每次迴圈迭代時覆寫緩衝區。要解決這個問題,我們需要等到所有傳入資料都已接收後再讀取。

一種解決方案是使用 bufio.Reader,它提供了用於從流中讀取資料的緩衝介面。它允許我們指定一個分隔符,例如'x0a'(換行符),並等到遇到該分隔符才返回資料。

下面修改後的程式碼示範如何使用bufio.Reader 讀取資料從串列端口,直到收到「x0a」分隔符號:

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

此程式碼將等到收到“x0a”分隔符,然後再返回“reply”變數中的資料。 bufio.Reader 使用的緩衝區可確保在多次 Read() 呼叫期間資料不會被覆寫。

以上是Go中如何使用While迴圈連續讀取串列埠資料?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn