(1) | 1.下列有關此程式碼執行的敘述,何者正確? (1) |
| (1) | 此迴圈將循環 51 次 |
| (2) | 此迴圈將循環 50 次 |
| (3) | 此迴圈將循環 49 次 |
| (4) | For Loop 若連接「50」至計數終端,則將執行相同的作業 |
| | |
詳解: | While Loop 與 For Loop 中的循環端點 (Iteration terminal),均從零開始計數。所以首次循環將回傳「0」,第二次循環將回傳「1」;依此類推。此處是設定「當循環端點的輸出為大於或等於 50 時」,While Loop 隨即停止。圖中可看出循環端點的輸出數值至少為「50」,所以必為 51次循環之後 |
(1) | 2.下列何種情況將產生事件 (Event),並由 LabVIEW Event Structure 所擷取? (2) |
| (1) | 用滑鼠更改人機介面控制元的數值 |
| (2) | 使用屬性節點 (Property node) 更新人機介面的控制元 |
| (3) | 透過控制參考 (Control reference),以程式設計方式更新人機介面的控制元 |
| (4) | 使用「VI Server」更新人機介面的控制元 |
| | |
詳解: | 所有可能的答案均指向 Value Change 事件。而 Value Change事件最常由使用者透過人機介面所產生 |
(1) | 3.在執行此程式碼之後,Result 指示元將顯示何值? (3) |
| (1) | SubVI 的執行時間將以毫秒 (Millisecond,ms) 計 |
| (2) | 零 |
| (3) | 從 1970 年 1 月 1 日以來的秒數 |
| (4) | Sequence 架構的執行時間將以毫秒 (Millisecond,ms) 計 |
| | |
詳解: | 當呼叫 Tick Count (ms) 函式時,將回傳 millisecond 計時器的數值。若呼叫 2 次並比較,將發現呼叫之間往往會產生時間差 (以毫秒 ms 為單位)。在此程式碼片段 (Snippet) 中,隨即將於 TickCount (ms) 函式的 2 次呼叫之間,另外呼叫 subVI。因此 A 為正確答案 |
(1) | 4.現在有 VI 人機介面上的 1 組控制元,需於 Run-Time 期間修改其中之一的屬性。下列哪 種應為最佳方式? (4) |
| (1) | 建立隱藏式的屬性節點,並選擇所要修改的屬性 |
| (2) | 建立控制元參考,將參考傳送至屬性節點,再選擇所要修改的屬性 |
| (3) | 建立已連線的共用變數 (Shared variable),再選擇所要修改的屬性 |
| (4) | 建立局部變數,再選擇所要修改的屬性 |
| | |
詳解: | Property Nodes 是為了能「透過程式設計而修改人機介面的物件」所設計。變數 (Variable)並不會修改人機介面的物件,因此 B、C 均不對。由於此處並不是使用 subVI,答案 A 較答案 B 正確。因為隱式 Property Node 即可運作,而不像顯式 Property Node 需要額外輸入 |
(3) | 5.建立陣列最有效率方式為: (5) |
| (1) | 於 While Loop 中放置陣列建置 (Build array) 函式 |
| (2) | 初始化陣列之後,接著取代 While Loop 中的要素 |
| (3) | 使用 For Loop 搭配 Auto-indexing 功能 |
| (4) | 使用 While Loop 搭配 Auto-indexing 功能 |
| | |
詳解: | 與 While Loop 相較,For Loop 更能有效建立陣列;因為 For Loop 將執行已預先決定的循環次數。因此,在執行 For Loop 之前,LabVIEW 可先針對陣列而分配記憶體 |
(3) | 6.針對長時間執行應用的時序控制邏輯,以下何項為最佳的時序函式 (VI)? (6) |
| (1) | |
| (2) | |
| (3) | |
| (4) | |
| | |
詳解: | A 與 B 均回傳毫秒 ms 為單位的值。因為題目指定「執行期間延長」的應用,所選用的函式應能計數較大的數字,不至於太快數完又歸零重來。而答案 B 僅是為程式碼新增了同步化延遲。如此並無法達到有效率的長時間執行。最好是比較現有時間與參考時間,了解耗用的時間是否正確。所以答案 C 較佳 |
(4) | 7.下列程式圖所顯示的 VI 中,啟動自動錯誤處理 (Automatic error handling) 的功能。若檔 案「C:\data.txt」不存在,是否將蹦現錯誤對話框? (7) |
| (1) | 會,每當 Open/Create/Replace File 函式回傳錯誤時,都會蹦現錯誤對話框 |
| (2) | 會,每當迴圈完成 1 次週期,都會蹦現錯誤對話框 |
| (3) | 會,但僅出現一次,且與迴圈週期無關 |
| (4) | 否 |
| | |
詳解: | 即使啟動了自動錯誤處理功能,但錯誤叢集均將接至所有函式的輸出。如此一來,雖然發生錯誤,亦可避免 LabVIEW 中斷執行並對使用者顯示對話框。只要函式的輸出並未銜接錯誤叢集,LabVIEW 將顯示對話框並暫停執行 |
(34) | 8.若 Show Context Help 視窗中的某項輸入名稱,是於 SubVI 中以粗體字顯示,則下列敘 述何者為真? (8) |
| (1) | 輸入值必為純數 (Scalar) |
| (2) | 此項輸入為建議使用,非必要輸入 |
| (3) | 該項輸入為必要輸入 |
| (4) | 除非接線至該項輸入,否則將造成破裂的執行箭頭 |
| | |
詳解: | 在 Context Help 視窗中的粗體自輸出,即代表 Required 輸入。由於 Required 輸入既有的特性,使要該輸入並未接線,VI 將提供破裂的 Run 箭頭 |
(1) | 9.下圖 Array Size 的輸出為: (9) |
| (1) | {2, 3} 的 1D Array |
| (2) | {3, 2} 的 1D Array |
| (3) | 2 |
| (4) | 以上皆非 |
| | |
詳解: | 若屬於多重維度的陣列,則 Array Size 函式將輸出 1D 陣列,內含各個維度的大小。陣列次序為列 (Row) 優先,再來是欄 (Column)。所以正確答案 A 為 2 列 3 欄 |
(1) | 10.何項程式碼片段 (Snippet) 將寫入最少量的資料至磁碟? (10) |
| (1) | |
| (2) | |
| (3) | |
| (4) | |
| | |
詳解: | 單一 Boolean 值,將使用 LabVIEW 中的 1 個位元組 (Byte) 記憶體。正確答案 A 的 BooleanArray to Number 將轉換 8 組 Boolean 值 (即為 8 個位元組),成為單一的 8 位元整數值 (或稱為 1Byte)。因此寫入的總資料數為 1 byte。答案 B 則是針對各組 Boolean 值寫入 1 byte;答案 C 與 D 均是寫入字串。字串中的各個字元均將使用 1 byte。所以答案 C 與 D 均將寫入多個位元組的資料 |
(2) | 11.下列何項設定,將可針對人機介面的控制元,指派其特定按鍵或按鍵組合? (11) |
| (1) | Key Focus |
| (2) | Key Navigation |
| (3) | Radix |
| (4) | Distribute Objects |
| | |
詳解: | Key Navigation 為控制元的屬性,可讓工程師指定控制元的鍵盤動作。Key Focus 則是決定「目前是否選擇了控制元」的屬性。「Radix」為整數控制元的顯示元件,可讓使用者選擇Decimal、Binary、Octal、Hexadecimal 顯示。Distribute Objects 則是人機介面的管理工具 |
(1) | 12.在執行下列程式碼之後,該新字串的結果為何? (12) |
| (1) | Hello to you! |
| (2) | Hello Wto you! |
| (3) | Hello to you!! |
| (4) | Helloto you! |
| | |
詳解: | 根據已知的字串輸入,Replace Substring 函式將以「子字串輸入所供應的字串」,取代「偏移 (Offset) 特定位置所開始的原始字串」 |
(2) | 13.Control References 的功能為何? (13) |
| (1) | 以程式設計的方式,為 VI 新增控制元與指示元 |
| (2) | 可於 SubVI 中存取人機介面物件的屬性 |
| (3) | 以別名 (Alias name) 控制多個 DAQ 輸入 |
| (4) | 可從控制元接線至函式與 subVI |
| | |
詳解: | 透過控制參考即可建立其他 VI 的連結捷徑,讓 subVI 存取主要 VI 的物件屬性與方法 |
(3) | 14.在執行此程式碼之後,Numeric 指示元將顯示何值? (14) |
| (1) | 0 |
| (2) | 4 |
| (3) | 8 |
| (4) | While Loop 將無限循環 |
| | |
詳解: | 反饋 (Feedback) 節點的功能,極近似於移位暫存區 (Shift register)。在此程式碼片段中,反饋節點的初始值為 4。在循環 1 次之後,節點中所儲存的值又再加 4,而得出 8 |
(3) | 15.假設現在開發 1 組 SubVI 僅輸出單一值,且需於原始 VI (calling VI) 中使用此 subVI。若 要強制資料流去控制 subVI 的執行作業,則下列的最佳方式為? (15) |
| (1) | 於 Sequence 架構中使用 subVI |
| (2) | 修改 SubVI 具備虛值 (Dummy) 輸入,以透過原始 VI 使用之 |
| (3) | 修改 SubVI 具備 Error 叢集,以透過原始 VI 使用之 |
| (4) | 修改 SubVI 具備全域變數 (Global variable),以透過原始 VI 使用之 |
| | |
詳解: | 初始化 subVI 中的錯誤叢集,即可適當處理錯誤,亦可為強制資料流的最佳方式 |
(3) | 16.檔案「C:\data.txt」並不存在,但 VI 並未回報錯誤。則何項程式碼片段 (Snippet) 將回 報錯誤並停止? (16) |
| (1) | |
| (2) | |
| (3) | |
| (4) | |
| | |
詳解: | 答案 A 與 B 均回報錯誤,但不會停止。答案 D 會停止,但不會回報錯誤。僅 C 正確 |
(2) | 17.若有 2 組平行執行的迴圈,是否可用接線於迴圈之間傳輸資料? (17) |
| (1) | 是 |
| (2) | 否 |
| (3) | 無 |
| (4) | 無 |
| | |
詳解: | For loop 即平行執行,之間不應存在資料相關性。根據資料流的規則,若 2 組迴圈完成接線作業之後,第二組迴圈將對第一組迴圈產生依賴性。因此,若於迴圈之間使用接線,就不再是平行特性 |
(2) | 18.必頇以程式設計的方式,更新數字控制元中的值。何項為最佳策略? (18) |
| (1) | 使用功能性全域變數 (Functional Global Variable) |
| (2) | 使用局部變數 (Local variable) |
| (3) | 將所期望的數值設為預設值 |
| (4) | 使用 Data Value Reference |
| | |
詳解: | 由於功能性全域變數 (Functional Global Variable) 並無法直接操作人機介面的控制元,因此不會動作。此情況亦沒有套用 Data Value References。將期望數值設定為預設值,亦非以程式設計方式而更新控制元。所以答案 B 是唯一合理解答 |
(1) | 19.與局部變數相較 (Local variable),下列全域變數 (Global variable) 優點的敘述何項為真? (19) |
| (1) | 在同步執行的 2 組獨立 VI 之間,全域變數 (Global variable) 亦可傳送資料 |
| (2) | 僅全域變數 (Global variable) 可傳送陣列資料,局部變數 (Local variable) 不行 |
| (3) | 全域變數 (Global variable) 將依循資料流的模式,因此不會造成競態條件(Race condition) |
| (4) | 全域變數 (Global variable) 本身不需標籤 (Label) 亦可作業 |
| | |
詳解: | 全域變數的主要優點,即是可於多組 VI 之間傳送資料 |
(1) | 20.何項圖表將先行變更色彩? (20) |
| (1) | Plot 1 先變色。因其屬性是由上到下「Top-down」執行 |
| (2) | Plot 0 先變色。因屬性是從零開始的數字順序執行 |
| (3) | 2 組圖表將同步變色。因屬性是以多執行緒 (Multithreading) 執行 |
| (4) | 無法判別。因為 LabVIEW 是以資料流的格式執行作業 |
| | |
詳解: | Property Nodes 均由上至下執行。圖 1 為優先選擇並修改過,因此將先變更其顏色 |
(4) | 21.下列何項可讓使用者於 Waveform Graph 中具備多組圖表? (21) |
| (1) | 針對各組圖表,整合 X 與 Y 資料的 2 組 1D 陣列。接著建立這些叢集的陣列,並將 之連至 Waveform Graph 指示元 |
| (2) | 透過陣列中的獨立列 (或欄) 中的各個圖表,於陣列中建立資料的 N 維度 (Ndimensional) 陣列,再將陣列接至 Waveform Graph 指示元 |
| (3) | 將各個波形的元素整合至叢集中,並建立這些叢集的陣列,再將陣列接至 Waveform Graph 指示元 |
| (4) | (透過陣列…)跟(將各個波形…)兩個答案都對 |
| | |
詳解: | Waveform Graphs 可容納多維度陣列,或具備波形資料的叢集 1D 陣列。如答案 A 所表示,Waveform Graphs 將不接受 1D 陣列中交錯的 X 與 Y 資料 |
(3) | 22.下列何項最能說明 Notify 事件 (如 Boolean 控制元的數值變更)? (22) |
| (1) | 事件發生且 LabVIEW 並未處理該事件 |
| (2) | 事件發生且由使用者捨棄該事件 |
| (3) | 事件發生且 LabVIEW 已處理該事件 |
| (4) | 事件並未發生,但發生特定的 Event 逾時 (Timeout) |
| | |
詳解: | 要求事件僅需通知 LabVIEW「已發生/已處理的事件」。篩選事件可讓使用者透過程式設計,決定是否捨棄事件 |
(2) | 23.若要客制化控制元,則可從 Type Def. Status 下拉式功能表中點選 Control,再將控制元 儲存為 .ctl 檔案。接著在人機介面視窗中,即可使用客制化控制元的範例。若開啟 .ctl 檔案並修改控制元,那人機介面視窗中的控制元是否發生變化? (23) |
| (1) | 是 |
| (2) | 否 |
| (3) | 無 |
| (4) | 無 |
| | |
詳解: | 由於 .ctl 檔案儲存為 Control,而非 Type Def. 或 Strict Type Def.;因此檔案發生的變化並不會更新控制元的實體 |
(3) | 24.此 Dequeue Element 函式將等待多久以接收資料? (24) |
| (1) | 1 millisecond (預設無接線) |
| (2) | 1 second (預設無接線) |
| (3) | 無限期等待 |
| (4) | 不會等待且立刻回傳 |
| | |
詳解: | 依預設值,Dequeue Element 函式將保持等待,直到可獲得資料。一旦獲得資料或佇列參考毀壞,才會回傳。此功能為 Producer/Consumer 設計形式所必備 |
(3) | 25.在 VI 納入此 Stacked Sequence 架構並執行之後,Result F2 指示元將顯示何值? (25) |
| (1) | 0 |
| (2) | 25 |
| (3) | 40 |
| (4) | 65 |
| | |
詳解: | Sequence local 可於 Stacked Sequence 架構的框架之間儲存資料。此處的 Sequence local 僅寫入至 Frame 0。因此 Frame 1 與 Frame 2 不致發生衝突。Result F2 中的值為 8 乘以 5,即等於40 |
(3) | 26.何項敘述可確實說明下列迴圈執行的輸出結果? (26) |
| (1) | 將顯示 Random Number 函式的最後 3 項數值 |
| (2) | 將顯示所有量測作業的執行平均 |
| (3) | 將顯示最後 4 項量測作業的平均 |
| (4) | 其它答案皆非 |
| | |
詳解: | 針對之前的多次循環,堆疊式移位暫存器 (Shift register) 可記憶寫入值。頂端節點即是最近一次的循環。在觀察過程式碼片段之後,可發現其平均並顯示了最近 4 次的量測 |
(2) | 27.下列何種情況下,應使用「Probe」工具而非「Highlight Execution」? (27) |
| (1) | 觀看資料流 |
| (2) | 即時觀看接線 (Wire) 數值 |
| (3) | 於程序進行期間深入觀看 subVI |
| (4) | 要減緩 VI 速度,並於接線 (Wire) 中顯示資料值 |
| | |
詳解: | 在執行期間,工程師可透過 Probe 工具而觀看接線中的資料,且不至於拖慢執行速度。Highlight Execution 則會拖慢執行速度並顯示資料流;Single Stepping 工具則可讓工程師觀察subVI |
(4) | 28.此圖表將顯示單一條件陳述式 (Case statement) 的所有條件。在執行此 VI 之後,Result 指示元將顯示何值? (28) |
| (1) | 5 |
| (2) | 7 |
| (3) | 12 |
| (4) | 36 |
| | |
詳解: | 因為銜接條件選擇元 (Case selector) 的輸入,並不符合任何其他條件,因此將執行 Default條件。所以答案為 62,亦即 36 |
(2) | 29.下列斷點 (Breakpoint) 將可造成: (29) |
| (1) | 取消該 VI |
| (2) | 暫停該 VI |
| (3) | 讓該 VI 以單一步驟穿過 Addition |
| (4) | 讓該 VI 以單一步驟穿過指示元 |
| | |
詳解: | 斷點 (Breakpoint) 可讓 VI 暫停執行,並等待工程師選擇要開始單一步進,或解除暫停 |
(2) | 30.在執行此程式碼之後,Result 將顯示何值? (30) |
| (1) | {-25, 25, 50} 的 1-D 陣列 |
| (2) | . {-25, 25} 的 1-D 陣列 |
| (3) | {{-25, -50, -50}, {50, 25, 25}} 的 2-D 陣列 |
| (4) | {75, -50, 25} 的 1-D 陣列 |
| | |
詳解: | 當進行陣列運算時,LabVIEW 將強制輸出成為較小的輸入。在此條件下,輸出將為「具備2 組元素」的 1D 陣列。而此 2 組元素為 75-100 與 50-25,亦即 {-25, 25} |
(4) | 31.對 Boolean 應進行何種機器動作,才能於 Windows 對話框中模仿按鈕? (31) |
| (1) | 切換直到放開 |
| (2) | 放開時才切換 |
| (3) | 鎖定直到放開 |
| (4) | . 放開時才鎖定 |
| | |
詳解: | Windows 對話框按鈕在執行點選作業之前,會等待直到使用者放開按鈕。當使用者按下並放開按鈕,按鈕隨即回傳其預設狀態。此動作近似於 LabVIEW 中的 Latch When Released 機器動作 |
(3) | 32.建立 Functional Global Variable 時,何項不重要? (32) |
| (1) | 使用 Shift Registers 儲存資訊 |
| (2) | 將 VI 的執行設定變更為 Reentrant |
| (3) | 將 VI 設定為原始 VI (calling VI) 中的行內 (Inline) |
| (4) | 將 While Loop 設定單次循環之後即停止 |
| | |
詳解: | 在功能性全域變數的原始 VI (calling VI) 中,不需排列並依序處理之。事實上,若要依序處理,則為可重複呼叫 (Reentrant) 的 subVI,但功能性全域變數不能重複呼叫 |
(3) | 33.下列何種圖表 (Chart) 的更新模式,可透過垂直線區分新舊資料並進行比較?此圖的顯 示方式亦近似於心電圖 Electro-cardiogram (EKG) (33) |
| (1) | Strip Chart |
| (2) | Scope Chart |
| (3) | Sweep Chart |
| (4) | Step Chart |
| | |
詳解: | Strip chart 是由左至右開始繪圖,且期間會持續捲動。Scope chart 亦由左至右開始繪圖,直到繪圖區域滿了隨即停止。一旦清除之後,再從左側開始繪圖。Sweep chart 的動作近似於 Scopechart;但若繪圖區域滿了之後,Sweep chart 隨即從左側開始覆寫既有資料。但 LabVIEW 中的 Stepchart 不會如此 |
(3) | 34.下列程式圖代表何種常見的 VI 架構? (34) |
| (1) | Multiple Case Structure VI |
| (2) | General VI |
| (3) | State Machine VI |
| (4) | Parallel Loop VI |
| | |
詳解: | 狀態機器包含 1 組 While Loop、1 組 Case 架構、1 組移位暫存器,還有決定傳輸作業的程式碼 |
(1) | 35.叢集 (Cluster) 的功能為: (35) |
| (1) | 將混合的資料類型聚集為合邏輯的架構 |
| (2) | 透過圖表於人機介面中呈現資料 |
| (3) | 於程式圖上區別不同的資料形態 |
| (4) | 於人機介面上,依資料形態而區隔資料物件 |
| | |
詳解: | 叢集可將資料蒐集至架構中。如此僅需最少量的接線與端點,而達到清理程式圖的目的。叢集中可能混雜了資料形態 |
(3) | 36.強制點 (Coercion dot) 代表: (36) |
| (1) | 資料形態一致 |
| (2) | 將針對資料執行多型態作業 (Polymorphic operation) |
| (3) | 建立資料緩衝區以利轉換資料 |
| (4) | 資料值已超出範圍,因此將強制 (Coerced) 資料值 |
| | |
詳解: | 強制點 (Coercion dot) 代表「特定的資料形態已接至端點」,且該端點可接受相容的不同資料形態。如此一來,LabVIEW 可將資料轉換為較大型的 2 種資料形態。而必頇建立記憶體緩衝區,以儲存受強制的資料 |
(4) | 37.何種組合可正確完成下列敘述?不同於 _____ Property Nodes,_____ Property Nodes 需要 _____ 作為輸入,以能正確運作 (37) |
| (1) | Explicit; Implicit; Data Value References |
| (2) | Implicit; Explicit; Data Value References |
| (3) | Explicit; Implicit; Control References |
| (4) | Implicit; Explicit; Control References |
| | |
詳解: | 隱式 (Implicit) Property Node 均是清楚明瞭的連接其控制元或指示元。不需任何參考接線。顯式 (Explicit) Property Node 則需要參考接線,以決定 Property Node 所應操作的控制元。Data Value Reference 與 Property Node 毫無關連 |
(2) | 38.使用「State Machine VI」架構的缺點之一為何? (38) |
| (1) | State Machine 僅可依序轉換 (Traverse) 狀態 |
| (2) | 若同時有 2 項狀態發生變化,將僅處理第一項狀態變化,並遺失第二項狀態 |
| (3) | 若將一般架構變更為 State Machine 時,程式區將大幅擴增 |
| (4) | 狀態機器 (State Machine) 無法擷取資料,或使用 DAQ 功能 |
| | |
詳解: | 若先前的狀態執行期間,已發生了狀態轉換 (如使用者點選人機介面按鈕),則簡易型的狀態機器將不會有緩衝區可維持狀態轉換。因此,若在處理轉換之前發生超過 1 次轉換,則除了最近的 1 次轉換之外,將遺失其他所有轉換 |
(3) | 39.何種組合可正確完成下列敘述?______________ 代表該迴圈即將所執行的總次數;而 _______________ 將回傳該迴圈已執行的次數減 1。 (39) |
| (1) | count terminal, ; conditional terminal, |
| (2) | conditional terminal, ; iteration terminal, |
| (3) | count terminal, ; iteration terminal |
| (4) | conditional terminal, ; count terminal, |
| | |
詳解: | 計數終端將顯示 For Loop 所要執行的次數。While Loop 的 Conditional Terminal 可能決定迴圈的執行次數,但不會直接顯示循環次數。循環端點將回傳「已發生的循環次數 -1」 |
(4) | 40.下列何項最能完整說明 LabVIEW Project (.lvproj) 檔案? (40) |
| (1) | 屬於特定資料夾,內含應用相關的所有檔案 |
| (2) | 包含人機介面與程式圖的檔案,可建構程式設計的步驟 |
| (3) | 編譯完成的程式碼,常見於應用的最後佈署作業 |
| (4) | 可將專案的所有相關檔案拖曳進來,而建構捷徑並有利管理 |
| | |
詳解: | LabVIEW Projects 不會像常見資料夾一般儲存檔案,而是管理/整理常見應用的部分檔案 |