Я получаю некоторые символы через радиочип, который я пытаюсь считывать с последовательного порта. Я могу прекрасно прочитать его в этом коде Python , который дает мне следующее:
received: counter: 2703
received: counter: 2704
received: counter: 2705
Поэтому, используя пакет go-serial , я написал некоторый код для выполнениято же самое в Go:
package main
import "fmt"
import "log"
import "github.com/jacobsa/go-serial/serial"
import "io"
import "encoding/hex"
func main() {
// Set up options.
options := serial.OpenOptions{
PortName: "/dev/ttyUSB0",
BaudRate: 9600,
DataBits: 7,
StopBits: 2,
MinimumReadSize: 4,
}
// Open the port.
port, err := serial.Open(options)
if err != nil {
log.Fatalf("serial.Open: %v", err)
}
defer port.Close()
for {
buf := make([]byte, 32)
n, err := port.Read(buf)
if err != nil {
if err != io.EOF {
fmt.Println("Error reading from serial port: ", err)
}
} else {
buf = buf[:n]
fmt.Println("received: ", buf)
fmt.Println("received: ", hex.EncodeToString(buf))
}
}
}
Как вы можете видеть, я распечатываю полученный буфер как в необработанном виде, так и в преобразованном из шестнадцатеричного в строку. Результат таков:
received: [99 111 117 110 116 101 114 58 32 51 48 50 52 10]
received: 636f756e7465723a20333032340a
received: [99 111 117 110 116 101 114 58 32 51 48 50 53 10]
received: 636f756e7465723a20333032350a
received: [99 111 117 110 116 101 114 58 32 51 48 50 54 10]
received: 636f756e7465723a20333032360a
Полагаю, эти числа представляют counter: 2704
, но, как вы видите, преобразование в строку не дает ожидаемого результата.
Кто-нибудьзнаете, что я здесь делаю не так? Как я могу преобразовать эти числа в строку? Все советы приветствуются!