论vi态和exe态下路径的获取:一种新方法
本帖最后由 飞雨天 于 2010-7-7 15:32 编辑经常看到某某帖说”我的程序在vi态下运行的好好的,但是打包之后就不能用了!“其实导致这个问题的本质在LabVIEW自带的application builder user guider里说的很清楚了,我偷懒截图之:
然后出现很多方法,核心思想就是判断程序是在vi态还是exe态,然后做不同的处理。几位版主也写过很精彩的vi,大家可以去找找,在精华帖里应该有的,就在前几个。
再然后就是看LabVIEW style bool,看到里面说要把主vi和子vi分开保存,建立一些文件夹放置不同功能的文件,比如文档,图片,控件,当然还有子vi,而把主vi提高到与众文件夹统一级别,见下面截图,这个是我目前做的一个项目:
所以,我就想,如果能借助文件夹分类,来提供一个在vi态和exe态都能输出一致路径的机制,那就解决问题了。而我们编程的时候,需要的就是程序所在的路径,特别是主程序所在路径,我称之为主路径,下面截图是我某文档的一部分,作为一个例子,应该能说明一些问题:
总结就是,做一个名为Get Current Project's Path的vi,把该vi放到subvi文件夹下,任何vi调用它,都会返回subvi文件夹所在工程的主路径,最后是该vi截图,如此一来,就没必要去判断vi态还是exe态了:
PS:标题本来想冠个”原创“的帽子,不过就帖子本身的技术来说,不值一提,甚至不能说是一种技术,而且,我也没找到”原创“的字眼,刚好看到”闲聊“,发觉这个更加贴切,论坛之论,就是一伙LabVIEW爱好者之”闲聊“尔!~
兄弟很用心,很好。 嗯,open vi reference这个节点在path输入的时候是可以用相对路径调用的
最好还是用 vi serve调用子程序,不要采用绝对路径,采用相对路径,我这样做的。 哎呀~~~我还是错了,或者说没考虑清楚。
一楼说的方法,是当初我用于定位其它文件夹用的,比如项目路径下经常要有一个data文件夹,用这个方法就可以定位,不过今天去调用subvi下的vi,结果就出问题了。原因很简单,比如我主路径是D:\Test\,主程序保存在D:\Test\Main.vi,exe状态的主程序保存在E:\Excutable\Main.exe,我要调用subvi文件夹下的一个Algorithm.vi的文件,路径应该是D:\Test\subvi\Algorithm.vi,在exe状态下,被打包到Main.exe\Algorithm.vi。
问题出来了,就是我如果用一楼的程序去get,vi下出来的是D:\Test,exe状态下出来的是E:\Excutable,无法一致的去建立最终Algorithm.vi的路径。
解决办法就是,在原来vi的接口上新增一个输入,bool类型,命名建议:Locate SubVI?,默认取False,当需要定位subvi(名字不一定是这个,不过该文件夹必须是存储这个Get和你需要的vi)文件夹时,调用Get的时候设置为True。
在Get程序里,做个判断,如果输入True,则只需要Strip一次即可(原来是Strip两次)。
哎,这样就不好看了。。。。等这段时间忙完,我考虑下其它方法
页:
[1]