跟了前面几章的操作流程,相信大家对labview有了一定的认识。其实只要了解了labview的编程思路,再熟悉地运用各个变量,函数以及属性,那么我们就可以打开labview的大门了。跟其他编程语言一样,好的编程思维再加上一个好用的程序框架,那么我们就可以做出很多有趣的功能了。之前看到有人在git上发过一个用labview实现的超级玛丽单机游戏,还是可以跑得了的,你们也可以(手动滑稽),不过还是用在工控和自动化领域会常规(正常)一些。

再好的的教程也需要大家经常动手,何况是这"入门到出家"的教程,大家看完后可以多熟悉一下其他功能,比如数值,数组,字符串之类的使用。本教程不一一细说所有函数和变量的使用,意在给大家提供学习labview的编程思路,后期进阶篇也会提供一个好用的框架给大家(亲测好用),并附上之前写过的一些程序(单片机控制,板卡控制,数据库增删查改)。在提供这些资料之前,我们先讲一下程序如何调试,这对后期的状态机以及各种编程技巧有很大的帮助,它可以协助我们理解程序。

1、程序调试-----程序断点+单步调试+探针

中断大家都不陌生,只要有编程经验的都知道断点是常用的调试手段。如单片机编程中,我们在某一段程序段中加入断点,程序运行到这一行指令的时候停止,然后我们再进行单步调试,查看变量值或者查看寄存器的值。在labview中,调试思路也是通用的。

图中灰色框是顺序结构,右键程序框图->编程->结构->平铺式顺序结构,鼠标移到顺序结构右侧边,右键选择“向后添加帧”。程序逻辑从左往右,先执行左侧顺序框,再执行右侧的。在程序框图中添加程序逻辑如上图所示。

上图左侧的红点为断点,添加方式:鼠标移动到上图红点处,右键选择  断点->设置断点。最后再加上探针(探针用来观察数据线上的数据),鼠标移动到两个加法器的输出,右键选择探针。如下图所示。

探针1显示的是第一个加法输出值,探针2显示第二个加法器的输出值。

点击运行按键后看调试效果。其中1是运行,2是循环运行(一般不用),3是终止程序,4是暂停或继续执行程序,5是高亮显示(重点划起来,考试要考),6是单步进入,7是单步跳出。

点击运行,顺序框直闪,说明大顺序框进入了“断点”,然后点击“单步进入”,加法器在闪,说明执行位置在加法器上,再点击单步进入,探针1出现了输出的数值,说明逻辑按照我们期望的输出正在执行。同样的操作一直下一步,直到探针全部输出。

最后点击“暂停或继续执行程序”继续执行程序,程序结束。以上是基本的调试方式,或者我们在输出的地方直接添加一个显示控件也可以,不过还不如添加探针来得方便一些。但这种调试的前提是我们知道程序逻辑以及程序的走向时采用的调试方式,如果是一个大程序,而且我们并不熟悉内部逻辑的时候要怎么调试,怎么看程序逻辑的走向呢。这时就需要另一个调试工具“高亮显示”了。

2、程序调试-----高亮显示(5号位)

点击5高位的高亮显示,如果图标亮了,则说明进入了高亮显示模式。这时运行程序我们发现程序会出现一些高亮区域以及一些灰色区域,灰色的说明还没执行到,高亮的表示程序正在运行,而且运行的速度非常慢,可以看到每个数据在逻辑线上流动,数据经过每个节点都会显示该数据的值,高亮期间我们也可以随时设置断点以及探针,用以进一步调试观察程序逻辑和输出。

可能还有其他的调试方式,但是目前为止,我所用到的调试方式基本就这两个,也已经够用了。有了这两种调试方式,大家可以大胆地调用Labview的函数库,然后一个一个地看他们的使用方式,以后我们想要什么功能,直接调用响应的labview的函数库就可以了,labview的函数可是非常强大易用的。下面就大致讲讲怎么学习使用Labview的函数库。

3、labview函数库的运用

之前写加法程序的时候,大家可能已经发现我们右键点击程序框图的时候有很多的函数以及结构了。结构其实基本上会用while循环结构,for循环结构,条件结构以及事件结构就可以了,剩下的就是熟悉Labview函数库的用法了,熟悉Labview函数库后就我们就可以实现各种各样的上位机功能了。这里不一一讲解所有函数的使用,只给大家一个学习了解函数库的方法。

拿“写入文本文件”的函数开刀,程序框图中右键,编程->文件I/O->写入文本文件,拖拉至程序框图。再点击程序框图工具栏中的问号,然后把鼠标移到“写入文本文件”的函数上,此时会出现该函数的“即时帮助标签”。

这时继续点击即时帮助中下方的蓝色问号

整个Labview帮助手册就出来了,并定位到这个函数上。我们可以从上面的描述中了解函数的功能,以及它的输入输出项。最后拉到最下方,有一个查找范例的图标,点击后会弹出对应的使用范例。

范例有助于我们了解和使用函数,运行时再配上我们上面说的单步调试和高亮显示等方式就可以清晰地看到程序逻辑了。这样,我们可以开始去了解Labview函数库中所有函数的使用方法了,有一些不好理解的我们可以找度娘呀。大家尽可能地熟悉和了解相关的函数和结构,有些东西只要知道有这玩意就可以了,有需要的时候再详细了解用法也不迟。后面几章老曹会给大家一个好用的框架,这样用Labview就能做出不少工具了。再提示一句,前期跟着教程走就可以了,后期有个初步的了解了,有兴趣了,再去啃书升华一下,这样离人生巅峰,迎娶白富美就又近一步了。

