博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【LabVIEW技巧】LabVIEW中的错误2
阅读量:6830 次
发布时间:2019-06-26

本文共 2529 字,大约阅读时间需要 8 分钟。

前言 

通过上一个文章的介绍,我们发现LabVIEW自带的错误管理依旧比较基础,如果需要对错误进行很好的管理,则需要进一步的进行程序编写。
用于在程序设计的过程中,为了保证程序的健壮性,我们需要
1.忽略一些
不需要的
错误
2.对特定的一些错误做额外的处理
3.将一些有可能为以后工作所需要的错误进行记录
上个文章中,小黑学习了Error Ring,并且了解了错误的一些处理,今天小黑带大家看看SEH错误处理工具包的内容。

什么是SEH

SEH的全称是Structured Error Handler (SEH) Library,
库提供了一种组织和管理错误的机制。 
1.SEH包括一个可配置的Express VI,可帮助处理特定错误;
2.SEH建立了
传输错误的通信机制,中央错误处理程序的模板;
3.
SEH建立了
各种支持的VI和实用程序,便于对错误进行集中管理。

如何使用SEH

在特定错误容易出现的地方,可以放置Express VI,用于捕获这些错误,在错误最容易出现的地方捕获这些错误有以下几点明显的好处:
1.错误捕获的时候接近错误源头,你可以避免由于错误在线程中专递导致最终错误无法辨别。由于LabVIEW中的产生错误的代码可以在很多位置使用而且相同的错误可以在不同的地方产生,如果不对错误的源头记录,往往还需要花费大量的时间去定位错误的位置。
2.捕获错误接近错误源头可以有助于错误修正措施的编写。例如:有些错误重复检测的时候,最好的方式是直接检测并且处理。

特定错误搜集功能

如下图所示,特定错误收集功能用于捕获指定的错误代码,这里
使用Express VI来控制和捕获错误,通过简单的配置即可实现操作。

How To Use

1.将Express VI放置于错误产生的位置
841277-20170403121511910-1309300724.png
2.双击该VI弹出配置对话框(这里左侧的工具栏稍微有些错位...)
841277-20170403121512503-1923864258.png
3.点击加号,可以新增错误,在错误输入对话框,可以定义单个的错误,或者是一个错误的范围
841277-20170403121513082-665849067.png
点击右键菜单也可以添加和删除Code
841277-20170403121513332-1013519853.png
 
4.Input的Tab页面配置
在这个页面可以勾选Detect Warning,用于检测警告
841277-20170403121513800-1670140507.png
通常错误簇可以定义警告和普通错误
841277-20170403121514097-1452721580.png
5.Action的配置页面
841277-20170403121514738-1630628195.png
名称     说明     备注
Retry 确定特定错误处理程序是否应尝试重新执行代码 请参阅重试部分
Number of Retries 确定重试代码的次数 此选项仅在启用重试时可见
Infinite 表示重试次数没有限制 此选项仅在启用重试时可见
Call VI 从内存中调用VI 请参阅实时错误处理程序部分
VI To Call 确定应该调用哪个VI,键入VI名称 参阅调用VI部分
6.配置特定错误的通知
841277-20170403121515363-822010794.jpg
名称 说明 备注
Notify 将错误传送到中央错误处理程序 参阅错误通信部分
Priority 确定应处理通知的顺序, 较低优先级号码具有较高的优先级,0是最高优先级
Classify 对通知进行分类。 请注意,此分类仅适用于通知,不适用于错误输出。 请参阅分类错误部分
Classification 错误类型的字符串描述。 请注意,在实时版本的库中,字符串必须为四个或更少的字符 有关详细信息,请参阅分类错误部分。
7.配置输出的错误处理
 
841277-20170403121516050-1184529163.png
名称     说明     备注
Clear Error 清除错误
Convert to Warning 将错误转换为警告
Classification 错误类型的字符串描述 有关详细信息,请参阅分类错误部分。
8.保留Default分支,用于配置默认的一些执行
841277-20170403121516582-93209073.png
点击保存和加载,可以快速的配置一些已经有的模板

