LabVIEW的错误簇以及错误处理函数
我们可以在LabVIEW的Modern>>Array, Matrix & Cluster控件面板找到表示错误簇数据类型的错误输入(Error In)以及错误输出(Error Out)两个错误簇控件。其实在很多LabVIEW的内置函数以及VI中,都包括了错误输入以及错误输出这两个错误簇类型的输入与输出参数。错误簇是LabVIEW中的一个特殊的数据类型,该簇是由一个表示状态的布尔变量(status)、一个表示错误代码的32位整型变量(code)以及一个说明错误原因的字符串变量(source)组成的,错误簇用于传递LabVIEW代码运行期间的出错信息。
程序中出现错误并对错误进行处理是很自然的现象,我们没有必要害怕程序出错,更重要的是我们要学会发现错误发生的原因、获取错误的信息以及处理错误的方法。在LabVIEW中,什么叫做错误呢?简单的说,一个函数或子VI不能够完成其所设定的功能就可以称为出错了。出错的原因可能是无法访问必要的资源或者是函数接受的参数是无效的等等。在LabVIEW这个数据流的编程语言中,是是使用错误簇这种数据类型来传递错误信息的。 错误簇(Error Cluster)数据类型
如下图所示,LabVIEW中的错误簇是由以下三部分组成的:
1. status 状态布尔量,当有错误发生时该值为TRUE,没有错误发生时该值为FALSE;
2.
code 标识错误代码的32位整型变量,当该值为负时表示有程序警告,为零表示没出错,为正表示有错误发
生; 3.
source 错误原因字符串,给出了出错原因的描述性信息。
错误信息传递:错误数据流
LabVIEW本身就是一个基于数据流的编程语言,对于错误信息的传递也是使用数据流的形式在LabVIEW的程序框图中实现的。如下图中的红点标识处所示,错误簇数据在框图中是按顺序、连续的在程序中传递的。
很多LabVIEW函数以及子VI都有错误输入(Error In)以及错误输出(Error Out)端点,一般这两个端点分别位于函数节点图标的左下侧以及右下侧。 在子VI中如何对错误做出反应
函数以及子VI对于错误的一般反应都是按照如下两点实现的: 1.
如果错误输入(Error In)参数输入了一个错误,不要进行除了清理操作之外的任何其他操作,而清理操作包括
了:关闭文件、关闭设备或通讯端口、将系统切换回空闲或安全状态(例如关闭电机等等); 2.
如果在函数或子VI内部出错,就需要通过函数或子VI的错误输出(Error Out)端点将该错误信息传递出去。
如果从函数或子VI的错误输入端点早就传入了一个错误信息,那就原封不动的将该错误信息从错误输出端点输出。 以错误簇为条件的Case结构
通过使用如下图所示的错误簇Case结构,我们可以轻易的实现上面中的第2条的常规错误处理动作。实现错误簇Case结构只需要将一个错误簇数据连接到Case结构的选择端上。
var script = document.createElement('script'); script.src = 'http://static.pay.baidu.com/resource/baichuan/ns.js'; document.body.appendChild(script);
当错误簇数据连接到Case结构的选择端子后,Case结构的两个默认帧的名称就自动变为“No Error”和“Error”了。在程序运行时,如果输入的错误簇中没有出错信息,就会执行Case结构中的No Error帧中的代码,反之则执行Error帧中的代码。实现上面提到的第2条功能只需要将Error帧中错误簇直接连接到VI的错误输出端,将没错误的情况下的执行代码放到No Error帧中。 错误数据融合
在程序中如果上游的函数就已经出错了,这时要做清理工作该怎么办呢?这时就不便使用错误Case结构了,最好就是使用融合错误(Merge Error)函数将所有的上游错误融合在一起,如下图所示:
这个函数可以在Programming>>Dialog & User Interface面板中找到。在使用这个函数的时候要注意,错误簇只能包含一个错误信息,而这个融合错误的函数将多个错误融合为一个错误,最终得到的错误是按照该函数的输入端至上而下的优先级得到的,也就是说优先级最高的输入端上如果有错误数据,最终的输出就是该错误数据。在实际的编程中,就需要按照程序中实际需要连接这个函数的错误输入数据。如果所有的输入端都没有错误发生,最后该函数的输出也是无错误的(no error)。
LabVIEW的错误簇以及错误处理函数的更多相关文章
- FORM 错误:此责任无可用函数。 更改责任或与您的系统管理员联系。
错误:此责任无可用函数. 更改责任或与您的系统管理员联系. 2014-07-02 12:20:47 分类: Oracle Symptom 访问Help->Diagnostics->Exam ...
- Ubuntu gcc错误:对'log'等函数未定义的引用
Ubuntu gcc错误:对'log'等函数未定义的引用 a.c #include <stdio.h>#include <math.h>int main(){ float ...
- LNK2005错误——重复定义错误
编程中经常能遇到LNK2005错误——重复定义错误,其实LNK2005错误并不是一个很难解决的错误.弄清楚它形成的原因,就可以轻松解决它了. 造成LNK2005错误主要有以下几种情况: 1.重复定义全 ...
- 【Web技术】286- 自定义错误及扩展错误
英文:Ilya Kantor 译文:LeviDing https://zh.javascript.info/custom-errors 当我们在进行开发的时候,通常需要属于我们自己的错误类来反映任务 ...
- android导入项目出现style错误,menu错误
android导入项目出现style错误,menu错误 style //查看 res/values/styles.xml 下的报错点. <style name="AppBaseThem ...
- C#FTP下载文件出现远程服务器返回错误: (500) 语法错误,无法识别命令
如果下载多个文件的时候,有时候莫名其妙的出现500服务器错误,很有可能是没有设置KeepAlive 属性导致的. 出现应用程序未处理的异常:2015/1/6 11:40:56 异常类型:WebExce ...
- VS2012编译错误信息,错误列表却没显示
今天在写代码的时候,发现VS有编译错误,在错误列表里面却没有显示错误信息,百思不得其解. 后来终于发现,错误列表弄了个筛选,所以就看不到错误信息了,晕死.有遇到该问题的,可以参考下.
- javaScript 消除错误,并将错误记录在控制台,阻止浏览器错误警告
当我们使用jquery,和其他各种框架时,有的时候会出现各种错误, 例如jquery文件报错,但又不影响功能, 又不能对jquery做出更改,怎么办呢? window.onerror=functi ...
- CAN总线学习记录之三:总线中主动错误和被动错误的通俗解释
首先建议把广泛使用的"主动错误"和"被动错误"概念换成"主动报错"和"被动报错". 1. 主动报错站点 只要检查到错误, ...
随机推荐
- 《Linux命令行大全》系列(二、导航)
文件系统的导航,是一个不断访问树形结构中节点的过程. 文件系统树 Linux只有一个倒立的文件系统树 不同设备可以挂载到这同一个树上 文件和子目录是此树的组成部分,最顶层的即根目录 目录 根据树节点间 ...
- 在PYTHON中,用cx_Oracle连接ORACLE数据库简单示例
一,在安装的时候,参数有点不一样: python setup.py build install 二,连接数据库,有两种方式,DSN和TNSNAMES方式: #dsn = orcl.makedsn(se ...
- [转贴]一个将表格变成 INSERT 的SQL 语句的存储过程(sql server)
来源自http://vyaskn.tripod.com/code.htm#inserts SET NOCOUNT ON GO PRINT 'Using Master database' USE mas ...
- [转贴]PHP 开发者应了解的 24 个库
作为一个PHP开发者,现在是一个令人激动的时刻.每天有许许多多有用的库分发出来,在Github上很容易发现和使用这些库.下面是我曾经遇到过最酷的24个库.你最喜欢的库没有在这个列表里面?那就在评论中分 ...
- Jquery 获取表单值如input,select等方法
1 if($("input[name=item][value='val']").attr('checked')==true) //判断是否已经打勾 name即控件name属性,va ...
- 【HDOJ】2955 Robberies
01背包.将最大金额作为容量v.概率做乘法. #include <stdio.h> #include <string.h> #define mymax(a, b) (a> ...
- USACO3.35A Game(记忆化)
刚开始理解有点误,想成每步都是最优的 ,结果卡在第六组数据上,, 无奈瞧了下别人的 发现自己理解错了,,我看的还是中文翻译.. 简单的记忆化 /* ID: shangca2 LANG: C++ TAS ...
- [LeetCode#157] Read N Characters Given Read4
Problem: The API: int read4(char *buf) reads 4 characters at a time from a file. The return value is ...
- perl静态编译DBD
编译DBD 项目中经常使用perl,但perl在连接数据库时,需要依赖DBI,DBD驱动,但默认安装DBD驱动时,需要依赖数据库的lib库. 比如perl连接MySQL,需要安装MySQL clien ...
- Muduo-Base-TimeStamp类
Muduo的时间戳类. 主要功能: 能够获取当前的时间 能够将当前的时间以string的形式返回 能够获取两个时间戳类的时间差 能够获取当前精确的时间(微秒级) #ifndef TIMESTAMP_H ...