色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

LabVIEW調用C#編寫的.NET類庫

lvxisi ? 來源:lvxisi ? 作者:lvxisi ? 2023-09-06 17:43 ? 次閱讀

LabVIEW的無法直接完成向dll中傳入回調函數,需要用其他語言編寫包裝器來實現。因此,可利用C#編寫包裝器,編寫中間轉換的程序,并生成.NET類庫,將底層包含回調函數的dll與LabVIEW連接起來。

本文主要是LabVIEW無法調用回調函數dll的問題的解決方法,也介紹了LabVIEW調用C#庫的方法。

wKgZomT4SIuAZIG5AAAbLu2RvX0226.png

1)選擇“類庫(.NET Framework)”(不要選擇類庫,那個是.NET Core/.NET 5+版本,兼容性有問題)

wKgZomT4SJyASFeTAAE6pxj331g611.png

2)在.cs文件里面,編寫程序。

using System;
using System.Runtime.InteropServices;

namespace ClassLibrary1
{
 public delegate void CallbackFunction(int a, int b, ref int sum);

 public class MyCSharpWrapper
 {
 private Action? triggerCallback = null;
    //從底層dll中,獲取相關函數
 [DllImport("MyCallbacks.dll", CallingConvention = CallingConvention.Cdecl)]
 private static extern int Initialize();

 [DllImport("MyCallbacks.dll", CallingConvention = CallingConvention.Cdecl)]
 private static extern void RegisterCallback(CallbackFunction callback);

 [DllImport("MyCallbacks.dll", CallingConvention = CallingConvention.Cdecl)]
 private static extern void TriggerCallback(int a, int b, ref int sum);

 [DllImport("MyCallbacks.dll", CallingConvention = CallingConvention.Cdecl)]
 private static extern void Sum(int a, int b, ref int sum);

 public int InitializeWrapper()
 {
 //查看底層dll的執行狀態,正常執行時,返回1
      return Initialize();
 }

 public void SetCallback()
 {
 // 注冊回調函數
 RegisterCallback(MyCallback);
 triggerCallback = (a, b, result) => TriggerCallback(a, b, ref result);
 }

 public int ReadData(int a, int b)
 {
     //觸發設置參數,觸發回調函數,獲取返回值
 int result = 0;
 triggerCallback!(a, b, result);
 return result;
 }

 public int TestSum(int a, int b)
 {
 //用于替代回調函數,測試生成的類庫是否可以執行
     	int result = 0;
 Sum(a, b, ref result);
 return result;
 }

 private void MyCallback(int a, int b, ref int sum)
 {
 // 傳入的回調函數
 sum = a + b;
 }
 }
}

3)生成Dll后,在Labview中進行加載。選擇構造器節點。

wKgaomT4SCiAFa6-AAIqIRN8trY120.png

雙擊構造器節點,選擇瀏覽

wKgaomT4SCeAWniIAACse7Xd72g026.png

4)選擇生成的庫文件。(注:注意調用的底層dll,要放在同一目錄下。此處是為了實現調用底層MyCallback.dll,如果僅為了調用.NET類庫,可忽略)

wKgZomT4SCiANIG7AABr2a5L6uQ583.png

選擇要調用的類,此處是MyCSharpWrapper,與代碼相對應。

wKgZomT4SdmAYwLlAAB4ssAjV68005.pngwKgZomT4SCeAQCU6AADvv_oEZCs782.png

5)在后方連接調用節點,可以選擇要執行的方法。

wKgZomT4SCeAfg2eAACzKpTQwDE097.pngwKgZomT4SCeAJcCAAACKtun2iKE551.png

6)編寫相關的程序,初始化程序用于判斷底層dll的執行情況,SetCallback調用底層的dll并注冊回調函數,ReadData中設置相關參數,觸發回調函數并獲得計算的返回值。

wKgaomT4SCiANpmgAACZFvui4MM675.png

7)測試運算正常

wKgZomT4SCiADt1fAAA6cTrzSks649.png

審核編輯 黃宇
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 測試
    +關注

    關注

    8

    文章

    5469

    瀏覽量

    127436
  • dll
    dll
    +關注

    關注

    0

    文章

    116

    瀏覽量

    45708
  • LabVIEW
    +關注

    關注

    1981

    文章

    3664

    瀏覽量

    327998
  • net
    net
    +關注

    關注

    0

    文章

    127

    瀏覽量

    56378
