TSL25911固件库例程:测量链路、移植要点与排坑实录
简介TSL25911数字环境光传感器固件库例程是一套面向STM32开发者的完整驱动参考旨在帮助快速在嵌入式项目中集成高精度环境光检测。TSL25911支持高动态范围、红外与全光谱双通道测量可通过I2C/SPI接口配置适用于智能设备、健康监测、智能家居等光照自适应场景。资源包含849个文件约21.21MB以378个c源文件、153个h头文件为主另有工程配置文件、链接脚本、烧录hex以及pdf/txt说明文档可方便地查看代码实现和编译调试。已有482人学习下载。解压后可直接获得基于STM32的工程模板、传感器驱动源码、示例程序及部分硬件调试辅助工具读者能从中学习HAL/LL库下I2C引脚配置、寄存器读写时序、积分时间与增益调节等关键环节也可将驱动模块迁移到自己项目中省去从零编写底层驱动的工作。1. TSL25911 固件库例程先搞清楚它能干什么再谈跑通拿到 TSL25911 数字环境光传感器的固件库例程压缩包时很多人第一反应是赶紧解压、编译、烧录然后盯着串口看 lux 数值是不是正常。但如果你跳过原理直接跑例程大概率会遇到两种结果要么读数全零要么数值和手机照度计差出一个数量级最后只能靠猜。TSL25911 最值钱的地方不是它那几行驱动代码而是它把 0.001 lux 到 88000 lux 的跨度、可见光与红外的双通道补偿、积分式 ADC 的量程切换都压缩进了一颗小封装里。这篇文章我从测量链路讲起带你拆解固件库例程的目录结构、最小驱动代码、移植时要改的 I2C 层再把最常翻车的五个坑按「现象 → 原因 → 解决」捋一遍。适合做屏幕亮度自适应、室内恒照度控制、低功耗电池设备环境光采集的工程师新手能照着跑通熟手能直接对照排错。2. TSL25911 的测量链路双通道、增益与 lux 换算2.1 双光电二极管与 16-bit ADC为什么量程能拉到 0.001 luxTSL25911 内部有两组光电二极管通道CH0 对可见光加红外都有响应CH1 主要响应红外。传感器输出的是两组 16-bit ADC 计数而不是直接输出 lux。这个「双通道 积分式 ADC」的架构是它区别于普通光敏电阻的核心。单通道传感器在日光下测室内白炽灯数值会明显偏紫因为红外成分没被扣掉。TSL25911 用 CH1 的红外响应去补偿 CH0 里的红外分量才能在不同光源下维持相对一致的 lux 读数。量程能做到 0.001 lux靠的是增益和积分时间的组合。增益档位有四档典型值如下增益档位寄存器值典型倍数适用场景LOW0x001x户外直射、强光环境MED0x013.7x室内正常照明HIGH0x0216x黄昏、暗光室内MAX0x0364x月光级微光、0.1 lux 以下积分时间有 100ms、200ms、300ms 三档对应寄存器值 0x00、0x01、0x02。积分时间越长ADC 累加的能量越多噪声越低但更新率越低。低增益配短积分适合强光高增益配长积分适合暗光。例程里如果写死了某一档换到不同光照环境就会翻车。芯片本身没有自动量程切换这是固件层要做的事也是例程里最值得改的部分。2.2 从原始计数到 lux库里的换算公式与 DF 系数TSL25911 的 lux 换算不能靠简单的线性比例因为双通道本身的响应曲线就是非线性的。常见做法是这样先算 CPLcounts per lux再用 CH0 与 CH1 的差值做红外补偿。CPL 的定义是积分时间毫秒乘以增益倍数再除以器件折算系数 DF。TSL2591 系列里 DF 的典型取值为 408具体以数据手册为准例程头文件里通常也会定义这个宏。我把常用的换算公式整理成下面这段 C 代码逻辑上等价于很多开源库的实现但去掉了平台相关部分方便你对照自己的固件库float tsl25911_to_lux(uint16_t ch0, uint16_t ch1, uint8_t gain, uint16_t atime_ms) { float again 1.0F; float atime (float)atime_ms; float DF 408.0F; /* 器件折算系数以手册为准 */ float cpl, lux; switch (gain) { case 0: again 1.0F; break; case 1: again 3.7F; break; case 2: again 16.0F; break; case 3: again 64.0F; break; default: again 16.0F; } cpl (atime * again) / DF; /* 红外占比过高的场景走保守近似避免负值 */ if (ch0 0 || (float)ch1 / (float)ch0 0.52F) { lux ((float)ch0 - 2.0F * (float)ch1) / cpl; } else { lux ((float)ch0 - (float)ch1) * (1.0F - (float)ch1 / (float)ch0) / cpl; } return lux 0.0F ? lux : 0.0F; }这段代码里最容易被忽略的是 atime_ms 的单位。如果你固件库里传进来的是寄存器值 0x00而不是 100msCPL 会差 100 倍lux 读数直接离谱。我习惯在函数入口就把寄存器值映射成毫秒数省得后面排查时自己也绕晕。DF 系数同样容易踩有人把 TSL2561 的 318 抄进来结果整个量程都偏了。2.3 I2C 时序与寄存器跑例程前必须确认的三个细节TSL25911 的 I2C 地址由 ADDR 引脚决定固定为 7 位地址 0x29 或 0x28具体取决于你的硬件接法。第一个容易忽略的细节是芯片的寄存器访问需要在地址字节前加命令位 0x80。也就是说读 ID 寄存器 0x00 时你发送的第一个字节不是 0x00而是 0x80。很多移植失败就是漏了这个命令位。第二个细节是上电时序。芯片从上电到 I2C 可访问中间有大约 2.4ms 的启动时间。如果主控复位后立刻去读寄存器读回来的往往是 0xFF 或 0x00。例程里如果没做延时你会在硬件上浪费半天。第三是中断脚是漏极开路必须外部上拉否则中断模式完全触发不了。不少人只在查询模式下跑通了一切到中断就假死。下面这段代码演示怎么正确读回芯片 ID#define TSL25911_ADDR 0x29 uint8_t tsl25911_read_id(void) { uint8_t cmd 0x80 | 0x00; /* CMD 位 ID 寄存器地址 */ uint8_t id 0xFF; if (i2c_write(TSL25911_ADDR, cmd, 1) ! 0) { return 0xFF; } if (i2c_read(TSL25911_ADDR, id, 1) ! 0) { return 0xFF; } return id; }i2c_write 和 i2c_read 是你平台上的抽象层函数返回值 0 表示成功非 0 表示 NACK 或超时。读 ID 这步虽然简单但能一次性验证地址、命令位、上电延时三条链路我建议移植时最先跑它。3. 解包固件库例程目录结构、最小驱动与三个必调参数3.1 解包后的目录长什么样src、example 与 docs 的分工这类传感器固件库压缩包解压后通常是三块src 放驱动源码和头文件example 放平台相关的例程入口docs 放芯片手册截图或寄存器速查。具体文件名以你手上这份包为准但结构大差不差。先把压缩包解到工作目录用命令行最省事7z x TSL25911数字环境光传感器固件库例程.rar -oTSL25911 # 如果系统装的是 unrar # unrar x -r TSL25911数字环境光传感器固件库例程.rar解压后先别急着打开 main.c先看头文件里的宏定义。重点关注三个宏I2C 地址、增益枚举、积分时间枚举。这三个宏决定了例程在你板子上能不能直接跑。顺便看一眼 docs 目录里有没有寄存器映射表有些包会附带原厂 datasheet 的摘录对照排错时比上网搜快得多。我见过有些固件库把 HAL 层单独放在一个 platform 目录里里面是空的函数壳等你填 I2C 收发函数。这种结构其实是最友好的因为它明确告诉你要改哪里。真正麻烦的是把 I2C 收发逻辑和传感器逻辑写在一个文件里的旧例程移植时要自己拆。做之前先把这个边界摸清楚能省半天时间。3.2 读回 CH0/CH1 原始值的最小例程不依赖任何库封装从寄存器层面读回 CH0 和 CH1 的原始计数是验证芯片是否在正常工作的最直接方式。TSL25911 的 CH0 数据寄存器从 0x14 开始低字节在前连续两个字节是 CH0再两个字节是 CH1。最小例程可以一次读一个通道逻辑最清晰uint8_t tsl25911_read_ch0(uint16_t *ch0) { uint8_t cmd 0x80 | 0x14; /* CH0 数据寄存器低字节 */ uint8_t buf[2]; if (i2c_write(TSL25911_ADDR, cmd, 1) ! 0) { return 1; } if (i2c_read(TSL25911_ADDR, buf, 2) ! 0) { return 1; } *ch0 (uint16_t)buf[0] | ((uint16_t)buf[1] 8); return 0; }读 CH1 时把命令字节改成 0x80 | 0x18 即可。这里没有用地址自增是为了避免命令位和自增位组合出错。例程里如果封装了 auto-increment 读法一次 I2C 事务读 4 字节效率更高但你先用这种最保守的方式跑通链路后续再优化不迟。读数据之前必须先使能芯片否则读回来的原始值永远是 0。使能的操作是写 ENABLE 寄存器 0x01写入 0x03 表示 PON 加 AEN。PON 是上电位AEN 是 ALS 使能位。写完使能后至少要等一个积分时间再去读数据才是有效的这个时序后面章节还会细说。3.3 三个必调参数gain、积分时间与 ENABLE 使能顺序固件库例程能跑不代表测出来准。最影响结果的三个参数是 gain、积分时间和 ENABLE 使能顺序。增益寄存器和积分时间寄存器都在 CONFIG 寄存器 0x02 里低 2 位是积分时间bit4 和 bit5 是增益。写配置时最好一次性写完整字节避免只改增益把积分时间覆盖掉了uint8_t tsl25911_configure(uint8_t gain, uint8_t atime) { uint8_t buf[2]; buf[0] 0x80 | 0x02; /* CONFIG 寄存器 */ buf[1] (gain 4) | (atime 0x03); if (i2c_write(TSL25911_ADDR, buf, 2) ! 0) { return 1; } buf[0] 0x80 | 0x01; /* ENABLE 寄存器 */ buf[1] 0x03; /* PON AEN */ return i2c_write(TSL25911_ADDR, buf, 2); }先写 CONFIG 再写 ENABLE这样可以确保芯片使能后的第一次转换就是按新配置来跑。反过来写会让芯片先按默认配置跑一轮虽然影响不大但在追求稳定性的产品里没必要留这个不确定窗口。增益和积分时间的选择有个经验参考室内 400 lux 左右用 LOW 增益加 100ms 积分暗光 1 lux 以下用 HIGH 或 MAX 增益加 300ms 积分。如果 CH0 读回 0xFFFF说明饱和了要降增益或缩积分时间。4. 把例程移植到自己的主控I2C 适配、调度与调试输出4.1 抽象 I2C 读写层函数指针和超时是第一步固件库例程里写死的 I2C 读写函数到你板子上基本都要换。最常见做法是传感器驱动层只声明函数指针平台层去实现这样驱动代码和主控型号解耦。下面这个接口定义我在几个项目里一直沿用typedef int (*tsl25911_i2c_write_t)(uint8_t addr, const uint8_t *buf, uint8_t len, uint16_t timeout_ms); typedef int (*tsl25911_i2c_read_t)(uint8_t addr, uint8_t *buf, uint8_t len, uint16_t timeout_ms); typedef struct { tsl25911_i2c_write_t write; tsl25911_i2c_read_t read; } tsl25911_i2c_t;初始化时把平台的 I2C 函数赋给结构体驱动内部只调用结构体成员。为什么要显式加 timeout_ms因为很多主控的硬件 I2C 在总线被拉死时会卡在等待中断里出不来。裸机环境下尤其明显一个没有超时的 I2C 读操作可能把整个系统挂死。加超时后哪怕总线异常驱动也能在 10ms 内返回错误码至少日志还能打出来。硬件 I2C 和模拟 I2C 的取舍上我建议能用硬件 I2C 就用硬件。TSL25911 的 SCL 支持 100kHz 到 400kHz硬件 I2C 的时序更稳抗干扰更强。模拟 I2C 虽然方便移植到任意 GPIO但在 400kHz 下容易产生毛刺长线传输时更明显。如果主控引脚紧张必须用 GPIO 模拟把频率降到 100kHz 并加 4.7kΩ 上拉。4.2 周期性采样与低功耗唤醒别把 while(1) 直接搬进产品例程为了演示方便通常在主循环里不断读数据。这在开发板上没问题搬到低功耗产品里就是灾难。传感器数据不是越快越好环境光变化本身是慢变量100ms 到 500ms 的采样周期完全够用。正确的做法是定时唤醒读完即睡。休眠前要做两件事把 ENABLE 寄存器写 0x00 关闭 ALS然后主控进入睡眠。这里有个容易翻车的点TSL25911 的配置寄存器在掉电后不保证保持唤醒后必须重新跑一遍完整的配置和使能流程不能只写 ENABLE 位。我一般把初始化配置封装成一个函数唤醒后直接调用void tsl25911_lowpower_wakeup(uint8_t gain, uint8_t atime) { tsl25911_configure(gain, atime); /* 等待一个积分时间保证第一次读数是有效转换结果 */ delay_ms(atime_to_ms(atime) 20); }等待时间按 atime_to_ms 换算成毫秒再加 20ms 余量。如果唤醒后不等转换完成就读数据读回来的要么是上一次的残留值要么是 0。中断模式比查询模式更适合低功耗场景但中断时序的坑更多后面专门讲。4.3 调试输出先打印原始计数再打印 lux移植阶段最容易犯的错是直接拿 lux 值来调试。lux 经过非线性公式和红外补偿原始计数里的异常会被掩盖掉。比如 CH1 读数异常偏大lux 可能只是偏小看起来像是增益不对实际是 CH0 和 CH1 的关系出了问题。正确的调试顺序是先把 CH0、CH1 原始值、增益档位、积分时间一起打出来确认原始数据符合预期再去算 lux。串口输出格式我习惯用 CSV这样可以直接拖进表格软件画曲线[tsl25911] ch04521 ch11880 gainHIGH atime300 lux12.34同时把芯片 ID 在初始化时打印一次确认 I2C 链路没问题。如果 ID 读回来不是预期值后面所有数据都不用看先查硬件连接。很多玄学问题到最后发现都是地址线虚焊或者上拉电阻没贴。5. TSL25911 固件库使用中的 5 个常见坑与排查记录5.1 上电后读寄存器全是 0x00地址冲突与上电时序现象上电后读 ID 寄存器返回 0xFF 或者 0x00换了好几个例程都一样。原因有三个按概率排序I2C 地址不匹配、上电后延时不够、命令位 0x80 没加。解决先用逻辑分析仪或示波器抓 I2C 波形看发送的地址字节是不是 0x52 开头的写地址7 位地址 0x29 左移一位。如果是 0x50说明芯片的 ADDR 引脚接到了不同电平地址变成了 0x28。然后把上电到首次通信的延时加到 10ms宁可多等别少等。这三个检查项能解决九成初始化失败。5.2 lux 比手机照度计低一个数量级增益档位没跟上环境现象例程默认参数下室内测出来只有几十 lux手机照度计显示三四百。原因例程里增益档位是 LOW积分时间 100ms这个组合适合强光室内暗光下 ADC 计数本来就低再套用同一套公式自然偏小。解决把增益改成 MED 或 HIGH积分时间改成 200ms 或 300ms重测。注意改增益后 CPL 里的 again 系数要同步更新不然 lux 值反而可能偏大。这类问题在黄昏场景最常见光从 1000 lux 掉到 50 lux固定增益会直接失准。5.3 数值跳得像心电图积分时间太短噪声没压住现象同一光照下连续读十次 lux波动幅度超过 20%。原因积分时间 100ms 对应更宽的等效噪声带宽在低照度下 SNR 不够。解决把积分时间升到 300ms同时打开例程里常见的滑动平均滤波比如取 8 次平均。如果产品对实时性要求不高还可以在应用层做一阶低通滤波alpha 取 0.3 左右效果立竿见影。这里要注意滤波会引入响应延迟做屏幕亮度自适应时滤波太狠会让亮度变化跟手度变差。5.4 低功耗唤醒后数据一直是 0使能位状态丢了现象主控休眠再唤醒后调用例程读数据返回成功但数据全零。原因休眠前只是把主控睡了没有关 ALS但唤醒后的初始化流程不完整或者 ENABLE 寄存器在掉电状态下复位了。这类问题在电池供电的设备里几乎必现。解决把唤醒后的初始化做成幂等操作不管之前状态如何先写 CONFIG再写 ENABLE等一个积分时间再读。不要依赖任何「上次配置还在」的假设。5.5 触发中断后不再响应清除中断寄存器没写现象第一次光照变化触发了 INT 引脚此后无论光照怎么变INT 都不再拉低。原因中断标志没有清除芯片认为中断还没被处理完。TSL25911 需要往特定命令组合写入任意值来清除中断状态。不同固件库的写法略有差异我用的写法是向 0xE7命令位 0x80 加中断清除地址 0x67写入任意字节。如果你的库头文件里定义了类似TSL25911_CLEAR_INT的宏优先用库里的。6. 进阶用照度计给你的 TSL25911 做一次单点标定6.1 为什么例程读出来的 lux 和照度计不一样传感器芯片本身的换算公式是在标准光源下标定的但你的产品有外壳、有透光窗、甚至还有一层结构件遮挡光透过率不可能等于 100%。所以例程读出来的 lux 和手持照度计有偏差是正常的不是芯片坏了。偏差通常表现为一个近似恒定的比例系数比如实测读数是照度计的 0.86 倍那透过率就是 86%。这个系数在你改结构后必须重新标。6.2 单点标定的完整步骤与补偿系数标定不需要暗室找一个稳定的室内光源照度计和 TSL25911 放在同一位置同一朝向保持光线稳定。分别记录照度计读数和库里输出的 lux两者相除得到补偿系数然后把最终 lux 除以这个系数。C 里加一个全局比例因子即可不要改原始公式里的 DFstatic float g_calib_ratio 1.0F; float lux_final tsl25911_to_lux(...) / g_calib_ratio;标定后可以多换几个光照强度验证一下如果 100 lux 和 1000 lux 两点的误差方向一致说明单点标定够用。如果高亮度和低亮度误差方向相反说明结构件的滤光特性是非线性的那就需要两点线性插值。我现在的习惯是每块板子到手先跑例程确认 ID再看原始计数是否随光照单调变化最后才做标定。先原始、再 lux、最后补偿系数这个顺序帮我少绕了很多弯。希望帮到你。本文还有配套的精品资源点击获取

