控制指令 HEX / ASCII 编码速查(串口指令怎么读怎么发)

2026-06-16

依据 ASCII 标准与常见串口控制约定整理,适用于 RS232/RS485/TCP 透传的字符串与字节指令。

从一条”发了没反应”的指令说起

新接一台投影机,手册白纸黑字写着开机指令是 PON,你照抄进中控指令框,点发送——投影机纹丝不动。反复核对了波特率、串口线、设备地址,全对。换个思路把指令框切到 HEX 视图一看,发出去的字节是 50 4F 4E,手册末尾却有一行小字:指令需以 CR 结尾。你漏了那个看不见的 0x0D。补上,投影机应声亮起。这就是串口对接最典型、也最气人的坑:指令的可见部分对了,看不见的字节没对上。要绕开这类坑,你得能在”人写的文本”和”线上真正跑的字节”之间自由切换着看。这篇把 HEX 和 ASCII 两种写法、结束符、校验和到抓包核对讲透,让你下次遇到”发了没反应”能三下五除二定位到底差在哪个字节。

HEX 与 ASCII 是什么

中控向设备发的控制指令,本质都是一串字节在串口线上流动。怎么把这串字节写进配置里,业界有两种编码写法,选哪种取决于设备手册:

  • HEX(十六进制):直接写每个字节的数值,如 A0 01 01 A2。一个字节两位十六进制,范围 00FF。多用于私有二进制协议、带校验和的紧凑指令,字节能取任意值(包括不可见的控制字节)。
  • ASCII(可见字符):写你能读的文本,如 PON%1POWR 1。中控在发送时按 ASCII 表把每个字符转成对应字节。多用于 PJLink、投影机 / 电视的文本指令集。

关键在于:这两种写法描述的可能是同一串字节,只是记法不同。ASCII 字符 P 在线上就是字节 0x50O0x4FN0x4E。所以 PON(ASCII 写法)和 50 4F 4E(HEX 写法)发出去是一模一样的三个字节。看懂这层映射,你才能在抓包工具显示的 HEX 和设备手册给的文本之间对得上号——这是整篇文章的地基。

核心硬货:常用字符与控制符对照

调串口时手边最该有的就是这张表。左边是你在文本里看得见的,右边是线上真正跑的字节值:

字符ASCII(十进制)HEX说明
0~948~570x30~0x39数字(注意字符 0 是 0x30,不是 0x00)
A~Z65~900x41~0x5A大写字母
a~z97~1220x61~0x7A小写字母(与大写差 0x20)
空格 SP320x20PJLink 等用作分隔符
回车 CR130x0D\r,最常见结束符
换行 LF100x0A\n,常与 CR 配对成 CRLF
STX20x02帧起始(部分私有协议)
ETX30x03帧结束(部分私有协议)
冒号 :580x3AModbus ASCII 帧起始符
星号 *420x2A部分设备命令前缀

两个最容易栽的点,先钉死在这里:

  • 数字字符不等于数字值:手册里写要发数字 1,如果是 ASCII 指令,线上跑的是 0x31 而不是 0x01。把 0x31 错写成 0x01,设备大概率当成无效帧。
  • 控制符在文本视图里”隐身”0x0D0x0A0x02 这些字节在 ASCII 文本视图里显示不出来,或只是个换行 / 空白,肉眼根本看不出漏没漏。这就是为什么核对指令必须切到 HEX 视图——只有 HEX 视图会把每个字节老老实实列出来。

结束符是头号坑:手册说指令以 CR 结尾,你的配置里就必须真的带上 0x0D。很多「发了没反应」都是漏了结束符,或者手册要 CR 你却发了 CRLF(0x0D 0x0A)——多发一个字节,有些设备照样判无效帧。

HEX ↔ ASCII 怎么互转

两种写法互转不难,逐字符 / 逐字节查上面那张表即可,核心是别把可见部分和不可见部分搞混:

方向方法示例
ASCII → HEX每个字符查 ASCII 表取字节值PON50 4F 4E
HEX → ASCII每字节按 ASCII 表还原(仅 0x20~0x7E 可见)25 31 50 4F 57 52%1POWR
加结束符末尾追加 0x0D(CR)或 0x0D 0x0A(CRLF)PON + CR → 50 4F 4E 0D
还原带控制符的帧可见字节转字符,不可见字节标注控制符名02 41 42 03 → STX AB ETX

一个能自己核对的完整例子。假设投影机手册说:开机指令 ASCII 为 %1POWR 1,需以 CR 结尾。逐字符拆解成线上字节:

%    1    P    O    W    R   (空格) 1    CR
25   31   50   4F   57   52   20   31   0D

发送时中控吐出的就是这 9 个字节 25 31 50 4F 57 52 20 31 0D。抓包工具切 HEX 显示,看到的字节流应当与此逐字节一致,一个不多一个不少。对不上,差在哪个位置就一目了然——多半是漏了末尾的 0D,或空格 20 没打。

校验和:HEX 私有协议的最后一道关

ASCII 文本指令通常不带校验(靠结束符断帧),但 HEX 私有协议的帧末尾常有一到两个校验字节,设备收到后自己重算、对不上就丢帧。这也是 HEX 指令”看着全对却被拒收”的常见原因——正文没错,校验字节算错了。

