diff --git a/serialport.go b/serialport.go index 7b2952a29..957828283 100755 --- a/serialport.go +++ b/serialport.go @@ -95,12 +95,13 @@ type SpPortMessageRaw struct { func (p *serport) reader() { //var buf bytes.Buffer - ch := make([]byte, 1024) timeCheckOpen := time.Now() var buffered_ch bytes.Buffer for { + ch := make([]byte, 1024) + n, err := p.portIo.Read(ch) //if we detect that port is closing, break out o this for{} loop. @@ -127,12 +128,9 @@ func (p *serport) reader() { for i, w := 0, 0; i < n; i += w { runeValue, width := utf8.DecodeRune(ch[i:n]) if runeValue == utf8.RuneError { - buffered_ch.Write(append(ch[i:n])) + buffered_ch.Write(ch[i:n]) break } - if i == n { - buffered_ch.Reset() - } data += string(runeValue) w = width }