问题提出

使用LabVIEW编写应用程序时,相信很多小伙伴遇到过这样的问题,在VI程序中涉及到路径的问题时,比如在程序开始运行时,需要自动读取当前目录下某个文件的内容作为参数的初始配置,或者自动加载当前目录下某个子文件夹下所有的图片文件作为图标使用时,在这种情况下,我们一般使用LabVIEW中提供的“当前VI路径”函数获取当前程序的完整路径,进而得到当前程序所在的文件夹路径,在程序的开发环境下即生成EXE程序前,程序运行一切良好,但是当生成可执行的EXE程序后再运行,会提示路径不正确,找不到待读取或加载的文件。

这是怎么回事呢?

问题分析

其实,不同于其它的编程语言,在LabVIEW中使用“当前VI路径”函数获取当前程序的完整路径时,生成EXE前后其返回值是不一样的。

下面通过一个例子进行说明,例子前面板如下图所示:

这个程序比较简单,就是在前面板上显示获取到的当前程序的完整路径和其所在的文件夹,其程序框图如下所示:

在上面程序框图中,使用“当前VI路径”函数获取当前程序的完整路径,然后使用“拆分路径”函数获取得到当前程序所在的文件夹。

将该程序保存在“E:est”目录下,然后生成EXE程序“Main.exe”,将该EXE程序也放在“E:est”目录下。

上面前面板图中显示了生成EXE程序前的运行情况,运行结果一切正常,但生成EXE后运行“Main.exe”程序时,其结果如下图所示:

相对于生成EXE前,当前程序所在的文件夹由“E:est”变成了“E:estMain.exe”,当前程序的完整路径由“E:estMain.vi”变成了“E:estMain.exeMain.vi”,可见,在路径目录中,多了一级Main.exe,很明显,相同的程序代码在同一个目录下,EXE生成前后当前主程序所在的路径返回值发生了变化。

这种在程序中使用相对路径时,无论是在开发环境下运行还是在EXE情况下运行,都需要在不修改代码的前提下,能够正确得到当前主程序所在的文件夹名称,那么怎样修改程序实现我们的目的呢?

解决方案

对上面的程序框图稍作修改,如下图所示:

在获致当前程序所在文件夹时,其思路是,将“当前VI路径”函数的返回值(路径类型)转换为字符串后进行判断,然后分别处理。判断方法为使用“匹配模式”函数判断字符串中是否存在“.exe”,该函数的返回参数“匹配后偏移量”会返回其索引位置,该值在不同的情况下会有所不同。

若存在“.exe”,该值会大于0,对应于EXE模式下运行,此时需将传入的路径进行两次拆分路径处理。

若不存在“.exe”,则该值为-1,对应于开发环境下运行,此时只需将传入的路径进行一次拆分路径处理即可。

将修改后的程序生成EXE程序后,运行结果如下图所示:

可见,修改程序后无论是在开发环境下还是在EXE程序运行模式下,都能得到正确的当前程序所在的路径。

总结

对于LabVIEW中如何处理生成EXE程序前后的路径不一致问题,本文给出了一种解决方案,当然,还有很多种其它方案,相比来说,这是一种最简单、易行的实现方法。

如果你觉得这篇文章对你有用的话,关注+收藏+点赞吧。

