基于LabVIEW的电源自动化测试系统构建实践
电源测试这件事早年间真不是个轻松活。我见过不少同行桌上堆着可编程电源、电子负载、万用表测试时全靠手动拧旋钮、读屏幕再拿笔抄数据最后在Excel里画几个折线图交差。一套电源模块的全部性能验证下来少说也得花半天碰上批量来料检验更是机械性重复劳动。后来大家慢慢转向用LabVIEW搭建电源测试系统我自己也在这条路上踩了不少坑才真正体会到标题里“简约而强大”这几个字的含义。这套系统解决的核心问题很直接把电源测试从“手动逐个操作仪器、人工记录数据”变成“一键自动跑完所有测试项、自动生成报告”。它适合谁看如果你的工作涉及电源模块的研发验证、生产测试或来料检验如果你正在评估自动化测试方案又不想一上来就上几十万的专用测试台架这篇文章应该能给你一套可落地的参考思路。下面我把从硬件选型、程序架构到纹波分析、报表生成再到现场排查的完整过程一五一十写下来。1. 为什么电源测试需要LabVIEW这类平台1.1 电源测试的基本功我们到底在测什么不管是AC-DC开关电源、DC-DC模块还是线性稳压器测试项虽然各有侧重但核心里逃不开这几个维度电压与电流精度设定值和实际输出之间的偏差通常要看负载调整率和线性调整率。纹波与噪声输出端叠加的交流分量。纹波一般指低频分量几十kHz以内噪声则是更宽的频带成分常见指标用mVpp或mVrms表示。转换效率输出功率与输入功率之比对通信电源和适配器来说哪家效率高哪家就有竞争力。动态响应负载电流突升或突降时输出电压的跌落幅度、过冲幅度以及恢复时间这个直接决定电源在复杂负载下的表现。保护功能过流保护、过压保护、过温保护、短路保护是否在设定点附近正确触发。时序特性上电时序、下电时序、电源正常信号与输出电压建立之间的关系。这些项目放在一起单靠一个万用表加一个示波器其实是能测完的但问题是效率。一块电源测完上述全部项目熟练的人也得一两个小时。如果是产品调试阶段改一版参数再测一轮一天就搭进去了。1.2 手工测试的苦做过的人都懂手工测试的痛处不在于“测不准”而在于“费人”和“易错”。我见过一个很典型的场景研发人员调好电子负载的电流档位等电源稳定后从示波器上读纹波峰峰值记录到纸质的测试记录本上然后手动改变负载电流再等、再读、再记。一两百个数据点下来眼睛能看到幻觉。更麻烦的是数据口径不统一。A工程师记纹波用的是峰峰值B工程师记的是有效值C工程师把示波器带宽限制开了20MHz而另外两位没开最后对比测试结果时发现数字对不上。这些原始数据的可追溯性很差出了问题也不知道是仪表设置差异还是电源本身真的有波动。所以我才说电源测试自动化的核心价值不是“炫技”而是把人的主观因素从测试环节里摘除把仪器的设置、采样、判定、记录都变成确定性强的流程。这正好是LabVIEW这类图形化测控平台的舒适区。1.3 LabVIEW凭什么同时做到“简约”和“强大”很多人对LabVIEW的第一印象是“连线很花哨”但真正用起来会发现它在测控领域确实有些天然优势。图形化编程贴近测试流程思路。写一个测试程序时程序框图上的数据流走向和真实测试流程几乎没有认知落差连线本身就是逻辑。对于从硬件调试转过来的人这个门槛比学C或Python要低不少。仪器驱动生态很完整。市面上叫得上名字的程控电源、电子负载、示波器、万用表绝大多数都提供LabVIEW驱动或基于VISA标准控制方式一个仪器资源常驻接口搞定不用为每个仪表另写底层通信。内置测量分析库。滤波、FFT、波形测量、极限判定等函数拖出来就能用省去了繁琐的算法实现。扩展路径宽。带监控的Web发布、数据库连接、与C/Python混合调用都有成熟方案系统想从单机走向网络化、数字化时不会推倒重来。说白了“简约”是指开发层面的抽象你不用去抠通信协议“强大”是指它在仪器控制和分析领域的能力密度比通用编程语言高出一截。这两点结合起来恰好是电源测试系统需要的。2. 一套简约电源测试系统的整体架构2.1 硬件组合不追求昂贵专用台架搭建这套系统时我采用的思路是“通用仪器拼装”而不是买一台集成式电源测试仪。因为集成式设备固然方便但灵活性低且后续维护成本高。通用仪器的组合既能覆盖绝大多数电源指标的测试需求又能按项目调整被测对象而不用大改系统。我的基础配置是这样的一组设备可编程直流电源给被测模块供电或者在测试适配器/充电器时充当输入电源要求能通过远程指令设置电压电流并回读实际输出。可编程电子负载用来拉载被测电源一般需要支持CC、CV、CR、CP四种基本模式测试动态响应时最好还支持动态拉载即用内部信号发生器按设定频率切换负载电流。数字万用表电压电流精度测量的主力至少6位半支持NPLC积分时间设置采样稳定之后读数才可信。示波器抓纹波噪声和动态响应波形带宽建议100MHz以上且支持20MHz带宽限制测量模式。信号控制模块用于控制继电器、读取出厂信号或模拟远端开关机信号可以用数据采集卡或简单的开关模块实现。下表列出各仪器在系统中的角色和关键参数考量仪器设备功能角色关键参数与选型考量程控直流电源DUT供电电源电压/电流范围覆盖DUT输入规格回读精度满足测试要求支持List模式或序列输出电子负载模拟各种负载工况最低工作电压和最大拉载电流要匹配动态拉载的上升沿/下降沿越快越好数字万用表电压电流基准测量分辨率6位半起步注意NPLC与测量速度的取舍示波器纹波噪声与动态响应观察带宽≥100MHz垂直精度足够波形记录长度要长控制模块时序信号切换与状态采集通道数够用继电器切换延时可控这里要先说一个选型原则电子负载和电源不要买太省钱的特别是电子负载动态拉载性能差的设备在测瞬态响应时会直接让波形失真数据出来自己都不敢信。万用表和示波器倒是可以按预算策略选因为它们的精度指标通常会明示在规格书上不容易被坑。2.2 软件框架生产者-消费者状态机这套系统的软件框架我经过几次重构后固定在两个模式上生产者-消费者模式配合状态机。听起来有点术语味但拆开讲不难。主界面生产者负责接收用户操作比如“开始测试”“停止测试”“选择配置文件”它不干任何测试动作只是把命令打包发进队列。测试执行循环消费者则从队列里取命令执行对应的状态逻辑比如初始化仪表、进入某个测试项、判定结果、生成报表。两边各跑各的互不阻塞。为什么这么拆我最初犯过一个典型错误把测试动作直接放在按钮的事件框图里。结果就是点一下“开始测试”整个界面就冻结了鼠标转圈用户想中途停止都做不到更别提实时刷新进度了。拆成生产者和消费者之后界面永远流畅测试动作在后台执行用户随时能发一个“停止”命令进去这才是自动化测试软件该有的体验。2.3 状态机与数据流让程序不再变成一团乱线状态机负责的是“当前系统处于什么阶段”。这套系统的状态我划分成上电自检、参数加载、测试执行、暂停等待、异常处理、停止清理。每个状态对应一段处理逻辑用枚举类型做转移条件代码结构非常干净。数据传递方面我强烈不建议在LabVIEW程序里到处摆全局变量去传“当前测试结果”“仪器句柄”这类数据小程序看着方便但程序一大就会崩溃式地不可维护。我采用的是队列和功能全局变量组合的方式命令走队列数据通过功能全局变量或数据引用在各线程间共享同时加锁保护。这个架构真正稳定下来之后“简约”的感觉就出来了加测试项不用去翻两三层的子VI改仪器型号只动初始化模块用户界面和测试流程完全解耦。后面我再要扩展远程监控时几乎不用碰原有的核心代码这波重构的收益是一劳永逸的。3. 核心功能模块的实现要点3.1 测试序列引擎让流程变成可配置电源测试的流程本质上是“一串测试项按顺序执行每项设置仪器参数、读数据、与上下限比较、记录结果”。我把这套流程做成了可配置的测试列表而不是把测试流程硬编码在程序里。配置格式我用的是简单明确的文本表格列包括测试项名称、仪器动作设置电源为某电压、电子负载设某电流、延时时间、采样次数、上下限、单位、失败后是否继续等。测试序列引擎在运行时一行行解析并执行每完成一项就把这项的原始数据和判定结果写入结果缓存。核心逻辑用伪代码描述大概是这样的for each test step in testList: 配置仪器电源、负载、万用表或示波器 延时等待电源稳定 采集并计算测量结果电压/电流/纹波/效率等 判定判定若结果在上下限内则PASS否则FAIL 把结果写入结果文件与界面表格 若FAIL且配置为“终止模式”则停止后续测试这个方式的好处非常明显更换被测电源型号时我只需要调配置文件不需要改任何程序代码。产线上出现细微指标的差异研发人员自己就能更新配置文件而不用等软件工程师改版本。这就是“可配置化”带来的实效。做这个引擎时有几个细节必须提醒第一每个测试项之间的仪器状态要复位彻底比如电子负载如果上一个测试项是过流保护测试下一个测试项开始前一定要把负载设回安全CC值否则拉载电流和预期不符直接导致误判。第二延时时间的设置不能凭感觉电源输出滤波电容不同稳定时间差别很大。通用做法是测一下电压建立时间设置成这个时间的两倍以上。3.2 纹波采集与分析数据怎么算才可信纹波噪声测量是电源测试里最容易“公说公有理”的项目。为了拿到可信的数据我做了三件事标准测量条件、自动波形处理、明确结果指标。测量条件方面示波器通道要设置成交流耦合带宽限制按需要切换。测纹波时通常打开20MHz带宽限制因为无限宽带会把空间耦合的高频噪声也采进来导致数据失真测高频噪声时则关闭带宽限制。探头尽量用短地线弹簧探头减小地环路引入的噪声。探头前端还可以并联一个10nF陶瓷电容做高频滤波这个做法在电源纹波测量里比较常见但要注意电容的谐振频率不然反而引入误差。波形处理上我采集一段足够长的波形后用LabVIEW内置的波形测量函数做运算。计算流程是把波形中的直流分量去掉然后计算均方根值和峰峰值。程序框图的思路大致是获取波形数据 减去直流偏置去均值 计算RMS值sqrt(mean(x^2)) 计算峰峰值max(x) - min(x) 输出结果并写入报告细节上要留心两点采样率要足够高才抓得住噪声的峰值一般取示波器当前时基下的最大采样率采集时长建议至少覆盖数个开关周期如果电源是100kHz开关频率10ms的采集窗口能包含1000个周期统计意义上的峰峰值也更稳定。3.3 报表生成与数据管理别让数据躺在Excel里测试做完数据要变成能交出去的报告。我在这套系统里实现了两种输出详细Excel报表和存档回路的数据库记录。Excel报表用LabVIEW的报表生成工具包实现包括测试项列表、结果数据、判定结论、测试时间、被测模块条码、测试人信息。这里有个细节结果数据里的数字精度要固定不能出现某个电压项显示1.234V、另一个显示4.5V的情况否则报告会很乱。我会在写表前把数值统一格式化为固定小数位并带上单位。数据库记录我用的是轻量级的嵌入式数据库比如SQLite之类的方案。每次测试跑完后自动插入一条记录记录内容比Excel更完整包含原始波形文件路径、配置文件版本、仪表校准日期等追溯信息。这样做的好处是后续如果出现客户投诉“某批次电源一致性差”我能在数据库里快速筛出该批次的原始测试数据甚至调出波形文件重新分析省去了翻纸质记录的痛苦。报表模块的设计也遵循“可配置化”原则表头、测试项目名称、判定标准等字段都可以在配置文件中调整不至于因为报告格式变化就改动程序。4. 实操中的常见问题与排查思路4.1 通信问题排查仪器半天连不上做这套系统时几乎人人都遇到过仪器通信失败的报错。第一次是电子负载连不上程序卡在VISA写入阶段超时弹窗报错。排查这类问题我的固定套路是先分清是硬件层、链路层还是软件层的问题。先把仪器的通信方式确认一遍GPIB的要检查地址是否和软件里设置一致串口的要核对波特率、数据位、停止位、奇偶校验。USB的要看驱动是否安装正确VISA资源名称是否指向了实际设备。建议写一个最小化的“查询仪器ID”脚本只有两步打开会话、发送识别查询并读回字符串。如果这步通了再往上接业务逻辑。另外有一个经验是台式仪器开着本地锁键状态时远程命令会被拒收。有一次我排查了快一小时才发现是仪器的前面板按键锁被打开了。所以初始化流程里最好加入一行“复位到远程控制模式”的指令这类问题就能提前规避。4.2 测量重复性差同一个电源前后两次结果对不上如果测试系统每次跑出来的电压值都不一致问题往往不在电源本身而在测量设置和线缆。第一要检查的是万用表的NPLC设置。NPLC代表积分时间积分时间越长抑制噪声能力越强读数越稳定但速度越慢。用6位半万用表测电压时NPLC至少设置到10即0.2秒积分时间。如果要求更高精度可以设到100但这意味着每次读数要2秒以上测试速度就会明显下降。这是一个精度和速度的权衡。第二要检查的是线缆和连接方式。电流拉载如果通过长电源线线上的压降直接进到被测电源的输出端导致采集点电压偏低。解决方案是使用四线开尔文接法负载电流走粗线电压检测走单独的采样线。电源和电子负载之间也是同样道理。4.3 判定逻辑问题程序说FAIL但用手动仪表测是好的自动化测试里最让人抓狂的就是自动判定失败而手动测量正常。这类问题我遇到过几种典型原因。一种是限值单位不一致。有人在配置表里写纹波上限是“50mV”但实际计算结果单位是“V”0.05和50差着三个数量级。这种问题只能靠规范化单位去根治配置文件里每一项强制带单位程序里读取后统一换算成内部基准单位。另一种是对浮点精度处理不力。比如判定条件是“电压不超过5.0000V”实际测量结果因为浮点运算可能是5.0000001V结果被判FAIL。解决方法是给判定阈值加一个容差带也就是实际判定时用“上限一个相对或绝对小量”来容纳浮点误差这样不会误判也不会放过真正超限的产品。为了把这些问题沉淀成经验我整理了一份常见问题速查表现象常见原因解决思路仪器通信超时地址错误、锁键、驱动异常用ID查询最小化脚本逐层排查电压读数跳动NPLC太低、线缆压降提高NPLC改四线接法纹波数据异常大探头地线太长、带宽限制未开用短地弹簧探头按标准开20MHz限制判定结果与手动不符单位不一致、浮点误差统一单位换算阈值加容差带界面卡死测试动作阻塞了UI线程改成生产者-消费者架构这张表我后来直接用到了培训文档里新同事接手这套系统时遇到问题先查这个表大部分情况都能半小时内定位。5. 从简约走向强大那些值得尝试的扩展5.1 远程监控与操作单机版系统跑通之后最值得做的第一个升级是远程监控。LabVIEW自带了网络发布工具可以把前面板界面发布到网页上用户通过浏览器就能看到当前测试状态和结果。要注意的是远程操作涉及权限控制不要开放所有控制按钮只放开“开始”“停止”“查看结果”这几个安全的操作项完整配置必须在本地电脑手里。如果测试现场有专门的数据服务器也可以把测试结果通过TCP/IP或HTTP推送上去方便多工位集中查看。5.2 多通道并行测试产线上如果同时测多块电源最直观的思路是把测试流程复制成多份每个工位一个测试线程。但这里要小心资源冲突仪器都是共享的不能让两个线程同时操作同一个电子负载。我的方案是给每台仪器加一个“占用标志”线程开始时抢占资源用完立即释放。这样虽然会有等待时间但测试稳定性远比粗暴并发重要。并行化之后测试系统的吞吐量上来了报告的编号管理和测试数据的防混淆反而成了重点工作。每条测试记录要带有工位号、时间戳和模块条码缺一不可。5.3 与产线其他系统打通再往后这套系统要想跟产线管理系统、质量追溯平台对接核心是数据格式的统一。我在实现时定义了标准的输出数据格式每条记录包含条码、测试时间、测试项、测量值、单位、上限、下限、判定结果。对接时不需要改主程序只需要写一个转换模块把数据推到中控数据库。这个阶段“简约”架构的好处会体现得非常充分因为主流程不依赖任何特定数据库或网络协议所有外部依赖都做成了独立模块换对接方只要改那一个模块就行了。最后再分享一点个人体会我搭这套系统最深的感受是简约不等于简单而是每一层边界清楚、职责分明。程序少写几行不算本事真正难的是让别人包括三个月后的自己还能一眼看懂测试逻辑、轻松定位问题。LabVIEW在电源测试系统上的优势不在于花哨的控件和动画而在于它把人从重复劳动里解放出来让工程师有时间去分析数据、优化产品这才是它作为测试利器的价值所在。

