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

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

3天内不再提示

介绍两种LabVIEW里实现进度条的方式

jf_V8z5L4Nx 来源:传感测控物联网 2023-07-14 09:29 次阅读

进度条,是一个非常重要的UI元素。 工控软件里有些任务耗时很长,为了不让用户感觉等待的过程过于漫长,也为了告诉用户软件还在正常运行、及时告诉用户完成到什么程度了、大概还要多久可以完成,我们有必要给软件设计一个进度条。 本篇推送里我们介绍两种实现进度条的方式:

使用LabVIEW自带的Horizontal Progress Bar控件。

使用WF Progress Bar插件。

1.Horizontal Progress Bar控件

Horizontal Progress Bar是LabVIEW自带的进度条控件,本质上是个数值显示控件,位于Numeric控件分类里。根据使用习惯的不同,大致上有以下几种使用方式。

1)直接使用Horizontal Progress Bar 直接把代表进度的数值写给Horizontal Progress Bar。 例如下面这个代码,task i表示第i项任务,我们等待一下,模拟这个任务需要耗费点时间。这样这个进度条随着任务的执行就可以自动更新进度了。进度条的数据类型、最小值、最大值都可以在属性里设置。

d299fdf4-21d5-11ee-962d-dac502259ad0.png

d2ad910c-21d5-11ee-962d-dac502259ad0.png

上面这个进度条实现方式非常简单,但是缺点也很明显:我们需要通过属性节点或者局部变量来更新进度条,不能在子VI内更新。

2)SubVI + Horizontal Progress Bar控件 为解决子VI内更新进度的问题,我们可以设计一个专门用来更新进度条的子VI,把指向Horizontal Progress Bar的引用作为参数,在子VI内更新进度条的值。下面是更新进度条值(进度)的子VI代码,比如我们命名为UpdateProgressBar.vi。

d2bcbca4-21d5-11ee-962d-dac502259ad0.png

d2c6410c-21d5-11ee-962d-dac502259ad0.png

需要更新进度的时候,调用这个VI即可。例如下面这个示例代码。

d2d7b3c4-21d5-11ee-962d-dac502259ad0.png

3)全局变量+Horizontal Progress Bar控件 还有一种从各个层次VI变更主界面上进度条的方式就是使用全局变量。另外设计一个线程,这个线程负责定期读取全局变量的值并更新进度条。 例如下面这个程序,我们调整Progress值时进度条将同步变化。

d2e62a76-21d5-11ee-962d-dac502259ad0.png

代码如下:

d2f28cee-21d5-11ee-962d-dac502259ad0.png

上图中下面的线程会定去读取Progress全局变量的值并更新进度条显示。

以上是进度条位于主界面的情况,如果我们需要动态弹出进度条进行提示呢?如果需要进度条滚动的同时给出文字提示呢?当然我们可以利用Horizontal Progress Bar写一些专用的VI。不过这需要花费不少时间和精力。好在针对进度条这样一个经常会用到的控件,已经有人将其设计成标准插件了。

下面我们看看WF Progress Bar插件。

2.WF Progress Bar插件

在VI Package Manager里搜索progress,找到WF ProgressBar,按提示安装好插件。

d300b74c-21d5-11ee-962d-dac502259ad0.png

安装好之后,我们可以在Addon里找到相关的函数和控件。

d3238934-21d5-11ee-962d-dac502259ad0.png

从Help菜单里打开Find Examples对话框,搜索Progress找到Progressbar test_WireFlow.vi。这是WF ProgressBar的示例项目。

d33b0eec-21d5-11ee-962d-dac502259ad0.png

下面这个GIF是Progressbar test_WireFlow.vi部分运行情况,展示了WF ProgressBar的一部分效果。这里面包括开始阶段Splash Screen的加载进度条,都是WF ProgressBar插件实现的。

d35a0de2-21d5-11ee-962d-dac502259ad0.gif

Progressbar test_WireFlow.vi主要代码如下:

Splash Screen进度条加载和显示代码:

d373fc16-21d5-11ee-962d-dac502259ad0.png

实现步骤:

1)创建ProgressBar实例,打开Splash Screen前面板。

2)指定ProgressBar最小值、最大值。

3)更新进度提示信息

4)更新进度值。

5)关闭进度条窗口。

