2013/09/07

動態地讓Array Size增長 - Part 2

在上一篇文章〈動態地讓Array Size增長 - Part 1〉中,介紹了如何利用shift register與Build Array的技巧讓一個矩陣能根據資料量動態地成長,而毋須事先配置;並且介紹了LabVIEW從2012版開始,提供的Conditional Tunnel功能,在某些場合可以替代shift register與Build Array來達到動態成長的功能。

這次我們繼續介紹利用shift register搭配Build Array的手法,來進行不同的應用:

圖一

在圖一這個應用中,程式須判斷使用者輸入的字串是否已經存在於系統資料庫中,如果沒有的話,便將這個字串加入資料庫中。解法請參考下圖:


圖二

如圖二,資料庫由一個string array表示,Input String輸入的值會先在區塊<2>進行分析,再藉由圖中的紅色圓圈與箭頭所示,利用動態成長的手法加入String Bank中。這個應用無法使用Conditional Tunnel的手法實現,僅能透過shift register + build array來完成。

此外,這項技巧也可以應用在其他場合,例如:動態地讓一個string增長。我們可以將string視為一個特殊的1D array,利用concatenate string取代build array來增長它,如圖三:
圖三



圖四

在上面這個VI中,當前置面板的Record Time被按下時,當前的系統時間會被加入到History這個string indicator的最底端。這種手法可以用來紀錄系統的動作與狀態,並且更新到人機介面上,作為即時更新的log。

程式1載點:StringCompare&Save.vi
程式2載點:DynamicallyStringGrowth.vi

沒有留言:

張貼留言