尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

单线程测试模块

单线程测试模块
📅 发布时间:2026/7/1 6:54:40

SFP/QSFP光模块终测软件 3天吃透分步学习计划(新人友好,可落地,3天后能给同事讲清整套逻辑)

整体目标:搞懂程序启动→界面交互→初/终测双流程→I2C模块读写+仪表SCPI通信→结果判定+日志完整链路,能回答同事提问、简单改bug、看懂现有业务逻辑。
前置准备:打开VS加载QSFP模块终测检查软件.sln,只聚焦SFP模块终测检查软件项目文件夹,Backup、.vs、升级日志全部忽略。

第1天:搞懂项目整体结构 + 程序执行入口(半天就能完成,建立全局认知)

上午任务:梳理所有文件分工(30分钟)

对照之前的文件说明,逐个标注每个cs文件定位,自己在记事本简单填表:

文件名定位(界面/全局变量/业务/驱动/工具)核心作用一句话
Program.cs程序入口软件最先启动,控制打开登录窗体
Login_Form.cs界面层账号登录校验,登录成功跳转主测试页
Main_Form.cs主界面(核心)测试按钮、进度条、日志、初测/终测总流程入口
SetUp_Form.cs配置界面仪表IP、串口、上下限阈值配置页面
GlobalVarFun.cs全局变量全局模式、模块类型、报错信息、跨窗体共享数据
SFPTest.cs / TestQSFP.cs业务逻辑层封装所有单项测试步骤、参数判定OK/NG逻辑
I2C_xxx.cs底层驱动读写光模块寄存器,读取电压、电流、温度、DDM信息
KeysightB86120CS.cs仪表驱动SCPI指令控制是德仪表,收发测试数据
SimpleLogger.cs工具类界面打印日志、本地写入日志文件、异常收集
Common.cs / Bit.cs通用工具字节、16进制、字符串转换、校验计算

中午任务:跑通完整软件,肉眼看懂运行流程(30分钟)

  1. 点击VS启动按钮运行程序,记录全过程:
    ① 登录弹窗 → ② 进入主界面选择SFP/QSFP型号 → ③ 选择初测/终测模式 → ④ 点击开始测试按钮
    ⑤ 观察进度条、计时、日志文本框变化,看程序自动跑完所有步骤,最后出OK/NG结果
  2. 重点标记2个关键分支:
    • firstTest:初测流程入口函数FirstTestProcess()
    • finalTest:终测流程入口函数FinalTestProcess()

下午任务:顺着代码入口溯源,理清执行顺序(1.5小时)

  1. 打开Program.cs,看懂Application.Run(new Login_Form()),理解程序启动顺序
  2. 打开Login_Form.cs,找到登录按钮点击事件,看懂:账号校验通过后,关闭登录页、打开Main_Form主窗体
  3. 进入重中之重 Main_Form.cs
    • 找到【开始测试按钮】的Click点击事件(就是你截图里这段代码所在方法)
    • 逐行梳理这段逻辑:
      清空报错→修改按钮颜色文字→进度条初始化→判断testType分支→调用对应测试函数→测试结束统计耗时、停止计时器
    • VS小技巧:右键函数名 →转到定义,一键跳进FirstTestProcess()内部,不用手动翻找文件
  4. 今日收尾总结(写3行即可,方便对接同事)
    1. 软件是C# WinForms上位机,用于SFP/QSFP光模块产线单机终测
    2. 程序启动:登录页→主测试页,点击启动自动区分初测、终测两套测试流程
    3. 整体三层架构:界面交互层、测试业务逻辑层、硬件通信驱动层

第2天:深挖两大测试流程 + 全局变量逻辑(核心攻坚日,吃透业务)

上午:吃透全局变量GlobalVarFun.cs(40分钟)

把所有核心静态变量逐个弄懂用途,这是看懂分支判断的关键:

  1. GlobalVarFun.testType:字符串,firstTest=初测、finalTest=终测,决定走哪套流程
  2. GlobalVarFun.moduleType:区分当前被测模块是SFP还是QSFP,适配不同寄存器、测试阈值
  3. GlobalVarFun.errorMessage:字符串,收集所有测试不良原因,最终汇总展示不良信息
  4. 各类阈值变量:测试上下限,用来对比实测值,判断合格/不合格

中午:拆解初测 FirstTestProcess() 完整步骤(1小时)

  1. 进入函数内部,按顺序记录每一步动作:
    • 界面进度条赋值刷新
    • 第一步:仪表、I2C通信初始化(连接工装硬件,自检通信是否正常)
    • 第二步:读取光模块基础信息、SN序列号、厂商信息
    • 第三步:逐项执行TX发射参数测试、RX接收参数测试、DDM监控参数读取
    • 第四步:每一项测试完成自动和阈值对比,异常就拼接内容到errorMessage
    • 第五步:单步修改进度条,打印实时日志
  2. 遇到调用SFPTest/TestQSFP里的方法,用「转到定义」跳过去,看懂这个单项测试测什么指标

下午:拆解终测 FinalTestProcess() + 对比两个流程差异(1.5小时)

  1. 用完全相同方式梳理终测完整步骤
  2. 重点整理表格(你给同事讲解的核心素材)
    | 项目 | 初测 firstTest | 终测 finalTest |
    | ---- | ---- | ---- |
    | 测试定位 | 半成品来料初步检测 | 成品出厂最终全项检测 |
    | 测试项数量 | 少,部分关键项快速筛查 | 项目最全,完整合规检测 |
    | 判定严格度 | 宽松,排查明显坏品 | 严苛,所有指标必须落在阈值内 |
  3. 弄懂日志机制SimpleLogger:测试过程实时往文本框打印、同时本地存日志文件,方便追溯不良品
  4. 小实操验证(检验自己有没有看懂)
    在某一个测试步骤末尾加一行日志打印代码,运行软件,确认日志能按你的预想顺序输出,验证流程理解无误

