串口通信成功需要知道串口号和波特率,这里演示访问的是COM1口 波特率9600
代码如下:
package main
import (
"fmt"
"strings"
serial "github.com/tarm/goserial"
)
const MAXRWLEN = 8000
func main() {
cfg := &serial.Config{Name: "COM1", Baud: 9600, ReadTimeout: 3 /*毫秒*/}
iorwc, err := serial.OpenPort(cfg)
if err != nil {
fmt.Println("打开端口错误")
fmt.Println(err)
return
}
defer iorwc.Close()
buffer := make([]byte, MAXRWLEN)
//发命令之前清空缓冲区
num, err := iorwc.Read(buffer)
if err != nil {
fmt.Println("清空缓存器错误")
fmt.Println(err)
return
}
//发命令数据类型为[]byte
num, err = iorwc.Write([]byte("0123456789\r\n"))
if err != nil {
fmt.Println("发命令数据错误")
fmt.Println(err)
return
} else {
fmt.Println("发命令数据成功!", num)
}
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
}
串口监控结果
附:window系统查看端口情况
一时没有找到适合工具,没有测试接收串口的数据。谁知道可以推荐下,网上很多串口调试工具一打开串口就把串口独占了,并不是能和程序共享数据
