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中文網其他相關文章!