原创不易,一键三连啦!

labview从入门到出家5(进阶篇)--程序调试以及labview函数库的运用的更多相关文章

  1. labview从入门到出家6(进阶篇)--移位寄存器的使用

    前面介绍了如何熟悉和使用Labview自带的库函数以及调试方式,大家后期基本可以凭借这两个方式从入门到出家了,哈哈,后面就靠各位同仁99%的努力了.这篇为啥要讲移位寄存器呢,主要是之前做的项目和经验告 ...

  2. labview从入门到出家9(进阶篇)--串口通讯

    ​ Labview在工控领域,如产线,实验室等环境用得较多,其中与仪器通讯控制的方式有串口(RS232,RS485,TTL),GPIB,网口,CAN等,其中串口在仪器还有单片机控制中用来调试居多.(很 ...

  3. labview从入门到出家8(进阶篇)--简单好用的状态机

    labview的状态机类似于一个软件框架的基本单元,好的软件框架和软件思路采用一个好的状态机,就如虎添翼了.这章给大家讲一个本人常用的一个状态机,基本上以前的项目都是建立在这个状态机上完成的,当然网上 ...

  4. labview从入门到出家7(进阶篇)--队列的使用

    本节简单讲解队列在Labview中的使用,队列你可以认为就是一组先进先出的数据列表,在Labview中常用来缓存和传递数据.用了这么久的队列,个人认为有个方便的地方在于数据传递的把控,不管是局部变量还 ...

  5. labview从入门到出家1--第一个加法程序

    概述: Labview在众多编程语言中排名靠后,显然在当今互联网,物联网时代并非主流语言.但是俗话说行行 出状元,即便不是立身于某个主流的领域,用好了依旧可以独领风骚,而且Labview对于硬件出身的 ...

  6. 动态方式破解apk进阶篇(IDA调试so源码)

    动态方式破解apk进阶篇(IDA调试so源码) 来源 https://blog.csdn.net/qq_21051503/article/details/74907449 下面就说关于在IDA中And ...

  7. Android逆向之旅---动态方式破解apk进阶篇(IDA调试so源码)

    Android逆向之旅---动态方式破解apk进阶篇(IDA调试so源码) 来源 https://blog.csdn.net/jiangwei0910410003/article/details/51 ...

  8. labview从入门到出家4--用事件结构实现运算功能

    使用事件结构可以快速定位响应界面的操作事件,如按下,拖动,双击的事件.基本上我们所要实现的所有功能,都可以通过条件结构+事件结构去实现,比如后面进阶篇将会讲到的状态机就是通过条件结构和事件结构组成的. ...

  9. Android动态方式破解apk进阶篇(IDA调试so源码)

    一.前言 今天我们继续来看破解apk的相关知识,在前一篇:Eclipse动态调试smali源码破解apk 我们今天主要来看如何使用IDA来调试Android中的native源码,因为现在一些app,为 ...

随机推荐

  1. 【报错解决】Uncaught TypeError: Failed to execute 'readAsDataURL' on 'FileReader': parameter 1 is not of type 'Blob'.

    项目开发日记-bug多多篇(2) 同时也是 实现一些功能(3) 真的痛苦,写一天代码遇到的bug够我写三天博客. 今天是为了做一个头像功能,具体说是用户上传头像文件并且预览的功能. <div c ...

  2. Kafka生成消息时的3种分区策略

    摘要:KafkaProducer在发送消息的时候,需要指定发送到哪个分区, 那么这个分区策略都有哪些呢? 本文分享自华为云社区<Kafka生产者3中分区分配策略>,作者:石臻臻的杂货铺. ...

  3. [AcWing 796] 子矩阵的和

    点击查看代码 #include<iostream> using namespace std; const int N = 1e3 + 10; int a[N][N], s[N][N]; i ...

  4. [AcWing 756] 蛇形矩阵

    点击查看代码 #include<iostream> using namespace std; const int N = 110; int n, m; int dx[] = {-1, 0, ...

  5. 【已解决】Redis错误:Could not create server TCP listening socket 127.0.0.1:6379: bind: 操作成功完成。

    报错:redis服务在window下启动,报错: Could not create server TCP listening socket 127.0.0.1:6379: bind: 操作成功完成. ...

  6. VUE3 之 自定义指令的实现 - 这个系列的教程通俗易懂,适合新手

    1. 概述 老话说的好:能屈能伸的人生,才是完满而丰富的人生. 言归正传,今天我们来聊聊 VUE 中自定义指令的实现. 2. 自定义指令 2.1 文本框聚焦的实现  <body> < ...

  7. SpringBoot从0到0.7——第一天

    SpringBoot从0到0.7--第一天 学习的第一步当然是收拾好心情,先把环境搭建起来,写出第一个helloword出来. 第一步:安装IDEA和Tomcat 我安装的是IDEA 2021.2.2 ...

  8. wait、notify和notifyAll方法学习

    wait.notify和notifyAll方法 wait() 方法会使该锁资源释放,然后线程进入等待WAITING状态,进入锁的waitset中,然后等待其他线程对锁资源调用notify方法或noti ...

  9. drools中Fact的equality modes

    一.equality modes介绍 在drools中存在如下2种equality modes. 1.identity模式 identity:这是默认的情况.drools引擎使用IdentityHas ...

  10. 大陆出境海缆TPE APCN NCP APG简介

    目前我国的登陆站主要设立在三个城市 山东 山东青岛登陆站(隶属中国联通) EAC-C2C TPE(美国方向) 上海 上海崇明登陆站(隶属中国电信) APCN2(亚太) NCP(长线--美国,新建,亚太 ...