这里介绍使用Go语言操作
开发板的串口,Go语言的第三方包serial支持字节流方式读写串口。支持windows和linux操作系统。
首先下载serial包
- $ go get github.com/tarm/serial
简单示例
这里使用UART2演示,对应的设备名为 ttymxc1
下面是稍修改自带的示例
- package main
- import (
- "github.com/tarm/serial"
- "log"
- )
- func main() {
- c := &serial.Config{Name: "/dev/ttymxc1", Baud: 115200}
- s, err := serial.OpenPort(c)
- if err != nil {
- log.Fatal(err)
- }
- n, err := s.Write([]byte("test"))
- if err != nil {
- log.Fatal(err)
- }
- buf := make([]byte, 128)
- n, err = s.Read(buf)
- if err != nil {
- log.Fatal(err)
- }
- log.Print("%q", buf[:n])
- }
交叉编译
- $ env GOOS=linux GOARCH=arm GOARM=7 go build
将生成的执行文件传送至开发板上执行,在计算机的串口上可收到"test"字符串,在开发板的控制台显示接收到的数据。
程序分解
- c := &serial.Config{Name: "/dev/ttymxc1", Baud: 115200}
这里返回&Config类型的变量,用于配置串口,可配置文件名、波特率、超时时间、数据位、校验方式、停止位,Config定义如下
- type Config struct {
- Name string
- Baud int
- Readtimeout time.Duration // Total timeout
- // Size is the number of data bits. If 0, DefaultSize is used.
- Size byte
- // Parity is the bit to use and defaults to ParityNone (no parity bit).
- Parity Parity
- // Number of stop bits to use. Default is 1 (1 stop bit).
- StopBits StopBits
- }
- s, err := serial.OpenPort(c)
打开串口成功后即可像普通文件一样读写
- n, err := s.Write([]byte("test"))
向串口发送"test"字符串
读取串口接收到的数据,n为接收到的字节数