From Friday, April 19th (11:00 PM CDT) through Saturday, April 20th (2:00 PM CDT), 2024, ni.com will undergo system upgrades that may result in temporary service interruption.

We appreciate your patience as we improve our online experience.



"Array Data Pointer", "Array Handle", 和 "Array Handle Pointer" 有什麼不同?



主要軟體: LabVIEW Development Systems
主要軟體版本: 6.0
主要軟體修正版本: N/A
次要軟體:

問題: 我正使用LabVIEW的Call Library Function Node. 對於Array的參數型態, 我有三種格式可以選:Array Data Pointer, Array Handle, 和 Array Handle Pointer. 這三種格式有什麼不同?


解答: 您可以在 Call Library Function Node 的設定對話窗下面的 Function Prototype 中看到您函式的C語言呼叫方式,當我們選擇了不同的陣列格式時, 就可以看到它的不同。 舉例來說,假設我們用 arg1 當做參數名稱, 下面是三種不同的陣列格式對應的C語言呼叫方式:


星號表示這些變數是指標:

單星號,用於 Array Data Pointer,告訴我們這是一個指標,指向記憶體中的位址。在C語言中, 這些值告訴我們這組陣列所用的記憶體的開始位置為何。

雙星號,用於 Array Handle,表示它是一個 Handle。在程式語言中,一個handle 就是一個 token,通常是一個指標,讓程式能去存取一項資源,例如一個函式庫中的函式。當作業系統自行處理並搬移heap中的一整塊記憶體時,Handles就會被使用。Handles 是指標的指標.

三星號,用於 Array Handle Pointer,表示它是一個 handle 的指標. 此種資料型別通常用於更複雜的操作,例如 DMA 存取,影像操控,及作業系統層級的函式等。



相關連結:

Product Manuals: Using External Code in LabVIEW
KnowledgeBase 2TNBMIHM: How Do I Use Adapt To Type For Call Library Function Nodes?
Knowledgebase 2IQFOQG4: How Can I Pass a Multidimensional Array from Visual Basic to a LabVIEW-Build DLL?



附加檔案:





報告日期: 05/14/1997
最後更新: 01/19/2015
文件偏號: 0XDA37EW