0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

jf_NKOETB7n 来源:LabVIEW的编程之道 2024-02-29 10:24 次阅读

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

一、接口幂等性简介

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、我们要实现的功能就是点击运行后禁用运行按钮,当运行结束或点击复位时使能运行按钮,如下图所示。

f17a673c-d6a1-11ee-a297-92fbcf53809c.png

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

f1918fa2-d6a1-11ee-a297-92fbcf53809c.png

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

f1aa8f5c-d6a1-11ee-a297-92fbcf53809c.png

f1b16764-d6a1-11ee-a297-92fbcf53809c.png

4、下边时运行效果

f1b505f4-d6a1-11ee-a297-92fbcf53809c.gif

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

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

3.1、接口幂等的执行流程

f1f6ee24-d6a1-11ee-a297-92fbcf53809c.png

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

f206ade6-d6a1-11ee-a297-92fbcf53809c.png

Get

f2240b98-d6a1-11ee-a297-92fbcf53809c.png

Unlokc

f23193d0-d6a1-11ee-a297-92fbcf53809c.png

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

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

f23f4534-d6a1-11ee-a297-92fbcf53809c.png

3.5、下边是最后运行效果

f253ea0c-d6a1-11ee-a297-92fbcf53809c.gif

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

1.LabVIEW2015中文版

审核编辑:黄飞

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

    关注

    1970

    文章

    3654

    浏览量

    323267
  • 状态机
    +关注

    关注

    2

    文章

    492

    浏览量

    27526

原文标题:LabVIEW的编程之道-接口幂等

文章出处:【微信号:LabVIEW的编程之道,微信公众号:LabVIEW的编程之道】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    【大语言模型:原理与工程实践探索《大语言模型原理与工程实践》2.0

    《大语言模型“原理与工程实践”》是关于大语言模型内在机理和应用实践的一次深入探索。作者不仅深入讨论了理论,还提供了丰富的实践案例,帮助读者理解如何将理论知识应用于解决实际问题。书中的案
    发表于 05-07 10:30

    《开关电源设计与调试》课程建设实践探索

    《开关电源设计与调试》课程建设实践探索,《开关电源设计与调试》课程建设实践探索
    发表于 06-15 23:36

    基于实践LabVIEW零基础入门视频教程---03 LabVIEW编程小技巧

    本课程将用项目与实践的方法带领大家零基础入门LabVIEW,通过教大家用不同的方法编写一款计算器软件,来彻底学会和掌握LabVIEW。看完视频,大家肯定会有收获。03 LabVIEW
    发表于 01-16 22:01

    【下载】《LabVIEW编程样式》——有关LabVIEW编程的最佳实践指南

    `内容简介 《LabVIEW编程样式》是一本有关LabVIEW编程的最佳实践指南。针对应用程序的易用
    发表于 08-14 18:11

    离线计算中的和DataWorks中的相关事项

    考虑到,导致对应的单据有两条确认记录。点此查看原文:http://click.aliyun.com/m/42758/概念这个词在软
    发表于 02-27 13:24

    现代数字逻辑电路实践教学探索与改革

    现代数字逻辑电路实践教学探索与改革 摘要:可编程逻辑器件的出现使数字电路设计方式发生了革命变化,设计者采用EDA软件
    发表于 05-24 17:22 19次下载

    LabVIEW编程技巧

    LabVIEW编程技巧LabVIEW编程技巧LabVIEW编程技巧
    发表于 02-23 16:59 151次下载

    测控工程实践LabVIEW实践教程

    测控工程实践LabVIEW实践教程说明。
    发表于 04-19 14:29 43次下载

    在高并发下怎么保证接口

    前言 接口性问题,对于开发人员来说,是一个跟语言无关的公共问题。本文分享了一些解决这类问题非常实用的办法,绝大部分内容我在项目中实践过的,给有需要的小伙伴一个参考。 不知道你有没有
    的头像 发表于 05-14 10:23 1803次阅读
    在高并发下怎么保证<b class='flag-5'>接口</b>的<b class='flag-5'>幂</b><b class='flag-5'>等</b><b class='flag-5'>性</b>?

    什么是?关于接口的解决方案

    这里的乐观锁指的是用乐观锁的原理去实现,为数据字段增加一个version字段,当数据需要更新时,先去数据库里获取此时的version版本号
    发表于 10-09 10:19 1942次阅读

    分析解决)的方法

    这个概念,是一个数学上的概念,即:f……(f(f(x))) = f(x)。用在计算机领域,指的是系统里的接口或方法对外的一种承诺,使用相同参数对同一资源重复调用某个接口或方法的结果
    的头像 发表于 10-14 10:08 939次阅读

    Spring Boot实现接口的4种方案

    是一个数学与计算机学概念,在数学中某一元运算为时,其作用在任一元素两次后会和其作用一次的结果相同。
    的头像 发表于 11-08 10:21 997次阅读

    什么是的实现原理

    编程中一个操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同。函数,或
    发表于 01-05 10:40 6119次阅读

    一个注解,优雅的实现接口

    除了查询和删除之外,还有更新操作,同样的更新操作在大多数场景下也是天然的,其例外是也会存在ABA的问题,更重要的是,比如执行update table set a = a + 1 where v = 1这样的更新就非等了。
    的头像 发表于 08-26 14:36 891次阅读
    一个注解,优雅的实现<b class='flag-5'>接口</b><b class='flag-5'>幂</b><b class='flag-5'>等</b><b class='flag-5'>性</b>!

    基于接口解决方案

    接口是指无论调用接口的次数是一次还是多次,对于同一资源的操作都只会产生一次结果。换句话说,多次重复调用相同的
    的头像 发表于 09-30 16:27 428次阅读
    基于<b class='flag-5'>接口</b><b class='flag-5'>幂</b><b class='flag-5'>等</b><b class='flag-5'>性</b>解决方案