当前位置: 首页 > news >正文

新的多线程测试模块

新项目框架搭建总结

一、已创建完整文件结构

QSFP_AutoTester/ ├── Drivers/ ← 驱动层(从旧项目搬过来 + 你新写的) │ ├── OTP12Driver.cs ← ✅ 你写的,直接复用 │ ├── SFP_EVB_Heater.cs ← ✅ 你写的,直接复用 │ ├── I2C_Heater.cs ← ✅ 你写的,直接复用 │ └── Keysight86120C.cs ← ✅ 波长计驱动(OTP没有波长计,需要保留) │ ├── Models/ ← 数据模型 │ ├── HardwareConfig.cs ← 🆕 核心!OTP各槽位板卡映射(OPM/VOA/ERM/SWITCH/BERT) │ └── GlobalConfig.cs ← 🆕 精简自旧 Common.cs,去掉串口/GPIB/并口 │ ├── Module/ ← 模块驱动 │ └── QsfpModule.cs ← 📋 从旧 TestQSFP.cs 搬来(需修改命名空间) │ ├── Services/ ← 业务逻辑层 │ ├── HardwareService.cs ← 🆕 统一封装所有硬件操作(每个模块线程持有一个实例) │ └── AttenuatorHelper.cs ← 🆕 衰减器校准点管理 │ ├── Workers/ ← 多线程工作单元 │ └── ModuleTestWorker.cs ← 🆕 一个线程测一个模块(含测试流程骨架) │ ├── Utils/ ← 工具类 │ ├── BitHelper.cs ← ✅ 从旧 Bit.cs 搬来 │ └── SimpleLogger.cs ← ✅ 从旧 SimpleLogger.cs 搬来(bug已修) │ └── TestEngine.cs ← 🆕 管理4个Worker并发运行

二、新架构核心设计思路

1. HardwareConfig.cs — 整个项目最重要文件

该文件是项目硬件资源映射字典,你现场实测的硬件槽位对应关系全部固化在此。

示例硬件映射配置:

// 测试模块1硬件通道分配光开关:SLOT-11,输入1→输出2光功率计:SLOT-05,通道1衰减器Tx:SLOT-07,通道1衰减器Rx:SLOT-09,通道1误码仪:SLOT-01// 测试模块3硬件通道分配光开关:SLOT-12,输入1→输出2光功率计:SLOT-05,通道3衰减器Tx:SLOT-08,通道3衰减器Rx:SLOT-10,通道3误码仪:SLOT-03

优势:后续现场硬件接线调整,仅修改此文件映射关系,无需改动业务流程数千行代码。

2. HardwareService.cs — 硬件操作统一入口

每个模块测试线程独立实例化HardwareService(moduleIndex),后续硬件调用极简,无需手动操作槽位:

hw.SwitchToModule();// 自动查表切换对应通道光开关hw.ReadTxPower();// 自动查表定位板卡、通道,读取发射功率hw.SetTxAttenuation(10.0);// 自动查表切换衰减器槽位,设置衰减值

对比旧代码:无需重复手写otp12.SetSlot("05")otp12.SetSlot("11")这类槽位切换代码。

3. 4线程并行测试架构

TestEngine.Start()内部并发逻辑:

for(intslot=1;slot<=4;slot++){varworker=newModuleTestWorker(slot,otp12,heater);tasks[slot-1]=Task.Run(()=>worker.RunAsync(cts.Token));}

功能:同时启动4条独立线程,同步测试4个槽位光模块,互不干扰。

4. 硬件资源并发安全性分析

硬件资源并发是否安全原因说明
加热台✅ 安全共用一条TCP连接,指令携带槽位参数区分模块
OTP-12综合测试仪✅ 安全共用TCP连接,通过SetSlot指定独立板卡通道
光开关 SWD2-02✅ 安全4个模块分配独立通道,无抢占冲突
衰减器 VOA✅ 安全共8路独立通道,4模块各占用Tx/Rx两路
误码仪 BE2-03✅ 安全4块独立硬件板卡,单模块独占一台
光功率计 OPM-04⚠️ 存在冲突仅单块板卡4通道,同一时间仅支持读取一路功率
⚠️ 光功率计并发冲突解决方案

旧代码为串行测试,无并发问题;4线程并行会出现资源抢占,需加线程锁限制访问:

// HardwareService 内部定义静态全局锁privatestaticreadonlyobject_opmLock=newobject();publicfloatReadTxPower(){SwitchToModule();// 切换光开关操作无冲突,无需加锁Thread.Sleep(200);lock(_opmLock)// 锁住光功率计访问,同一时刻仅单线程进入{_otp12.SetSlot("05");varresult=_otp12.OPM_ReadPower(channel);returnfloat.TryParse(result,outvarpwr)?pwr:-100f;}}

