
我办公桌上的串口调试三件套这么多年了一直没变过MobaXterm、Bus Hound、SScom。做嵌入式开发和工控调试的朋友应该深有体会串口通信这事儿看起来简单——打开串口、收发数据就完事可真到现场排障一个工具根本不够用。MobaXterm管终端交互SScom管主动收发Bus Hound管总线抓包三者的分工完全不同。这篇文章我把自己这几年用这三款常用串口通信工具的经验、配置细节和踩坑记录都梳理一遍也顺带聊聊它们在 STM32CubeMX 的 SDIO 调试、IMX6ULL 中文乱码排查、Unity 和 LabVIEW 串口联调这些具体场景里是怎么配合的。刚入门的照着操作就行老手也可以对照看看自己的习惯有没有可以优化的地方。先说个很多新手容易困惑的问题网上搜串口调试助手能搜出来几十个软件功能截图看起来都差不多为什么老工程师电脑上总是固定那几款因为串口调试从来不是一个单层动作它至少分三层应用层是我要给设备发什么数据、收什么数据终端层是我要登录开发板的系统敲命令总线层是在 USB 转串口这条物理链路上数据到底有没有真的传过去。每一层需要的工具类型完全不同。这篇文章的结构就按这个逻辑展开先用 MobaXterm 搞定交互式终端再用 SScom 做协议级数据收发最后用 Bus Hound 处理那些看起来正常但设备就是没反应的疑难杂症。1. 为什么一个工具没法包打天下先搞清楚你卡在哪一层1.1 串口调试的三层问题模型我见过不少同事桌面上只装一个串口助手遇到问题就疯狂重发数据发一百遍设备还是没反应最后只能干瞪眼。其实串口调试遇到问题首先要做的是判断问题出在哪一层。第一层是应用层也就是你的软件到底有没有正确地把数据写到串口设备上。这一层最常见的问题是串口号选错、参数不对、数据格式错误或者发送的数据本身就不是设备期望的协议。第二层是终端层主要针对 Linux 开发板、路由器、交换机这类有操作系统的设备。你要通过串口登录它的 shell敲命令、看日志、改配置。终端层的问题大多是字符编码、终端类型、回显异常这些东西。第三层是总线层现在电脑基本没有原生串口了全是 USB 转串口驱动、芯片、线材、电平转换任何一个环节出问题数据都可能卡在半路。三个层级对应三种工具形态MobaXterm 是终端模拟器主要解决第二层SScom 这类串口调试助手是纯数据收发工具主要解决第一层Bus Hound 是总线抓包器专门回答第三层的灵魂拷问——数据到底有没有真的发出去。1.2 三款工具的分工定位这里先给一个速览表后面每个工具单独展开工具主战场典型场景不适合做什么MobaXterm交互式终端登录 Linux 开发板 shell、连交换机 console、SSH 远程管理、SFTP 拉文件、X11 图形转发定时发送数据、自定义协议验证、Hex 字节级调试SScom数据级收发AT 指令调试、Modbus RTU 报文测试、STM32 串口实验、主动模拟上位机数据登录系统交互、需要 shell 输出的场景Bus HoundUSB 总线抓包检测 USB 转串口数据是否送达、分析设备枚举、排查驱动层问题直接收发用户数据、方便地做协议调试为什么没有一个工具能同时干好这三件事因为交互式终端需要的是把字符流变成屏幕上的内容并且响应用户输入它关注的是人与系统的对话数据助手关注的是在指定时刻把指定字节发给总线它强调的是精确控制抓包器关注的是忠实地记录总线上每一比特的流动它不能干扰数据本身。这就像你不能要求一个即时通讯软件同时做到编辑器、路由器和示波器该做的事术业有专攻。2. MobaXterm从串口控制台到远程开发环境的主控台2.1 为什么我把 PuTTY 和 SecureCRT 都换成了它早年我用 PuTTY轻量是真轻量但会话管理太弱鸡了。手里几块开发板、好几台服务器要记住每个的串口号、波特率、IP、用户名密码PuTTY 全得手动存配置存多了自己都记不清。SecureCRT 功能强可它是收费软件公司不报销的话个人用起来挺肉疼。后来换成 MobaXterm最大的感受就一个字顺。它把 SSH、串口 Serial、SFTP、RDP、VNC、X server 全部集成在一个多标签窗口里。我可以在左边标签页连着开发板串口右边标签页登着服务器底下内置的 SFTP 面板直接拖文件传输完全不用再开一个 FileZilla。给客户远程支持的时候它还能一键启动 X11 转发让远程 Linux 上的 GUI 程序直接弹到本地窗口里。这些功能对一个嵌入式开发者的日常来说每一项都在省时间。2.2 串口会话配置和最容易踩的流控坑先说创建串口会话的正确姿势打开 MobaXterm点顶部 Session选 Serial然后设置串口参数。串口一栏选择开发板对应的 COM 号波特率按设备说明填常见的是 115200 或 9600数据位 8停止位 1校验位 None。这套组合在行业里简写为 8N1是绝大多数设备的默认值。关键来了很多新手一上来就把Flow control流控那里勾上了 RTS/CTS 或者 XON/XOFF结果串口要么完全没输出要么输出几行就卡住还以为是线坏了。这里解释一下流控是用来防止数据过快导致缓冲区溢出的机制RTS/CTS 是硬件流控需要设备端和 PC 端同时支持并接线才有效普通三线制的串口线根本没有 RTS/CTS 这两根线一勾上数据就堵死了。XON/XOFF 是软件流控靠收发特定字符来控制如果设备固件没实现这个协议同样会造成数据莫名其妙丢失。所以串口调试的默认原则就是不要勾选流控除非你知道设备手册明确要求使用。2.3 IMX6ULL 屏幕中文乱码为什么在 MobaXterm 里就正常imx6ull开发板在屏幕终端中文显示乱码但是在mobaxterm可以显示中文这个搜索词我在后台看到过很多次。这其实是两个不同的显示链路在打架。开发板的 LCD 屏幕终端走的是内核 framebuffer console它自带的中文字库非常有限很多嵌入式 Linux 系统甚至根本没有做中文点阵字库的支持所以你用中文或者 UTF-8 编码的内容直接打印到 LCD 终端上出来的就是乱码或者方块。而 MobaXterm 这种 PC 端终端模拟器字体和字符集解码都在电脑这边处理只要它用 UTF-8 字符集去解码串口收到的字节流中文自然能正常显示。如果你在 MobaXterm 里也乱码那就检查一下字符集设置。方法是在已打开的串口会话里右键选择 Edit Session切到 Terminal Settings 页面点 Change Charset选 UTF-8。如果还不行在开发板 shell 里执行 export LANGzh_CN.UTF-8 再试。如果你的嵌入式系统是精简版 busybox可能不带 locale 支持那就只能用 UTF-8 编码的日志方式保证不乱码。2.4 方向键显示 DCAB、时间戳、Follow terminal 这几个隐藏细节MobaXterm 还有几个功能单独拿出来都值得说一说。第一个是按方向键变成 DCAB的问题。现象是你敲方向键终端不移动光标而是冒出 DCAB 或者 ^[[A 这样的字符串。这通常不是 MobaXterm 的 bug而是终端类型没配对。Linux 里方向键是通过发送 ESC [ A、ESC [ B 这样的转义序列实现的如果你的 SHELL 认为终端是 dumb 类型或者根本没有设 TERM它就不去解析这些序列而是把字母原样显示出来。在串口登录到开发板后先执行一下 echo $TERM如果显示 dumb 或空就执行 export TERMxterm-256color。连接交换机路由器这类设备时如果也出现按键错乱试试 export TERMvt100。第二个是时间戳功能。在串口会话的 Settings 里可以勾选 Display timestampsMobaXterm 会给每一行输出加上精确到秒或毫秒的时间。调试串口设备的时候时间是极重要的线索。我之前排查过一个问题设备每次上报数据都慢 3 秒用时间戳一对比才发现是主控芯片的串口波特率漂移导致频繁重传肉眼看根本发现不了。第三个是 Follow terminal。这个选项打开后终端输出会自动跟随滚动始终显示最新一行日志。它适合挂在后台看持续输出的日志流但有个坑如果你在终端里用 vim、htop 这种全屏交互程序自动跟随会让光标乱跳。我建议平时关掉需要长时间盯日志的时候再开。另外如果你拿 MobaXterm 连接交换机做初始化配置一般用 console 线插交换机 Console 口多数设备默认波特率是 9600数据位 8、停止位 1、无校验、无流控。连接上之后先回车能看到设备 CLI 提示符就说明参数对了。3. SScom串口调试助手主动下发命令、验证协议才是它真正擅长的事3.1 交互终端和串口助手的本质区别很多人不理解MobaXterm 能收发串口数据为什么还要单独装一个 SScom因为它们的定位完全不同。MobaXterm 的串口功能本质是个终端模拟器它适合人坐在终端前敲命令操作系统的交互场景。但当你做协议调试时要的是在指定的时间点向串口发送一组精确的字节甚至要按一定周期循环发还得把收到的数据按 Hex 方式显示、自动计算校验码。举个例子你用 MobaXterm 给一个 Modbus 从站设备发报文你得手动数着字节一个个敲进去还要自己算 CRC手工输入错一位就前功尽弃。而 SScom 这类串口助手你只要在发送区把报文填好勾上自动加校验点一下发送软件就帮你把帧头和校验位组装好了。这就是主动性工具和被动终端工具的本质区别。3.2 SScom 的收发细节十六进制模式、加核校验、定时发送SScom 的老用户都知道它最常用的几个功能是十六进制显示、十六进制发送、定时发送、加校验位。十六进制显示这个功能很重要。很多传感器模块、工业仪表上报的数据都是二进制帧里面可能有不可见字符用 ASCII 显示就是一堆乱码切到 Hex 显示才能看清每个字节的值。SScom 接收区可以直接切换 Hex 和 ASCII排查协议问题时我几乎都保持在 Hex 状态。加核校验也就是校验和/CRC 校验是工业串口通信里的重头戏。串口本质是异步字节流一个比特错误就可能让整个数据帧报废所以绝大多数设备协议都会在帧尾加一个或多个校验字节。SScom 的发送区里提供了累加和校验、异或校验、CRC16 等多种选项勾选后发送时自动在数据后面追加校验字节。比如 Modbus RTU 协议要求 CRC16你勾上对应的 CRC 校验软件会自动算好低位在前、高位在后的两个字节这比自己拿计算器算强太多了。定时发送也是协议调试的利器。设备要求你周期性上报心跳或者查询指令时你可以在 SScom 里设置发送间隔比如每 500ms 发一次查询帧观察设备返回。这种动作如果用 MobaXterm 手动做人得一直盯着屏幕敲键盘完全不现实。3.3 用 SScom 做 STM32 串口通信实验的标准流程单片机初学者最常见的场景是 STM32 串口实验。流程通常是这样的先用 STM32CubeMX 配置一个 UART 外设开启中断重定向 printf 到串口让单片机每隔一秒往串口发一条数据。然后在 PC 端打开 SScom选对 COM 号波特率设置成和 CubeMX 里一致比如 115200-8-N-1点打开串口就能在接收区看到单片机的打印信息。这个流程里新手最容易犯的错是波特率不匹配。CubeMX 里配置的是 9600SScom 里选了 115200结果接收区就是一堆乱码。还有芯片内部的时钟配置不对会导致实际波特率和理论值偏差很大同样表现为乱码。排查思路就是先确认 CubeMX 工程里 UART 初始化参数再确认串口线的芯片型号和驱动是否正常最后用示波器或逻辑分析仪量一下 TX 引脚的脉冲宽度看实际波特率。这已经是工具之外的功底了。如果碰到单片机要向上位机发一串 Hex 指令并且要求上位机应答那 SScom 的自动应答功能就派上用场了。比如设备给 PC 发 0x01SScom 收到后自动回 0x02软件就能模拟完整的握手协议比用终端手工回快得多。3.4 SScom 下载渠道、替代工具和驱动问题SScom 是一款非常老牌的工具网上搜sscom串口调试助手下载能搜出一堆捆绑安装包的垃圾站。我的建议是尽量去正规的下载站或者去 GitHub 找开源项目注意看下载文件的大小和是否有额外 install 程序。同类工具里 XCOM 也不错是正点原子那边流传出来的界面更现代化一点野火串口助手、UartAssist 也都有一定用户群。我个人保留 SScom纯粹是因为它的功能布局我闭着眼都能操作而且几十 KB 的体积几乎不占资源。使用 SScom 时最常遇到的问题就是打不开串口。提示Open COMx failed或者串口被占用十有八九是两种情况一是 USB 转串口驱动没装好设备管理器里根本看不到 COM 口号或者显示黄色感叹号。CH340 和 CP2102 是市面上最常见的两种 USB 转串口芯片驱动不通用先确认你的板子上是哪一款再装对应的驱动。二是串口被其它软件占用了MobaXterm、SScom、IDE 的串口监视器同时打开同一个 COM 口肯定互相冲突。调试时只保留一个工具占着串口用完记得关闭。4. Bus Hound把 USB 总线上的真相抓出来4.1 为什么串口调试会用到总线抓包器你要说 Bus Hound 是串口工具其实不太严谨它本身是 Perisoft 公司开发的总线协议分析软件支持的接口有 USB、ATA、SCSI 等。但在现代串口调试里Bus Hound 几乎是解决疑难杂症的必备工具原因是大家电脑上已经没有真正的 COM 口了。现在开发板、USB 转串口线、单片机调试器本质上都是先通过 USB 线连到电脑再由板子上的芯片最常见的是 CH340、CP2102、FT232把 USB 协议转换成 UART 信号。你在电脑上打开 SScom 往 COM3 写数据数据并不是直接出现在串口线上而是先经过操作系统驱动、USB 控制器、USB 线缆最后才由转接芯片还原成串口电平。这一路任何一环出问题应用层软件都感知不到。Bus Hound 的价值就在于它能直接监视 USB 总线上的数据包。你可以看到一个发送成功的串口写操作底层到底是真把数据封装成 USB Bulk Out 包发出去灵了还是驱动层面直接报错、什么都没发你也可以看到设备返回的数据是否真的从 USB In 端点传回了电脑。这是应用层工具永远给不了你的视角。4.2 Bus Hound 抓串口数据的完整步骤第一次用 Bus Hound 的人容易被它密密麻麻的英文界面吓住其实流程很简单以管理员身份运行 Bus Hound。这个很重要普通用户权限下它往往拿不到设备访问权抓包结果会是空的。插好你的 USB 转串口设备在 Devices 标签页里找到它。设备名一般会显示为 USB Serial Converter、USB-SERIAL CH340 之类实在认不准就拔插一次 USB 线看列表里哪个设备消失又出现。选中设备后点 Install/Rescan把它加入监控列表。切到 Settings 标签页勾选 Capture Data 和 Capture HexBuffer 的大小根据你要抓的数据量来。我一般设 16M短时间调试够了太大反而拖慢系统。回到 Devices 页面点 Run 开始监听然后去正常操作 SScom 或 MobaXterm 收发数据。操作完点 Stop回来看抓到的数据包。数据窗口里信息很多我最关心的是 Phase 列和 Data 列。Phase 里等于 OUT 表示数据是从电脑发往设备的约等于 IN 表示设备发给电脑URB_FUNCTION_BULK_OR_INTERRUPT_TRANSFER 表示这是传输层数据包。常见的 USB 转串口都是 Bulk Transport 方式所以你会在抓包里看到一个大 Bulk Out 包里面装着你在 SScom 里发送的那串字节。看到这个包就能确认数据确实从应用层走到了总线层。4.3 一次发送成功但设备无响应的排障记录讲一个我印象特别深的案例。客户拿了一块自研板子USB 转串口用的 CH340串口软件的收发窗口都正常点发送按钮软件也提示成功了但设备就是没有任何反应。固件工程师把代码翻来覆去查了好几遍找不到问题最后怀疑是工具的问题让我去现场看看。我先用 SScom 发了一帧数据然后在 Bus Hound 里抓包。结果非常讽刺Bus Hound 显示 Bulk Out 数据包确实发出了但 CH340 芯片返回的下行数据长度是 0也就是说数据包在 USB 层就空转了一圈根本没被送到底层 UART 物理线上。再仔细观察发现设备管理器里这个 CH340 的端口状态有点异常重新插拔 USB 之后 Bus Hound 里的数据包就正常了设备也有反应了。后来分析是 CH340 芯片进入了某种异常状态这种状态应用层完全无感知只有总线抓包才能看到真相。要不是 Bus Hound这个案子估计排查一个星期都未必有结果。4.4 Bus Hound 的过滤技巧和使用边界全量抓包的数据量很大里面还混着其它 USB 设备鼠标键盘U盘的数据包。Bus Hound 里面可以加过滤器我这里提一个常用的方式先用 Controls 里的 Clear 清空历史数据抓包时尽量保持其它 USB 设备静止或者拔掉不相关的 USB 设备然后分析时用 Ctrl F 搜索特定数据内容比如搜你自己的协议帧头 0xAA 0x55能直接定位到相关数据包。另一个技巧是把 Columns 配置改一下加上 Time Offset 和 Delta Time可以看每包的精确时间差。排查设备响应慢这类问题时包与包之间几百毫秒的间隔就是关键线索。需要说明的是Bus Hound 只能从 USB 总线层面看到数据包它看不到 USB 转串口芯片之后的那根 UART 信号线上发生了什么。如果怀疑电平、时序、波特率漂移这类物理层问题还是得用示波器或逻辑分析仪。总线抓包不能替代示波器两者解决的是不同层的问题。5. 三款工具协同实战从 CubeMX 到 IMX6ULL 到 Unity/LabVIEW 联调5.1 STM32CubeMX 的 SDIO 调试串口到底能帮你做什么好多人搜怎样通过串口通信去配置 stm32cubemx sdio提问方式本身就有点歧义。必须澄清一点STM32CubeMX 是图形化配置工具它生成的代码可不是靠串口下载配置的串口也无法直接帮你改 CubeMX 参数。但串口在 SDIO/SD 卡调试里扮演着极其重要的角色——日志输出。我在用 STM32CubeMX 配置 SDIO 接口驱动 SD 卡时一个经典的坑就是 SD 卡初始化失败。CubeMX 配置完 SDIO、开启 DMA、中断生成了工程下载到板子上结果卡片没反应。这时候我的标准操作就是在 CubeMX 里再开启一个 UART做串口重定向把 printf 的输出映射到 USART1 上然后在代码里加调试打印把 SD_Init 的返回值、SD 卡类型、CRC 校验结果、时钟频率这些关键信息都打印出来。然后打开 MobaXterm串口连上去就能实时看到类似这样的日志SD Card Init Start. SD Card Type: SDHC Card Capacity: 32 GB Error Code: SDIO_FLAG_CTIMEOUT看到 CTIMEOUT就知道是卡响应超时基本可以判定是时钟配置太高或者 SDIO 引脚复用不对回到 CubeMX 降低 SDIO 时钟分频或者检查原理图确认引脚正确重新生成代码下载再试。整个排查过程MobaXterm 就是你的眼睛。5.2 IMX6ULL 开发板中文乱码的完整排查链路网上还有一个高频场景是 IMX6ULL 开发板在屏幕终端上中文乱码但 MobaXterm 显示正常。我实际帮人排查过一个类似的板子这里提供一套完整的排查思路而不是直接给一个结论。既然是同样的串口输出MobaXterm 正常、LCD 控制台乱码那问题就出在 LCD 控制台的显示链路上跟串口无关。第一个怀疑点LCD 屏幕的 framebuffer 终端没有中文字库。嵌入式 Linux 的 fbcon 默认使用内核内置的 VGA 字体这种字体只覆盖 ASCII 和少量拉丁字符遇到 UTF-8 编码的中文自然显示成乱码或者方块。验证方法很简单在 LCD 串口控制台执行 echo 中文测试看到乱码再到 MobaXterm 里执行同样的命令正常那就确认是字库问题。解决方案是给内核加装 cp437 之类的点阵字体或者更实际的做法是——LCD 控制台专注看启动日志和内核 panic日常操作全部走 MobaXterm 串口终端。第二个怀疑点字符集不统一。如果在 MobaXterm 里设置的是 GBK而开发板输出的是 UTF-8那在 MobaXterm 里也会乱。所以排查乱码时先统一字符集再看字库顺序不要反。5.3 Unity 和 LabVIEW 串口通信联调先用 SScom 模拟设备Unity 里写串口通信我帮游戏行业的读者解释一下思路。Unity 的 System.IO.Ports.SerialPort 本质上是调用 .NET 的串口 API和 C# 桌面程序没有太大区别。常见坑包括打开串口时异常通常是没有管理员权限或串口被占用主线程直接收数据导致 UI 卡顿应该用独立线程读取数据再通过主线程更新 UI。调试时最快的路径是先用 SScom 模拟你的设备端定时发送一组传感器数据比如角度 0 到 90 度循环Unity 那边写个简单的接收脚本看能不能正确解析。把设备端和上位机端的责任分开问题定位才快。LabVIEW 里串口通信用的是 VISA 函数流程更直白VISA Configure Serial Port 配置 COM 口和波特率VISA Write 下发指令VISA Read 读取响应。我调试 LabVIEW 上位机时有个习惯先用 SScom 和真实设备把协议跑通确认帧格式、应答时间和超时设置再去 LabVIEW 里写程序。因为 LabVIEW 的 VISA Read 如果指定了读取字节数设备返回的实际字节数不一致很容易报 Timeout 错误。在 SScom 里先把设备实际返回的报文看清楚了VISA Read 的字节数就填多少能少踩很多坑。5.4 MobaXterm 拉取代码和连服务器的日常姿势MobaXterm 在日常开发中还有一个用途被很多人低估了内置的 SFTP 面板和终端配合基本就是一个小型 IDE 工作站。你 SSH 登录到开发服务器后右侧的 SFTP 面板直接就能看到远程目录拉取代码、上传日志、修改配置文件都可以用鼠标拖拽完成。我平时调试远程设备的时候习惯在 MobaXterm 里分两个标签页一个标签跑串口连开发板一个标签 SSH 连服务器两边对照着看。代码仓库的 clone 和 pull 操作直接在终端里执行如果要同步到本地用 SFTP 面板拖下来即可。对 Windows 用户来说这个组合体体验非常顺畅。6. 串口调试避坑清单与选型速查6.1 工具选型速查下面这个表是我自己日常选择工具的快速参照也可以说是串口调试的战斗力配置任务推荐工具关键设置提示登录开发板 Linux 系统MobaXterm8N1字符集 UTF-8远程管理服务器和工作站MobaXtermSSH 会话保存密钥连接交换机/路由器 consoleMobaXterm先试 9600/8N1方向键异常设 vt100主动发送自定义协议帧SScomHex 模式 自动校验 定时发送Modbus RTU 调试SScomCRC16低位在前STM32 printf 日志输出MobaXterm波特率必与 CubeMX 一致USB 转串口数据是否发出Bus Hound管理员运行选 USBSER 设备抓 Bulk Out设备毫无响应的疑难问题Bus Hound 配合示波器总线层先排除再看物理层6.2 我踩过的高频坑集中列一份流控误开。RTS/CTS 和 XON/XOFF 不建议默认开启尤其三线制串口。遇到发不出去或者发一半卡住先把这个关了。波特率不匹配。PC 端和 MCU 端、连接的两台 PC 之间任何一个环节参数不一致接收内容都是乱码或空白。先确认设备手册再确认 CubeMX/代码配置最后确认调试工具设置。串口被其它程序占用。IDE 的串口监视器、另一台串口助手、Log 工具都可能在后台偷偷占着串口。排障时打开设备管理器看 COM 口号是否有冲突。驱动问题。CH340、CP2102、FT232 驱动不通用务必根据芯片型号装驱动别装了 CH340 的驱动去连 CP2102 的板子。十六进制发送格式错误。SScom 的 Hex 发送框要求用空格分隔字节有些版本不认连续字符串。发送前数一遍字节数别少发一位。换行符问题。AT 指令要求以回车换行结尾SScom 里记得勾选发送新行MobaXterm 里注意是否发送了 CRLF。很多 AT 模块没反应其实就是没加换行。廉价的 USB 转串口线在高速率下丢包。9600 下好好的115200 下就乱码大概率是线材质量或者芯片假货。换一根线往往比改代码更快。Bus Hound 抓包时性能卡顿。抓包期间尽量别同时开大量 USB 流量抓包窗口清爽点拖慢系统反而影响时序。LCD 终端乱码和串口工具乱码是两码事。排查顺序先统一字符集再检查字库最后考虑硬件电平问题。方向键乱码先查 TERM 环境变量别再怀疑键盘坏了。export TERMxterm-256color 能解决绝大部分终端错乱问题。6.3 如果连这三个工具都没有的应急方案有些嵌入式平台只有 Linux 命令行没有图形界面或者你在一台新装系统的机器上临时调试连下载 MobaXterm 都来不及。这时候用系统自带的工具硬扛也完全可行。Linux 下用 screen /dev/ttyUSB0 115200 打开串口退出按 CtrlA 再按 K更简洁的是用 stty 设置参然后 cat 直接读。Windows 上如果只有 PowerShell可以用 mode COM3 9600,n,8,1 查看参数但交互功能确实拉胯。说这些是想表达工具能提升效率但解决不了所有问题真正值钱的是你脑子里那套排查逻辑——先应用层再终端层最后总线层一层层剥开来看。我个人习惯把 SScom 和 Bus Hound 的快捷方式放在任务栏常驻MobaXterm 开机自启。很多人觉得同时开三个工具太占地方但实际上串口调试的大部分时间不是盯着一个窗口猛发数据而是在几个工具之间来回切换对照信息。数据的来龙去脉看清楚了问题往往就藏在你忽略的那个层里。前几次用 Bus Hound 的时候可能觉得它界面老气、操作繁琐但等你碰上发送成功却石沉大海的诡异问题就知道这一层开着有多救命了。