go语言串口编程

客户端

package main

import (
	"bufio"
	"fmt"
	"os"

	"github.com/jacobsa/go-serial/serial"
)

func main() {
	options := serial.OpenOptions{
		PortName:        "COM3",
		BaudRate:        9600,
		DataBits:        8,
		StopBits:        1,
		MinimumReadSize: 1,
	}

	port, err := serial.Open(options)
	if err != nil {
		fmt.Println(err)
		return
	}
	defer func() {
		_ = port.Close()
	}()

	inputReader := bufio.NewReader(os.Stdin)
	for {
		input, err := inputReader.ReadString('\n')
		if err != nil {
			fmt.Println(err)
			continue
		}

		n, err := port.Write([]byte(input[:len(input)-2]))
		if err != nil {
			fmt.Println(err)
			return
		}

		fmt.Printf("You wrote %d bytes: %s\n", n, string(input[:len(input)-2]))
	}
}

 服务端

package main

import (
	"fmt"

	"github.com/jacobsa/go-serial/serial"
)

func main() {
	options := serial.OpenOptions{
		PortName:        "COM4",
		BaudRate:        9600,
		DataBits:        8,
		StopBits:        1,
		MinimumReadSize: 1,
	}

	port, err := serial.Open(options)
	if err != nil {
		fmt.Println(err)
		return
	}
	defer func() {
		_ = port.Close()
	}()

	for {
		buf := make([]byte, 32)

		n, err := port.Read(buf)
		if err != nil {
			fmt.Println(err)
			continue
		}

		if n != 0 {
			fmt.Printf("Read %d bytes: %s\n", n, string(buf))
			fmt.Println(buf)

			buf = append(buf, '\n')
			n, err = port.Write(buf)
			if err != nil {
				fmt.Println(err)
				continue
			}
			fmt.Printf("Wrote %d bytes\n", n)
		}
	}
}

猜你喜欢

转载自www.cnblogs.com/ycz0926/p/10521319.html