短板:加锁后读取功率环节退化为串行;
优化思路:错开4线程功率读取时机,模块测功率时其他线程执行消光比、I2C读写、衰减器调节等无冲突步骤。

三、当前待完成任务(按优先级排序)

第一步:适配 QsfpModule.cs 编译环境

TestQSFP.cs大量依赖旧全局类GlobalVarFun.XXX,需全部替换为新项目GlobalConfig.XXX

第二步:迁移旧版调试算法逻辑

ModuleTestWorker.cs内测试函数目前为空壳,逻辑从旧项目Main_Form对应函数复制迁移:

  1. RxApdDebug()— 来源旧AutoTestRxAPD()
  2. RxLosDebug()— 来源旧RxLosAutoSet()
  3. TxPowerDebug()— 来源旧AutoSetTxPower_MethodB()
  4. TxErDebug()— 来源旧AutoSetTxEr_MethodA()
    迁移要求:原有算法逻辑完全不变,仅将底层仪器调用替换为_hw.XXX()统一接口。

第三步:开发全新UI界面

新建WinForm窗口,界面布局:4个槽位独立面板,分别展示测试进度条、设备状态、实时运行日志。

四、分阶段工作安排

今日任务

  1. 打开HardwareConfig.cs,对照车间实际硬件接线,核对全部槽位映射配置;
  2. 打开HardwareService.cs,逐行校验每个硬件方法对应的OTP底层SCPI指令是否匹配。

明日任务

  1. 修改QsfpModule.cs文件命名空间,替换所有GlobalVarFun引用为新项目GlobalConfig
  2. 编写简易控制台测试程序,验证HardwareService能否正常读取光功率数值。

本周整体目标

  1. 完成RxApdDebug/RxLosDebug/TxPowerDebug/TxErDebug四大调试算法迁移;
  2. 单线程完整跑通单槽位光模块初测全流程;
  3. 改造代码实现4槽位多线程并发测试。
http://www.jsqmd.com/news/1153061/

相关文章:

  • 拒绝“天价”账单!当 AI 撞上 FinOps,联蔚盘云如何破解企业“算力焦虑”?
  • Elsevier Latex 模版获取方式
  • AI友好的接口设计:几点来自实践的思考
  • PyTorch transforms 图像预处理:ToTensor与Normalize的3个实战误区与代码还原
  • Stable Diffusion 1.5/XL 15款大模型横向评测:4类画风生成速度与显存占用实测
  • SOP行为检测案例分享:AI行为分析助力汽车玻璃质检效率
  • 3步搞定!在Windows上直接安装Android应用:APK Installer完全指南
  • 1月最全测评:2026年最好用的10款写小说工具(含避坑指南)
  • C++ VulKey 实现 31.5% 修复准确率,超越 GPT-5
  • java处理oracle数据库in查询超过1000条的方法
  • 鸿蒙新特性:Slider 滑块组件——构建图片滤镜调节器
  • 三步搞定国家中小学智慧教育平台电子课本下载:终极免费工具指南
  • 北京华恒智信为物业服务行业破解工程维修重复返修、低效运维难题
  • 3种场景下的OBS虚拟背景解决方案:obs-backgroundremoval完全指南
  • AIGC Agent技术解析:从核心原理到旅行预订项目实战
  • 系统可用率要求99%,大厂采购工业PDA,如何与海雅达签定制SLA?
  • QDD半直驱驱动器热管理实战:液冷方案如何将峰值扭矩输出提升30%
  • Sqribble:面向专业文档生产的规则驱动型文档操作系统
  • 18650 锂电池选型实战:从 3 大化学体系(NMC/LFP/LCO)到 5 个关键参数避坑
  • 小说续写润色工具,网文长篇创作AI辅助工具实操分享
  • ST-DBSCAN时空聚类:破解大规模移动数据中的模式识别挑战
  • Windows 10 PL2303驱动修复终极方案:让老旧串口设备重获新生
  • ASOC_Machine简要分析
  • 2025终极指南:如何用ImageToSTL快速将图片变成立体3D模型
  • 铝箔封口餐盒适合哪些场景?
  • 收藏!小白程序员必看:用数据和逻辑揭秘AI薪资翻倍的赛道差异!
  • 收藏!掌握AI工具=高薪入场券?小白程序员必看职场新机遇!
  • AI新闻日报_2026-07-08
  • 【助睿实战】大作业三-实验7-3:可视化探索
  • 第一个 Middleware:日志记录