首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用Arduino从串口读取数据,产生垃圾输出

使用Arduino从串口读取数据,产生垃圾输出
EN

Stack Overflow用户
提问于 2018-05-29 05:42:29
回答 1查看 180关注 0票数 1

我目前正在尝试通过使用多线程的Arduino从串口读取输入。我有两个线程从串口读取数据,它们都在读取的相同内容(忽略它们的函数名)。代码如下:

 func readFirstLine(scanner *bufio.Scanner, port *serial.Port){
    for scanner.Scan() {
        log.Printf("%q\n", scanner.Text())
    }
    time.Sleep(time.Duration(1)*time.Second)
}

func readSecondLine(scanner *bufio.Scanner, port *serial.Port){
    time.Sleep(time.Duration(1)*time.Second)
    for scanner.Scan() {
        log.Printf("%q\n", scanner.Text())
    }
}

func main() {
    usbRead := &serial.Config{Name: "COM5", Baud: 9600, ReadTimeout: 0}
    port, err := serial.OpenPort(usbRead)

    if err != nil {
        log.Fatal(err)
    }

    scanner := bufio.NewScanner(port)

    for true {
        go readFirstLine(scanner, port)
        go readSecondLine(scanner, port)
        time.Sleep(time.Duration(2)*time.Second)
    }
}

我期望输出如下所示:

{"temperature":[26,26],"humidity":[54.2,54.2],"sensor":"DHT22"}
{"temperature":[23.46041,23.46041],"sensor":"LM35DZ"}
{"blink":["true","true"],"actuator":"arduinoLED"}
{"temperature":[26,26],"humidity":[54.2,54.2],"sensor":"DHT22"}
{"temperature":[23.46041,23.46041],"sensor":"LM35DZ"}
{"blink":["true","true"],"actuator":"arduinoLED"}

然而,我在预期输出之间得到了垃圾输出:

"{\"temperature\":[23.46041,23.46041,23.46041],\"sensor\":\"LM35DZ\"}"
"{\"blink\":[\"true\",\"true\",\"true\"],\"actuator\":\"arduinoLED\"}"
"mpeer\x00\x00re\"u:\x00\x00[]6\x00midhui\x00\x00[54\":.\x00\x00sen,\"s\x00\x00:or\"\"TH\x00"
{\"}\"\x00\x00ptemurrate\x003.4[26\x00\x00,\"s1]e\x00\x00\":\"orL\x00\x00Z\"}5D\r\x00\x00\x00"

我认为出现这个垃圾输出是因为我正在读取串口输入,即使Arduino没有输出任何东西。有什么办法可以解决这个问题吗?谢谢。

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50573709

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档