Удалить \ r и \ n (CRLF) из последовательного ввода - PullRequest
0 голосов
/ 25 мая 2018

В настоящее время я пишу код Go, который считывает значение датчика через Arduino через последовательный порт.В настоящее время я получаю "\ r" и "\ n" в моем выводе.Я знаю в Python, вы можете сделать:

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

, чтобы избавиться от персонажей.Как бы вы сделали это с помощью Голанга?Я довольно плохо знаком с языком, поэтому любая помощь будет оценена!Вот как выглядит фрагмент вывода в настоящее время:

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

Также, если кто-нибудь может дать мне знать, как я могу прочитать строку в Go (аналогично Python line.readline()), это было бы здорово.

Большое спасибо!

1 Ответ

0 голосов
/ 25 мая 2018

Если вы читаете поток по строкам, используя по умолчанию bufio.Scanner (что является обычным способом), то и обычные (\n), и CRLF (\r\n) переводы строк будут отброшены:

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!"

Конечно, вместо считывателя байтов в приведенном выше примере у вас, вероятно, будет существующий считыватель, но в противном случае использование должно быть идентичным.

...