常规用法

1.忽略错误
当需要用户选择一些文件的时候,如果用户取消,则会提示43的错误,通常我们会对这个错误进行处理,所以使用SEH工具包,直接忽略这个目标错误即可
2.重试
重试功能可以允许你在出现一些错误的时候,重新运行程序,并且定义执行几次错误
在使用时,通常要与Clear Error一同使用,以便下一次的运算可以在无错误的情况下运行
 3.转换为警告
这个地方可以产生错误,并将错误转换为警告。主要用在将错误的布尔由真转换为假,这样可以用于保存和显示错误,但是不影响后续代码的执行。
 
841277-20170403121518550-500383931.png
4.分类错误
SEH工具包可以对错误进行分类处理,帮助建立中心错误处理管理。由于即使是相同的错误,也会出现不同的处理方法,所以需要对错误进行分类处理。
例如:同样是文件不存在,如果是关键的配置文件不存在,则需要提示并且终止运行,而日志文件不存在,我们只需要重新创建一个即可。
错误可以同时使用Classify Error VI或者使用Express VI来分类
841277-20170403121519191-2080692483.png
使用分类会在错误信息中,增加一个*Error Class = XXX*的信息,用于分类错误
841277-20170403121519519-1171261734.png
5.Call VI
841277-20170403121520191-1510854478.png
需要注意的是
1. 这里VI必须是内存中的VI,否则会报错;这里可以将需要调用的VI以静态引用的方式放在程序框图中,确保VI可以加载
2. 调用的VI相当于一个执行脚本,不会弹出前面板,所以不要调用一些需要UI处理的脚本,只适合做一些简单的操作
 
6.Error Communication 错误通讯
在通讯页面,可以将错误发送到中央处理循环
841277-20170403121521753-729722384.png
SEH工具,使用功能全局变量进行通讯。功能全局变量初始化的时候,你可以定义错误的优先级,定义 每一个优先级的错误个数
841277-20170403121522472-1049377199.jpg
功能全局变量实现一个简单的优先级队列。 优先级队列是一个队列,其中每个入队单元被赋予优先级,并且高优先级元素总是在低优先级元素之前从队列中返回。 具有相同优先级的两个元素将以先入先出(FIFO)的方式返回,就像普通队列一样。 为了提高性能,SEH通信机制的优先级以相反的顺序实现,0是优先级最高的优先级。
 
841277-20170403121522972-1569580579.png
您可以通过调用SEH Get Next错误从通信系统出现错误
841277-20170403121523269-205247391.png
7.Central Error Handler 【中央错误处理程序】
使用中央错误处理程序,可以启动引擎,并且对不同分类的错误进行处理
 
后记
SEH工具包的下载地址为: 
  

转载于:https://www.cnblogs.com/EltonLiang/p/6661636.html

你可能感兴趣的文章
java多线程例子
查看>>
fabric自动部署
查看>>
linux 命令小抄
查看>>
前端必读:浏览器内部工作原理
查看>>
C Socket Programming for Linux with a Server and Client Example Code
查看>>
6天通吃树结构—— 第一天 二叉查找树
查看>>
vs2005/vs2008和sql2005 的安装顺序
查看>>
powerdesigner 设置自动增长列(identity)和默认值
查看>>
Click Button to change the color of TextView
查看>>
oracle preparestmt 插入时间
查看>>
Java系的几种WebServer和ApplicationServer
查看>>
Android之菜单二——上下文菜单
查看>>
JavaScript中onmouseover时如何让鼠标指针变成一个小手状
查看>>
clear:both; 用法 什么时候用
查看>>
三层结构
查看>>
【简报】超棒的拖放式文件上传javascript类库:FileDrop
查看>>
连续子数组的最大和
查看>>
转: Oracle AWR 报告 每天自动生成并发送邮箱
查看>>
solr dataimport 数据导入源码分析(十)总结
查看>>
So easy,JQuery调用WebServices
查看>>