Skip to content

在线串口调试助手(网页版串口调试工具)

免费免安装的串口调试助手在线版:GBK 中文自动识别、一键切换不乱码,HEX 收发自动加 Modbus CRC16,发送前预览每个字节。电脑版 Chrome、Edge 直连 CH340、CP2102、ESP32、Arduino,没有硬件也能用演示设备试。

浏览器中运行 免费
串口数据由浏览器直接读写,不会发到我们的服务器。
未连接

连接设备后,收到的数据显示在这里。

ms
快捷发送
收发路径在浏览器里用模拟串口逐字节验证:GBK / UTF-8 跨块拆分、CRC-16/MODBUS(01 03 00 00 00 0A → C5 CD,01 06 00 01 00 03 → 98 0B)、XOR、累加和与空闲分帧都有单元测试和端到端测试,CRC 期望值来自独立实现。 — Go Tools 团队 · 2026年10月11日

由 Go Tools 工程团队构建并验证。

串口调试速查答案

哪些浏览器能用在线串口调试助手?

电脑版 Chrome、Edge、Opera 这几款基于 Chromium 的浏览器(Chrome 89 起)内置 Web Serial,打开页面点「选择串口并连接」即可。Firefox 151 起的电脑版也支持,但要先安装浏览器提示的站点权限附加组件;Safari 和 iPhone 不支持。暂时连不上时,可以先用演示设备试用全部功能。

单片机 printf 的中文,在串口助手里为什么是乱码?

常见原因:设备发的是 GBK 国内 Keil、IAR 工程的源文件常以 GBK 保存,printf 出来的中文就是 GBK 字节。本工具发现数据按 GBK 读得通时会提示切换,切换后已收到的内容也会重新显示;如果连英文和数字都乱,先核对波特率。

提示 Failed to open serial port 是什么原因?

浏览器不给原因 打开失败时只有一句「Failed to open serial port.」。按常见原因逐个排查:关掉其他串口助手、Arduino IDE 的串口监视器和调试器;Linux 下把当前用户加入 dialout 组(Arch 为 uucp);确认设备仍插着;换一个常用波特率再试。

Modbus 的 CRC 校验码先发哪个字节?

低字节在前 CRC-16/MODBUS 对 01 03 00 00 00 0A 算出 0xCDC5,线上依次发送 C5 CD。在发送区选「追加校验 → CRC-16/MODBUS」,工具按这个顺序补在帧尾并预览出来。

发 AT 指令没有回应?

行尾要带 \r\n ESP8266、ESP32 的 AT 固件以回车换行(\r\n)结束一条指令,只发「AT」两个字节模块会一直等。把行尾选成 \r\n (CRLF) 再发。

什么是在线串口调试助手?

串口调试助手(也叫串口调试工具、串口终端)是嵌入式开发里最常用的小工具:打开电脑上的串口(COM 口,多数由 CH340、CP2102 这类 USB 转串口芯片虚拟出来),按设备的波特率收发数据——看单片机打印的日志、给模块发 AT 指令、调 Modbus 设备。传统做法是下载 Windows 上的串口软件(如 SSCOM、XCOM、UartAssist);网页版借助浏览器内置的 Web Serial API 直接打开本机串口,免安装,Windows、macOS、Linux 上的 Chrome 和 Edge 都能用。

串口数据由浏览器直接读写,工具不会把收发的字节发到我们的服务器。页面也不能自己去扫描串口——只有你在浏览器弹窗里选中并授权的端口,页面才能打开。

本工具和多数串口助手的差别在两处。一是收到的原始字节都留着,切换 UTF-8 / GBK 或文本 / HEX 视图时,整屏按新设置重新显示,出现乱码不必清屏重来。二是发送前先预览实际要写出的每个字节,载荷、校验和行尾分开标出;HEX 写错会直接指出哪个字符不对,而不是悄悄丢掉它把错的帧发出去。

# Text view, line ending \r\n
[09:30:01.204] → AT␍␊
[09:30:01.219] OK
# HEX view, CRC-16/MODBUS appended (low byte first)
[09:30:02.517] → 01 03 00 00 00 0A C5 CD
[09:30:02.539] 01 03 14 00 64 00 65 00 66 00 67 00 68 00 69 00 6A 00 6B 00 6C 00 6D 63 D1

网页版串口调试助手的功能

