#ifndef IRRE_H #define IRRE_H #include #include #pragma pack(push, 1) typedef struct { uint32_t protocol; // 协议类型 (必须与IRRemote库定义一致) uint32_t bits; // 有效数据位数 (影响后续信号重组精度) /* 精简后的数据结构: * 1. 总大小8字节 (原14字节) * 2. 删除时间戳字段后文件体积减少42% * 3. 提升ESP32存储和传输效率 */ } BinHeader; #pragma pack(pop) class IRController { public: static void sendIRSignal(uint16_t* rawData, size_t length, uint8_t irPin = 4); }; bool IRController::loadConfig(const char* path, BinHeader* header, uint16_t* rawData) { // File file = SD.open(path); // if(!file) return false; // file.read((byte*)header, sizeof(BinHeader)); // size_t dataSize = (header->bits + 15) / 16 * 2; // file.read((byte*)rawData, dataSize); // file.close(); return true; } void IRController::sendIRSignal(uint16_t* rawData, size_t length, uint8_t irPin) { IrSender.sendRaw(rawData, length, 38, false); delay(100); } #endif