Linux创造虚拟串口

发布时间:2026/7/30 5:40:16

Linux创造虚拟串口
方案一socat推荐最简单、无需编译内核模块、临时即用# Debian/Ubuntu/银河麒麟 sudo apt update sudo apt install socat -ysudo apt install socat -y 是什么意思sudo以 **管理员root 超级权限** 执行后面的命令安装软件需要系统最高权限普通用户直接运行会报错权限不足。aptDebian/Ubuntu/ 银河麒麟、Deepin这类基于 Debian 体系 Linux 系统的软件包管理器负责下载、安装、卸载系统软件。installapt 的子命令执行安装操作。socat要安装的软件包名称。socat 全称Socket CAT号称超级万能端口转发工具功能极强端口映射、TCP/UDP 转发、套接字代理、内网穿透、双向数据流转发、绑定端口监听等运维、内网穿透、网络调试常用。-y自动确认所有安装询问。 不加-y安装过程中会弹出[Y/n]让你手动输入 Y 确认加了直接全自动一路安装完成。创建一对互通虚拟串口固定设备名执行这条命令生成/dev/ttyV0↔/dev/ttyV1双向连通虚拟串口sudo socat -d -d pty,raw,echo0,link/dev/ttyV0 pty,raw,echo0,link/dev/ttyV1整体作用创建一对互相直通的虚拟串口伪终端 PTY往/dev/ttyV0写数据立刻能从/dev/ttyV1读到往/dev/ttyV1写数据立刻能从/dev/ttyV0读到常用于串口程序调试、嵌入式代码模拟串口、Linux 下模拟两个设备串口互通、Qt 串口开发测试、Modbus 调试等场景。分段拆解参数1. sudosocat创建软链接到/dev/目录属于系统设备目录操作普通用户无权限必须提权。2. socat超级万能的双向数据转发工具全称Socket CAT可以在任意两类数据流之间搭桥串口、TCP、UDP、文件、管道、伪终端、IPv6、SSL 等。3.-d -d日志参数两个-d代表调试级别单个-d基础警告输出两个-d打开详细调试日志输出端口打开、数据收发、错误、EOF等过程 想更详细可以-ddd日常测试-d -d足够。4. 第一个地址pty,raw,echo0,link/dev/ttyV0关键字pty指定使用伪终端Pseudo TerminalLinux 内核虚拟串口硬件不存在纯软件模拟串口设备。参数逐个解释raw原始模式关闭终端行规则处理不做回车换行转换\r↔\n不自动替换不处理退格、CtrlC、CtrlD、信号中断二进制数据透传串口二进制通信必备Modbus、协议帧、十六进制数据包必须加 rawecho0关闭本地回显echo1默认自己发什么终端立刻回显什么类似敲命令屏幕重复打出字符echo0关闭回显完全模拟真实物理串口行为发出去的数据只对端接收本地不回显link/dev/ttyV0给内核自动分配的随机 PTY比如/dev/pts/3创建固定符号链接到/dev/ttyV0。重点内核真实设备是/dev/pts/XttyV0只是软链接方便程序固定路径打开串口。5. 第二个地址pty,raw,echo0,link/dev/ttyV1和上面完全一致创建另一端虚拟串口链接固定为/dev/ttyV1。底层逻辑socat 内部建立双向管道应用程序A → /dev/ttyV0 → socat 内部缓冲区 → /dev/ttyV1 → 应用程序B 应用程序B → /dev/ttyV1 → socat 内部缓冲区 → /dev/ttyV0 → 应用程序A全双工双向互通。权限放行必须否则程序打不开新开终端执行sudo chmod 666 /dev/ttyV0 /dev/ttyV16 110 可读可写不可执行通信测试验证终端 1接收cat /dev/ttyV0终端 2发送echo hello serial /dev/ttyV1终端 1 会立刻收到字符串代表双向通路正常。cat /dev/ttyV0 是什么意思cat Linux 读取文件 / 设备内容并打印到屏幕的命令 /dev/ttyV0 你用 socat 创建的虚拟串口 0 设备文件 整句读取虚拟串口 ttyV0 上收到的所有数据实时打印在终端上为什么执行会提示「设备或资源忙」Linux 串口设备是独占打开 Qt 程序已经调用 QSerialPort 打开了 /dev/ttyV0 占用句柄 系统不允许第二个程序cat、cutecom、minicom再次打开同一个端口直接报错 设备或资源忙。使用cat 查看信息如果发送的是ASCII码接收显示正常。如果发送的是16进制数接收显示是乱码。cat命令只会把读到的字节当成 UTF-8/ASCII 可打印字符渲染0x200x7F 可见 ASCII → 正常文字显示0x00~0x1F、0x80~0xFF 控制字节 / 高位十六进制 → 终端无法解析直接输出方块、问号、特殊符号也就是你看到的乱码乱码只是终端界面显示问题串口底层收到的二进制字节 100% 是正确的没有丢包、没有变值。正确查看十六进制原始数据的命令替代 cat方式 1hexdump 最直观推荐hexdump -C /dev/ttyV1好像没有效果原因:hexdump 打开方式本身有缺陷阻塞读取不灵敏hexdump /dev/ttyV1一次性读取不会持续实时监听。替换成持续实时抓流命令稳定可用stdbuf -i0 -o0 cat /dev/ttyV1 | hexdump -C这条会一直阻塞等待数据流Qt 一发数据立刻打印十六进制。现在可以显示了可以查看信息。但感觉信息有点卡顿而且一次只显示一行不全不完整。原因:hexdump默认按块刷新、按行格式化输出小包数据会攒到缓冲区才打印造成卡顿尝试方案持续实时抓包写入文件 实时 tail 看兼顾存日志 实时查看终端 1后台持续保存所有串口原始数据cat /dev/ttyV1 serial_recv.bin 终端 2实时十六进制滚动查看tail -f serial_recv.bin | stdbuf -oL xxd -Cxxd 是什么通俗版xxd是 Linux 自带的二进制文件 / 二进制流十六进制查看工具预装在绝大多数系统Ubuntu、银河麒麟、Debian 都自带。作用一句话把一堆看不见的原始二进制字节翻译成人类能看懂的 16 进制格式打印出来替代你之前卡顿、攒包输出的hexdump。

