在《NI HIL自动化测试06-完整工具链展示》中说明了整个测试工作中会用到的一些工具后面几篇文章会介绍下几个软件以及如何通过labview 打通各自的API实现高效的自动化测试。我和Labview的第一次接触2015年我跟着一个博士后面采集数据用的是NI的采集板卡和Labview上位机软件应用很简单采集数据存储为TXT文档。即使这么的简单的功能当初我么只买了采集板卡上位机软件还是让供应商开发的。Labview精进之路从2016年开始学习Labview到现在2026年了学习时间也有十年了。为什么选择Labview,因为上手简单调试有数据流排查问题非常方便这是我初期选择它的原因。现在还记得第一次通过Labview控制Kavaser收取到产品报文的激动心情彷佛中了彩票。因为做自动化测试想着提高测试效率期间做了很多基于Labview的开发工作TPMS测试通信成功率和数据丢帧率、BMS SOC表格测试、测试管理系统开发、协助产线开发FCT、实验室数据采集上位机开发等等对它有了更进一步的认识我觉得它是测试工程师必须要掌握的一门工具开发效率很高唯一的缺点我觉得可能对比较大软件工程的维护有点麻烦除此之外我觉得它很好。协议丰富、接口很多形成了万物皆可调万物皆可为我所有的这种底蕴。直到Python火爆之后我开始思考团队的人哪些应该学Labview哪些人不应该学。最终得出的结论尊重工具链本身工具链原生态的工具是什么就学什么做NI HIL测试的人要学但是如果你是dSPACE HIL 就学PythonVector你就学Capl。作为一个测试工程师我还是希望要精通一门工具这样你有想法很快就可以去验证。也不是必须要学如果你不走测试开发路线去精通产品功能也很好。基于NI HIL开发Labview掌握以下几点知识以下是我实现《NI HIL自动化测试01-最终实现结果》效果的软件整体框架一、程序架构与设计模式QHM 框架QHM 三层分层架构EventHandle 事件层处理 UI 控件事件、自定义业务事件注册分发Data 数据层面向对象封装数据Veristand、Excel、Simulink、Teststand 数据UI 界面层控件初始化、控件属性读写、界面状态管理队列通信机制模块间队列消息传递三层解耦数据交互事件队列、数据队列、配置队列多队列并行处理While 循环 事件结构标准框架主循环全局常驻分支区分各类控件事件、自定义业务事件多循环并行数据隔离避免控件刷新冲突面向对象 OOP 编程Data 模块采用 LabVIEW 类封装工程资源、用例数据、配置信息二、UI 界面控件开发文档大量界面问题均为此类1. 多列列表框核心表格控件大量迭代修改单元格编辑控制限制单行输入、Enter 回车刷新显示、禁止空字符串单元格选中 / 行操作双击选中信号、Delete 按键删除行替代双击删除行列属性配置行首文字居中对齐、单元格字体颜色、选中高亮行列坐标解析Point To Row Column 解析鼠标点击单元格位置表格数据读写Export To Row Column、批量导入导出信号数据单元格编辑拦截鼠标点击列首时屏蔽输入弹窗2. 树形控件 TreeHIL 资源树形展示树形节点增删Add Item to End、子节点 / 父节点层级管理节点样式自定义缩进量、字体颜色、加粗、符号图标节点同步执行时序控制解决树形颜色随机蓝 / 黑 bug双击节点事件双击自动填充信号、自动加载电源采集参数节点 Tag 绑定绑定信号完整路径、数据类型、ValueTable 信息3. 下拉列表 / 枚举控件信号修辞、功能选择联动下拉选项动态加载读取 ini 配置文件 (ItemConfiguration.ini) 动态刷新选项下拉联动逻辑功能选择加热 / 通风 / 座椅运动切换对应信号修辞下拉内容下拉值变化事件触发队列消息跨模块同步数据三、事件结构与事件处理EventHandle 核心原生控件事件鼠标按下、双击、Delete 按键、值改变、Enter 回车、路径选择事件自定义用户事件用户事件注册、入队、分支解析、跨模块传递数据事件执行时序控制串行执行分支解决控件刷新冲突树形颜色 bug 修复核心知识点事件分支数据隔离避免多操作同时修改同一控件四、文件 IO 与表格 Excel 处理软件核心功能用例生成 / 读取Excel 报表操作新建 / 检测已有 Excel 工作簿自动命名「项目名 测试用例库」工作表动态创建、覆盖、新增工作表名称绑定功能批量写入表格信号名称、数据类型、有效值 / 终止值 / 预留值 / 默认值、步骤名称读取已有 Excel 用例库回显配置信息支持全选 / 多选勾选局部更新脚本仅转换修改用例INI 配置文件读写ItemConfiguration.ini 读取功能、信号修辞映射关系注册用户信息本地配置文件持久化文件路径解析Veristand 工程路径提取项目名称自动生成 Excel 文件名Inport/Parameter/Channel 三类信号路径区分、路径筛选匹配批量文件遍历遍历 nivssdf 工程内模型、板卡、报文资源文件五、NI Veristand 二次交互数据源头Veristand 工程文件解析.nivssdf读取工程系统资源Targets、Controller、Simulation Models、Hardware 硬件解析 FullChannelPath 完整信号路径拆分 ChannelName 信号名资源分类读取与区分六、数据处理、字符串、数组逻辑字符串处理信号路径截取、分段拆分分割 / 过滤 Inport/Parameter 路径步骤名称自动拼接信号名称 信号修辞生成标准化测试步骤数组操作表格二维数组存储所有信号配置数据数组去重已匹配 HIL 资源不重复匹配 Sheet 步骤数组筛选、子集提取、批量写入 Excel数值数组管理有效值 / 终止值多数值集合存储、数组对比判断七、程序调试、优化与 VI 迭代规范VI 模块化拆分子 VI 调用、数据引用传递程序时序与同步优化多操作串行执行避免控件状态冲突阻塞型子 VICMD 获取硬件注册码前置后置调整优化界面加载速度控件引用、属性节点批量读写 UI 控件属性字体、颜色、可见性、下拉选项树形控件单元格字体、加粗、颜色属性节点批量配置八、额外配套工具 / 联合开发知识点LabVIEW 与 Simulink 模型交互解析模型 Inport/Parameter 端口LabVIEW 调用 CMD 命令行执行系统指令Labview调用Teststand 实现测试脚本生成Excel 用例转自动化测试脚本HIL 硬件程控电源、PXI 板卡 DI/AI/PWM 通道映射逻辑