start_button_Click() 批量自动测试按钮代码完整解析

发布时间:2026/9/12 14:45:13

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/9/11 16:08:36

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

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

2026/9/6 16:10:11

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

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

2026/9/12 18:45:58

微信小程序云开发实战:情侣任务与积分商城从0到1

简介:面向微信小程序开发者和云开发初学者,这份源码实现了一款情侣互动小程序:双方通过发布任务、确认完成、赚取积分、商城兑换商品的闭环进行互动,并对积分增减做了防单方作弊限制,保证公平性。压缩包内共2008个文件…

2026/9/12 18:45:58

短剧封面和标题重要吗?难道只有社媒才需要吗?

短剧封面和标题重要吗?难道只有社媒才需要吗? 封面和标题不是社媒专用的点击技巧。只要观众要在多个内容中做选择,它们就在承担识别、承诺和导航任务。封面和标题不是社媒专用的点击技巧。只要观众要在多个内容中做选择,它们就在承…

2026/9/12 18:45:58

短剧交付包里通常要包含什么:净版、SRT、音轨和成片

短剧交付包里通常要包含什么:净版、SRT、音轨和成片 一条能播放的成片只够完成当次观看。要继续改语言、换字幕、重做配音或交给不同渠道,还需要保留能回到上一步的文件和说明。一条能播放的成片只够完成当次观看。要继续改语言、换字幕、重做配音或交给…

2026/9/12 18:45:58

一键全自动,会是短剧译配的终点吗?

一键全自动,会是短剧译配的终点吗? 一键可以减少文件搬运和重复设置,却不能自动统一项目目标。输入、渠道和质量底线没有说清时,自动化只会更快复制同一种错误。一键可以减少文件搬运和重复设置,却不能自动统一项目目标…

2026/9/12 18:40:58

学生选课系统数据库设计:从ER建模到SQL Server存储过程与索引优化

简介:面向高校数据库课程设计的一份完整参考资源,课题为某高校学生选课系统的设计,适合正在学习数据库原理、需要完成课程设计报告与数据库实现的学生。压缩包共3个文件,分别是课程设计报告doc、数据库脚本sql和数据库备份bak&…

2026/9/12 2:05:33

超人会飞不算本事:系统稳定依赖清晰规则与边界设计

开头先不绕弯子。“#斯坦李吐槽dc 所以超人是无缘无故会飞的嘛哈哈哈哈哈哈哈锤哥真是技术人才啊!#雷神 #复联”这类调侃式短标题,第一波冲击力在于它把两个宇宙的角色塞进同一个吐槽箱里,但细想一下就能发现,它真正碰到的根本不是…

2026/9/12 3:55:12

超人VS蜘蛛侠:拆解超级IP的影响力与传播方法论

把“蜘蛛侠 vs 超人”放在 CSDN 上聊,可能很多人第一反应是走错片场了。但如果把这两个角色看成“两个持续运营了 80 多年的文化产品”,你会发现,这场比较本质上是两个不同 IP 策略的长期结果对比:超人赢在定义了整个超级英雄题材…

2026/9/12 10:09:03

基于CNN的调制信号识别:MATLAB实现时频图分类实战

简介:本资源是一套面向通信工程与信号处理方向学习者、研究者的深度学习实践方案,聚焦调制信号自动检测与识别这一典型无线通信任务,解决传统方法依赖人工特征、低信噪比下性能下降等痛点。压缩包共12个文件(10.73MB)&…

2026/9/12 0:04:17

MATLAB仿生优化框架:长鼻浣熊算法多策略融合实现

简介:本资源是一份面向智能优化算法研究者与MATLAB初学者的仿生智能算法实践代码包,聚焦于长鼻浣熊优化算法(COA)的多策略改进与性能验证。针对传统COA易陷局部最优、收敛精度不足等问题,作者融合Circle映射初始化提升…

2026/9/12 0:04:17

【JAVA毕设源码分享】基于 JavaWeb 的校园一卡通管理系统的设计与实现 基于 JavaWeb 的校园卡业务管理系统(程序+文档+代码讲解+一条龙定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/9/12 0:04:17

【JAVA毕设源码分享】基于 Java 的图书馆借阅管理平台的搭建与实现 基于 Java 的图书馆综合管理系统(程序+文档+代码讲解+一条龙定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/9/12 6:29:36

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/12 14:32:17

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/12 6:37:43

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
咨询二维码