go语言串口通信的实现
第一步、下载串口通信包命令行输入命令:go get github.com/tarm/goserial没有提示表示下载成功,否则会提示下载失败的原因。然后就可以在go代码中导入如下包:github.com/tarm/goserial第二步、串口通信代码实现//project main.gopackage mainimport ("fmt""s...
·
第一步、下载串口通信包
命令行输入命令:
go get github.com/tarm/goserial
没有提示表示下载成功,
否则会提示下载失败的原因。
然后就可以在go代码中导入如下包:
github.com/tarm/goserial
第二步、串口通信代码实现
//project main.go
package main
import (
"fmt"
"strings"
"github.com/tarm/goserial"
)
const MAXRWLEN = 8000
func main() {
cfg := &serial.Config{Name: "COM8", Baud: 115200, ReadTimeout: 3 /*毫秒*/}
iorwc, err := serial.OpenPort(cfg)
if err != nil {
fmt.Println(err)
return
}
defer iorwc.Close()
buffer := make([]byte, MAXRWLEN)
//发命令之前清空缓冲区
num, err := iorwc.Read(buffer)
if err != nil {
fmt.Println(err)
return
}
//发命令数据类型为[]byte
num, err = iorwc.Write([]byte("AT\r\n"))
if err != nil {
fmt.Println(err)
return
}
var tmpstr string = ""
for i := 0; i < 3000; i++ {
num, err = iorwc.Read(buffer)
if num > 0 {
tmpstr += fmt.Sprintf("%s", string(buffer[:num]))
}
//查找读到信息的结尾标志
if strings.LastIndex(tmpstr, "\r\nOK\r\n") > 0 {
break
}
}
//打印输出读到的信息
fmt.Println(tmpstr)
return
}
第三步、串口通信代码说明
读串口数据信息时,采用循环查询机制,如果只读一次的话可能读不到预期的数据;串口线有问题或波特率设置不合适,就会出现乱码;输出汉字如有乱码,做编码转换再输出即可;
更多推荐
已为社区贡献1条内容
所有评论(0)