zoukankan      html  css  js  c++  java
  • Go入门笔记45在WSL2上测试串口编程

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

    socat -d -d pty,b115200 pty,b115200
    

    image 发送数据

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

    image

    显示数据

    cat < /dev/pts/2
    

    image

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

    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数据 image

    三、删除所有串口对 /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收到数据 image

    本博客是个人工作中记录,遇到问题可以互相探讨,没有遇到的问题可能没有时间去特意研究,勿扰。
    另外建了几个QQ技术群:
    2、全栈技术群:616945527,加群口令abc123
    2、硬件嵌入式开发: 75764412
    3、Go语言交流群:9924600

    闲置域名www.nsxz.com出售(等宽等高字符四字域名)。
  • 相关阅读:
    Java开源框架推荐(全)
    Java性能提示(全)
    国外程序员整理的 C++ 资源大全 (zt)
    技术杂记之:在阿里云centos7上部署JDK MYSQL TOMCAT
    技术杂记之:vi使用入门
    Java全栈程序员之09:IDEA+GitHub
    SpringCloud无废话入门05:Spring Cloud Gateway路由、filter、熔断
    SpringCloud无废话入门04:Hystrix熔断器及监控
    SpringCloud无废话入门03:Feign声明式服务调用
    SpringCloud无废话入门02:Ribbon负载均衡
  • 原文地址:https://www.cnblogs.com/zhaogaojian/p/15551542.html
Copyright © 2011-2022 走看看