免安装,Windows、Mac、Linux 都能用

基于浏览器内置的 Web Serial API,电脑版 Chrome、Edge、Opera 打开网页就能连 CH340、CP2102、FT232、PL2303 等 USB 转串口,以及 ESP32-S3、Arduino 这类板载 USB 串口。公司电脑不让装软件、或者在 Mac 上找不到顺手的串口助手时尤其方便。

中文乱码自动诊断

收到的字节按当前编码读出乱码时,工具拿最近收到的数据换一种编码试读,读得通就提示「切换到 GBK」;切换后,之前收到的内容也按新编码重新显示。另有 ASCII / Latin-1 逐字节显示。

文本 / HEX(16进制)收发,发送前预览字节

HEX 可以写成 01 03 00、0x01,0x03 或连写 010300,非法字符和奇数位直接报错;输入框下方实时显示将要写出的字节,校验和行尾用方括号单独标出。文本模式可选 \r\n、\n、\r 行尾,并能解析 \r \n \xHH 转义。

一键追加 CRC、异或、累加和校验

发送时在帧尾追加 CRC-16/MODBUS(低字节在前)、XOR(BCC)或累加和 SUM8,调 Modbus RTU 不用再另开计算器。需要其他 CRC 变体,可以先用 CRC 计算器查出参数,再把校验字节手动填进去。

按空闲间隔分帧,毫秒时间戳

HEX 视图下,两次到达的间隔超过设定的毫秒数(默认 50 ms)就另起一帧,一问一答的协议正好一行一帧;每行带毫秒时间戳,收发字节数实时累计。

定时发送、发送历史、日志导出

按毫秒间隔循环发送,用来轮询或做压力测试;最近发过的指令点一下就能重发;日志导出为文本,保留时间戳、收发方向和原始 HEX,换编码或交给别的工具重新解析都不丢信息。

串口收发实例:AT 指令、Modbus、中文乱码

AT 指令测试(ESP8266 / ESP32 AT 固件)

发送(文本,行尾 \r\n):AT
实际写出:41 54 0D 0A
设备返回:OK

ESP-AT 固件以回车换行作为一条指令的结束,只写出 41 54 两个字节时模块会一直等下去。行尾选 \r\n 后,输入框下方会预览出 41 54 [0D 0A]。

Modbus RTU 读保持寄存器(自动加 CRC)

发送(HEX,追加 CRC-16/MODBUS):01 03 00 00 00 0A
实际写出:01 03 00 00 00 0A C5 CD
从站返回:01 03 14 00 64 00 65 … 00 6D 63 D1

从站地址 01、功能码 03、起始地址 0000、数量 000A。CRC 算出 0xCDC5,按 Modbus 的规定低字节在前,发出 C5 CD。应答里 14 是数据字节数(20 字节 = 10 个寄存器),最后两个字节同样是低字节在前的 CRC。演示设备会按这个格式应答。

单片机打印的中文变成乱码

收到:CE C2 B6 C8 3A 32 35 A1 E6 0D 0A
按 UTF-8 显示:�¶�:25��
按 GBK 显示:温度:25℃

同一串字节,按 UTF-8 读是乱码,按 GBK 读是「温度:25℃」。数据本身没有坏,只是两端的编码约定不同。工具检测到这种情况会提示切换。

自定义协议帧追加异或校验

发送(HEX,追加 XOR / BCC):AA 55 01 02
实际写出:AA 55 01 02 FC

XOR 校验把载荷的每个字节依次异或:AA ⊕ 55 ⊕ 01 ⊕ 02 = FC。校验覆盖输入框里的全部字节;如果协议规定帧头不参与计算,就要另外算好校验再手动填进去。

在线串口调试助手使用教程

  1. 1

    接好设备

    用数据线把开发板或 USB 转串口模块插到电脑上。Windows 设备管理器的「端口 (COM 和 LPT)」下应该多出一个 COM 口;没有出现,通常是驱动没装好,或者用了只能充电的线。

  2. 2

    设置串口参数

    波特率、数据位、校验位、停止位必须和设备程序里的设置一致,最常见的是 115200 8N1 或 9600 8N1。连接后参数锁定,要改先断开。

  3. 3

    选择串口并连接

    点「选择串口并连接」,在浏览器弹出的列表里选中端口。连接后状态栏按 USB 厂商 ID 显示芯片厂商,例如 WCH (QinHeng)、Silicon Labs CP210x。手头没有硬件就点「演示设备」。

  4. 4

    查看接收的数据

    文本视图按行显示,每行带毫秒时间戳;协议是二进制就切到 HEX 视图,按空闲间隔自动分帧。出现中文乱码时,按提示切换编码。

  5. 5

    发送并保存日志

    选好文本或 HEX、行尾和校验,输入框下方会预览实际字节,按 Ctrl+Enter 发送;需要轮询就用定时发送。调试结束点「保存日志」导出。

