labview的状态机类似于一个软件框架的基本单元,好的软件框架和软件思路采用一个好的状态机,就如虎添翼了。这章给大家讲一个本人常用的一个状态机,基本上以前的项目都是建立在这个状态机上完成的,当然网上也有很多很好用的状态机,如JKI等。不过几乎都大同小异,看大家习惯用哪种了。下面直接附上状态机概述,大家可以参照着写一个,或者在老曹资源上下载该状态机,上面还有几个我常用的辅助VI,如Excel存储,界面延时显示等,原创不易,请大家多多支持(下载)拉。(https://download.csdn.net/download/lao__cao/19024666?spm=1001.2014.3001.5503)

1、整体逻辑是这样的,前面板上目前有三个基本按键,确定,取消,退出。运行程序时,逻辑从左到右。(1)先将前面板定位到0,0原点位置;(2)初始化事件处理列表以及数据列表;(3)开始默认状态处于NAN事件上,然后执行50ms超时事件。超时事件一般用来处理常规逻辑,或者程序空置,等待响应其他事件。

2、这里附上事件先进先出 “NEXT”  VI的逻辑,方便大家编写逻辑,也可以直接下载本博客上的状态机资源,直接运行,高亮显示加强理解。

3、现在点击前面板确定按钮,触发值改变事件。触发后程序跳转到事件结构中,我们可以直接在事件结构中处理数据,或者统一编程风格,所有处理事件都跳转到外层的条件结构中处理。注意程序下方插入OK事件的操作,这里我们可以插入一个OK字符串,表示下一个条件结构中执行的事件是“OK”事件,也可以插入一个字符数组,数组的排序就是执行事件的顺序,通过移位寄存器一一读取并一一处理(不了解移位寄存器的可以看第6章),同时可以在下面插入该事件的数据“OK_Information”,跟随事件一同转移。这里的数据可以是字符,数值,簇,数组等,最后通过变体还原数据。如之前说的,变体相当于面向对象语言中的泛型。

执行OK事件,该事件处理逻辑为读取OK事件的数据。

4、同样的,添加取消事件还有退出事件,大家后续的功能可以往外层的条件结构和内层的事件结构逐渐增加,内层事件结构响应界面操作,外层条件结构实现处理逻辑。外层处理逻辑可以通过插入事件的方式,进行灵活的跳转。大家前期先熟悉该状态机,下一章用该状态机实现串口助手的功能,加强理解。

Exit事件比较特殊,因为执行完Exit后我们要退出程序了。左下方执行退出程序时,在先进先出NEXT VI下做了一个比较,如果是EXIT事件,则将while循环置TRUE,退出程序。程序最右侧有一个关闭前面板的动作,这个看大家的需求,可要可不要。

5、最后,附上项目的文件结构,新手可以参考一下

项目文件结构,Data放程序执行的相关信息和数据,File放置项目对应的文件,SubVis放置子VI,子VI内部分模块文件,最后来一个Main VI。

如有讲解不到位的地方请留言指正,大家一起学习一起提升。原创不易,一键三连拉!

labview从入门到出家8(进阶篇)--简单好用的状态机的更多相关文章

  1. labview从入门到出家5(进阶篇)--程序调试以及labview函数库的运用

    跟了前面几章的操作流程,相信大家对labview有了一定的认识.其实只要了解了labview的编程思路,再熟悉地运用各个变量,函数以及属性,那么我们就可以打开labview的大门了.跟其他编程语言一样 ...

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

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

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

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

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

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

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

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

  6. labview入门到出家10(进阶)——CAN通讯

    ​          讲完串口,这边再讲一个labveiw工控程序中比较常用的CAN通讯吧.很久没有写过CAN通讯的程序了,网上一搜就是什么现场总线,控制器局域网总线,然后一堆复杂的协议.在这里还是一 ...

  7. labview从入门到出家3--制作和调用子VI

    当程序越写越大的时候,我们会发现代码界面会比较乱(线太多),那要怎么做可以让代码更简洁一点,我只管直接调用某个功能函数,而不需要在一个VI上面去实现这个功能函数呢?--子VI.好比C语言里面的Main ...

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

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

  9. labview从入门到出家2--将“加法程序”制作成“exe应用程序”

    1.上一章主要讲了如何跑我们的第一个加法程序(这里向第一个程序的鼻祖"hello world"致敬),这一章我们直接进入主题,将我们写的程序生成exe文件放桌面运行. 2.要生成e ...

随机推荐

  1. 解决anaconda3打开不了闪退

    今天想新创个环境,结果发现创不起,而且anaconda居然也进不去了. 然后尝试了网上各种方法,修改c:user/用户/用户名目录下的.condarc文件,镜像源,包括重装都没用. 最后 把.cond ...

  2. EntityFramwork常见问题

    1.常用的语句有哪些 添加migration      dotnet ef migrations add [MIgrationName] 删除刚添加的migration      dotnet ef ...

  3. 微信小程序订阅消息

    概述 消息能力是小程序能力中的重要组成,我们为开发者提供了订阅消息能力,以便实现服务的闭环和更优的体验. 订阅消息推送位置:服务通知 订阅消息下发条件:用户自主订阅 订阅消息卡片跳转能力:点击查看详情 ...

  4. 【问题解决】'Access-Control-Allow-Origin' header contains multiple values '*, *', but only one is allowed.

    问题复述 今天项目组有人找我说之前部署的程序在测试环境没问题,到生产环境出现了奇怪的问题,点按钮没反应. 我通过腾讯会议发现他们的浏览器控制台上打出了如下错误: Access to XMLHttpRe ...

  5. 客户案例-SES S.A.

    SES专门为世界上最偏远的地方提供高性能的移动网络连接.广播.维和人员的实时情报和媒体内容. SES是一个全球性组织,专注于提供高性能的视频和虚拟数据解决方案.今天,SES拥有最大的覆盖范围,有超过7 ...

  6. c++动态内存分配需要注意的地方,可以不用尽量不用

    在实际开发中,需要动态分配内存的场景极少,string和vector已经足够方便,如果不是非用不可的情况,采用动态分配内存就是给自己挖坑. 如果应用开发中一定要用动态内存分配技术,建议把它封装在类中, ...

  7. 运维:ITSM

    IT服务管理(ITSM)是一套帮助企业对IT系统的规划.研发.实施和运营进行有效管理的方法,是一套方法论.ITSM起源于ITIL(IT Infrastructure Library,IT基础架构标准库 ...

  8. 吊炸天,Spring Security还有这种用法!

    在用Spring Security项目开发中,有时候需要放通某一个接口时,我们需要在配置中把接口地址配置上,这样做有时候显得麻烦,而且不够优雅.我们能不能通过一个注解的方式,在需要放通的接口上加上该注 ...

  9. 设计并实现大数类 BigNum

    学习任务:设计并实现大数类 BigNum 代码示例: import java.util.Scanner; public class BigNum { private double num; publi ...

  10. OpenHarmony3.1 Release版本特性解析——硬件资源池化架构介绍

    李刚 OpenHarmony 分布式硬件管理 SIG 成员 华为技术有限公司分布式硬件专家 OpenHarmony 作为面向全场景.全连接.全智能时代的分布式操作系统,通过将各类不同终端设备的能力进行 ...