, имея в виду, я не могу проверить, что я здесь говорю ...
1 / вы не должны создавать экземпляр bufio reader на каждой итерации
2 / bufio.Reader.Peek НЕ продвигаетсячитатель https://golang.org/pkg/bufio/#Reader.Peek
3 / Если вы не получили искаженный пакет, я думаю, вам вообще не нужно выполнять сброс.
4 / Пожалуйста, сделайте отступ в своем коде на play.golang.org
5 / Вы не проверяете ошибку чтения для завершения
6 / Все пакеты, которые я могу найти для работы с последовательными портами в go, предоставляют экземпляр io.Reader, поэтому его использование может оказаться бесполезным.дополнительный bufio.Reader.Я подозреваю, что вы используете https://godoc.org/github.com/tarm/serial#OpenPort
Возможно, это не окончательный ответ, но он должен помочь.
package main
import (
"io"
"log"
"time"
)
func main() {
s, err := serial.OpenPort(c)
if err != nil {
log.Fatal(err)
}
pck := make([]byte, 46)
for {
time.Sleep(time.Second / 2)
n, err := s.Read(pck)
if err != nil {
if err == io.EOF {
break
}
log.Println(err)
}
pck = pck[:n]
go parse(pck)
}
}