diff --git a/devices/geiger/gqgmc.go b/devices/geiger/gqgmc.go index 924661bdf926d85edbf839174a6e7c53b71b7ca7..3bc99756d67a269b44206a911d63cc82d7f94366 100644 --- a/devices/geiger/gqgmc.go +++ b/devices/geiger/gqgmc.go @@ -450,20 +450,22 @@ func (gc *GQGMCCounter) recv(length int) ([]byte, error) { if err != nil { return nil, err } + read := n if n != length { for i := 0; i < 20; i++ { - fmt.Printf("%d(%d) ", n, len(buf)) - n, err = gc.port.Read(buf[len(buf):]) + fmt.Printf("%d(%d) ", n, read) + n, err = gc.port.Read(buf[read:]) if err != nil { return nil, err } - if len(buf) == length { + read += n + if read == length { break } } - fmt.Printf("%d(%d)\n", n, len(buf)) + fmt.Printf("%d(%d)\n", n, read) } - if len(buf) != length { + if read != length { fmt.Printf("Short read: %+v\n", buf) return nil, fmt.Errorf("Short read (got: %d, wanted: %d)", n, length) }