从串行输入中删除\ r和\ n(CRLF)

时间:2018-05-24 22:10:43

标签: go serial-port newline

我目前正在编写Go代码,它使用串口通过Arduino读取传感器值。目前我正在接受" \ r"和" \ n"在我的输出中。我知道在Python中,你可以这样做:

line = line.decode('utf-8')

摆脱角色。你会怎么用Golang做到这一点?我对这门语言比较陌生,所以任何帮助都会受到赞赏!以下是目前输出的片段:

"arduinoLED\"}\r\n{\"temperature\"

另外,如果有人能让我知道如何在Go中读取一行(类似于Python line.readline()),这将是很棒的。

非常感谢!

1 个答案:

答案 0 :(得分:2)

如果您使用default bufio.Scanner(通常的方式)按行读取流,则会丢弃常规(\n)和CRLF(\r\n)换行符:< / p>

doc := "Hello\nWorld!\nGoodbye,\r\nnewlines!\r\n"

scanner := bufio.NewScanner(bytes.NewReader([]byte(doc)))
for scanner.Scan() {
    fmt.Printf("%q\n", scanner.Text()) // Note our own newline here
}
if err := scanner.Err(); err != nil {
    panic(err) // TODO: handle error properly
}

// Prints:
// "Hello,"
// "World!"
// "Goodbye,"
// "newlines!"

当然,除了上面示例中的字节读取器之外,您可能还有一个现有的Reader,但用法应该相同。