我在 Go 中編寫了一個(gè)簡(jiǎn)短的程序來通過串行端口與傳感器通信:package mainimport ( "fmt" "github.com/tarm/goserial" "time")func main() { c := &serial.Config{Name: "/dev/ttyUSB0", Baud: 9600} s, err := serial.OpenPort(c) if err != nil { fmt.Println(err) } _, err = s.Write([]byte("\x16\x02N0C0 G A\x03\x0d\x0a")) if err != nil { fmt.Println(err) } time.Sleep(time.Second/2) buf := make([]byte, 40) n, err := s.Read(buf) if err != nil { fmt.Println(err) } fmt.Println(string(buf[:n])) s.Close()}它工作正常,但在寫入端口后,我必須等待大約半秒鐘才能開始讀取它。我想使用 while 循環(huán)而不是time.Sleep讀取所有傳入的數(shù)據(jù)。我的嘗試不起作用:buf := make([]byte, 40)n := 0for { n, _ := s.Read(buf) if n > 0 { break }}fmt.Println(string(buf[:n]))我猜buf每次循環(huán)通過后都會(huì)被覆蓋。有什么建議么?
使用while循環(huán)從串口讀取
ibeautiful
2021-06-16 17:06:51