相关新闻

Python智能AI医疗问诊系统实战:从多轮对话到结构化病历全解析

Python智能AI医疗问诊系统实战:从多轮对话到结构化病历全解析

不少同行问过我:基于 Python 做一套智能 AI 医疗问诊系统,到底难不难?我的回答通常是:模型不是最难的,流程才是。症状怎么采、追问怎么问、科室怎么推、报告怎么出、出了事谁负责,这些才是真正需要花心思的…

2026/10/17 14:17:06 阅读更多 →
无人机电力杆塔智能巡检:缺陷识别数据集构建与模型落地实战

无人机电力杆塔智能巡检:缺陷识别数据集构建与模型落地实战

无人机电力杆塔巡检这几年已经不是什么新鲜概念了,但真正把它做出稳定成果、能落地到日常生产的,其实还是少数。我自己在电力巡检视觉识别这条线上折腾了不短时间,从最早用小型多旋翼飞机手动飞、回来一帧一帧翻录像找缺陷,到后来…

2026/10/17 14:17:06 阅读更多 →
短视频秒开优化:从播放链路提速到预加载的完整实践

短视频秒开优化:从播放链路提速到预加载的完整实践

前阵子收到一条挺典型的用户反馈:信息流里的视频,点进去先黑屏两三秒,偶尔还能看到加载转圈,往回划走再进来,又要重新缓冲。这种体验,页面的短视频加载基本告别“秒开”了。当时我接手的是某个信息流播放场…

