新聞中心

        EEPW首頁 > 測試測量 > 設計應用 > 如何使用LabVIEW和DLL傳遞和接受指針

        如何使用LabVIEW和DLL傳遞和接受指針

        作者: 時間:2017-01-09 來源:網絡 收藏
        雖然我們都知道要使用 Call Library Function Node去載入DLL,但一遇到指針(Pointer)還真不知道該怎么設定?

        [Answer]

        本文引用地址:http://www.104case.com/article/201701/337130.htm

        指針 (Pointer)是在C語言中很重要的一種資料型態,并且是被廣泛的被使用,所以當要用LabVIEW去呼叫C/C++所開發的DLL時,一定會遇到指針的問題,接著我會以傳遞及接收指標這兩個方向來說明。


        一、傳遞指針到 DLL

        ①傳遞整數 (Integer)指標

        如果以下是我們呼叫的函式

        void ReturningValues??ByReference_Integer(int x, int y, int *sum);

        我們要將資料傳遞到 *sum中,所以請在Data type欄位選擇”Signed 32-bit Integer”,然后在Pass欄位選擇”Pointer to Value.

        ②傳遞陣列 (Array)資料

        我們以下列函式為例

        int PassingParamters_ArrayOfIntegers (int x[], int len??gth);

        我們要將資料傳遞到陣列,此時也要使用指標的方式來傳,請你在 Type欄位選擇”Array”,Data type欄位選擇”Singed 32-bit Integer”,Array format欄位選擇”Array Data Pointer”.

        ③傳遞字串(String)指標

        以下列函式為例

        int PassingParamters_String (char *str);

        當我們要將資料傳遞到 *str中,請你在String format欄位選擇”C String Pointer”

        ④傳遞結構(Struct)資料

        以下例函式為例

        void ReturningValues??ByReference_SimpleStruct (struct simpleStructCircle circle, struct simpleStructCircle *largerCircle);

        如果是傳遞結構的話,只需要將原本結構中的內容依序傳入即可,以本函式為例 ”circle” 中含有三個浮點數分別是 x, y, radius,所以只要依序宣告即可,但若是遇到結構指標,請你在 Type 欄位選擇 ”Adapt to Type” , Data format 欄位選擇”Handles by Value”,如下圖所示。

        二、從 DLL接收指標

        ①函式回傳指標

        如果函式程式碼如下

        int * ReturnAValue_PointerToInteger(void)

        {

        int *x = (int *) malloc(sizeof(int));

        *x = 5;

        return x;

        }

        所以我們可以知道函式本式回傳整數指標,請你在 Type欄位選擇” Numeric”,在Data type欄位選擇”Signed Pointer-sized Integer”

        ②以Reference型式回傳

        我們以下列程式碼為例

        void ReturningValuesByReference_Integer (int x, int y, int *sum)
        {
        //sum is a pointer
        *sum = x + y;
        }

        以上的配置方法是直接使用調用庫函數節點來實現時需要做的工作。

        如果我們采用dll調入生成VI的方式則不需要,因為labview已經給配置好了!

        如下圖:


        這是一個通過dll自動生成的VI,里面也就是一個調用庫函數節點的程序,很簡單,但是參數已經給配置好了!

        如下:




        這兩種不同的參數類型 在傳遞那個選項里不同,正如本文所述。



        關鍵詞: LabVIEWDLL指

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 和政县| 都兰县| 泽普县| 文登市| 贡觉县| 客服| 墨竹工卡县| 土默特左旗| 南靖县| 玉田县| 常宁市| 哈巴河县| 宜阳县| 巫山县| 怀仁县| 阳信县| 双桥区| 新巴尔虎右旗| 沁阳市| 凯里市| 江安县| 洱源县| 镇坪县| 噶尔县| 峨眉山市| 临夏市| 基隆市| 巧家县| 蓬安县| 嵊泗县| 白城市| 昭苏县| 水富县| 揭西县| 旌德县| 伊吾县| 法库县| 阳朔县| 甘泉县| 汶上县| 揭东县|