labview当前vi路径_对于LabVIEW程序为什么生成EXE后,涉及到路径的输出不正确了?...相关推荐

  1. labview程序打包生成exe安装程序(目标电脑无labview)

    文章目录 1.创建labview工程 2.生成应用程序 3.生成安装程序 目标:在没有安装labview的电脑上,安装exe程序 首先创建好工程,然后生成应用程序,使用应用程序可以在安装有labvie ...

  2. labview自动保存报表_基于LabVIEW的Excel报表的自动生成功能

    所示. 图 1 Excel Specific 的子模板 所有的用于生成 Excel 格式的 VI 集都在 Excel Specific 模板中.此时,用户就可以在 LabVIEW 中直接使用这些简易 ...

  3. 微信小程相对图片路径_微信小程序----相对路径图片不显示

    出现场景 在本地调试的时候本地图片显示,但是手机浏览的时候本地图片不显示. 出现图片不显示的原因 小程序只支持网络路径和base64的图片.图片转base64在线工具 处理方法 将图片都放到服务器,然 ...

  4. java获取当前项目相对路径_怎样在JAVA文件中获取该项目的相对路径

    1.基本概念的理解 绝对路径:绝对路径就是你的主页上的文件或目录在硬盘上真正的路径,(URL和物理路径)例如: C:\xyz\test.txt 代表了test.txt文件的绝对路径.http://ww ...

  5. 关于python缩进的描述中_关于Python程序中与“缩进”有关的说法中,以下选项中正确的是()...

    关于Python程序中与"缩进"有关的说法中,以下选项中正确的是() 答:缩进在程序中长度统一且强制使用 同文学或同音乐主题的民歌,<_______>是其中之一.此曲经 ...

  6. django可以生成exe文件吗_把 Django 程序打包为 exe 可执行文件

    功能背景 我把自动化校准程序写好后,可以在 Pycharm 中运行 Django 程序.但是,这个程序最终要给检定员用的,我不可能在每个检定员的电脑上安装 Django 编程环境让他们使用.所以,要把 ...

  7. 哪个是python程序中与缩进有关的正确说法_关于Python程序中与“缩进”有关的说法中,以下选项中正确的是()。_学小易找答案...

    [单选题]白内障的主要症状 [多选题]白内障病人手术后护理重点观察是 [单选题]某女,21岁.排球比赛时与队员发生碰撞,后诉鼻梁疼痛来院就诊,检查鼻腔发现鼻中隔有一小血肿.正确处理方法是 [单选题]开 ...

  8. java压缩文件能否不压缩路径_如何在Java中压缩文件而不包含文件路径

    例如,我要压缩存储在/Users/me/Desktop/image.jpg中的文件 我做了这个方法: public static Boolean generateZipFile(ArrayList s ...

  9. 下列关于python语言中缩进的说法正确的是_关于Python程序中与“缩进”有关的说法中,以下选项中正确的是 _________ 。_学小易找答案...

    [单选题]表达式 'x' or 'y' or [] 的返回值为______. [判断题]( )中国与金砖国家贸易互补性强. [判断题]( ).中国是世界上最大的纺织品生产国和出口国,约占世界纺织品贸易 ...

最新文章

  1. 绝了!这款工具让SpringBoot不再需要Controller、Service、DAO、Mapper!
  2. Spring IOC 组件概述
  3. C语言实现哈密尔顿hamiltonian算法(附完整源码)
  4. Jos pipe实现解析
  5. Activiti保存.png 流程图片文件且解决idea中保存图片时显示中文乱码的解决方法
  6. 简书bug:不支持复制粘贴纯文本
  7. 让线程按顺序执行8种方法
  8. ERROR: Could not install packages due to an EnvironmentError: [WinError 5] 拒绝访问。
  9. .net 4.5 新特性 async await 一般处理程序实例
  10. 腾讯终于良心了!桌面混乱有救了
  11. FFmpeg教程(超级详细版)
  12. python socket实现浏览器访问本地文件资源即静态网页(TCP)
  13. 有趣的代码,让生活更加愉快(抖音网红代码)
  14. java邮件发送 qq与163邮箱互发和qq和163邮箱发送其他邮箱实例
  15. 视频教程-NodeJs零基础到实战项目-Node.js
  16. 使用Laya引擎开发微信小游戏(上)
  17. final修饰的变量
  18. /MD /MDd /MT /MTd
  19. AVR ATMEGA8的初次使用
  20. openeuler 22.03 制作openssh9.3p1 rpm升级包和升级实战

热门文章

  1. php 垃圾回收机制----写时复制和引用计数
  2. StoryBoard解惑
  3. 利用xcode6做出牛的一逼的计算器
  4. SugarCRM 去掉 模块标题左边的 问号 和 帮助
  5. HDOJ 1247 HDU 1247 Hat’s Words ACM 1247 IN HDU
  6. urlrewrite 保持 posturl
  7. Windows消息机制疑问探究
  8. C#使用Mutex实例详解
  9. C#控件常用设计整理大全
  10. android实现首页倒计时,android 利用CountDownTimer实现时分秒倒计时效果