串口调试常见问题:乱码、无响应、打不开

中文显示成乱码

设备发的是 GBK,接收端却按 UTF-8 解码,每个汉字都会变成替换符或奇怪的字符。数据没有坏,换一种编码读就对了。

✗ 错误
编码:UTF-8
显示:�¶�:25��
✓ 正确
编码:GBK
显示:温度:25℃

发了 AT 指令没有回应

ESP8266、ESP32 的 AT 固件收到 \r\n 才开始解析指令。行尾选「无」时只写出了 41 54 两个字节。

✗ 错误
41 54
✓ 正确
41 54 0D 0A

Modbus 从站不应答

RTU 帧必须带正确的 CRC,低字节在前,后面不能再跟别的字节。没加 CRC、高低字节写反,或者 HEX 模式下还开着 0D 0A 行尾,从站都会把整帧当作错误丢掉,不回任何东西。

✗ 错误
01 03 00 00 00 0A CD C5
✓ 正确
01 03 00 00 00 0A C5 CD

整屏乱码,连英文和数字都不对

这通常不是编码问题,而是波特率(或数据位、校验位)和设备不一致,每个字节的采样时刻都错位了;差两倍时,收到的字节常常比发出的少很多或多很多,而且多是乱码。把参数改成设备程序里写的值。

✗ 错误
本端 57600 8N1,设备 115200 8N1
✓ 正确
本端 115200 8N1,设备 115200 8N1

什么时候用网页版串口助手

Arduino、ESP32 打印调试
看 Serial.println() 输出的传感器读数和状态日志,带毫秒时间戳,方便对照程序的执行顺序。
STM32、51 单片机 printf 调试
USART 重定向 printf 之后的中文日志,常常是 GBK 编码。这里切到 GBK 就能正常显示,不用改固件。
Modbus RTU 设备联调
经 RS-485 转 USB 模块连接仪表或 PLC,用 HEX 发送并自动追加 CRC,应答按空闲间隔分帧显示。寄存器里存的浮点数,到达时是 4 个 IEEE 754 格式的原始字节。
AT 指令模块配置
给 WiFi、4G、蓝牙模块发 AT 指令,行尾一键切换 \r\n;常用指令留在发送历史里,点一下就能重发。
不能装软件的电脑上临时排查
公司电脑、实验室公用机、Mac 或 Linux 上没有顺手的串口助手时,打开网页就能用;收到的 HEX 想转成文字,也可以复制到 16 进制转字符串工具里换编码查看。

串口通信与 Web Serial 的工作原理

Web Serial API 怎样打开串口
浏览器通过操作系统的串口驱动打开端口(Windows 上的 COM 口,macOS 的 /dev/cu.*,Linux 的 /dev/ttyUSB* 或 /dev/ttyACM*)。页面拿到的是两条字节流:读端是 ReadableStream,写端是 WritableStream。权限按端口授予,必须由你在浏览器弹窗里选择,页面不能自行枚举本机的串口。
8N1 和波特率
8N1 指 8 个数据位、无校验、1 个停止位。加上起始位,每个字节在线上占 10 位,所以 115200 波特每秒最多传约 11,520 字节,9600 波特约 960 字节。波特率差得多,或数据位、校验位不一致时,收到的就是乱码(Windows 上还会报帧错误)。
为什么需要分帧
串口本身没有「包」的概念。USB 转串口芯片把收到的字节攒成 USB 包交给电脑,浏览器每次读到的就是这样一块,一帧数据可能被拆成两块,几帧也可能挤在一块里。HEX 视图按两次到达之间的空闲时间重新切分;浏览器知道的只是每一块到达页面的时刻,而不是线上每个字节的时刻,所以默认阈值取 50 ms,可按协议调整。Modbus RTU 本身要求帧间至少静默 3.5 个字符时间(9600 波特时约 4 ms),浏览器测不到这么精确,所以空闲分帧只是近似,不能当作严格的 Modbus 帧判定。
UTF-8 与 GBK 的字节差异
「温度」用 UTF-8 编码是 E6 B8 A9 E5 BA A6,每个汉字 3 字节;用 GBK 是 CE C2 B6 C8,每个汉字 2 字节。一个汉字的几个字节可能被拆在两次读取里,所以接收端用流式解码,把不完整的尾巴留到下一块再拼,切换编码时则从原始字节整段重新解码。
三种校验怎么算
CRC-16/MODBUS:多项式 0x8005(反射写法 0xA001)、初值 0xFFFF、输入输出按位反转、无最终异或,结果低字节在前发送。XOR(BCC):全部字节依次异或,得到 1 个字节。SUM8:全部字节相加后只保留低 8 位。三种都只覆盖载荷,不覆盖后面追加的行尾。

