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. 主动报错站点 只要检查到错误, ...
随机推荐
- Firebird 同一字段的多行合并为一行
Firebird 同一字段的多行合并为一行用LIST函数类似于MYSQL的GROUP_CONCAT. 具体用法如下: SELECT LIST(a.GG_NAME||':'||a.GG_VALUE) ...
- No Hibernate Session bound to thread, and configuration does not allow creat
No Hibernate Session bound to thread, and configuration does not allow creat 今天遇到这么一个错误,在网上差了很多都没有能解 ...
- JQuery自学代码---(一)
/** * Created by wyl on 15-3-4. */ //Jquery是一个JavaScrioe库,它极大的简化了JavaScript编程 $(document).ready(func ...
- BZOJ 1624: [Usaco2008 Open] Clear And Present Danger 寻宝之路
Description 农夫约翰正驾驶一条小艇在牛勒比海上航行. 海上有N(1≤N≤100)个岛屿,用1到N编号.约翰从1号小岛出发,最后到达N号小岛.一 张藏宝图上说,如果他的路程上经过的小岛依次出 ...
- 制作qtopia-2.2.0和qt4文件系统
转自 rootfs_qtopia_qt4.img 1. 解压rootfs_qtopia_qt4-20100816.tar.gz,得到目录rootfs_qtopia_qt4,里面内容比较大,超过了64M ...
- SharePoint 2010 安装简介及相关补丁下载
转:http://www.cnblogs.com/jianyus/archive/2011/10/28/2228212.html 1.安装Windows Server 2008 系统,这个我就不说了, ...
- Android Volley - volley StringRequest編碼問題
有些時候這個類並不能很好的解決中文編碼問題 如果出現亂碼,就 要重寫該類的parseNetworkResponse 方法了. 繼承StringRequest,然後重寫parseNetworkRespo ...
- Android 网络通信框架Volley简介(Google IO 2013)
1. 什么是Volley 在这之前,我们在程序中需要和网络通信的时候,大体使用的东西莫过于AsyncTaskLoader,HttpURLConnection,AsyncTask,HTTPClient( ...
- jQuery Ajax 全解析
转自:http://www.cnblogs.com/qleelulu/archive/2008/04/21/1163021.html 本文地址: jQuery Ajax 全解析 本文作者:QLeelu ...
- (转载)php循环检测目录是否存在并创建(循环创建目录)
(转载)http://www.jb51.net/article/25917.htm php循环检测目录是否存在并创建,需要的朋友可以参考下. 循环创建目录方法 这个会生成image.gif目录 代码如 ...