登录
首页 >  Golang >  Go问答

macOS下golang程序读取串口数据时遇到的问题

来源:stackoverflow

时间:2024-03-01 23:18:15 497浏览 收藏

今日不肯埋头,明日何以抬头!每日一句努力自己的话哈哈~哈喽,今天我将给大家带来一篇《macOS下golang程序读取串口数据时遇到的问题》,主要内容是讲解等等,感兴趣的朋友可以收藏或者有更好的建议在评论提出,我都会认真看的!大家一起进步,一起学习!

问题内容

我成功地将字节数组写入端口,但无法从中读取。功能“读” 返回“read /dev/tty.usbserial1:中断的系统调用”错误,我在macos sierra 10.12.6上运行它,使用“github.com/tarm/serial”,有人遇到同样的问题吗? 这是代码:

func TestTarmSerialDataRecvAndSend(t *testing.T) {
    c := &serial.Config{
        Name: "/dev/cu.usbserial1",
        Baud: 9600,
    }

    s, err := serial.OpenPort(c)
    if err != nil {
        fmt.Println(err)
        return
    }

    for i := 0; i < 10; i++ {
        n, err := s.Write([]byte("test"))
        if err != nil {
            fmt.Println(err)
            return
        }

        fmt.Printf("send byte : %v", n)
    }

    fmt.Println("send over")

    buf := make([]byte, 128)
    n, err := s.Read(buf)
    if err != nil {
        fmt.Println(err)
        return
    }

    fmt.Printf("%q", buf[:n])
}

解决方案


func sendCommand(p *serial.Port, command string, waitForOk bool) string {
    log.Println("--- SendCommand: ", command)
    var status string = ""
    p.Flush()
    _, err := p.Write([]byte(command))
    if err != nil {
        log.Fatal(err)
    }
    buf := make([]byte, 32)
    var loop int = 1
    if waitForOk {
        loop = 10
    }
    for i := 0; i < loop; i++ {
        // ignoring error as EOF raises error on Linux
        n, _ := p.Read(buf)
        if n > 0 {
            status = string(buf[:n])
            log.Printf("SendCommand: rcvd %d bytes: %s\n", n, status)
            if strings.HasSuffix(status, "OK\r\n") || strings.HasSuffix(status, "ERROR\r\n") {
                break
            }
        }
    }
    return status
}

解决方案在这里:https://golang.hotexamples.com/examples/github.com.tarm.serial/Port/Read/golang-port-read-method-examples.html

到这里,我们也就讲完了《macOS下golang程序读取串口数据时遇到的问题》的内容了。个人认为,基础知识的学习和巩固,是为了更好的将其运用到项目中,欢迎关注golang学习网公众号,带你了解更多关于的知识点!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>