• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

    EEPW首頁 > 測試測量 > 設計應用 > LabVIEW 調用 C/C++ Dll 詳解

    LabVIEW 調用 C/C++ Dll 詳解

    作者: 時間:2017-01-06 來源:網絡 收藏
    LabVIEW 在配上NI的采集卡或者別的第三方的硬件,約等于神器(雖然有時候貴了點)。這樣你可以比較集中精力的專注于數據處理了,就不用學習麻煩的Win32的GUI編程, 也不用關注和你自己搞的采集板之間的通信了。
    對于每一個測控行業的程序來說,基本上都是:
    初始化-->數據采集-->數據處理-->數據顯示-->數據保存-->結束 的一個過程。
    當然如果是實時的,那么采集,處理,顯示就是在一個loop里面。當然為了保證實時性,數據處理和數據采集不一定在一個線程里,因為處理的時候把采集給block住也挺傻的。
    LabVIEW 很容易幫你搞定:
    初始化-->數據采集-->數據處理-->數據顯示-->數據保存-->結束
    但是數據處理部分,是和你的學科緊密相關的,有時候算法會“詭異”到你很難用VI來實現,那么你就要有C++" target="_blank">C++
    code來搞了。 那么C/C++ 是如何與LabVIEW 交互的呢,本文來較詳細的闡述一下,因為準備采用總分總的寫作手法...所以先來個概括...
    1. 把C/C++ code 編譯成Dll
    2. 用LabVIEW的call library node來調用。
    難點在于:如何把LabVIEW的數據類型和C/C++ 的來對應。

    控件x相當與一個double,當然其類型也是可以選擇的(如右圖所示)。
    boolean 按理說應該是一個bool, 但是傳入call library node的時候,一般要轉成unsigned int型。
    cluster其實就是個struct ,左圖的cluster是:
    struct tCluster
    {
    double x11; // 類型都可以向右圖那樣自己配置
    double x2;
    int x3;
    };
    對于string,這里要著重講一下,labview的string類型里面是包含長度信息的,它不是一個簡單的char *
    它是個LStrHandle類型:定義咋extcode.h 里面(可以在labview目錄下搜到)
    typedef struct {
    int32 cnt;
    uChar str[1];
    } LStr, *LStrPtr, **LStrHandle;
    cnt就是含有多少個字符,str這個指針所指的就是數據區的第一個字符。
    (還有很多沒寫...明天繼續,排版也雜亂無章...等全部寫好在整理吧)
    其實應該列個提綱,大概是:
    1.背景
    2.call library node(CLN) 支持很多數據類型
    3.用戶內存區 和 LabVIEW內存區
    4.
    struct tArray
    {
    unsigned int cnt;
    T data[1];
    }; 是神馬? 一堆handle.
    5.怎樣把字符串傳遞給CLN
    6.怎樣把LabVIEW 的 1-D, 2-D, 3-D 數組傳遞給 DLL
    7.把LabVIEW 的簇和簇數組傳遞給 DLL


    關鍵詞: LabVIEWCC++Dl

    評論


    相關推薦

    技術專區

    關閉
    主站蜘蛛池模板: 思茅市| 乌恰县| 梨树县| 成武县| 济宁市| 潼关县| 清徐县| 南充市| 尚义县| 宁国市| 项城市| 中卫市| 赤壁市| 上林县| 阳泉市| 富宁县| 西华县| 五河县| 永泰县| 革吉县| 柳河县| 志丹县| 霸州市| 茌平县| 宜良县| 肥乡县| 临湘市| 韩城市| 临湘市| 阳谷县| 池州市| 凤山县| 兴义市| 万源市| 辽中县| 靖宇县| 无棣县| 子洲县| 屏东县| 吉木乃县| 云霄县|