当前位置: 首页 > news >正文

Rock Pi 5B Linux虚拟串口设置方法

方法 1:使用 socat 工具

socat 是一个多功能网络工具,可创建虚拟串口对。

步骤:
  1. 安装 socat

    bash

    复制

    sudo apt update
    sudo apt install socat
  2. 创建虚拟串口对

    bash

    复制

    socat -d -d pty,raw,echo=0 pty,raw,echo=0

    输出示例:

    复制

    N PTY is /dev/pts/2
    N PTY is /dev/pts/3

    此时生成了一对虚拟串口 /dev/pts/2/dev/pts/3

  3. 测试通信

    • 终端 1:监听一个端口

      bash

      复制

      cat /dev/pts/2
    • 终端 2:向另一个端口发送数据

      bash

      复制

      echo "Hello Rock Pi" > /dev/pts/3

    终端 1 应显示接收到的消息。


方法 2:使用 tty0tty 内核模块

tty0tty 是一个内核模块,提供虚拟串口对(如 /dev/tnt0/dev/tnt1)。

步骤:
  1. 安装依赖

    bash

    复制

    sudo apt install build-essential dkms
  2. 下载并编译 tty0tty

    bash

    复制

    git clone https://github.com/lcgamboa/tty0tty.git
    cd tty0tty/module
    make
    sudo cp tty0tty.ko /lib/modules/$(uname -r)/kernel/drivers/misc/
    sudo depmod
  3. 加载模块

    bash

    复制

    sudo modprobe tty0tty
  4. 验证设备文件

    bash

    复制

    ls /dev/tnt*

    应看到 /dev/tnt0/dev/tnt7

  5. 设置权限(可选):

    bash

    复制

    sudo chmod 666 /dev/tnt0

方法 3:使用 Python 的 pyserial

通过伪终端(PTY)模拟虚拟串口。

步骤:
  1. 安装 pyserial

    bash

    复制

    pip install pyserial
  2. 创建 Python 脚本

    python

    复制

    import serial
    import os
    ​
    # 创建虚拟串口对
    master, slave = os.openpty()
    serial_name = os.ttyname(slave)
    ​
    print(f"Virtual Serial Port: {serial_name}")
    ​
    # 示例:写入数据
    ser = serial.Serial(serial_name)
    ser.write(b"Hello from Python")
    ser.close()

常见问题

  1. 权限不足

    • 将用户加入 dialout 组:

      bash

      复制

      sudo usermod -aG dialout $USER
    • 重新登录生效。

  2. 虚拟串口无响应

    • 检查是否已正确创建端口对。

    • 确保读写程序使用相同的波特率(虚拟端口通常忽略波特率,但某些软件可能要求设置)。


应用场景

  • 开发调试:模拟硬件串口进行软件测试。

  • 多设备通信:在无物理连接时测试串口协议。

  • 容器/虚拟机:在虚拟化环境中使用串口通信。

根据需求选择合适的方法,推荐使用 socat 快速测试,或 tty0tty 获得持久化设备。

http://www.dtcms.com/a/107151.html

相关文章:

  • 无人机无线图像回传技术解析!
  • 如果数据包的最后一段特别短,如何处理?
  • 【GPT入门】第31课 ollama运行私有化部署的模型与调试
  • Linux:线程的同步与互斥
  • 大模型提示工程中,提示、补全、指令、上下文和样本这几个概念的区别是什么?
  • C/C++归纳2
  • with queue_lock: 是什么意思
  • 跨境贸易之常见的贸易术语(贸易模式)
  • 代码随想录第三十三天|动态规划part04--494.目标和、1049.最后一块石头的重量Ⅱ、474.一和零
  • 二叉树 —— 数据结构基础刷题路程
  • Linux驱动入门——设备树详解
  • 海外SD-WAN专线网络部署成本分析
  • Adv. Sci.:在精神分裂症中绘制大脑协同功能障碍图谱:理解个体差异和潜在的分子机制
  • 鸿蒙项目笔记(1)
  • 26考研资料分享考研资料合集 百度网盘(仅供参考学习)
  • [250330] OpenAI 发布 GPT-4o 图像生成:实用主义的图像生成时代到来 | Maple Mono v7.0 发布
  • AI 智能体(AI Agent):概念、历史、现状与展望
  • OpenManus安装部署和基础使用说明
  • 【boost搜索引擎】下
  • 鸿蒙开发踩坑记录 - 2024S1
  • PROMPT 速查
  • 对象和面向对象三大特征:封装
  • RAG 在 AI 助手、法律分析、医学 NLP 领域的实战案例
  • 并行治理机制对比:Polkadot、Ethereum 与 NEAR
  • DDR简介
  • 【工程开发】Qwen2.5-VL-32B-Instruct 微调(三)
  • ARM边缘计算时代:BLIoTLink如何打通设备互联任督二脉
  • 超级预告新豪轩门窗吉尼斯世界纪录挑战暨百媒共探国家级绿色工厂
  • Qt常用控件第一部分
  • 计组(蒋)期末不挂科纲要