一个简单的串口读写程序!
- 用到的库"github.com/tarm/serial",可通过如下命令获取。
go get -u "github.com/tarm/serial"
-
本程序实现了串口的双向通信。数据循环发送开启一个协程。数据无限循环接收保证了程序的持续运行。
-
目前有一个弊端。测试发现无法串口自动成帧。串口Read的数据可能会多包打印出来。尝试过在serial.Config配置里面加入ReadTimeout时间限制,也无法稳定的得到整帧buf。希望看到的朋友们能帮我解决这个问题。
-
代码如下:
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)
}
}
网友评论