第3天:吃透底层硬件通信 + 排坑 + 整理汇报文档(出师日,能独立接活、回复同事)

上午:两大底层驱动通信逻辑拆解(1.5小时)

1)I2C读写类(光模块内部寄存器交互)
  • 作用:光模块内部参数都存在I2C寄存器地址里,软件读寄存器拿到电压、电流、温度、偏置电流、告警状态
  • 看懂两个核心方法:读寄存器ReadI2C()、写寄存器WriteI2C()
  • 业务意义:所有DDM监控数据、模块基础信息全部来源于I2C读取
2)Keysight是德仪表SCPI驱动类
  • 通信方式:TCP Socket网络通信
  • 原理:软件发送标准SCPI字符串指令,控制光功率计、BERT误码仪、电源等仪表下发激励、采集实测数据
  • 举例:发送一条读取光功率指令,仪表返回数值,软件再做合格判定
  • 分清:I2C是和光模块本身通信;SCPI是和外部测试仪表通信

中午:梳理配置页面 SetUp_Form.cs(40分钟)

  1. 看懂配置项:仪表IP地址、端口、串口选择、各项测试上下限阈值
  2. 理解逻辑:配置参数保存后,全局变量读取配置,后续测试流程统一调用参数,不用硬编码写死数值

下午:整理整体总结文档 + 准备对接同事话术(1小时)

一、自己整理极简整体流程图(文字版即可)
程序启动→账号登录→主界面选择模块型号+测试模式(初/终测)→点击启动测试 ↓ 初始化I2C通信 + 是德仪表SCPI通信,连通硬件工装 ↓ 分支1(初测):逐项关键指标测试→数据对比阈值→收集不良信息→刷新进度+日志 分支2(终测):全项目完整检测→逐项判定OK/NG→汇总不良原因 ↓ 测试结束:统计总耗时、展示最终PASS/FAIL结果、自动保存本地日志
二、优缺点&现存认知疑问整理(得体问同事,不显得小白)

示例话术你可以直接用:

“哥,这三天我把这套QSFP/SFP终测软件完整梳理完了,整体是WinForms上位机,分登录+主测试+参数配置三个界面,业务上分初测、终测两套自动测试流程,底层靠I2C读模块寄存器、SCPI指令控制是德仪表做参数采集判定。
目前整体流程我已经理顺了,有两个小地方想请教你一下:
1、初测和终测当时设计删减测试项的具体业务考量是什么?
2、仪表异常断线重试这块现在有没有预留处理逻辑?
后续简单改流程、调整阈值、排查测试报错我可以自己接手处理,有复杂底层改动我再提前跟你沟通。”

收尾避坑规则(以后改代码不翻车)

  1. 前期只改界面文字、日志、进度条、阈值参数,不要随便修改I2C、SCPI底层收发逻辑,避免工装通信异常
  2. 修改代码前先复制备份原代码,改错可以回滚
  3. 看不懂的函数先标记记录,集中一次性提问,不要碎片化频繁打断同事

需要我帮你生成一份可直接复制使用的项目梳理Word版文案吗?你整理完直接发给这位同事,既体现工作主动性,也正式接手这个项目。

相关新闻

  • Mac M系列芯片完美运行Attu:解锁Milvus最佳GUI体验的完整指南
  • 把休学干预的价格打下来:坤和静界·春藤计划的OMO成本结构拆解
  • 别再只调encode了!用Hugging Face Tokenizer玩转中文分词、ID转换与可视化(附完整代码)

最新新闻

  • Platinum-MD:让经典MiniDisc焕发新生的跨平台革命性工具
  • 为什么你的AI代码审查工具总报假阳性?资深SRE揭秘模型微调+规则对齐的4层校准法
  • 如何快速重置JetBrains IDE试用期:开发者的终极解决方案
  • 别再硬啃原生WebGL了!用Three.js 10分钟搞定一个旋转3D立方体(附完整代码)
  • 用Python从零解析ARS548 4D毫米波雷达数据:一个完整的实战Demo(附可视化代码)
  • 【计算机毕业设计】基于Python的家具销售管理系统的设计与实现

日新闻

  • 2026年6月公司网站搭建最新热门渠道测评:四大低成本/零代码平台对比+避坑
  • 【Linux】Linux arm 编译QT程序,出现expected “}“报错
  • 【MATLAB例程】四基站二维AOA定位与距离辅助增强对比仿真。基于角度观测和测距修正的固定目标平面定位精度分析

周新闻

  • Windows字体自定义终极方案:No!! MeiryoUI完全指南
  • Deepin Boot Maker:告别命令行,3分钟制作Linux启动盘的智能解决方案
  • Plain Craft Launcher 2:重新定义你的Minecraft游戏体验

月新闻

  • 2026年6月公司网站搭建最新热门渠道测评:四大低成本/零代码平台对比+避坑
  • 【Linux】Linux arm 编译QT程序,出现expected “}“报错
  • 【MATLAB例程】四基站二维AOA定位与距离辅助增强对比仿真。基于角度观测和测距修正的固定目标平面定位精度分析

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号