如何選用同步及非同步的VISA函數



主要軟體:
主要軟體版本: 1.1 8.0 1.0 2.0 2.7.2 1.3.1 1.2.1
主要軟體修正版本: N/A
次要軟體: Driver Software>>NI-488.2, Driver Software>>NI-VISA

問題: 選用同步或非同步的VISA函數如何影響我的應用?

解答:

同步及非同步指的是VISA函數相對於他們的呼叫執行緒如何運作。在執行緒呼叫過程中同步地VISA函數會阻止其他程式碼的執行。在某些情況下,像是要傳輸大量資料,或者確保資料能最快速度地從裝置接收/傳出給裝置,就會用到同步的操作。


在底層指令中,呼叫的執行緒視介面是同步或非同步而定,會鎖住不同的時間長度。對寫入的操作來說,資料一定要從開發環境向下傳送到下層電腦提供的實體資源。對讀出的操作來說,資料一定要從裝置的實體資源傳送到開發環境。這兩者的傳輸都必須要經過好幾層的記憶體。


對寫入來說,以下的操作會被執行
:

1. 呼叫執行緒會被鎖住

2. VISA寫入函數相關的資料從開發環境被轉移到VISA記憶體

3. 程式會持續確認是否所有跟VISA寫入有關的資料都已經從VISA記憶體傳送到底層的硬體資源驅動

4. 傳送完成

5. VISA 寫入函數結束執行

 


對讀出函數來說,同樣的操作步驟會以相反的順序被執行


對同步的操作來說,呼叫執行緒會在上述第四及第五個步驟間被解開鎖定。對非同步的操作來說,呼叫執行緒則會在第二及第三個步驟間就被解鎖。欲選擇您的應用要使用同步或非同步執行,你會需要考慮有多少的資料量需要被寫入或讀出,以及應用程序有多少可用的執行緒。


如果很大量的資料需要在短時間內被傳送完畢,由於這會需要呼叫執行緒專注在從硬體資源裡讀出或寫入資料,你會考慮同步的操作。而非同步地操作會讓呼叫執行緒可以同時存取其他部分的應用,但這就會讓程式需要更久才能確認資料是否已經被傳送
/接收到實際硬體資源


如果一個應用可用的執行緒比平行執行的程序要少,則使用非同步操作可以讓執行緒更快的執行不同部份的程序。相反的,同步地操作會讓執行緒專注在
VISA的操作,確保其能最快時間完成。但就會付出影響整個應用效能的代價。


更多選擇同步或非同步的函數使用的說明,請見以下的
LabVIEW help連結。



相關連結: KnowledgeBase 3D9B7L4B: The Effect of UART FIFO Sizes on Serial Application Performance
LabVIEW Help: VISA Read Function
LabVIEW Help: VISA Write Function

附加檔案:


Screenshot.bmp - Screenshot.bmp



報告日期: 09/10/2004
最後更新: 03/13/2015
文件偏號: 3D9B8E4B