標籤: LabVIEW

  • LabVIEW 的輸出路徑一覽

    LabVIEW 內建的路徑有這幾種:

    • Current VI’s path
    • Application Directory
    • Default Directory
    • Default Data Directory
    • VI library
    • Temporary Directory

    路徑的呼叫方式可參考下圖:

    把 VI 放在 C:\some-folder 中,執行後的結果如下:

    比較容易有疑問的是 Application Directory。實測後無論是掛在 LabVIEW Project 下或是在 Main Application Instance 下(不透過 LabVIEW Porject,直接開 VI),其輸出路徑都一樣。

    Build 成執行檔(.exe)後再執行,輸出的路徑會有滿大的差異:

    Current VI’s path 整個變了,傳統上在 Build path 時用 “.." 來取得所在目錄的方法會失效。這樣看來,用 Application Directory 來操作路徑會有比較好的相容性,至少將來 build 成執行檔後其目錄路徑不變。

    另外資料或暫存檔分別放在 Default Data Directory 與 Temporay Directory 也會有比較好相容性(路徑不變)。

    再補充一點,Temporary Directory、Default Directory 與 Default Data Directory 可到 Options >> Paths 中修改:

  • LabVIEW 的 Error Case Structure 與 Indicator 的輸出值

    很像是 CLAD 會出現的考題:試問下圖的 In case 值在有 Error 的情況下為何?

    答:是預設值,效果等於 Use Default If Unwired,也就是 In caseOut of case 一樣。

    下面的測試把上圖的程式當成 SubVI 來使用。區域 1 中,可以看到有 Error 時的 Out of caseIn case 輸出都是 0,也可以說 In case 是以 Use Default If Unwired 來輸出。區域 2 把 Error 清掉後 SubVI 的輸出就正常了。

    若把 SubVI 的 Error case 中的 Out of case 給定一個值(如下圖的 9487):

    Out of case 會以給定的值(9487)輸出。In case 則不變,一樣是 0,維持 Use Default If Unwired 的設定。


    結論:以後不用再把 Indicator 拉到 Error Case Structure 外,並特地設定 Use Default If Unwired 啦。

  • 利用 MD5 + MAC address 實作 LabVIEW 軟體授權

    在某些情況下,開發者或發行者為了限制軟體的使用,會透過授權機制來控管軟體的運行情境。我之前遇到一個狀況,要把 LabVIEW 程式跟特定電腦的 MAC address 綁定,之後使用者只能在綁定過的電腦上使用該程式。若把程式移到其它電腦上程式便無法運行。

    (繼續閱讀…)
  • 在 LabVIEW UI 中加入 git 的版本號

    對於以 git 來管理的 LabVIEW 專案,在 UI 中使用 git 版本號來標示軟體版本,無論對於開發者或使用者來說都是簡單明瞭的作法。因此前一陣子寫了個這樣子的 VI:LV-git-describe-version

    (繼續閱讀…)
  • 【LabVIEW】Front Panel 畫面存檔

    之前常常要將 LabVIEW 的 Front Panel 畫面截圖存檔,後來自己寫了一個 VI:LV-FP-PrtSc

    (繼續閱讀…)
  • 【LabVIEW】Hex viewer

    之前寫嵌入式系統時常用 LabVIEW 來收資料,也常常要用肉眼檢查 binary 的資料。最簡單的方式就是把資料存在電腦裡,再用 NotePad++ 的 Hex Editor 或 Hex Fiend 這一類軟體把資料打開來檢查。其實滿多程設的 IDE 都有內建 hex viewer 或 hex display 的功能,以 LabVIEW 來說,只要把資料 typecast 成 string 後,就能用 hex 的方式來檢視;或更進一步的用 Number to Hexadecimal 把它轉成 hex string。 (繼續閱讀…)

  • 將元素置入 LabVIEW 陣列首部的效率比較

    對於一個 LabVIEW 陣列,將元素插入陣列的首部或尾部有極大的速度差異,後者的效率會高上 100 倍以上,因此延伸出幾種對於「將元素置入陣列首部」的寫法。以下用 Insert Into Array、Build Array 與 Reverse 1D Array 三個內建的 LabVIEW 函式來實作並比較處理速度。其中第三種方式是先將陣列反轉,將新元素寫到陣列的尾巴後再反轉回來。主要是因為是陣列反轉只轉指標,再配合陣列置尾兩個雙重的速度優勢。下面的測試是在 LabVIEW 2016 的開發環境下。 (繼續閱讀…)

  • LabVIEW 的 Single Element Queue

    在 LabVIEW 中要使用全域變數,最常見的方法是使用內建的 Global variable 或更具存取控制設計的 Functional global variable (FGV)。本文的主角 Single Element Queue (SEQ) 是以 queue 為基礎所設計的全域變數的存取方式,除了有 by reference 這個特色,另外 SEQ 也符合 LabVIEW 資料流中常見的「初始化」、「讀/寫」與「關閉」的設計概念。

    (繼續閱讀…)

  • 自訂 LabVIEW Palette

    以下內容會以將 Functions Palette 裡面的 Favorites 中的內容,與本機端的特定資料夾內的 VI 檔案同步為例。之後使用時,就能在 Functions Palette 裡面將這些 VI 以 SubVI 或原始碼的形式置入 Block Diagram 中。

    環境為 Windows 10,版本為 LabVIEW 2016 32 bit。

    (繼續閱讀…)

  • 中文環境下 LabVIEW Icon Editor 字型毛邊的解法

    在中文系統下,LabVIEW 的 Icon Editor 裡面小的字號會有毛邊的問題,如下圖。

    如果照圖片中的設定選用 Small Fonts,在字號 10 以下就會出現模糊的毛邊。字體 11 以上是正常的,只是字體太大會減少能填入的字母數,間接地影響資訊的表現性。(毛邊其實是作業系統對字體進行 anti-aliasing 的結果。上面的字號設定是以 Windows 10 為例) (繼續閱讀…)