LabVIEW程序调试与异常处理.ppt
《LabVIEW程序调试与异常处理.ppt》由会员分享,可在线阅读,更多相关《LabVIEW程序调试与异常处理.ppt(69页珍藏版)》请在三一办公上搜索。
1、LabVIEW程序调试与异常处理,Intelligent Electronics InstituteHuazhong University of Science&Technology,2,目录,概述LabVIEW错误信息内置异常处理工具LabVIEW异常处理过程LabVIEW程序调试技术,概述,3,4,概述,对程序开发人员来说,异常处理和程序调试都是非常重要的编程技术。异常处理是针对程序代码在运行时可能出现的错误,进行预定义处理过程的技术。异常处理技术可以在系统发生错误的情况下,保证系统的正常退出和释放系统资源而不会引起整个系统崩溃的发生。程序调试是用于查找和纠正程序代码在编写或运行时出现的错
2、误的技术。,5,概述,程序调试程序开发人员借助调试工具,针对程序执行中发生的某个特定错误,进行原因查找、错误分析、修改程序并最终解决错误的过程。,产生错误的原因很多要求熟悉代码充分利用调试工具,6,概述,异常处理处理程序在执行过程中不期望发生的事件。,例如:整型变量x被整型变量y除的结果作为另一个计算的输入。有时y 可能会被设为0。,错误捕获错误处理,LabVIEW错误信息,7,8,LabVIEW错误信息,在系统中对错误进行分类、定义错误标识和信息存储数据格式等,是实现异常处理过程的基础。,LabVIEW中错误的分类I/O错误由程序试图对外部仪器、文件或其它应用程序进行操作所致。逻辑错误由程序
3、代码的缺陷所致。,9,LabVIEW错误信息,错误簇,错误簇(Error Cluster)为程序员提供了一个探测机制。这个簇包含状态(Status)、代码(Code)和源(Source)三个控件,分别反映一些错误信息。,10,LabVIEW错误信息,错误簇,状态是一个布尔量,有错误时返回“真”;代码是一个32位单精度整型数据,用于区分不同的错误;源是一个字符串,提供了错误源信息。,11,LabVIEW错误信息,错误簇一个错误簇输入输出的例子,该例中,使用“错误输入”和“错误输出”簇就可以实现错误探测,捕获仪器发送和接收数据过程中出现的错误信息。,12,LabVIEW错误信息,错误簇运用错误簇调
4、整VI执行顺序,第二个驱动等到来自第一个驱动的错误信息后才会执行。因此调整错误簇信息的流向,就可以强制调整VIs的执行顺序。,13,LabVIEW错误信息,错误簇错误检查,在本例中,仪器返回“ok”则程序正常执行,否则程序输出自定义错误;从而有效的检测出仪器的正常工作与否。,14,LabVIEW错误信息,错误簇添加额外信息,将时间和调用链信息加到用户自定义错误信息中,就可以找到错误发生的时间和位置。同样,还可以将其它信息加到错误簇中去,为程序员提供更多的信息。,15,LabVIEW错误信息,错误代码,错误代码(Code)可以是正数或负数,由发生的错误类型决定。没有错误发生时为零。“警告”时,代
5、码为非零值,但状态为“假”。本书附录B列出了代码的错误描述。,16,LabVIEW错误信息,错误代码,上图列出了相应错误的代码,以及错误的解释。,17,LabVIEW错误信息,I/O错误,对仪器或通信通道不正确的初始化或配置。对仪器或应用程序发送错误的命令或数据。在仪器或应用程序的使用中出现错误。缺少硬件或软件选项也会导致I/O错误。,18,LabVIEW错误信息,I/O错误简单的处理,首先对仪器进行初始化,然后配置测量参数,接着进行数据采集,最后关闭仪器连接。整个过程中可能发生的I/O错误通过错误簇传递,弹出错误对话框。,19,LabVIEW错误信息,逻辑错误由程序代码自身缺陷所致,没有把W
6、hile循环跳出循环的条件设置正确导致的逻辑错误。在从事实际项目开发中可能会遇到一些更加隐蔽的问题,而这类问题又很难被发现,也无法借助调试工具来解决。,20,LabVIEW错误信息,逻辑错误循环中容易遇到的逻辑错误,当“键”数组为空时,循环不会执行,引用句柄不会传递到“close”端,从而导致文件关闭发生错误。解决办法:采用移位寄存器传递引用句柄。,21,LabVIEW错误信息,逻辑错误一些逻辑错误的解决办法,对输入的数据进行有效性验证。更详细内容请参考本书节。,22,LabVIEW错误信息,自定义错误用通用处理器进行自定义错误代码,把相似错误的错误代码归在同一组,以便发生错误时决定采用何种方
7、法进行处理。,23,LabVIEW错误信息,内置异常处理工具,简易异常处理器 当有错误发生时,它会弹出一个对话窗,显示错误代码、简单的错误描述和错误发生的位置。通用异常处理器通用错误处理VI提供给程序员的可选项要多一些,因此可满足更多的需求。简易异常处理器是由通用错误处理器封装后构成的,减少了灵活性并增加了不必要的处理开销。因此,推荐使用通用错误处理器。,LabVIEW异常处理过程,24,25,LabVIEW异常处理过程,异常处理时机,在程序开发的过程中,需要考虑操作过程中可能出现的情况以及相应的结果。异常处理作为系统管理级的功能一般被放在程序的顶层进行。顶层程序控制着应用程序的流程,而异常处
8、理可能会改变程序正常的执行流程,因为当有错误发生时,程序可能会根据不同的错误作相应的动作。,26,LabVIEW异常处理过程,一般处理模式依错误代码范围进行处理,最简单的错误处理方法可以用通用错误处理VI弹出一个对话框提示用户有错误发生。,27,LabVIEW异常处理过程,一般处理模式特定错误代码处理技术,在错误代码数组中查找错误代码;条件结构根据索引值执行相应的错误处理和提示。数组中没有查找到该错误代码,则提示“错误代码没有定义!”。,28,LabVIEW异常处理过程,循环处理模式while循环结构,错误通过移位寄存器来传递,在错误发生时,跳出循环。右图将错误簇直接连接到while循环结构的
9、条件选择端,简化了编程。,29,LabVIEW异常处理过程,循环处理模式for循环结构,启用索引的for循环输出为数组,对于错误来说体积过于庞大,因此,使用移位寄存器来捕获错误,再在for循环的外部对捕获的错误进行处理。决不应该启用索引。,30,LabVIEW异常处理过程,条件结构处理模式,将错误簇直接连接到条件结构的分支选择器。绿色框为无错误分支,红色框为错误分支。,31,LabVIEW异常处理过程,状态机处理模式,异常处理代码放在同一地方,这样代码更容易修正;异常处理管理也可维持在主程序层或测试执行层。具体例子将在节中给出,32,LabVIEW异常处理过程,错误日志,错误日志用来记录程序执
10、行过程序中遇到的错误,它将错误代码、源、简单的错误描述和错误发生的时间写入日志文件。这样有助于开发更具鲁棒性的应用程序。,我们可以将错误保存在文件或者数据库中,特别对无人值守的程序来说,以供之后管理人员查询并分析错误原因。,33,LabVIEW异常处理过程,错误退出,程序执行中出现致命的或不可恢复的错误时,应当合理地退出程序而不是继续执行,因为不正常地终止程序可能会导致一些意想不到的后果。终止程序前,先关闭所有的仪器I/O句柄、文件和通信通道,可最大化减少可能导致的问题。,34,LabVIEW异常处理过程,外部错误管理,通过动态加载外部处理程序来管理和处理错误。可以应用到应用程序中所有有同样需
11、要的地方。可以被其它的应用程序调用。,35,LabVIEW异常处理过程,外部错误管理调用外部处理程序的过程,根据外部处理程序的路径打开该VI的引用;将错误簇信息通过“调用节点”传递给外部处理程序;运行外部处理程序;关闭调用。,36,LabVIEW异常处理过程,错误优先顺序,LabVIEW 中的功能和 VI 可以按照不同的风险来分类,帮助理解它们生成的错误类型并且评价关于给定应用程序的处理策略。不同类型的操作产生不同风险等级的错误,并在程序中表现出不同的行为。将函数选板上的节点分为三个风险等级,低、中和高,并由此把错误捕获区分优先次序。,37,LabVIEW异常处理过程,错误优先顺序低风险函数,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- LabVIEW 程序 调试 异常 处理
链接地址:https://www.31ppt.com/p-5436942.html