终端数据

Text、Hex 与字符编码

按协议选择表达方式,按设备选择字符编码,并核对真正影响通信的字节。

本页内容

Text 与 Hex 使用方式

协议可读时优先用 Text 模式,例如 AT 命令、启动日志、控制台输出和按行返回的消息。

协议是二进制时优先用 Hex 模式,例如 Modbus RTU、私有 UART 帧、传感器报文、Bootloader 帧或包含不可打印字节的数据。

实用检查方法:

  • 文本乱码时,先确认波特率,再检查编码和显示模式。
  • 二进制命令无效时,用 Hex 模式核对实际发出的每个字节。
  • 发送完整消息时,优先配置“行尾追加”,不要手动输入不可见字符;在接收终端区直接输入命令时,单独配置“回车发送”。文本消息中间需要控制字节时,开启转义序列。
  • 常用报文建议保留空格,例如 01 03 00 00 00 02 C4 0B,后续排查更容易读。

文本编码

Text 与 Hex 决定消息怎么显示,编码决定设备实际收到哪些字节。两者相互独立:中文设备常用 GB18030、GBK 或 Big5,把它当成 UTF-8 读就会变成乱码,反过来也一样。

编码在快捷设置面板的接收设置和发送设置两组里选择,Text/Hex 单选按钮右边就是;设置对话框的接收页和发送页也有同一项。

接收设置与发送设置两组中,Text/Hex 右侧的编码下拉框
收发各自独立选择编码。默认 UTF-8,与旧版本行为一致。

可选:UTF-8、GB18030、GBK、GB2312、Big5、Shift-JIS、EUC-KR、ISO-8859-1、Windows-1252、System。

使用要点:

  • 收发独立配置。设备用 GBK 回复、而你希望以 UTF-8 发送,可以分别设置。
  • 改动立即生效,正在收数据也不需要重新连接。切换时正在拼接的半个字符会被丢弃,这是换编码时应有的行为。
  • Hex 模式下编码下拉框变灰,因为十六进制就是原始字节;但选择会保留,切回 Text 仍是原来那个编码。
  • 无法编码的字符会被拒发,不会替换成 ?。设备分不清替换出来的 ? 和你真正输入的 ?,所以宁可不发:状态栏会提示是哪个字符,内容留在输入框里等你修改。例如泰文在 GBK 下就发不出去。
  • 日志文件始终以 UTF-8 保存,不跟随线缆编码,换台机器仍然可读。
  • 校验和按最终发出的字节计算。同一段文字在 UTF-8 和 GBK 下字节不同,校验值自然也不同。

排查乱码的顺序:先确认波特率,再确认 Text/Hex 模式,最后确认编码。如果只有中文、日文或韩文乱码而 ASCII 正常,问题几乎一定在编码上。

转义序列

想在文本消息里放一个控制字节、又不想切到 Hex,可以在设置对话框(工具 → 设置...)的「发送」页勾选转义序列(\n \r \xHH)。它默认关闭,只对 Text 模式生效。开启后,发送框这样解读:

写法 发出
\r \n \t 回车、换行、制表符(0D 0A 09)
\0 \a \b \f \v \e NUL、BEL、BS、FF、VT、ESC(00 07 08 0C 0B 1B)
\xHH 任意一个字节,例如 \x1B
\\ 一个反斜杠
  • 转义表示的是字节,不经过文本编码;前后的普通文字照常按编码转换。
  • “行尾追加”照常生效,而手写的 \n 始终是单个字节 0A,不会被改写成行尾设置的 CR LF。校验和按最终发出的字节计算。
  • 无法识别的转义会拒发整帧。 \q、\x 后面不足两位十六进制数字、或末尾单独一个反斜杠,都一个字节不发;状态栏说明原因,内容留在发送框里。绝不会猜一个字节发出去。
  • Hex 模式不受影响。 关闭此选项时,反斜杠按原样发送,与旧版本一致。

该选项按连接设置,随 .spu 工程保存。命令库里的命令和自动应答规则始终按这些转义解读,与此开关无关。

这篇文档是否有帮助?