• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

Go入门笔记45-在WSL2上测试串口编程

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

WSL2下默认不支持串口,可以用一个socat工具创建串口测试环境
一、创建串口对

socat -d -d pty,b115200 pty,b115200


发送数据

echo "test string" > /dev/pts/1

显示数据

cat < /dev/pts/2

二、建立串口对与网络之间的数据流

sudo socat -d -d /dev/pts/2,raw,nonblock,ignoreeof,cr,echo=0 tcp-listen:5555,reuseaddr

开启一个tcpclient工具连接5555端口,再次执行echo "test string" > /dev/pts/1
可以在tcpclient工具上看到test string数据

三、删除所有串口对
/dev/pts# ls
列出socat所有串口
fuser -k /dev/pts/xx
此处xx替换要删除的串口名称

1> tty(终端设备的统称):
tty一词源于Teletypes,或者teletypewriters,原来指的是电传打字机,是通过串行线用打印机键盘通过阅读和发送信息的东西,后来这东西被键盘与显示器取代,所以现在叫终端比较合适。
终端是一种字符型设备,它有多种类型,通常使用tty来简称各种类型的终端设备。

2> pty(虚拟终端):
但是如果我们远程telnet到主机或使用xterm时不也需要一个终端交互么?是的,这就是虚拟终端pty(pseudo-tty)

3> pts/ptmx(pts/ptmx结合使用,进而实现pty):
pts(pseudo-terminal slave)是pty的实现方法,与ptmx(pseudo-terminal master)配合使用实现pty。
四、Go代码

package datahandle

import (
	"fmt"
	"log"
	"time"

	serial "github.com/tarm/goserial"
)

func TestCom() {

	//设置串口编号
	c := &serial.Config{Name: "/dev/pts/1", Baud: 115200}

	//打开串口
	s, err := serial.OpenPort(c)
	if err != nil {
		log.Fatal(err)
	}

	// 写入字符串“012345”
	n, err := s.Write([]byte("012345"))
	if err != nil {
		log.Fatal(err)
	}

	//延时100
	time.Sleep(100)

	buf := make([]byte, 128)
	n, err = s.Read(buf)
	if err != nil {
		log.Fatal(err)
	}

	fmt.Printf("Read %d Bytes\r\n", n)
	for i := 0; i < n; i++ {
		fmt.Printf("buf[%d]=%c\r\n", i, buf[i])
	}
}

五、启动测试,TcpClient收到数据


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
GO语言练习:网络编程TCP示例发布时间:2022-07-10
下一篇:
Go语言的指针&amp;*发布时间:2022-07-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap