发布时间:2026/7/18 18:19:51
start_button_Click() 批量自动测试按钮代码完整解析 start_button_Click() 批量自动测试按钮代码完整解析笔记一、函数整体定位本函数是批量自动测试模式的切换开关逻辑界面上同一个按钮承担「启动批量调试 / 停止批量调试」双重功能依靠全局布尔变量autoTestCtrl区分当前状态点击「开始批量调试」autoTestCtrl false停止态从全局配置加载全套测试参数并同步展示到界面根据模块型号自动匹配对应光功率调试算法执行全流程前置校验仪器连通性、参数上下限合法性、数据库连接、功能配套设备全部校验无报错后开启自动批量模式工人仅需循环插拔模块程序自动识别并执行初测/终测。点击「停止批量调试」autoTestCtrl true运行态关闭自动测试开关恢复界面控件可编辑状态结束自动插测循环。二、逐段代码详细拆解段1历史废弃注释代码版本迭代留存//TestSet.txapc_Min Convert.ToUInt16(GlobalVarFun.apc_min.ToString().Trim());//TestSet.txapc_Max Convert.ToUInt16(GlobalVarFun.apc_max.ToString().Trim());//TestSet.txmod_Min Convert.ToUInt16(GlobalVarFun.mod_min.ToString().Trim());//TestSet.txmod_Max Convert.ToUInt16(GlobalVarFun.mod_max.ToString().Trim());说明早期版本中APC/MOD电流调试区间在此处从全局变量赋值给测试结构体TestSet后续架构调整参数统一从配置文件/Access数据库初始化本段逻辑废弃保留注释为版本回溯使用便于开发人员查看历史实现思路。段2规格参数同步展示至界面文本框txpwr_min_textBox.TextTestSet.txPwr_Min.ToString(F1);txpwr_max_textBox.TextTestSet.txPwr_Max.ToString(F1);bias_min_textBox.TextTestSet.bias_Min.ToString(F1);bias_max_textBox.TextTestSet.bias_Max.ToString(F1);er_min_textBox.TextTestSet.txEr_Min.ToString(F1);er_max_textBox.TextTestSet.txEr_Max.ToString(F1);文本框绑定参数含义单位txPwr发射平均光功率上下限dBmbias激光器APC偏置电流上下限mAer发射消光比ER合格区间dBToString(F1)数值格式化统一保留1位小数界面展示规整数据源结构体TestSet参数预加载自配置窗体Setup_Form或本地Access配置库业务作用产线操作人员启动前可视化核对当前测试规格确认参数方案无误。段3DDM误差容限全局配置加载//TestSet.rxlos_Min Convert.ToUInt16(GlobalVarFun.los_min.ToString().Trim());//TestSet.rxlos_Max Convert.ToUInt16(GlobalVarFun.los_max.ToString().Trim());rxPwrMaxErr(float)(GlobalVarFun.rx_cal_num);// 接收光功率DDM允许误差txPwrMaxErr(float)(GlobalVarFun.tx_cal_num);// 发射光功率DDM允许误差erValMaxErr(float)(GlobalVarFun.ER_cal_num);// 消光比允许误差LOS阈值上下限赋值逻辑已迁移至其他初始化位置本段注释留存三类校准误差阈值从全局配置读取全流程复用rxPwrMaxErr接收DDM上报光功率与仪器真值最大允许偏差典型±1dBtxPwrMaxErr发射DDM光功率上报误差上限erValMaxErr消光比实测值与标准值允许偏差使用场景初测校准判定、终测精度校验环节做合格阈值比对。段4TX预加重默认值、眼图波形叠加点数赋值TestResult.txpeVal(Byte)(GlobalVarFun.tx_pe);TestResult.waveforms_countConvert.ToInt32(GlobalVarFun.waveforms_num);txpeValTX预加重Pre-emphasis出厂默认补偿系数存入测试结果结构体初测完成后写入模块寄存器补偿PCB高速信号高频损耗waveforms_count眼图仪86100D波形叠加累计数量数值越大平均降噪后眼图波形越稳定、测量精度越高但单次眼图采集耗时更长该参数是终测眼图模板功能前置校验的判断依据。段5按模块封装类型自动切换光功率调试算法if(GlobalVarFun.moduleTypeQSFP){GlobalVarFun.txpwr_debug_method0x00;// 默认线性计算法if(GlobalVarFun.cob_ld){// 0x00:线性计算法 apc--uw bias// 0x11: 普通二分法 apc--dBm// 22: 定值法 COB-LDGlobalVarFun.txpwr_debug_method0x11;// COB-LD封装用二分法// 0x00:普通二分法 0x11: 逐步逼近法 for COB-LDGlobalVarFun.txer_debug_method0x00;}}算法区分逻辑标准普通QSFPtxpwr_debug_method 0x00线性法假设激光器DAC电流与输出光功率呈近似线性正比通过一次比例运算直接算出目标DAC值调试速度快适配线性度良好的普通TOSA器件。COB-LD板上芯片封装cob_ld trueCOB封装激光器P-I发光曲线非线性严重线性法精度不足切换二分迭代搜索法0x11消光比ER调试统一使用普通二分法0x00。设计优势一套测试程序通过全局标识自动适配多硬件工艺模块无需修改核心测试流程兼容性更强。段6终测专属眼图模板前置校验if(GlobalVarFun.testTypefinalTest){if((TestResult.waveforms_count100)(eyeMaskIsOpenedfalse)){MessageBox.Show(眼图模板未打开不能进行眼图累计点测试请重新连接86100 请确认,警告,...);return;}}判断规则波形叠加数≥100代表本次流程需要执行眼图模板Mask质检若眼图仪模板功能未开启弹窗告警直接拦截启动初/终测差异化逻辑初测核心目标是参数整定波形允许临时超标不强制校验眼图模板终测为出厂出货质检波形必须完全符合行业协议模板规范因此增加强制校验关卡。段7调试参数上下限合法性校验防御性编程if((TestSet.txapc_MaxTestSet.txapc_Min)||(TestSet.txmod_MaxTestSet.txmod_Min)||(TestSet.rxlos_MaxTestSet.rxlos_Min)){MessageBox.Show(APC/MOD/LOS调试范围设置错误(maxmin) 请确认,警告,...);return;}校验三组核心DAC搜索区间APC偏置电流、MOD调制电流、LOS告警阈值若配置时人工填反数值最大值 最小值直接终止启动避免调试循环逻辑异常、硬件DAC超区间烧毁器件。段8本地Access配置数据库连通校验if(GlobalVarFun.access_connect_statusfalse){MessageBox.Show(Access数据库连接失败 请确认,警告,...);return;}两套数据库分工Access本地库.mdb存储测试方案、规格阈值、调试区间配置SQL Server服务端库存储每一只模块完整生产测试记录用于出厂追溯配置库断开则所有参数无法读取禁止启动测试。段9接收Rx通道配套仪器、参数前置校验if(autoTestCtrlfalse)// 当前为停止状态本次点击动作是启动批量测试{if(GlobalVarFun.rx_ddm_test){// 9.1 DDM校准必备硬件校验光衰减器 光功率计if((GlobalVarFun.optoAtt_connectedfalse)||(GlobalVarFun.optoMeter_connectedfalse)){MessageBox.Show(请先连接光衰减器和光功率计,警告,...);return;}// 9.2 全量参数合法性校验标记if(GlobalVarFun.testDataIsOKfalse){MessageBox.Show(测试参数设置异常无法启动批量测试 请先进行 参数设置校验 ,...);return;}// 9.3 灵敏度测试必备误码仪BERT校验if(GlobalVarFun.sen_test){if(GlobalVarFun.pssbert_connectedfalse){MessageBox.Show(使用灵敏度测试请先连接误码仪,警告,...);return;}}}}DDM校准硬件要求光衰减器多档位精准衰减光功率生成标准校准光信号光功率计读取真实光功率真值作为DDM系数计算基准testDataIsOK校验标记操作人员在配置界面完成参数填写后必须执行「参数设置校验」全部规格合法后该标识才会置true防止错误配置流入产线灵敏度测试硬性依赖BERT误码仪产生PRBS测试码、长期统计比特误码率无设备则无法判定弱光接收性能。段10发射Tx通道仪器连通性分层校验if(GlobalVarFun.tx_test){// 10.1 眼图仪86100D连通校验初测强制终测宽松if(GlobalVarFun.instrument_connectedfalse){if(GlobalVarFun.testTypefirstTest){MessageBox.Show(请先连接眼图仪,警告,...);return;}else{MessageBox.Show(终测发射只测试发光功率不进行发射眼图参数测试,提示,...);// 终测无眼图仪仅提示不拦截流程}}// 10.2 光功率采集方式二选一校验if(GlobalVarFun.optoMeter_connectedfalseGlobalVarFun.power_use_DACfalse){MessageBox.Show(请先连接光功率计,警告,...);return;}// 10.3 DAC估算功率模式必须配套眼图仪if(GlobalVarFun.power_use_DACtrueGlobalVarFun.instrument_connectedfalse){MessageBox.Show(使用眼图仪测试发光功率请先连接眼图仪,警告,...);return;}}眼图仪差异化规则初测强制连接ER消光比自动调试需要仪器实时测量数值无设备无法完成整定终测可无设备仅用光功率计校验平均功率ER通过寄存器参数间接复核仅弹窗提示不阻断发射功率两种采集模式必须满足至少一种外接光功率计实测精度高量产标准方案DAC数值估算依靠寄存器电流换算功率速度快、精度偏低两种设备均未连接则无法获取功率拦截启动DAC估算模式附加约束ER消光比仍需眼图仪测量因此该模式下仪器不可缺失。段11全部校验通过切换至自动批量运行状态GlobalVarFun.sql_record_statusGlobalVarFun.sql_connect_status;autoTestCtrltrue;// 标记自动测试运行中btnSetup.Enabledfalse;// 禁用参数设置按钮start_button.BackColorColor.GreenYellow;// 主按钮变色start_button.Text停止批量调试;// 切换按钮文字Startautoset_button.BackColorColor.Orange;// 单测提示灯变色Startautoset_button.Text自动批量测试启动请插入模块......;txMustDebug_checkBox.Enabledfalse;// 锁定调试选项复选框状态变更逻辑sql_record_status同步SQL数据库连接状态仅数据库正常连通时才允许存储测试记录autoTestCtrl true核心开关后台轮询逻辑持续检测模块I2C在位信号识别到新模块自动执行初/终测流程UI锁定防护批量运行期间禁用参数设置、调试选项防止操作人员中途修改配置导致测试异常多控件变色文字提示给产线直观视觉反馈明确当前等待插模块状态。批量自动运行循环流程启动批量模式(autoTestCtrltrue) ↓ 循环检测模块硬件在位信号 ├─ 检测到模块插入 → 自动执行FirstTestProcess / FinalTestProcess ├─ 测试完成红绿提示区分OK/NG ├─ 检测到模块拔出 └─ 回到等待插入状态持续循环段12else分支 — 停止自动批量测试else// autoTestCtrl true当前处于运行态点击执行停止逻辑{autoTestCtrlfalse;// 关闭自动测试总开关btnSetup.Enabledtrue;// 恢复设置按钮可编辑start_button.BackColorColor.Gray;// 主按钮置灰start_button.Text开始批量调试;// 还原按钮文字Startautoset_button.BackColorColor.OrangeRed;Startautoset_button.Text自动批量测试已停止......;txMustDebug_checkBox.Enabledtrue;// 解锁调试复选框}autoTestCtrl false关闭自动插测循环不再响应模块插入信号全部UI控件恢复初始可操作状态允许修改测试参数补充说明停止指令不会强行中断当前正在运行的模块测试需等待单模块测试流程执行完毕后才会完全退出自动模式。三、启动前置校验汇总对照表序号校验项目触发校验条件校验失败处理逻辑1眼图模板功能开启校验终测流程 波形叠加数≥100弹窗警告直接阻止启动2APC/MOD/LOS区间合法性每次启动批量测试必检弹窗警告直接阻止启动3Access本地配置库连通每次启动批量测试必检弹窗警告直接阻止启动4光衰减器光功率计连通开启Rx DDM校准功能弹窗警告直接阻止启动5全局参数校验标记testDataIsOK开启Rx通道测试弹窗警告直接阻止启动6BERT误码仪连通校验开启接收灵敏度sen_test弹窗警告直接阻止启动786100D眼图仪连通校验开启Tx发射测试 流程为初测弹窗警告直接阻止启动8光功率采集设备二选一校验开启Tx发射测试弹窗警告直接阻止启动9DAC估算模式配套眼图仪Tx测试 启用DAC估算功率弹窗警告直接阻止启动四、项目配套仪器设备总表仪器名称连通标识变量产线测试用途光衰减器optoAtt_connectedDDM校准、灵敏度测试精准调节输入光功率光功率计optoMeter_connected读取光功率真值DDM校准、发射功率判定基准BERT误码仪pssbert_connected生成PRBS码型、统计误码率接收灵敏度测试必备Keysight 86100D眼图仪instrument_connected测量ER、抖动、眼高眼宽、眼图模板质检、初测ER整定光路光开关optoSwitch_connected4通道光路自动切换SQL Server数据库sql_connect_status存储每只模块完整生产测试记录用于出厂追溯Access本地配置库access_connect_status存储测试规格、调试区间、全局参数配置五、代码整体设计亮点总结Toggle切换按钮设计单按钮复用依靠autoTestCtrl布尔状态区分启停简化界面布局降低操作人员学习成本。多层前置安检关卡启动前逐项校验仪器、参数、数据库提前拦截配置/硬件故障避免测试中途报错、产线节拍浪费。全局配置灵活适配通过GlobalVarFun各类功能开关一套程序兼容普通QSFP、COB-LD多封装模块区分初测/终测两套质检逻辑。全链路防御性编程参数上下限反向校验、硬件连通性校验规避人工配置失误、仪器断连造成硬件损坏、批量不良流出。差异化初/终测约束针对调试阶段、出货质检阶段设计不同仪器强制规则兼顾调试灵活性与出厂质量管控标准。多算法自适应调度内置线性法、二分法光功率调试算法自动根据模块封装工艺切换适配不同激光器硬件特性。

相关新闻

2026/7/18 18:19:51

运放电路设计:同相与反相放大的工程应用指南

1. 运放电路设计的基本选择:同相与反相 作为一名硬件工程师,我设计过上百种运放电路,但每次面对新项目时,同相放大和反相放大这两个基础拓扑的选择依然需要仔细权衡。这两种看似简单的电路结构,在实际工程应用中却有着…

2026/7/18 18:14:51

解锁Windows家庭版远程桌面多用户连接:RDP Wrapper全面指南

解锁Windows家庭版远程桌面多用户连接:RDP Wrapper全面指南 【免费下载链接】rdpwrap RDP Wrapper Library 项目地址: https://gitcode.com/gh_mirrors/rd/rdpwrap 你是否曾因Windows家庭版限制而无法实现多人同时远程连接?RDP Wrapper Library为…

2026/7/18 19:39:55

当工作场所需安全防护,如何利用安全地毯降低风险?

安全地毯在现代工作环境中扮演着重要的角色,它的设计为了为员工提供安全的工作体验。通过将其铺设在机械设备周围,安全地毯可以迅速感应到操作人员的足部压力,触发警报,进而有效减少事故发生的可能性。这种装置不光能及时响应&…

2026/7/18 19:39:55

AnimateDiff + ControlNet 视频生成工作流完全拆解

2026 年,AI 视频生成已经不再是实验室里的新鲜事。但如果你试过直接用 AnimateDiff 生成动画,大概率会遇到这样的问题:人物动作僵硬、肢体扭曲、画面闪烁——明明提示词写得天花乱坠,出来的效果却像喝醉了的木偶戏。 问题出在哪里?AnimateDiff 擅长让画面“动起来”,但它…

2026/7/18 19:39:55

STM32MPU与YOLOv8嵌入式AI部署实战指南

1. 为什么选择STM32MPU与YOLOv8组合?在嵌入式AI领域,硬件选型与算法模型的匹配度直接决定了最终部署效果。STM32MPU系列(特别是STM32MP2)搭载专用NPU加速器,提供2-3 TOPS的算力,而YOLOv8作为Ultralytics最新…

2026/7/18 19:39:55

S7-1200 PLC基础配置与通信优化指南

1. S7-1200 PLC基础配置概述 西门子S7-1200系列PLC作为中小型自动化控制系统的核心设备,其CPU模块的合理配置直接关系到整个控制系统的稳定性和性能表现。在实际工程应用中,我们需要根据具体控制需求对CPU进行全方位的参数设置,这些设置主要包…

2026/7/18 19:39:54

西门子S7-1200计数器CTU指令详解与应用实践

1. 西门子S7-1200计数器基础认知在工业自动化控制领域,计数器是实现设备动作次数统计、工艺流程控制的基础功能模块。西门子S7-1200系列PLC作为中小型自动化项目的首选控制器,其计数器功能的设计既遵循IEC标准又具备独特的实现方式。与早期S7-200系列不同…

2026/7/18 19:34:54

Nebula 1.7.0:分享与效率双线更新,公开直链 + Cmd/Ctrl+K 命令面板

Nebula 1.7.0 聚焦分享与效率两条线。分享侧:对象可设为公开读并复制一个不会过期的永久公共直链,还能给每个账号配自定义域名 / CDN,直链走你自己的域名。效率侧:新增 Cmd/CtrlK 命令面板(输入即跳转账号 / 收藏,空输入先列最近访问)、收藏夹(收藏常去的桶 / 前缀一键跳回)与最…

2026/7/17 5:59:06

3步解锁音乐自由:ncmdumpGUI终极NCM文件解密转换指南

3步解锁音乐自由:ncmdumpGUI终极NCM文件解密转换指南 【免费下载链接】ncmdumpGUI C#版本网易云音乐ncm文件格式转换,Windows图形界面版本 项目地址: https://gitcode.com/gh_mirrors/nc/ncmdumpGUI 你是否曾在网易云音乐下载了心爱的歌曲&#…

2026/7/18 10:53:38

CANoe 19 SP3 配置 GB/T 27930-2023 A类系统:3步搭建BMS仿真测试环境

CANoe 19 SP3 配置 GB/T 27930-2023 A类系统:3步搭建BMS仿真测试环境随着新能源汽车行业的快速发展,充电通信协议的标准化和测试验证变得尤为重要。GB/T 27930-2023作为中国智能充电协议的最新版本,对充电机与电动汽车之间的通信提出了更严格…

2026/7/17 7:39:19

3步搞定RTL8852BE驱动:从零开始配置Wi-Fi 6网卡

3步搞定RTL8852BE驱动:从零开始配置Wi-Fi 6网卡 【免费下载链接】rtl8852be Realtek Linux WLAN Driver for RTL8852BE 项目地址: https://gitcode.com/gh_mirrors/rt/rtl8852be 还在为Linux系统无法识别RTL8852BE Wi-Fi 6网卡而烦恼吗?&#x1f…

2026/7/18 0:00:24

某智驾大牛创业

作者:钟声编辑:Mark出品:红色星际头图:智能驾驶图片据悉,国内某头部智驾公司端到端模型技术大牛Z投身创业,并且已经拿到融资。Z不仅是该头部公司内部最年轻的对标阿里P10级别技术负责⼈,更是业内…

2026/7/18 16:50:29

3个高效策略:快速掌握Axure中文界面配置

3个高效策略:快速掌握Axure中文界面配置 【免费下载链接】axure-cn Chinese language file for Axure RP. Axure RP 简体中文语言包。支持 Axure 11、10、9。不定期更新。 项目地址: https://gitcode.com/gh_mirrors/ax/axure-cn 还在为Axure RP的英文界面感…