10 分钟上手 SSCom:Linux/macOS 嵌入式串口调试完整指南
【免费下载链接】sscomLinux/Mac版本 串口调试助手项目地址: https://gitcode.com/gh_mirrors/ss/sscom
按下开发板复位键的那一刻,串口窗口一片空白,终端里连个回音都没有——是板子没电了,还是你的工具根本没接上?这种时刻最需要的不是再敲一串命令行参数,而是一个开源的串口调试助手 SSCom:它专为 Linux 与 macOS 打造,把打开串口、文本/HEX 收发、定时发送这些动作收进同一个图形窗口,让你盯着屏幕就能看到设备到底在说什么。
先说清楚:SSCom 是个什么角色
一句话定位:SSCom 是跑在 Linux/macOS 上的开源图形化串口调试助手,面向嵌入式调试、AT 指令验证和二进制协议分析,核心解决的就是"这两个平台上缺一个顺手、不用切终端就能收发数据的工具"这件事。它不替代 minicom 或 screen 的底层能力,而是把最常用的操作摆到鼠标够得着的地方。
两条路把 SSCom 弄到桌面
路线一:预编译版,拿到就能跑。项目提供 AppImage 格式的预编译版本,Linux 上无需安装依赖,赋予执行权限后直接运行即可,适合大多数使用者。
路线二:源码编译,两条命令的事。需要定制功能或想顺便读读代码的话,从源码构建非常轻:
git clone https://gitcode.com/gh_mirrors/ss/sscom cd sscomLinux 下补齐 Qt5 依赖后编译:
sudo apt-get install qt5-default libqt5serialport5-dev libudev-dev qmake && makemacOS 下通过 Homebrew 装 Qt5 后同样两步:
brew install qt5 qmake && make💡 如果编译时报Unable to find file for inclusion ... serialport.prf,说明你踩在 Qt4 环境上——把 Qt5 装好并让 qmake 指向 Qt5 再重来即可,这是该项目最常见的编译坑。
第一次调试:连接 → 配置 → 收发 → 分析
把整个调试过程压成一条直线,其实就四步,界面布局也是顺着这条线走的。
连接。在"串口号"下拉框里选中设备:Linux 上常见的是/dev/ttyUSB0或/dev/ttyACM0,macOS 上则是/dev/tty.usbserial-*这类名字。点"打开串口",底部状态栏会回显当前状态,例如ttyUSB0 已打开 115200bps,8,1,None,None——波特率、数据位、停止位、校验、流控一目了然,连上了没有不用猜。
配置。波特率按设备手册来,最常见是 115200 和 9600;其余参数"8 数据位 + 1 停止位 + 无校验 + 无流控"覆盖了绝大多数场景。DTR/RTS 两个引脚开关一般保持默认。
收发。在字符串输入框里键入内容(比如AT+GMR),点"发送"。两个容易忽略的开关值得认识:勾选"发送新行"后每次发送会自动补换行符,AT 指令类设备因此更省心;勾选"定时发送"并填好间隔(默认 1000 ms/次),发送内容就会按周期自动发出去。
分析。收到数据后,上方大窗口就是现场;需要留存证据时用"保存窗口"导出,想从头开始时点"清除窗口"。"HEX 显示"开关则决定了数据以原文还是字节形式呈现——这一点对后面读二进制协议至关重要。
带着目标用,而不是对着功能清单用
工具的功能只有落到具体目标上才显得合理,下面按"你想干什么"来拆。
🎯 想快速定位设备启动异常
做法很简单:按设备要求的波特率(ESP32 默认 115200)打开串口,然后去按复位键,日志会自己滚进窗口。有两条线索值得盯:带时间戳的行(如ets Jul 29 2019 12:21:46)帮你确认日志确实新鲜;boot: ESP-IDF之类的版本行确认引导走到了哪一步。窗口一片空白时别急着怀疑工具——先换波特率,再看设备名是否选对,最后才考虑硬件本身。
🎯 想让周期任务不再手动点
物联网设备的心跳包、定时状态查询、自动化测试触发,本质都是"每隔 N 毫秒发一次同样的内容"。把内容填进输入框、勾选"定时发送"、把间隔改成需要的毫秒数,发送一次后它就替你按节奏重复。测试结束记得关闭该选项,免得下一轮调试被旧数据淹没。
🎯 想读懂原始二进制数据
当窗口里出现乱码,第一反应不该是"波特率错了",而可能是设备发的本来就是二进制。勾选"HEX 显示",接收区立即以字节序列呈现;若还需要往设备回发十六进制(写寄存器、发指令帧),再把"HEX 发送"一起勾上,输入按空格分隔的字节即可,例如01 02 03 04。分析完成后用"保存窗口"把这次会话存下来,方便事后逐字节比对。
🎯 想一次性推大文件
升级固件、批量灌数据时逐条发送不现实。"打开文件"选好文件后点"发送文件",原始字节按序发出、格式不变,配合"停止"按钮可以随时叫停。
两台机器,同一套手感
跨平台工具最怕"功能都在,但位置全变了"。SSCom 在 Linux 和 macOS 上保持同一套三区域布局:上方接收/发送显示区,中部文件操作按钮条(打开文件、发送文件、停止、保存窗口、清除窗口),下方参数与开关区。切换系统后不用重新学操作,唯一的实质差异在设备命名:
- Linux:设备多为
ttyUSB0、ttyACM0,窗口风格随桌面环境走 - macOS:设备形如
tty.usbserial-A601MKHQ,其余按钮与参数一一对应
出问题先诊断,别急着重装
排查按"现象 → 判断 → 分支解法"走,对号入座通常三步以内能收场:
| 现象 | 先判断什么 | 分支解法 |
|---|---|---|
| 点"打开串口"失败 | 权限还是占用 | 未加入dialout组 → 执行sudo usermod -aG dialout $USER后重新登录;端口被别的进程占着 → 关掉其他串口工具;两者都排除 → 用sudo启动验证是否纯权限问题 |
| 接收数据是乱码 | 参数错位还是数据本身是二进制 | 先核对波特率两端一致;再检查 8/1/无校验组合;仍不对 → 勾 HEX 显示,若字节排列规整说明设备发的本就是二进制协议 |
| 串口号列表里找不到设备 | 驱动还是插法 | 换 USB 口重插,观察/dev/ttyUSB0是否出现;芯片较新或冷门 → 补装对应 USB 转串口驱动;确认 udev 规则是否拦截了权限 |
make 报Unable to find file for inclusion | 构建用错了 Qt 版本 | 当前是 Qt4 环境,装好 Qt5(qt5-default+libqt5serialport5-dev,或 macOS 的brew install qt5)后重新 qmake 编译 |
动手前扫一眼:常见设备参数速览
参数选错,后面全白忙。接设备之前用这张表对一下初始设置:
| 设备 | 常用波特率 | 数据位/停止位/校验 | 备注 |
|---|---|---|---|
| Arduino 系列 | 9600 或 115200 | 8 / 1 / None | 教学板例程默认 9600 居多 |
| ESP32 / ESP8266 | 115200 | 8 / 1 / None | 启动日志一般就是 115200 |
| STM32 系列 | 115200 | 8 / 1 / None | 留意 USB 转串口的 TX/RX 是否反接 |
| Raspberry Pi | 115200 | 8 / 1 / None | 板载串口默认可能未启用,需先打开 |
| 工业 PLC | 9600 / 19200 | 8 / 1 / Even 或 Odd | 校验位以手册为准,错一位就满屏乱码 |
想改代码,从这几个文件进门
项目体量很小,通读半天足够。二次开发时按这个顺序看效率最高:
- main.cpp——程序入口,几行胶水代码
- mainwindow.cpp / mainwindow.h——主窗口全部逻辑:串口打开关闭、收发循环、定时发送、HEX 转换都在这里,改功能基本动它
- mainwindow.ui——Qt Designer 界面文件,所有控件与布局
- commonhelper.cpp / commonhelper.h——跨平台通用辅助函数
- sscom.pro——qmake 工程配置,声明了 Qt 模块与源文件清单
- images.qrc——图标与图片资源声明
上手试试,顺便把社区推一把
最直接的一步:下载预编译版,插上任意一块开发板,115200 打开串口发一句AT+GMR,看到OK回显就算入门了。用起来遇到打不开端口、参数不生效之类的状况,提一个 issue 描述清现象即可;如果你恰好读懂了 mainwindow.cpp,改个顺手的小功能提回去,也是让这款跨平台串口调试助手持续可用的方式。
【免费下载链接】sscomLinux/Mac版本 串口调试助手项目地址: https://gitcode.com/gh_mirrors/ss/sscom
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考