收藏 人收藏

    評論

    相關推薦

    Qt創建動態C#調用,通過回調完成交互

    在windows下做應用開發時,經常需要多種不同的語言混合編程。比如:利用Qt開發一個動態,給C#調用。 當前的需求是: 利用Qt開發一個工具,給
    的頭像 發表于 09-09 11:37 ?5366次閱讀
    Qt創建動態<b class='flag-5'>庫</b>給<b class='flag-5'>C#</b><b class='flag-5'>調用</b>,通過回調完成交互

    LabVIEWC# 注冊事件相關方法

    利用C#編寫事件相關的,在WinForm和LabVIEW中進行測試,并描述相關程序的調用方法
    的頭像 發表于 10-09 17:48 ?2710次閱讀
    <b class='flag-5'>LabVIEW</b>與<b class='flag-5'>C#</b> 注冊事件相關方法

    LabVIEW程序中包含.netC++dll的注意事項簡介

    LabVIEW的VI調用.NET程序集或者C++動態鏈接時的關系圖如下
    的頭像 發表于 12-11 09:22 ?1683次閱讀
    <b class='flag-5'>LabVIEW</b>程序中包含.<b class='flag-5'>net</b>和<b class='flag-5'>C</b>++dll的注意事項簡介

    labview 調用.net 問題

    labview 調用.net ,在開發壞境中OK,生成exe不行。這個需要如何操作?
    發表于 03-11 17:25

    c#采集程序中調用NI采集卡?

    各位大神好,我現在編寫c#的采集程序,怎樣導入NI9215采集卡的動態鏈接啊?官網都是支持labview平臺的驅動,有支持c#.net
    發表于 11-25 11:37

    C#與LbVIEW混合編程

    演示了如何使用VS開發環境用C#編寫一個dll文件,dll包含2個,其中第一個中有2個方法,一個數字加法,一個字符串連接。并且演示了如何在Lab
    發表于 04-11 21:48

    LABVIEW通過C#調用halcon算子

    用VS創建鍵入這些代碼,點擊生成解決方案,在VS的項目目錄下\bin\Debug文件夾里會生成一個DLL。打開LABVIEW-互聯接口-.NET-構造器節點,創建一個構造器然后
    發表于 02-18 10:54

    Labview 調用C#封裝halcon

    Labview 調用C#封裝halcon,內存釋放能做到最好
    發表于 08-30 15:37

    labview 動態調用 C# 生成的dll

    目的: 用labview動態調用C#生成的dll問題:目前知道可以用.net的構造器調用,但是該方式不像“
    發表于 01-04 15:47

    C# 調用labview導出的 .net assembly 時出現的異常問題

    ],這個工具包我也已經安裝了,可以使用labview查看vi的完整程序框圖,但是導出成.net dll之后,使用C#編寫調用
    發表于 08-07 14:55

    C# 調用Labview生成的.NET指令集報錯

    1.如題,C#調用Labview生成的.NET指令集報錯。錯誤內容為:未能加載文件或程序集“NationalInstruments.LabVIEW
    發表于 03-08 16:54

    labview連接mongdb問題,找到不.NET中的泛型

    有沒有人用labview連接mongodb數據的?已下載mongodb的c#驅動,利用labview中的.net控件
    發表于 04-08 13:38

    C#知識

    C#知識:C#注釋符.txt編輯器技巧.txt窗體加載錯誤碼.txt如何設置Path.txt如何在IDE輸入命令行參數.txt顯示行號.txt重新向IIS注冊asp.
    發表于 12-26 12:14 ?53次下載
    <b class='flag-5'>C#</b>知識<b class='flag-5'>類</b><b class='flag-5'>庫</b>

    LabVIEW網絡講壇第四季:VI編譯成.NET共享文件帶來的好處

    本集為大家介紹了LabVIEW2009中的一個新功能:將VI編譯成.NET共享文件。通過這種方法,.NET用戶可以很方便的在C#等環境中
    的頭像 發表于 06-22 13:19 ?3561次閱讀
    <b class='flag-5'>LabVIEW</b>網絡講壇第四季:VI編譯成.<b class='flag-5'>NET</b>共享<b class='flag-5'>庫</b>文件帶來的好處

    LABVIEW調用C# DLL的實例分享

    LABVIEW調用C# DLL的實例分享
    發表于 01-04 11:20 ?106次下載
    主站蜘蛛池模板: 色欲狠狠躁天天躁无码中文字幕 | 色偷偷超碰97人人澡人人 | 国产午夜高潮熟女精品AV | 国产久久亚洲美女久久 | 日本邪恶少女漫画大全 | 无码专区aaaaaa免费视频 | 中文字幕在线视频网站 | 亚洲精品永久免费 | 国产无遮挡色视频免费观看性色 | 无套内谢大学生A片 | 97精品国产高清在线看入口 | 国产人妻午夜无码AV天堂 | 久久免费国产视频 | 父亲在线日本综艺免费观看全集 | 日本19xxxx撤尿 | 被同桌摸出水来了好爽的视频 | 无码AV毛片色欲欧洲美洲 | 黄色a三级三级三级免费看 黄色a三级免费看 | 伊人大香人妻在线播放 | 国产精品九九久久精品视 | 大香网伊人久久综合观看 | 国产日韩亚洲精品视频 | 永久免费的无码中文字幕 | MM131亚洲精品久久安然 | 杨幂被视频在线观看 | 亚洲精品一卡二卡三卡四卡2021 | 欧美精品AV精品一区视频 | 国产色精品VR一区二区 | 国产亚洲AV精品无码麻豆 | 国产精品悠悠久久人妻精品 | 99久久久无码国产精品不卡按摩 | 久久精品久久久 | 色一欲一性一乱一区二区三区 | 国产午夜视频在永久在线观看 | 亚洲精品中文字幕一二三四区 | 亚州天堂在线视频av | 99久在线国内在线播放免费观看 | FREECHINESE东北女人真爽 free18sex性自拍裸舞 | 日韩欧美一区二区三区免费观看 | 99视频这里只有精品 | 老妇xxxxbbbb|