2026/10/17 14:17:06 阅读更多 →

最新新闻

HTML游戏代码包本地部署指南:从白屏到中文汉化全流程

HTML游戏代码包本地部署指南:从白屏到中文汉化全流程

简介:《Degrees of Lewdity》中文版安装指南代码包,是一份面向中文玩家与入门开发者的本地化配置参考。它围绕这款文本冒险游戏的汉化安装,系统梳理了从环境准备、仓库克隆、依赖安装到Mod加载器配置的完整链路,适合想亲手复现中文…

2026/10/17 15:16:52 阅读更多 →
Unity如何自动找到并调用Start/Update?内部机制解析

Unity如何自动找到并调用Start/Update?内部机制解析

有人问了一个看起来特基础、仔细想又说不清的问题:Unity引擎到底是怎么知道某个MonoBehaviour子类里有Start方法,然后在正确时机自动调用的?刚入门的同学觉得这事挺玄学——脚本里写了个Start,引擎就跟约定好了一样,在…

2026/10/17 15:16:52 阅读更多 →
Unity五子棋人机对战实战:AI落子算法与坐标换算全解析

Unity五子棋人机对战实战:AI落子算法与坐标换算全解析

做五子棋练手,是Unity入门中期特别合适的项目。棋盘、落子交互、回合管理、胜负判定、AI决策,一套流程下来什么关键环节都覆盖了,难度又比象棋围棋低不少,不会一上来就被搜索树和评估函数劝退。这篇就把Unity人机五子棋从零到能玩…

