Go语言学习-串口通讯程序Serial
发布时间:2021-12-27, 18:09:15 分类:Go | 编辑 off 网址 | 辅助
正文 1142字数 286,704阅读
go get -u "github.com/tarm/serial"
Run code
Cut to clipboard
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)
}
}
Run code
Cut to clipboard
目前有一个弊端
测试发现无法串口自动成帧。串口Read的数据可能会多包打印出来
尝试过在serial.Config配置里面加入ReadTimeout时间限制,也无法稳定的得到整帧buf
(支付宝)给作者钱财以资鼓励 (微信)→
暂无评论 »