以最简单的**累加和(Checksum / Sum)**为例。指令 A0 01 01,把前面几个字节的数值相加:0xA0 + 0x01 + 0x01 = 0xA2,取低 8 位 0xA2 作为校验字节补在末尾,完整帧就是 A0 01 01 A2。设备收到后同样把 A0 01 01 相加,得 0xA2,与末字节相符才认。你能拿计算器手动核这一步,是排查 HEX 指令的基本功。

常见的几种校验,究竟用哪种、算哪几个字节,一律以设备手册为准,别想当然:

  • 累加和(Sum):字节相加取低字节,最常见、最好算。
  • 异或和(XOR):所有字节逐个异或,得一个字节。
  • CRC:多项式除法,抗错能力强,Modbus 等协议用,手算不现实需查表或工具。

具体算法和取值范围(从哪个字节算到哪个字节、含不含帧头帧尾)差异很大,动手前务必用 串口校验速查(CRC/Sum/XOR) 对照,别拿一种协议的规矩套另一种。

展厅实战:判断、书写与核对

真到展厅现场对接一台设备,按这个顺序走基本不踩坑:

  • 先判断设备用哪种编码:翻手册看它给的指令样子。给的是 PON / POWR 这类能读的词 → ASCII;给的是 A0 01 … 加一行”校验字节”说明的字节表 → HEX。判错了编码,后面全白搭。
  • ASCII 指令补齐结束符和前缀:在中控指令框按手册要求补 CR(0x0D)或 CRLF(0x0D 0x0A);有的设备还要前缀,比如 PJLink 的 %1,别漏。
  • HEX 指令算好校验再发:私有 HEX 协议末位常是校验字节,按手册指定的算法(Sum / XOR / CRC)算出来补上,正文对校验错照样被拒。
  • 抓包逐字节对照:这是压轴的核对手段。串口调试助手切到 HEX 显示,把设备实际收发的字节和手册给的应发字节并排逐个对,差异落在哪个字节位置一眼可见。少一个 0D 就是结束符没打,多一段就是前缀 / 校验重复了。

底层这层编码差异,中控软件通常都能吃下——SoftControl 展厅中控 一般 HEX / ASCII 两种模式都支持,配上结束符和校验设置,你只管把手册的指令翻译对,剩下发码交给它。多设备统一编排时,可配合 SoftPlayer 展厅播控 把发码动作绑进节目时间线。

常见问题

指令该写 HEX 还是 ASCII? 看设备手册:文本指令(PONPOWR)写 ASCII,字节指令(A0 01 …)写 HEX。中控通常两种模式都支持,选错编码会被设备当成无效帧直接丢掉。

为什么 ASCII 指令发出去没反应? 头号原因是漏了结束符。手册要求 CR 就补 0x0D,要求 CRLF 就补 0x0D 0x0A,再核对要不要前缀。切 HEX 视图看末尾有没有那个 0D,比反复读文本靠谱得多。

HEX 里的空格要写吗? 配置里字节之间的空格只是给你看的分隔符,实际发送时会被去掉,A0 01A001 发出去一样。但如果你真要发一个空格字符(比如 PJLink 里的分隔空格),那得写成字节 0x20——这是数据本身,不是分隔符。

怎么把抓到的 HEX 还原成文本? 逐字节查 ASCII 表,落在 0x20~0x7E 范围的还原成可见字符,其余是控制符(如 0x0D 是回车、0x02 是 STX),在文本里标注出来别丢。

校验字节算了还是被拒收? 大概率是算法或范围不对:手册可能要 XOR 你算了 Sum,或者校验范围含 / 不含帧头你搞反了。逐字节按手册重推一遍,别套用别的协议的规矩。

动手检查清单

对接一台串口设备、写指令前后对着过一遍:

  • 先判对编码:能读的词用 ASCII,字节表用 HEX
  • ASCII 指令末尾结束符(CR / CRLF)已按手册补上
  • 需要前缀(如 PJLink %1)的没漏
  • HEX 指令校验字节已按手册算法(Sum / XOR / CRC)算好补上
  • 数字字符没写错值(字符 1 是 0x31,不是 0x01)
  • 抓包切 HEX 视图,实发字节与手册应发字节逐字节对齐
  • 中控编码模式(HEX / ASCII)与设备一致

小结

串口指令这层,说到底就一句话:你写的是文本还是字节,线上跑的永远是字节。 HEX 直接写字节值、ASCII 写文本让中控代转,两种写法能描述同一串数据,PON 就是 50 4F 4E。真正决定”发了有没有反应”的,从来不是正文那几个字符,而是那些看不见的关节——结束符对没对、前缀漏没漏、校验字节算没算对。而拆穿这一切的唯一硬手段,就是把抓包切到 HEX 视图,跟手册逐字节对。

延伸阅读:私有 HEX 协议的校验怎么算,见 串口校验速查(CRC/Sum/XOR);带寄存器的设备控制看 Modbus 寄存器映射实战;串口电气标准看 RS232/RS485 串口协议,或查看全部设备协议速查


写指令前先理清编码,能省掉大量「发了没反应」的排错。用 指令转换工具 做 HEX/ASCII 互转,了解 SoftControl 展厅中控 如何统一管理多设备指令,查看解决方案落地案例,或直接联系我们聊聊你的定制需求

需要展厅软硬件方案或定制开发?