相关新闻

多无人机分布式相机网络协同监控:交互式覆盖与目标跟踪

多无人机分布式相机网络协同监控:交互式覆盖与目标跟踪

人站在高处拿一台相机往下扫,永远只能盯住一个方向,镜头转到东边就看不到西边。把几十架无人机同时升空,每架都挂一个摄像头,再把它们看到的画面拼起来,听起来就是“无人机相机网络”。但真正做过的人都知道&#xff0…

2026/10/11 9:21:36 阅读更多 →
第146篇View.post 为什么能拿到宽高:与 Handler 的关系

第146篇View.post 为什么能拿到宽高:与 Handler 的关系

先把结论放在前面:View.post 能拿到宽高,是因为它的 Runnable 被挂到了主线程消息队列的尾部,而 performTraversals(measure → layout → draw)是在当前这一轮消息处理中同步完成的。 换句话说:post 出去的 Runnable 排在"下一帧"执行,而布局是在这一帧内做完…

2026/10/11 9:20:35 阅读更多 →
代码质量自动化实践:impeccable规则分层与增量门禁

代码质量自动化实践:impeccable规则分层与增量门禁

一说项目名字叫 impeccable,好几个人第一句话就问:这名字是不是太狂了?其实它不是给自己贴金的口号,而是我在做代码质量自动化这套东西时,最想去逼近的一个状态——让代码在每一次改动之后,仍然保持“无可挑…

2026/10/11 9:20:35 阅读更多 →

最新新闻

CRF序列标注原理与实战:从全局最优解到工业级部署

CRF序列标注原理与实战:从全局最优解到工业级部署

/* 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 1:01:48 阅读更多 →
Kibana汉化配置全解析:i18n.locale设置与版本兼容性指南

Kibana汉化配置全解析:i18n.locale设置与版本兼容性指南

/* 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 1:01:48 阅读更多 →
FusionAccess虚拟桌面发放流程详解:从模板到用户登录的全链路拆解

FusionAccess虚拟桌面发放流程详解:从模板到用户登录的全链路拆解

/* 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 1:01:48 阅读更多 →
Hibernate No identifier异常:实体缺少@Id的原因排查与修复全指南

Hibernate No identifier异常:实体缺少@Id的原因排查与修复全指南

/* 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 1:01:48 阅读更多 →
进口变压器替换厂家怎么选?参数对照与CE认证全流程指南

进口变压器替换厂家怎么选?参数对照与CE认证全流程指南

/* 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 1:01:48 阅读更多 →
claude-mem:为Claude Code打造自动跨会话记忆层

claude-mem:为Claude Code打造自动跨会话记忆层

最近一段时间一直在折腾一件事:让Claude Code在隔了一个晚上之后还能记得我昨天说过“这个模块用Python重写”以及“测试文件统一丢到tests目录”。中间试过各种“外置记忆”方案,最后真正解决问题的,是一个叫claude-mem的开源项目。claude-m…

2026/10/13 1:00:47 阅读更多 →

日新闻

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

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

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

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/12 0:16:30 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

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

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

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

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

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

2026/10/12 0:16:43 阅读更多 →

月新闻

我发现了一个新思路:用 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/12 14:48:49 阅读更多 →
黑夜航拍船只数据集训练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 阅读更多 →