相关新闻

【系列:CCG Crypto CrackMe 逆向全解析 · 第 1 篇】

【系列:CCG Crypto CrackMe 逆向全解析 · 第 1 篇】

2026/7/30 5:30:16

导读: 2001 年,CCG(China Cracking Group)的 Blowfish 放出了一个 CrackMe,声称"本题多解"。这个系列将完整记录破解它的全过程——从最基础的字节解析,到自定义壳的算法复原,到最后跑…

STM32 HAL库驱动IIC段码屏实战:HT1621配置与软件模拟IIC详解

STM32 HAL库驱动IIC段码屏实战:HT1621配置与软件模拟IIC详解

2026/7/30 5:30:16

1. 项目概述与核心价值 最近在做一个需要显示多路参数的小型设备,选来选去,最后用上了一块基于HT1621驱动芯片的LCD段码屏。这种屏成本低、功耗小,在温控器、电表、小家电上很常见。但实际驱动时发现,网上资料要么是51单片机的&am…

本地代码大模型评测实战(四):8个坑和1个崩溃

本地代码大模型评测实战(四):8个坑和1个崩溃

2026/7/30 5:30:16

本地跑模型的8个坑(和1个崩溃恢复的故事) 系列目录 篇1: 模型选型 篇2: 评测框架 篇3: 数据挖掘的13个发现 篇4: 8个坑和1个崩溃 ← 当前 篇5: 公平对比的5个陷阱 发布后将链接替换为实际 URL 系列:本地代码大模型评测实战 第4篇 如果你正打…

HDF5文件与h5py库:高效管理大规模结构化数据的Python实践

HDF5文件与h5py库:高效管理大规模结构化数据的Python实践

2026/7/30 6:30:18

1. 从一次数据加载的“卡顿”说起:为什么我们需要H5文件?最近在做一个数据分析项目,处理一批天文观测数据。数据量不算特别大,单个CSV文件也就几个G,但当我用pandas.read_csv加载时,内存占用瞬间飙升&#…

前言 - 在“过气”与“刚需”之间

前言 - 在“过气”与“刚需”之间

2026/7/30 6:30:18

如果你或这篇教程是为了寻找一门炫酷的、能让你在程序员聚会上昂首挺胸的现代编程语言,那么我建议你立刻合上它,转身去学习其他主流语言。VBA(Visual Basic for Applications)太老了。老到它的第一个版本诞生于1993年,…

Days 9 函数初学

Days 9 函数初学

2026/7/30 6:30:18

