探索LabVIEW编程接口幂等性原理与实践

电子说

1.3w人已加入

描述

里讲一个很高大上的概念,但是也是一个很简单,使用非常频繁的功能:接口幂等,然后讲两个实现方式。

一、接口幂等性简介    

1.1接口幂等定义:

幂等性原来是数学上的概念,在编程领域可以理解为:多次请求某一个资源或执行某一个操作时应该具有唯一性同样等结果,也就是说,其任意多次执行对资源本身所产生等影响的结果或函数执行的结果,都与第一次执行的结果相同。

1.2在LabVIEW里的主要解决的问题:
1.2.1、在结果没有完成时的重复点击。

1.2.2、无意间的双击导致重复发送命令。

1.2.3、按键防抖。

1.2.4、在生成消费者中,生产数量大于消费数量,且可以忽略多与生成者的情况下。

1.2.5、在操作者架构Actor Framework使用其功能可以避免消息队列堆积。

1.3、接口幂等的使用条件

要实现接口幂等最好是对命令和操作进行解耦,例如以下软件架构:生产消费者,JKI,AMC,DQMH等。

1.4、这里提供两种解决方法

1、控件禁用方式实现。

2、使用唯一ID实现。

 

二、接口幂等的解决办法1-控件禁用    

我们直接用状态机章节中的异步状态机的例子改造下,利用控件禁用实现接口幂等操作。

1、我们要实现的功能就是点击运行后禁用运行按钮,当运行结束或点击复位时使能运行按钮,如下图所示。

状态机

2、在Run事件中添加禁用运行按钮代码,在洗涤结束流程中添加使能Run代码。

状态机

3、在停止和复位事件中天健Run使能代码

状态机

状态机

4、下边时运行效果

状态机

可以看到在设备运行时禁用了运行控件,当运行结束后可以再次点击运行。

 

三、接口幂等的解决办法2-唯一ID    

3.1、接口幂等的执行流程

状态机

3.1.1先要创建一个全局的ID

3.1.2、发送命令时读取全局ID并和命定打包

3.1.3、执行单元接收到打包的命令后与将打包的ID和全局ID进行比较

3.1.4、ID相等执行命令后将ID++

3.1.5、ID不同时忽略该命令

3.2、先设计个FGV来保存和ID便于操作

Set

状态机

Get

状态机

Unlokc

状态机

3.3、修改JKI传递的数据类型将原来的字符串改成簇,其中包含ID和命令字符串。

3.4、在处理事件时增加幂等处理,如果ID不等则忽略命令,将退出命令提升到最高优先级

状态机

3.5、下边是最后运行效果

状态机

 

四、需要安装的软件或工具包    

1.LabVIEW2015中文版

审核编辑:黄飞

 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分