串口调试的几条经验

先对参数,再看数据
收到乱码时先确认波特率、数据位、校验位、停止位与设备一致,再考虑编码问题。参数不对时,换什么编码都读不通。
二进制协议用 HEX 视图
Modbus 这类二进制协议里有大量 00、0D、0A 字节,用文本视图看会被当成换行或控制字符(含义可查 ASCII 码表)。切到 HEX 视图,并把分帧间隔设成略大于设备的应答间隔。
统一固件和终端的编码
新项目建议把源文件统一保存成 UTF-8,日志在任何终端里都不乱;老项目沿用 GBK 的,就把这里的编码固定为 GBK,工具会记住你的选择。
保存原始 HEX 日志
排查偶发问题时,导出的日志保留每条数据的原始字节和毫秒时间戳。只保存解码后的文字,会把当时的编码选择也一并固化进文件。
定时发送间隔别太短
间隔要大于设备处理一条指令再应答所需的时间,否则请求会堆积,应答和请求对不上号。应答时间以设备手册为准,再留些余量。

串口调试助手常见问题

在线串口调试助手需要下载安装吗?
在 Chrome、Edge 里不需要:网页用的是浏览器内置的 Web Serial API,不下载客户端,也不装插件。Firefox 151 及以上要先安装它提示的站点权限附加组件——这是浏览器的授权机制,不是串口驱动。无论哪种浏览器,电脑上都要有串口芯片的驱动:设备管理器里能看到 COM 口就说明驱动正常;看不到,再到芯片厂商官网下载驱动。
支持哪些浏览器?手机能用吗?
电脑版 Chrome、Edge、Opera(Chrome 89 起)可以直接连接。Firefox 151 起的电脑版也支持,需要先安装浏览器提示的站点权限附加组件。Safari 和 iPhone 不支持 Web Serial。安卓版 Chrome 138 起只开放蓝牙串口(RFCOMM);有线 USB 串口需要 Chrome 148 以上加 Android 17,而且手机本身要开放有线串口。连不上时页面会提示,演示设备照常可用。
串口数据会上传到服务器吗?
不会。收发的串口数据由浏览器直接读写,工具不会把它们发到我们的服务器。发送历史和参数设置只保存在本机浏览器里。
点「选择串口并连接」后列表是空的,怎么办?
说明系统没有识别出串口设备。先确认数据线不是只能充电的线、开发板已经上电;Windows 设备管理器里应该能看到 COM 口,看不到就安装芯片驱动(CH340、CP2102 等)。
打开串口失败怎么办?
浏览器对所有打开失败都只给出一句「Failed to open serial port.」,原因只能逐个排除。常见原因之一是端口被其他程序占用:关掉其他串口助手、Arduino IDE 的串口监视器、正在调试的 IDE,或者本工具的另一个标签页。Linux 下当前用户需要在 dialout 组(Arch 为 uucp)。另外确认设备仍插着,并换一个常用波特率再试——有的驱动不接受不常见的速率。
串口收到的中文是乱码怎么办?
先看英文和数字是否正常。英文正常、只有中文乱,是编码问题,国内工程常见的是设备发 GBK。工具检测到后会提示切换,切换后已收到的内容也会重新显示。如果连英文和数字都是乱码,是波特率或其他参数和设备不一致。
HEX 数据怎么发?支持哪些写法?
把发送模式切到 HEX,可以写成 01 03 00 0A、0x01,0x03 或连写 0103000A,大小写都行。非法字符(比如 G)和奇数位数会直接报错,不会被悄悄跳过;输入框下方会预览实际写出的字节。
怎样自动加 Modbus CRC?为什么是低字节在前?
在发送区把「追加校验」选成 CRC-16/MODBUS,只填地址、功能码和数据,CRC 会自动补在帧尾。Modbus RTU 规定 CRC 先发低字节、后发高字节:算出 0xCDC5 时发出 C5 CD。
一帧数据为什么被拆成两行,或者几帧挤成一行?
HEX 视图按两次到达之间的空闲时间分帧,默认 50 ms。设备发一帧的中途停顿超过这个值,就会被拆开;两帧之间的间隔太短,就会挤在一起。把「分帧间隔」调到大于帧内停顿、小于帧间间隔即可。
DTR 和 RTS 是什么?为什么连接后开发板复位了?
DTR、RTS 是串口的两根控制线,很多开发板把它们接到复位电路。Chrome 打开串口时会把两根线都置为有效(这是浏览器的实现行为,不是标准规定),所以 Arduino Uno 这类用 DTR 自动复位的板子,连接时通常会复位一次,网页无法阻止。ESP32 常见的自动下载电路里,两根线同时有效时芯片正常运行;只有 RTS 有效而 DTR 无效时,芯片才停在复位状态。连接后可以用开关手动切换;ESP32 没有输出时,检查是不是只关掉了 DTR。
能和别的串口助手同时打开同一个串口吗?
Windows 上不能:COM 口同一时刻只能被一个程序打开。Linux 和 macOS 上要看先打开的程序有没有申请独占:申请了,这里会打开失败;没有申请,两边都能打开,但收到的数据会被两个程序分着读,看起来像丢字节。稳妥的做法是同一时间只在一个程序里打开。
支持自定义波特率吗?
支持。波特率列表的最后一项是「自定义」,可以填任意速率,比如 ESP8266 上电时 ROM 打印启动信息用的 74880。浏览器会原样下发这个值,能否生效取决于 USB 转串口芯片和驱动:有的会就近取一个它支持的速率,有的系统会直接打开失败。
演示设备是什么?
演示设备是页面内置的一个模拟单片机,不需要任何硬件:连接后先用 GBK 打印开机信息,正好演示乱码诊断;每 2 秒上报一次温度;收到 AT 回 OK,其他 AT 指令回 ERROR;发给从站 1、CRC 正确的 Modbus 03 读寄存器请求会得到应答,CRC 不对或地址不是 1 的帧则和真从站一样不回;其他内容原样回传。