2026/10/17 15:16:52 阅读更多 →
LayaAir 2-Cmd与VSCode环境协同配置指南

LayaAir 2-Cmd与VSCode环境协同配置指南

1. 为什么“LayaAir 2-Cmd VSCode”组合容易让人反复重装环境LayaAir 2.x 是国内某跨平台游戏引擎团队在2019年前后主推的轻量级H5/小程序/小游戏开发框架,其核心设计目标是让前端开发者能用熟悉的TypeScript和Web开发思维快速产出可多端发布的2D内容。而LayaAir 2…

2026/10/17 15:16:52 阅读更多 →
从零实现一个Android简单计算器:布局、逻辑与状态管理详解

从零实现一个Android简单计算器:布局、逻辑与状态管理详解

不少刚接触Android开发的朋友,想找个能顺手练完整个基础链路的项目,第一反应多半是“做个计算器”。它没有复杂的网络请求,也不需要设计数据库表,但要真正把一个能用的计算器做出来,你需要把界面布局、按钮事件、状态切…

2026/10/17 15:16:52 阅读更多 →
Python爬虫技术

Python爬虫技术

前言 「爬虫技术」听起来像一个独立学科,拆开看其实就是三件事:发出 HTTP 请求拿到响应、从响应里抽出结构化数据、把数据存下来并决定下一次抓哪里。Python 之所以成了爬虫的主流语言,不是语言本身有什么魔法,而是标准库把这三件…

