STM32红外遥控解码实战:从NEC协议到嵌入式应用开发
1. 项目概述从遥控器到微控制器红外遥控这个我们每天都会接触的技术从电视、空调到机顶盒无处不在。但你是否想过当你按下遥控器按钮时那束看不见的红外光里究竟承载了什么信息而一块小小的STM32单片机又是如何“听懂”这些光信号并转化为我们程序可以理解的指令的这就是红外遥控接收模块与STM32结合的魅力所在——它不仅是连接物理世界与数字世界的桥梁更是嵌入式开发者入门通信协议、理解中断与定时器应用的绝佳练手项目。简单来说这个项目就是利用一个成本仅几块钱的红外接收头如HS0038B配合STM32的GPIO和定时器资源实现对市面上绝大多数采用NEC编码格式的遥控器的信号解码。最终我们可以通过串口打印出按键对应的编码值或者用这些值来控制LED、蜂鸣器甚至更复杂的设备。无论你是刚接触STM32的新手想通过一个有趣的项目巩固GPIO中断和定时器知识还是有一定经验的开发者需要为你的智能家居或物联网设备添加一个便捷的本地控制接口这个项目都极具实践价值。接下来我将带你从原理到代码完整走一遍红外遥控的解码之路分享那些数据手册上不会写的调试经验和避坑技巧。2. 红外遥控接收模块的核心原理与选型2.1 红外通信的基本模型光与电的对话红外遥控的本质是一种基于红外光的无线通信。发送端遥控器将一个二进制数据流通过调制的方式驱动红外发射管以特定频率通常是38kHz闪烁发出红外光。这个38kHz的载波频率就像我们说话的声调是一个约定的“频道”目的是为了减少环境光如日光灯、太阳光中红外成分的干扰。接收端红外接收头内部集成了光电二极管、前置放大器、带通滤波器和解调电路。它的任务很专一只检测频率在38kHz附近的红外光信号并将其过滤、放大、解调最终输出一个干净的数字电平信号给微控制器。所以我们STM32拿到的是一个已经“剥掉”了38kHz载波的数字波形我们的任务就是解读这个波形里蕴含的数据。2.2 红外接收头选型与电路设计要点最常用的红外接收头是HS0038B或其兼容型号如VS1838B。它们通常有三只引脚VCC接3.3V或5V、GND和OUT信号输出。与STM32的连接极其简单OUT引脚直接连接到STM32的一个GPIO引脚即可无需额外电路。注意虽然HS0038B工作电压范围宽2.7V-5.5V但为了与STM32的GPIO电平完美兼容强烈建议VCC也接3.3V。如果接5V其OUT引脚输出高电平可能接近5V长时间接入STM32的GPIO通常耐压5V但推荐3.3V可能存在风险。稳妥起见统一使用3.3V供电。在电路设计上有两个细节值得关注电源去耦在接收头的VCC和GND引脚之间就近放置一个0.1uF-10uF的陶瓷电容可以有效滤除电源噪声这对提高接收灵敏度、减少误触发至关重要。引脚配置STM32的GPIO应配置为上拉输入模式。因为红外接收头在无信号时输出高电平有信号时才输出一系列低电平脉冲。启用内部上拉可以确保空闲时为稳定的高电平省去外部上拉电阻。2.3 NEC编码协议深度解析NEC协议是消费电子领域事实上的标准其编码规则是我们解码的逻辑基础。它采用脉冲位置调制PPM用脉冲之间的时间间隔来表示逻辑“0”和“1”。一个完整的NEC帧包括以下几个部分引导码一个9ms的低电平脉冲紧接着一个4.5ms的高电平。这是帧的起始标志接收器通过检测到这个特殊时序来判定一帧数据的开始。用户码16位用于区分不同厂家的设备。通常低8位和高8位是取反关系用于校验。数据码8位即按键本身的编码。数据反码8位是数据码的按位取反用于验证数据码在传输中是否出错。结束位一个560us的低电平脉冲后跟一段空闲高电平。逻辑“0”和“1”的表示逻辑“0”560us低电平 560us高电平。逻辑“1”560us低电平 1.68ms高电平。关键在于无论是“0”还是“1”起始都是一个560us的低电平脉冲。区别在于高电平的持续时间。因此解码的核心思路就是在检测到引导码后开始测量每一个560us低电平脉冲之后的高电平持续时间。如果高电平持续约560us则判为“0”如果持续约1.68ms则判为“1”。实操心得很多初学者解码失败是因为死板地按照560us和1.68ms的标称值去判断。实际中由于晶振误差、软件延时等因素这个时间会有偏差。一个健壮的解码程序应该使用一个范围区间来判断例如高电平时间在400us-800us之间认为是“0”在1.4ms-1.9ms之间认为是“1”。这个容错范围需要在调试中根据实际情况微调。3. 基于STM32 HAL库的解码方案设计与实现3.1 方案选型外部中断配合定时器捕获解码红外信号本质上是对一个不规则数字方波进行时序测量。STM32有多种实现方式外部中断基本定时器在GPIO的下降沿每个脉冲的开始触发外部中断在中断中开启定时器计数在上升沿或下一个下降沿再次中断读取定时器值来计算脉冲宽度。这是最直观、最常用且资源占用最少的方法适合初学者理解原理。定时器输入捕获模式将GPIO映射到定时器的输入捕获通道利用硬件自动记录边沿发生时刻的计数器值精度极高CPU干预少。但配置稍复杂且会占用一个定时器通道。PWM输入模式是输入捕获的特例可以自动测量周期和占空比但对于NEC这种变脉宽的信号不是最直接。对于入门和大多数应用“外部中断基本定时器”方案是最佳选择。它只需要一个普通的GPIO支持外部中断和一个基本的定时器如TIM2、TIM3逻辑清晰便于调试。本文将重点阐述这种方案。3.2 硬件与软件环境准备硬件清单STM32最小系统板如STM32F103C8T6HS0038B红外接收头模块杜邦线若干一个常见的NEC编码遥控器电视、空调遥控器均可ST-Link调试器软件环境STM32CubeIDE 或 Keil MDKSTM32CubeMX用于初始化配置CubeMX关键配置步骤GPIO配置选择一个GPIO引脚如PA0连接红外接收头的OUT。将其配置为“GPIO_EXTIx”模式触发边沿选择“下降沿和上升沿触发”。上拉选择“Pull-up”。NVIC配置使能对应的EXTI中断线如EXTI line0 interrupt。定时器配置启用一个基本定时器如TIM2。预分频器PSC设置为SystemCoreClock / 1000000 - 1这样计数器每计数一次代表1微秒假设系统时钟72MHz则PSC71。自动重载值ARR设置为最大值65535对于16位定时器。这样定时器就能提供一个微秒级的时间基准。生成代码生成基于HAL库的初始化代码。3.3 解码状态机与核心代码实现解码过程非常适合用状态机State Machine来描述逻辑会非常清晰。我们定义以下几个状态typedef enum { IR_IDLE, // 空闲状态等待引导码 IR_LEADER_CODE, // 检测到引导码的低电平等待引导码的高电平 IR_RECEIVING, // 正在接收数据位 IR_COMPLETE // 一帧数据接收完成 } IR_StateTypeDef;核心的中断服务函数和逻辑如下以PA0EXTI0中断为例volatile IR_StateTypeDef ir_state IR_IDLE; volatile uint32_t ir_raw_data[33]; // 用于存储32位数据引导码高电平时间 volatile uint8_t ir_data_index 0; volatile uint8_t ir_nec_code[4]; // 存储用户码高8位、低8位、数据码、数据反码 void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) { static uint32_t last_fall_time 0; uint32_t current_time; uint32_t pulse_width; if(GPIO_Pin GPIO_PIN_0) { if(HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_0) GPIO_PIN_RESET) { // 下降沿脉冲开始 last_fall_time __HAL_TIM_GET_COUNTER(htim2); HAL_TIM_Base_Start(htim2); // 确保定时器运行 } else { // 上升沿脉冲结束计算高电平持续时间 current_time __HAL_TIM_GET_COUNTER(htim2); // 处理定时器溢出如果发生 if(current_time last_fall_time) { pulse_width (0xFFFF - last_fall_time) current_time; } else { pulse_width current_time - last_fall_time; } switch(ir_state) { case IR_IDLE: // 在空闲时检测到高电平结束说明是一个低电平脉冲。 // 如果这个低电平脉冲宽度在8ms-10ms左右可能是引导码开始。 // 我们等待下一个高电平结束即引导码的4.5ms高电平来确认。 if(pulse_width 8000 pulse_width 10000) { // 9ms低电平 ir_state IR_LEADER_CODE; } break; case IR_LEADER_CODE: // 确认引导码的高电平部分4.5ms if(pulse_width 4000 pulse_width 5000) { // 4.5ms高电平 ir_state IR_RECEIVING; ir_data_index 0; // 准备接收数据位 HAL_TIM_Base_Start(htim2); // 重启定时器 } else { // 不是有效的引导码回到空闲 ir_state IR_IDLE; } break; case IR_RECEIVING: // 接收数据位。此时pulse_width是每个位开始低电平560us之后的高电平持续时间。 // 我们将其存入数组等所有位收齐后再统一解析。 ir_raw_data[ir_data_index] pulse_width; if(ir_data_index 33) { // 引导码高电平32位数据 ir_state IR_COMPLETE; HAL_TIM_Base_Stop(htim2); } break; case IR_COMPLETE: default: ir_state IR_IDLE; break; } } } }在主循环或一个专门的任务中检查ir_state IR_COMPLETE然后对ir_raw_data数组进行解析void IR_DecodeNEC(void) { if(ir_state ! IR_COMPLETE) return; uint32_t user_code_h 0, user_code_l 0, data_code 0, data_inv 0; // 忽略ir_raw_data[0]它是引导码的高电平时间。 // 从ir_raw_data[1]开始是32个数据位的高电平时间。 for(int i0; i32; i) { // 判断逻辑1或0 if(ir_raw_data[i1] 1300) { // 阈值设为1.3ms可根据实测调整 // 逻辑1 if(i16) { user_code_h | (1 (15 - (i % 16))); // 先接收的是高位 } else if(i24) { data_code | (1 (7 - (i % 8))); } else { data_inv | (1 (7 - (i % 8))); } } else { // 逻辑0不需要操作因为初始值是0 } } // 简单校验数据反码应是数据码的按位取反 if((uint8_t)(~data_code) data_inv) { ir_nec_code[0] (user_code_h 8) 0xFF; ir_nec_code[1] user_code_h 0xFF; ir_nec_code[2] data_code; ir_nec_code[3] data_inv; printf(用户码: 0x%02X%02X, 按键值: 0x%02X\r\n, ir_nec_code[0], ir_nec_code[1], ir_nec_code[2]); // 这里可以添加按键处理逻辑如控制LED、执行函数等 } else { printf(数据校验错误\r\n); } // 解码完成重置状态 ir_state IR_IDLE; ir_data_index 0; }4. 调试技巧与常见问题深度排查红外解码调试是一个“信号看不见摸不着”的过程非常依赖工具和经验。以下是我在多次项目中总结的实战心得。4.1 必备调试工具逻辑分析仪没有逻辑分析仪调试红外解码就像在黑暗中摸索。一个几十块钱的USB逻辑分析仪如Saleae Logic 8克隆版是绝对值得的投资。将探头连接到接收头的OUT引脚和地线设置合适的采样率如1MHz-4MHz抓取遥控器按下时的波形。如何看波形确认引导码首先找到那个独特的9ms低电平4.5ms高电平的“大头”这是帧的起点。观察数据位放大波形你应该能看到一连串的“凹槽”。每个凹槽由一个560us的低电平开始后面跟着或短560us或长1.68ms的高电平。短的对应“0”长的对应“1”。测量时间使用逻辑分析仪软件的测量工具精确测量高电平的持续时间这将帮助你校准代码中的时间判断阈值。4.2 常见问题与解决方案速查表问题现象可能原因排查步骤与解决方案完全无反应中断不触发1. GPIO配置错误未开启中断、模式不对2. 硬件连接错误VCC/GND接反、信号线接触不良3. 接收头损坏1. 用万用表测量接收头VCC是否为3.3V无信号时OUT脚是否为~3.3V高电平。2. 在CubeMX中确认GPIO已配置为EXTI模式NVIC已使能。3. 在中断回调函数入口处设置断点或点灯看是否进入。能触发中断但解码结果全是0或全乱码1. 定时器配置或使用错误2. 时间判断阈值不合理3. 中断处理时间过长丢失边沿1.检查定时器确认定时器时钟已使能预分频器设置正确1us计数。在中断里打印定时器值看是否正常递增。2.调整阈值用逻辑分析仪实测“0”和“1”的高电平时间据此调整代码中的判断阈值如if(pulse_width 1300)。3.优化中断中断服务函数里只做最必要的操作记录时间、改变状态。复杂的解析放到主循环。确保中断优先级设置合理。同一个按键每次收到的码值不同1. 电源噪声干扰2. 环境光干扰特别是日光灯3. 遥控器电池电量不足1.加强电源滤波在接收头VCC-GND间并联一个10uF电解电容和一个0.1uF瓷片电容。2.物理屏蔽用深色热缩管或胶带包裹接收头减少环境光影响。避免在强日光灯下测试。3.更换电池。只能解码部分按键有些键无效1. 遥控器某些按键的编码超出了预设的用户码判断范围如果做了过滤2. 逻辑分析仪发现某些位波形畸变严重1. 先打印出完整的32位原始数据用户码数据码反码看无效按键的编码是否正常。可能是遥控器本身编码特殊。2. 尝试增大解码的时间容错窗口。长按按键只识别一次NEC协议本身设计如此。长按时在发送一次完整帧后会每隔110ms重复发送一个简短的“重复码”9ms低电平2.25ms高电平560us低电平。需要在状态机中增加对“重复码”的检测和处理逻辑。检测到9ms低电平2.25ms高电平后即可判定为重复上一次按键而无需重新解析32位数据。4.3 进阶优化抗干扰与低功耗设计软件滤波在中断中可以连续采样几次GPIO电平确认是稳定的下降沿或上升沿后再进行处理可以有效滤除毛刺。// 简单的软件消抖 uint8_t i, sample_count0; for(i0; i5; i) { if(HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_0) target_level) sample_count; else sample_count0; // 短暂延时 for(volatile int d0; d10; d); } if(sample_count 4) return; // 不是稳定电平退出低功耗考虑在电池供电设备中可以让红外解码部分在大部分时间休眠。可以将红外接收头的OUT引脚连接到STM32的唤醒引脚如WKUP并配置为上升沿唤醒。当遥控器按下引导码的第一个上升沿4.5ms高电平结束时即可将MCU从停止模式唤醒然后MCU再开启定时器和中断进行完整解码。解码完成后再次进入低功耗模式。5. 从解码到应用构建你的红外控制系统解码出按键值只是第一步如何将其转化为实际应用才是项目的终点。这里提供几个扩展方向。5.1 设计一个健壮的红外命令管理器不要用一堆if-else或switch-case来直接处理按键值。更好的做法是设计一个命令映射表将红外按键码映射到具体的函数指针或事件ID。typedef struct { uint32_t ir_key_code; // 红外按键码 void (*func_ptr)(void); // 对应的处理函数 char* desc; // 描述可选 } IR_KeyMap_t; IR_KeyMap_t ir_key_map[] { {0x45, Volume_Up, 音量}, {0x46, Volume_Down, 音量-}, {0x47, Power_Toggle, 电源}, // ... 添加更多映射 }; void IR_ProcessKey(uint8_t key_code) { for(int i0; isizeof(ir_key_map)/sizeof(IR_KeyMap_t); i) { if(ir_key_map[i].ir_key_code key_code) { if(ir_key_map[i].func_ptr ! NULL) { ir_key_map[i].func_ptr(); } printf(执行: %s\r\n, ir_key_map[i].desc); return; } } printf(未知按键: 0x%02X\r\n, key_code); }这样做的好处是增减功能只需修改映射表代码耦合度低易于维护。5.2 实现红外信号学习与转发模拟发射更高级的应用是让STM32既当接收器又当发射器。你需要添加一个红外发射管IRED和一个三极管驱动电路。发射的原理是反向操作根据NEC编码的时序用PWM或GPIO翻转来模拟38kHz载波和信号波形。核心步骤学习模式用接收解码部分记录下某个按键完整的原始时间序列ir_raw_data数组存储到Flash或EEPROM中。发射模式从存储器中读出时间序列使用一个定时器如TIM产生38kHz的PWM。在需要发射高电平时开启PWM输出驱动红外管在需要发射低电平时关闭PWM输出。严格按照学习到的时间长度控制每个电平的持续时间。重要提示驱动红外发射管需要一定的电流通常20-100mAGPIO无法直接提供。必须使用三极管如8050或MOSFET作为开关管进行驱动并在发射管上串联一个限流电阻如100Ω。发射时确保平均电流不超过器件额定值防止烧毁。5.3 集成到更大的项目智能家居控制中枢将红外解码模块作为智能家居网关的一部分。STM32解码出红外指令后可以通过串口、Wi-FiESP8266/ESP32模块或蓝牙上报到手机App或云端服务器。同时它也可以接收来自网络的控制命令转换成红外信号发射出去从而用手机App远程控制家里的老式空调、电视等非智能电器。这就构成了一个简单的“万能红外遥控”智能硬件。例如你可以使用STM32的UART连接一个ESP-01S WiFi模块通过AT指令连接MQTT服务器。当STM32解码到“空调开”的指令时除了本地执行还可以向MQTT的特定主题发布一条消息{device:ac, cmd:on}。手机App订阅这个主题就能实时看到状态更新。反之App也可以发送命令到另一个主题STM32订阅并解析后发射对应的红外信号来控制空调。

相关新闻

美妆电商评价大数据分析系统设计与实现

美妆电商评价大数据分析系统设计与实现

1. 项目背景与核心价值 美妆行业近年来呈现爆发式增长,消费者在电商平台的评价数据已成为产品迭代和营销策略制定的重要依据。传统人工分析方式难以应对海量非结构化评价数据,这正是大数据技术发挥价值的场景。本项目通过构建完整的网络评价分析系统&…

2026/10/5 18:20:42 阅读更多 →
Linux内核UAC2驱动解析:从USB音频协议到ALSA框架实现

Linux内核UAC2驱动解析:从USB音频协议到ALSA框架实现

1. 从音频接口到内核驱动:UAC2的定位与价值如果你在嵌入式Linux或者音频设备开发领域摸爬滚打过,大概率遇到过这样的需求:让一个基于Linux的设备(比如一块开发板、一个工控机或者一个定制化的音频处理盒子)能够识别并流…

2026/10/11 1:13:17 阅读更多 →
GNSS频点全解析:从L1/B1到多频融合,揭秘高精度定位核心技术

GNSS频点全解析:从L1/B1到多频融合,揭秘高精度定位核心技术

1. GNSS频点:卫星导航的“无线电频道”解析 如果你拆开过任何一部智能手机或专业测量设备,查看其内部的导航芯片,大概率会看到一个参数列表,其中反复出现诸如“L1”、“B1”、“E1”这样的字母数字组合。这些就是GNSS频点&#xf…

2026/10/10 0:41:17 阅读更多 →

最新新闻

YOLO26涨点改进 | 全网独家、卷积创新改进篇 | TGRS 2025 | 引入CLGM上下文层级引导特征提取模块、高低层特征层级双向引导、解决红外小目标细节丢失与语义错位问题、强化细节语义双向融

YOLO26涨点改进 | 全网独家、卷积创新改进篇 | TGRS 2025 | 引入CLGM上下文层级引导特征提取模块、高低层特征层级双向引导、解决红外小目标细节丢失与语义错位问题、强化细节语义双向融

目录 一、研究背景与YOLO26层级特征提取核心缺陷 二、CLGM上下文层级引导模块核心创新原理 2.1 四大核心子单元架构详解 2.1.1 全局层级上下文编码单元(基础核心) 2.1.2 高层语义引导约束单元(核心创新) 2.1.3 浅层细节补偿校准单元 2.1.4 自适应层级融合提纯单元 …

2026/10/13 16:21:35 阅读更多 →
前后端分离商城系统:SpringBoot+Vue3+MyBatis实战解析

前后端分离商城系统:SpringBoot+Vue3+MyBatis实战解析

前后端分离的商城系统,SpringBootVue3MyBatis这套组合这几年几乎成了Java后端面试和毕业设计里的标配。我拿到这套米家商城源码时第一反应是:终于不是那种“前端Vue2后端JSP”缝合怪了,而是真正按企业级项目习惯拆成了两个独立工程。这套系统…

2026/10/13 16:21:35 阅读更多 →
数据库系统概论期末试题全解析:关系代数、范式与T-SQL核心考点梳理

数据库系统概论期末试题全解析:关系代数、范式与T-SQL核心考点梳理

简介:数据库系统概论期末试题及答案PDF面向高校数据库课程学习者与期末备考生,内容覆盖数据库基本特征(数据共享性与数据独立性)、DB/DBMS/DBS三者关系、关系代数中R-(R-S)等价于R∩S、自然连接条件,以及E-R模型三要素…

2026/10/13 16:21:35 阅读更多 →
API按量付费替代订阅制:AI编程助手降本与成本控制实战

API按量付费替代订阅制:AI编程助手降本与成本控制实战

1. 从订阅焦虑到按量付费:一个被忽视的降本思路最近半年,我身边不少做开发、做内容、做数据分析的朋友都在讨论同一个话题:那些按月订阅的AI编程助手和对话工具,到底值不值得续费。有人算过一笔账,一个重度用户同时开着…

2026/10/13 16:21:35 阅读更多 →
SpringBoot+Vue3+MyBatis商城项目剖析:从架构设计到生产实践

SpringBoot+Vue3+MyBatis商城项目剖析:从架构设计到生产实践

1. 项目概述与核心需求解析1.1 这个商城项目到底在做什么米家商城,名字听着像小米生态链的产品,但实际它是一个基于Java SpringBoot搭建的典型电商系统。我接触这个项目的时候第一反应是,这不就是一套标准的“前后端分离商城”教学级项目吗&a…

2026/10/13 16:21:35 阅读更多 →
Python金融科技实战:量化回测、风控模型与工程化落地

Python金融科技实战:量化回测、风控模型与工程化落地

先说个背景。我前两年参与过一个从零搭建的量化信号系统的项目,技术栈里最核心的就是 Python。那段时间接触了不少金融科技方向的案例和团队,越来越感觉 Python 在 FinTech 里几乎是无处不在的。无论是量化交易、风险模型、信贷风控,还是财报…

2026/10/13 16:20:34 阅读更多 →

日新闻

物联网系统集成避坑指南:从选型到验收的关键要点

物联网系统集成避坑指南:从选型到验收的关键要点

做了这么多年物联网系统集成的项目,我最大的感受是,大部分坑不是出在技术前沿,而是出在一些看起来很平常的地方。设备选了便宜的、协议没问清楚、现场没摸透、验收标准写得含糊——这些细枝末节,最后都会变成延期、超支和扯皮的大…

2026/10/13 0:00:57 阅读更多 →
ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

如果你玩ESP32有一阵子了,很难不碰到舵机控制这道坎。做智能小车要转方向,做机械臂要抬关节,做云台要偏航俯仰,背后都是同一个东西在干活:舵机。而我见过太多人卡在“代码能编译、舵机就是不听话”这个阶段&#xff0c…

2026/10/13 0:00:57 阅读更多 →
CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

1. 为什么CAN总线至今仍是工业现场的“硬通货”?——从汽车底盘到智能温室的真实需求你有没有拆过一辆老款燃油车的中控台?或者调试过某高校实验室里那台跑着Modbus协议却频频丢帧的PLC控制柜?又或者,在某个农业物联网项目里&…

2026/10/13 0:00:57 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/13 2:54:56 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/12 0:16:38 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/13 1:58:08 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 21:05:09 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 14:57:39 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 18:11:17 阅读更多 →