6)关闭进度条对话(Session)。

3)和4)根据任务需要循环或顺序执行。

不同主题的进度条加载和显示代码:

d3877c00-21d5-11ee-962d-dac502259ad0.png

实现步骤:

1)创建ProgressBar示例,设定主题(样式),但是不打开前面板。

2)填写保持不变的提示信息。

3)设定ProgressBar最小值、最大值。

4)打开前面板。

5)更新进度条提示信息。

6)更新进度值。

7)关闭ProgressBar。

8)关闭对话(Session)。

WF ProgressBar进度条的样式是可以自定义的,详细方法可参考WF ProgressBar的帮助文档。 借助WF ProgressBar插件可以快速应用专业的进度条,让软件人机界面更加友好,感兴趣的朋友不妨试一试。

以上是关于进度条的一些知识,简单的和复杂的方法都介绍到了,稍加改变或变通就能够满足绝大多数应用开发需求,希望能够帮助到你。





审核编辑:刘清

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

    关注

    1918

    文章

    3619

    浏览量

    317001

原文标题:LabVIEW里进度条的两种高效实现方式

文章出处:【微信号:传感测控物联网,微信公众号:传感测控物联网】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    关于进度条

    我用的labview8.6,初学者,在那能找到进度条啊!
    发表于 10-28 11:35

    进度条问题

    如何通过编程的方法改变进度条刻度的最大值?
    发表于 02-20 22:55

    自己做的好看的进度条

    看论坛有人做的进度条模仿者做了一个感觉还挺漂亮希望大家多提意见
    发表于 08-27 16:24

    请问怎么用进度条显示程序的进度

    怎么用进度条显示程序的进度
    发表于 12-24 10:02

    【安富莱原创】【STemWin教程】第52章 PROGBAR-进度条控件

    使用GUIBulder建立多页控件 52. 4 总结 52.1 进度条控件介绍进度条通常在应用程序中用于实现虚拟化,下面的截图是设置了皮肤和没有设置皮肤时的显示效果:设置皮肤后显示效
    发表于 05-16 14:45

    labview进度条

    这是一个labview进度条程序,比较好用
    发表于 08-04 14:30

    怎么用labview实现下载程序的进度条

    怎么用labview实现下载程序的进度条
    发表于 01-12 21:43

    学习51三周,首贴记录1602实现进度条显示

    1602八个用户自定义字库里写入了4个符号,通过这四符号的相互配合,可以实现一段比较好看的进度条的显示。这四符号如图二所示,每个符号的右侧有8个字节的编码。最左侧的字符是
    发表于 10-06 10:29

    第52章 PROGBAR-进度条控件

    52. 4 总结52.1 进度条控件介绍 进度条通常在应用程序中用于实现虚拟化,下面的截图是设置了皮肤和没有设置皮肤时的显示效果: 设置皮肤后显示效果如下:
    发表于 10-18 09:32

    labview进度条

    我用labview2017做了一个文件解压和复制的vi,解压过程中不知道真实的解压进度,怎么才能做一个真实的进度条,要真是的,不是自己规定的,求助!!!
    发表于 04-26 09:10

    labview实现进度条

    进度条
    发表于 03-25 17:06

    怎么设置进度条

    RT!比如 我创建一个随意长度的进度条然后我知道一个文件的大小 当把这个文件的数据读完后进度条也跟着完毕请问那位弄过?我搞了下随意创建 有问题有事候进度条会超出 边框那么一点点!
    发表于 08-22 04:35

    如果更新太快,进度条对象无法正确呈现?

    3000ms延迟,计数0/3000->29/3000不重新绘制进度条的位置,但是30/3000=1/100等)是我更新的方式。处理进度条愚蠢和/或过于资源密集型?或者这可能是虫子?编辑:对于记录,如果我把期限改为10ms,它在每
    发表于 09-20 06:18

    原版Windows的进度条

    `通过调用.Net接口实现,感觉这个进度条的动画效果还是不错的,在这里分享一下`
    发表于 02-05 14:33

    HarmonyOS实战——ProgressBar进度条组件基本使用

    里面的值 + 5//获取进度条里面原本的值//两种获取进度条组件的方式://1.把onStart方法的pb移动到成员位置//2.onClick方法的形参,也表示被点击的组件对象//下面
    发表于 09-22 23:31