2026/10/17 15:15:52 阅读更多 →

日新闻

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

简介:《DeepSeek使用方法.pdf》是一份面向DeepSeek入门及进阶用户的完整使用指南,重点围绕V3与R1两款模型的能力差异与适用场景展开,帮助读者根据任务类型与成本选择合适的模型。资源共1个PDF文件,压缩包大小约311KB,篇…

2026/10/17 0:00:25 阅读更多 →
200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

简介:这是一份聚焦DeepSeek提示词优化的《200Deepseek润色指令》PDF文档,共收录两百余条可直接套用的润色指令,涵盖语法修正、风格统一、逻辑梳理、表达精炼等维度,并针对商务写作、学术论文、广告文案等场景给出差异化建议。文档…

2026/10/17 0:00:25 阅读更多 →
OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

简介:本资源是一份基于OpenCV的本科课程设计完整报告,面向计算机视觉初学者、图像处理学习者及高校通信/信息类专业学生,解决物体智能计数与检测结果结构化记录的实际问题。项目覆盖图像预处理、轮廓检测、边界框绘制、轨迹栏交互式参数调节、…

2026/10/17 0:00:25 阅读更多 →

周新闻

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

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

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

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

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

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

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

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

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

2026/10/16 15:04:24 阅读更多 →

月新闻

我发现了一个新思路:用 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/16 21:54:38 阅读更多 →
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/16 3:49:43 阅读更多 →
黑夜航拍船只数据集训练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/16 14:23:36 阅读更多 →