同步同步 NI-VISA 函式之間差異

綜覽

本文件將說明與 NI-VISA 函式相關的同步與非同步概念,旨在協助您判斷適用於自身應用的模式。

簡介

NI-VISA 函式相對於自身呼叫執行緒的動作,可區分為同步與非同步 2 種類型。如果以同步方式執行 NI-VISA,就會讓呼叫執行緒中的其他程式碼無法執行。這個選項可能適用於某些情況,例如傳輸大量資料,或確保資料能盡快自裝置擷取或抵達裝置。

在進行較低階的作業時,呼叫執行緒的鎖定時間會有所不同,端視於介面是同步或非同步。寫入作業的資料必須自應用開發環境 (ADE) 一路向下傳輸,直至電腦所提供的基礎實體資源。讀取作業的資料必須從裝置的實體資源傳輸至 ADE。2 種傳輸方式都需通過層層記憶體。

寫入作業會透過以下順序進行:

  1. 鎖定呼叫執行緒。
  2. 與 VISA Write 函式相關的資料,會從 ADE 傳輸至 VISA 記憶體。
  3. 開始輪詢,以判斷與 VISA Write 相關的所有資料,是否已自 VISA 記憶體傳輸至基礎硬體資源的驅動程式。
  4. 傳輸作業完成。
  5. 傳回 VISA Write 函式。

讀取作業則會以相反順序進行同一程序。

在同步作業中,呼叫執行緒不會於步驟 4 與 5 之間遭到鎖定。在非同步作業中,呼叫執行緒不會於步驟 2 與 3 之間遭到鎖定。若要判斷所屬應用應選擇同步或非同步模式,請務必考量您要進行讀寫的資料量,以及可供應用使用的執行緒數量。

如果必須盡可能在短時間內傳輸大量資料,應考慮以同步方式執行作業,因為這樣一來,呼叫執行緒就會專門用來將資料傳輸至硬體資源,或是自硬體資源進行傳輸。以非同步方式執行作業,則能讓呼叫執行緒存取應用中的其他部分,但如此一來,就需要花更長時間判斷資料是否已傳輸至硬體資源,或已自硬體資源完成傳輸。

如果可供應用使用的執行緒數量少於平行程序數量,選擇以非同步方式執行 NI-VISA 作業,就能更快速地將呼叫執行緒提供予應用中的其他部分使用。以同步方式執行作業,將使呼叫執行緒專供 NI-VISA 作業使用,以確保作業能盡快完成;然而,此舉也會犧牲整體應用效能。

若要在 LabVIEW 的同步與非同步函式之間進行抉擇,請參考下方的 LabVIEW 說明連結。

 

Was this information helpful?

Yes

No