一、为什么要学函数?刚学 C 语言的时候,所有代码全堆在main里,写重复功能要复制粘贴一大段,代码又乱又难改。函数就是用来解决这个问题的! 函数两大好处:代码复用:同一个功能只写一次&#xff0…

万能代码模板:30行实现核心功能的高效开发

万能代码模板:30行实现核心功能的高效开发

2026/7/30 6:30:18

1. 项目概述:为什么我们需要万能代码模板?在编程领域,我们经常会遇到一些重复性的功能需求。比如数据验证、文件操作、网络请求等基础功能,几乎每个项目都会用到。每次从零开始写这些代码不仅效率低下,还容易引入错误。…

Unity VR投掷游戏开发实战:SteamVR集成与桌面模拟模式详解

Unity VR投掷游戏开发实战:SteamVR集成与桌面模拟模式详解

2026/7/30 6:30:18

1. 项目概述与核心价值最近在整理过往项目资料时,翻出了一个基于Unity 2021 LTS开发的VR投掷小游戏完整源码包。这个项目麻雀虽小,五脏俱全,它不仅完整实现了核心的投掷玩法,更关键的是,它从一开始就设计为支持SteamVR…

Windows右键菜单清理神器:5分钟打造清爽高效的操作体验

Windows右键菜单清理神器:5分钟打造清爽高效的操作体验

2026/7/30 6:20:18

Windows右键菜单清理神器:5分钟打造清爽高效的操作体验 【免费下载链接】ContextMenuManager 🖱️ 纯粹的Windows右键菜单管理程序 项目地址: https://gitcode.com/gh_mirrors/co/ContextMenuManager 你是否曾对着杂乱无章的右键菜单感到头疼&…

[具身智能-649]:个人电脑搭建 RTSP 服务完整方案(Windows / Ubuntu 双平台,适配 RDK X5 rtsp2display 调试)

[具身智能-649]:个人电脑搭建 RTSP 服务完整方案(Windows / Ubuntu 双平台,适配 RDK X5 rtsp2display 调试)

2026/7/28 13:30:18

目标:电脑作为RTSP 服务端,循环推送 H264/H265 视频流; RDK X5 通过 rtsp2display 拉流预览,完全不需要在开发板编译 live555。 提供两套成熟方案: ✅ 方案 A:FFmpeg(最简单,优先推…

PDF合并与动态水印的工程化方案:2026国内免费工具实测对比

PDF合并与动态水印的工程化方案:2026国内免费工具实测对比

2026/7/30 1:17:46

一、背景与测试方案 在实际项目交付中,PDF文件合并与版权保护水印的叠加是一个高频但容易被低估的技术需求。典型的处理链路涉及:多源PDF的文件流合并、页面级水印渲染(含透明度混合与图层叠加)、输出文件体积控制。看似简单的操作…

PDF拆分压完图糊了?2026国内免费实测,档案员都在用的组合方案

PDF拆分压完图糊了?2026国内免费实测,档案员都在用的组合方案

2026/7/30 2:52:37

说实话,提到PDF拆分再压缩,我真是被折腾得够呛。 上个月公司年度合同归档,一份300多页的PDF总合同,需要按年份拆分成三个独立文件,再分别压缩到10MB以内方便邮件发送各部门确认。我心想这还不简单?先找个海…

粉笔直播课适合周末集中备考考生突破吗

粉笔直播课适合周末集中备考考生突破吗

2026/7/30 0:09:54

本文面向在职备考、工作日难以抽出整块时间、只能依靠周末集中复习的公考考生,围绕"该平台直播课是否适配周末集中备考节奏、能否支撑瓶颈突破"这一核心问题做客观拆解。文中数据来源于公开财报、官网公示价格、第三方投诉平台公开投诉及用户社区讨论&…

ThreadLocal(存取变量)实战获取当前登录的员工

ThreadLocal(存取变量)实战获取当前登录的员工

2026/7/30 0:09:54

注意AOP所应用的注解以及service方法上自定义的Log注解

INAV飞控配置终极指南:从零到稳定飞行的完整解决方案

INAV飞控配置终极指南:从零到稳定飞行的完整解决方案

2026/7/30 0:09:54

INAV飞控配置终极指南:从零到稳定飞行的完整解决方案 【免费下载链接】inav INAV: Navigation-enabled flight control software 项目地址: https://gitcode.com/gh_mirrors/in/inav INAV飞控配置是每个无人机爱好者必须掌握的核心技能,但很多新手…