Go打开串口通信发送数据(go 串口)

串口通信成功需要知道串口号和波特率,这里演示访问的是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系统查看端口情况


一时没有找到适合工具,没有测试接收串口的数据。谁知道可以推荐下,网上很多串口调试工具一打开串口就把串口独占了,并不是能和程序共享数据

原文链接:,转发请注明来源!