cURL 命令生成器与构建工具

网络与 API

在浏览器中构建 curl 命令——设置请求方法、请求头、认证与请求体,即刻获得可复制的命令。支持 Bearer、POST JSON、文件上传预设。免费、隐私安全、无需注册。

htpasswd 生成器 — bcrypt、Apache MD5 (apr1) 与 Basic Auth

网络与 API

在线生成 htpasswd 条目,支持 bcrypt、Apache MD5 (apr1)、SHA-1 等算法,并输出 Apache、nginx 和 Docker 的即用配置。100% 在浏览器中运行,密码不上传。

Open Graph 与 Meta 标签生成器

网络与 API

生成 Open Graph、Twitter Card 与 SEO meta 标签,并实时预览在 Google、Facebook、X 上的分享效果。100% 免费、纯浏览器运行、无需注册——一键复制代码即可粘贴使用。

Nginx location 匹配规则测试器 — 为何是这个块

网络与 API

看清哪个 nginx location 块生效,其他块各自输在哪一步。免费在线 location 匹配规则与优先级测试器,支持 =、^~、~、~*,全程浏览器内运行。

IPv4 子网掩码计算器

网络与 API

输入 IP 或网段即可算出网络地址、广播地址、可用主机数、子网掩码与反掩码,还能拆分子网、复制 Cisco/华为配置。免费无需注册,浏览器本地运算不上传。

traceparent 解码器 — W3C Trace Context

网络与 API

不用再数十六进制位。免费在线 traceparent 解码器,全程在浏览器内运行,不上传任何数据。解析 trace ID、span ID、全部 8 个 trace-flags 位,校验 tracestate,并转换为 Datadog、X-Ray、B3 格式。