【MYS-6ULX-IOT试用体验】用serial包实现串口通信 - 问答 - 电子技术论坛 - 最好最受欢迎电子论坛!

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

刘 刚 ( 楼主 ) 2017-7-24 14:51:02  只看该作者 倒序浏览
这里介绍使用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爱好者呀
您需要登录后才可以回帖 登录 | 注册

本版积分规则


关闭

站长推荐上一条 /6 下一条

小黑屋|手机版|Archiver|电子发烧友 ( 湘ICP备2023018690号 )

GMT+8, 2024-12-18 15:08 , Processed in 0.659535 second(s), Total 69, Slave 50 queries .

Powered by 电子发烧友网

© 2015 bbs.elecfans.com

微信扫描
快速回复 返回顶部 返回列表