labview当前vi路径_对于LabVIEW程序为什么生成EXE后,涉及到路径的输出不正确了?...
問題提出
使用LabVIEW編寫應用程序時,相信很多小伙伴遇到過這樣的問題,在VI程序中涉及到路徑的問題時,比如在程序開始運行時,需要自動讀取當前目錄下某個文件的內容作為參數的初始配置,或者自動加載當前目錄下某個子文件夾下所有的圖片文件作為圖標使用時,在這種情況下,我們一般使用LabVIEW中提供的“當前VI路徑”函數獲取當前程序的完整路徑,進而得到當前程序所在的文件夾路徑,在程序的開發(fā)環(huán)境下即生成EXE程序前,程序運行一切良好,但是當生成可執(zhí)行的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生成前后當前主程序所在的路徑返回值發(fā)生了變化。
這種在程序中使用相對路徑時,無論是在開發(fā)環(huán)境下運行還是在EXE情況下運行,都需要在不修改代碼的前提下,能夠正確得到當前主程序所在的文件夾名稱,那么怎樣修改程序實現我們的目的呢?
解決方案
對上面的程序框圖稍作修改,如下圖所示:
在獲致當前程序所在文件夾時,其思路是,將“當前VI路徑”函數的返回值(路徑類型)轉換為字符串后進行判斷,然后分別處理。判斷方法為使用“匹配模式”函數判斷字符串中是否存在“.exe”,該函數的返回參數“匹配后偏移量”會返回其索引位置,該值在不同的情況下會有所不同。
若存在“.exe”,該值會大于0,對應于EXE模式下運行,此時需將傳入的路徑進行兩次拆分路徑處理。
若不存在“.exe”,則該值為-1,對應于開發(fā)環(huán)境下運行,此時只需將傳入的路徑進行一次拆分路徑處理即可。
將修改后的程序生成EXE程序后,運行結果如下圖所示:
可見,修改程序后無論是在開發(fā)環(huán)境下還是在EXE程序運行模式下,都能得到正確的當前程序所在的路徑。
總結
對于LabVIEW中如何處理生成EXE程序前后的路徑不一致問題,本文給出了一種解決方案,當然,還有很多種其它方案,相比來說,這是一種最簡單、易行的實現方法。
如果你覺得這篇文章對你有用的話,關注+收藏+點贊吧。
總結
以上是生活随笔為你收集整理的labview当前vi路径_对于LabVIEW程序为什么生成EXE后,涉及到路径的输出不正确了?...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 页面中color颜色值_计算机毕业设计中
- 下一篇: vob是什么格式(mkv是什么格式)