Я принимаю данные через последовательный порт (используя Arduino) и хочу проанализировать данные.Вот что у меня есть:
package main
import (
"log"
"github.com/tarm/serial"
"bufio"
"sync"
"fmt"
)
func readFirstLine(data []string, wg *sync.WaitGroup){
defer wg.Done()
fmt.Printf("This is the sensor data:\n%q\n%q", data[0], data[1])
}
func readSecondLine(data []string, wg *sync.WaitGroup){
defer wg.Done()
fmt.Printf("This is the actuator data:\n%q", data[2])
}
func main() {
usbRead := &serial.Config{Name: "COM5", Baud: 9600, ReadTimeout: 0}
port, err := serial.OpenPort(usbRead)
var wg sync.WaitGroup
wg.Add(2)
if err != nil {
log.Fatal(err)
}
data := []string{}
scanner := bufio.NewScanner(port)
for scanner.Scan() {
data = append(data, scanner.Text())
}
for {
go readFirstLine(data, &wg)
go readSecondLine(data, &wg)
wg.Wait()
}
}
Последовательный порт в настоящее время печатает это (зациклено):
{"temperature":[27.7],"humidity":[46.9],"sensor":"DHT22"}
{"temperature":[25.41545],"sensor":"LM35DZ"}
{"blink":["true"],"actuator":"arduinoLED"}
Я пытаюсь использовать goroutines для анализа данных и распечатать это(также должно быть зациклено):
This is the sensor data:
{"temperature":[27.7],"humidity":[46.9],"sensor":"DHT22"}
{"temperature":[25.41545],"sensor":"LM35DZ"}
This is the actuator data:
{"blink":["true"],"actuator":"arduinoLED"}
Однако я не получаю вывод.Программа просто не печатает.Я думаю, что это связано с тем, как я сохраняю данные.Кто-нибудь знает, как это исправить?И если это исправлено, является ли это использование goroutines правильным методом для достижения того, чего я хочу?
Спасибо большое.