问答
直播中

刘 刚

10年用户 42经验值
擅长:6933
私信 关注

【MYS-6ULX-IOT试用体验】用serial包实现串口通信

这里介绍使用Go语言操作开发板的串口,Go语言的第三方包serial支持字节流方式读写串口。支持windows和linux操作系统。

首先下载serial包
  1. $ go get github.com/tarm/serial

简单示例
这里使用UART2演示,对应的设备名为 ttymxc1

下面是稍修改自带的示例

  1. package main

  2. import (
  3.       "github.com/tarm/serial"
  4.       "log"
  5. )

  6. func main() {
  7.       c := &serial.Config{Name: "/dev/ttymxc1", Baud: 115200}
  8.       s, err := serial.OpenPort(c)
  9.       if err != nil {
  10.               log.Fatal(err)
  11.       }

  12.       n, err := s.Write([]byte("test"))
  13.       if err != nil {
  14.               log.Fatal(err)
  15.       }

  16.       buf := make([]byte, 128)
  17.       n, err = s.Read(buf)
  18.       if err != nil {
  19.               log.Fatal(err)
  20.       }
  21.       log.Print("%q", buf[:n])
  22. }
交叉编译

  1. $ env GOOS=linux GOARCH=arm GOARM=7 go build


将生成的执行文件传送至开发板上执行,在计算机的串口上可收到"test"字符串,在开发板的控制台显示接收到的数据。


程序分解

  1. c := &serial.Config{Name: "/dev/ttymxc1", Baud: 115200}



这里返回&Config类型的变量,用于配置串口,可配置文件名、波特率、超时时间、数据位、校验方式、停止位,Config定义如下

  1. type Config struct {
  2.     Name        string
  3.     Baud        int
  4.     Readtimeout time.Duration // Total timeout

  5.     // Size is the number of data bits. If 0, DefaultSize is used.
  6.     Size byte

  7.     // Parity is the bit to use and defaults to ParityNone (no parity bit).
  8.     Parity Parity

  9.     // Number of stop bits to use. Default is 1 (1 stop bit).
  10.     StopBits StopBits
  11. }

  1. s, err := serial.OpenPort(c)
打开串口成功后即可像普通文件一样读写

  1. n, err := s.Write([]byte("test"))
向串口发送"test"字符串
  1. n, err = s.Read(buf)
读取串口接收到的数据,n为接收到的字节数


回帖(1)

Bootstrap

2017-7-28 11:26:51
楼主是Golang爱好者呀
举报

更多回帖

发帖
×
20
完善资料,
赚取积分