zoukankan      html  css  js  c++  java
  • 【LabVIEW技巧】LabVIEW中的错误2

    前言 

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

    常规用法

    1.忽略错误
    当需要用户选择一些文件的时候,如果用户取消,则会提示43的错误,通常我们会对这个错误进行处理,所以使用SEH工具包,直接忽略这个目标错误即可
    2.重试
    重试功能可以允许你在出现一些错误的时候,重新运行程序,并且定义执行几次错误
    在使用时,通常要与Clear Error一同使用,以便下一次的运算可以在无错误的情况下运行
     3.转换为警告
    这个地方可以产生错误,并将错误转换为警告。主要用在将错误的布尔由真转换为假,这样可以用于保存和显示错误,但是不影响后续代码的执行。
     
    4.分类错误
    SEH工具包可以对错误进行分类处理,帮助建立中心错误处理管理。由于即使是相同的错误,也会出现不同的处理方法,所以需要对错误进行分类处理。
    例如:同样是文件不存在,如果是关键的配置文件不存在,则需要提示并且终止运行,而日志文件不存在,我们只需要重新创建一个即可。

    错误可以同时使用Classify Error VI或者使用Express VI来分类
    使用分类会在错误信息中,增加一个*Error Class = XXX*的信息,用于分类错误
    5.Call VI

    需要注意的是
    1. 这里VI必须是内存中的VI,否则会报错;这里可以将需要调用的VI以静态引用的方式放在程序框图中,确保VI可以加载
    2. 调用的VI相当于一个执行脚本,不会弹出前面板,所以不要调用一些需要UI处理的脚本,只适合做一些简单的操作
     
    6.Error Communication 错误通讯
    在通讯页面,可以将错误发送到中央处理循环
    SEH工具,使用功能全局变量进行通讯。功能全局变量初始化的时候,你可以定义错误的优先级,定义 每一个优先级的错误个数
    功能全局变量实现一个简单的优先级队列。 优先级队列是一个队列,其中每个入队单元被赋予优先级,并且高优先级元素总是在低优先级元素之前从队列中返回。 具有相同优先级的两个元素将以先入先出(FIFO)的方式返回,就像普通队列一样。 为了提高性能,SEH通信机制的优先级以相反的顺序实现,0是优先级最高的优先级。
     
    您可以通过调用SEH Get Next错误从通信系统出现错误
    7.Central Error Handler 【中央错误处理程序】
    使用中央错误处理程序,可以启动引擎,并且对不同分类的错误进行处理
     
    后记
    SEH工具包的下载地址为: http://www.ni.com/example/31253/en/  






  • 相关阅读:
    【产品干货】经典营销模型的产品化介绍
    阿里云力夺FewCLUE榜首!知识融入预训练+小样本学习的实战解析
    云上资源编排的思与悟
    储留香:一个智能运维系统就是一个中枢神经系统,我说的!
    企业网管软件之SOLARWINDS实战-制作拓扑图
    企业网管软件之SOLARWINDS实战-基于浏览器的网络流量监控
    企业网管软件实战之看视频学装Cisco Works 2000
    轻松学习Linux之Shell预定义变量
    oracle的监听日志太大,正确的删除步骤
    MVC 使用HandleErrorAttribute统一处理异常
  • 原文地址:https://www.cnblogs.com/EltonLiang/p/6661636.html
Copyright © 2011-2022 走看看