ProntoHex库:嵌入式红外遥控码解析与raw时序转换 1. ProntoHex 库概述红外遥控协议的工程化解析与转换实践1.1 背景与工程需求在嵌入式红外遥控系统开发中工程师常面临一个典型矛盾协议标准碎片化与硬件驱动抽象层缺失。Pronto Hex 格式又称 Pronto Classic 或 Philips Pronto 格式是上世纪90年代由 Philips 推出的通用红外码表示法被 IRDBirdb.tk、LIRC 数据库及大量万能遥控器广泛采用。其本质是一种十六进制编码的时序描述语言而非直接可驱动 LED 的原始脉冲序列。典型 Pronto Hex 码示例0000 006C 0022 0002 015B 00AD 0016 0016 0016 0041 0016 0041 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0041 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 001......## 1. ProntoHex 库概述红外遥控协议的工程化解析与转换实践 ### 1.1 背景与工程需求 在嵌入式红外遥控系统开发中工程师常面临一个典型矛盾**协议标准碎片化**与**硬件驱动抽象层缺失**。Pronto Hex 格式又称 Pronto Classic 或 Philips Pronto 格式是上世纪90年代由 Philips 推出的通用红外码表示法被 IRDBirdb.tk、LIRC 数据库及大量万能遥控器广泛采用。其本质是一种十六进制编码的时序描述语言而非直接可驱动 LED 的原始脉冲序列。 典型 Pronto Hex 码示例0000 006C 0022 0002 015B 00AD 0016 0016 0016 0041 0016 0041 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0041 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 001......## 1. ProntoHex 库概述红外遥控协议的工程化解析与转换实践ProntoHex 是一个面向嵌入式红外应用的轻量级 Arduino 库其核心功能是将广泛流传于红外数据库如 IRDB.tk 中的 Pronto Hex 格式遥控码精确还原为底层可执行的原始脉宽时序raw timings。该库不参与红外载波调制、发射驱动或接收解码而是严格定位在协议解析层——完成从十六进制字符串到微秒级高低电平持续时间数组的无损映射。这一设计使其天然适配各类成熟 IR 发送框架包括 IRLib、Arduino-IRremote 和 IRLremote 等主流库构成“数据库→协议解析→硬件驱动”的标准嵌入式红外开发链路中关键一环。在实际工程中Pronto Hex 格式因其紧凑性与跨平台兼容性成为红外码分发的事实标准。例如索尼电视某按键的 Pronto Hex 码 0000 006D 0022 0002 015B 00AD 0016 0016 0016 0041 0016 0041 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0041 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0............## 1. ProntoHex 库概述红外遥控协议的工程化解析与转换实践ProntoHex 是一个面向嵌入式红外通信场景的轻量级 Arduino 库其核心功能是将广泛流传于红外数据库如 IRDB.tk 中的 Pronto Hex 格式遥控码精确还原为底层可执行的原始载波时序raw timings。该库不参与红外信号发射而是承担关键的协议解析与格式转换角色——它将人类可读、设备无关的十六进制字符串映射为微控制器可直接驱动 IR LED 的高/低电平持续时间数组单位微秒从而无缝对接主流红外发送库如 IRLib、Arduino-IRremote、IRLremote。在实际嵌入式开发中这一能力具有明确的工程价值避免手动查表与硬编码传统方式需人工拆解 Pronto Hex 字符串对照 NEC/Sony/RCA 等协议规范逐字段计算载波周期、脉冲宽度、逻辑0/1定义极易出错且不可维护实现遥控码动态加载支持从 SD 卡、EEPROM 或网络接口读取 Pronto Hex 字符串在运行时完成解析并生成时序为可配置遥控网关、学习型红外中继器等产品提供基础能力跨平台协议桥接Pronto Hex 是红外设备厂商间事实标准的“中间表示”ProntoHex 库成为连接上层应用逻辑与底层硬件驱动的关键适配层。该库设计严格遵循嵌入式资源约束原则无动态内存分配malloc/free、无浮点运算、无阻塞式延时全部基于uint16_t和uint32_t整型运算代码体积小于 2KBARM Cortex-M0 编译后可在 ATmega328PArduino Uno等资源受限平台稳定运行。2. Pronto Hex 协议深度解析从字符串到物理时序的映射原理Pronto Hex 并非一种红外调制协议而是一种通用的、与具体物理层解耦的时序描述格式。其本质是将红外信号的完整载波包包括引导脉冲、数据位、重复帧等以微秒级精度采样后序列化为十六进制字符串。理解其结构是正确使用 ProntoHex 库的前提。2.1 Pronto Hex 字符串结构规范一个典型的 Pronto Hex 字符串形如0000 006D 0022 0002 015B 00AD 0016 0016 0016 0041 0016 0041 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0041 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0041 0016 0041 0016 0041 0016 0041 0016 0041 0016 0041 0016 0041 0016 0041 0016 0041 0016 0041 0016 0041 0016 0041 0016 0041 0016 0041 0016 0041 0016 0041 0016 0041 0016 0041 0016 0041 0016 0041 0016 0041 0016 0041 0016 0041 0016 0041 0016 0041 0016 0041 0016 0041 0016 0041 0016 0041 0016 0041 0016 0041 0016 0041 0016 0041 0016 0041 0016 0041 0016 0041 0016 0041 0016 0041 0016 0041 0016 0041 0016 0041 0016 0041 0016 0041 0016 0041 0016 0041 0016 0041 0016 0041 0016 0041 0016 0041 0016 0041......