美文网首页大数据
Go语言学习-串口通讯程序Serial

Go语言学习-串口通讯程序Serial

作者: 阿巴砝特 | 来源:发表于2020-09-10 17:11 被阅读0次

    一个简单的串口读写程序!

    1. 用到的库"github.com/tarm/serial",可通过如下命令获取。
    go get -u "github.com/tarm/serial"
    
    1. 本程序实现了串口的双向通信。数据循环发送开启一个协程。数据无限循环接收保证了程序的持续运行。

    2. 目前有一个弊端。测试发现无法串口自动成帧。串口Read的数据可能会多包打印出来。尝试过在serial.Config配置里面加入ReadTimeout时间限制,也无法稳定的得到整帧buf。希望看到的朋友们能帮我解决这个问题。

    3. 代码如下:

    package main
    
    import (
        "github.com/tarm/serial"
        "log"
        "time"
    )
    
    func main() {
    
        //设置串口编号
        ser := &serial.Config{Name: "COM2", Baud: 9600}
    
        //打开串口
        conn, err := serial.OpenPort(ser)
        if err != nil {
            log.Fatal(err)
        }
    
        //启动一个协程循环发送
        go func() {
            for {
                revData := []byte("123456")
                _, err := conn.Write(revData)
                if err != nil {
                    log.Println(err)
                    continue
                }
                log.Printf("Tx:%X \n", revData)
                time.Sleep(time.Second)
            }
        }()
    
        //保持数据持续接收
        for {
            buf := make([]byte, 1024)
            lens, err := conn.Read(buf)
            if err != nil {
                log.Println(err)
                continue
            }
            revData := buf[:lens]
            log.Printf("Rx:%X \n", revData)
        }
    
    }
    

    相关文章

      网友评论

        本文标题:Go语言学习-串口通讯程序Serial

        本文链接:https://www.haomeiwen.com/subject/nfdbektx.html