女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

LabVIEW調(diào)用C#編寫(xiě)的.NET類(lèi)庫(kù)

lvxisi ? 來(lái)源:lvxisi ? 作者:lvxisi ? 2023-09-06 17:43 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

LabVIEW的無(wú)法直接完成向dll中傳入回調(diào)函數(shù),需要用其他語(yǔ)言編寫(xiě)包裝器來(lái)實(shí)現(xiàn)。因此,可利用C#編寫(xiě)包裝器,編寫(xiě)中間轉(zhuǎn)換的程序,并生成.NET類(lèi)庫(kù),將底層包含回調(diào)函數(shù)的dll與LabVIEW連接起來(lái)。

本文主要是LabVIEW無(wú)法調(diào)用回調(diào)函數(shù)dll的問(wèn)題的解決方法,也介紹了LabVIEW調(diào)用C#庫(kù)的方法。

wKgZomT4SIuAZIG5AAAbLu2RvX0226.png

1)選擇“類(lèi)庫(kù)(.NET Framework)”(不要選擇類(lèi)庫(kù),那個(gè)是.NET Core/.NET 5+版本,兼容性有問(wèn)題)

wKgZomT4SJyASFeTAAE6pxj331g611.png

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

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中,獲取相關(guān)函數(shù)
 [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的執(zhí)行狀態(tài),正常執(zhí)行時(shí),返回1
      return Initialize();
 }

 public void SetCallback()
 {
 // 注冊(cè)回調(diào)函數(shù)
 RegisterCallback(MyCallback);
 triggerCallback = (a, b, result) => TriggerCallback(a, b, ref result);
 }

 public int ReadData(int a, int b)
 {
     //觸發(fā)設(shè)置參數(shù),觸發(fā)回調(diào)函數(shù),獲取返回值
 int result = 0;
 triggerCallback!(a, b, result);
 return result;
 }

 public int TestSum(int a, int b)
 {
 //用于替代回調(diào)函數(shù),測(cè)試生成的類(lèi)庫(kù)是否可以執(zhí)行
     	int result = 0;
 Sum(a, b, ref result);
 return result;
 }

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

3)生成Dll后,在Labview中進(jìn)行加載。選擇構(gòu)造器節(jié)點(diǎn)。

wKgaomT4SCiAFa6-AAIqIRN8trY120.png

雙擊構(gòu)造器節(jié)點(diǎn),選擇瀏覽

wKgaomT4SCeAWniIAACse7Xd72g026.png

4)選擇生成的庫(kù)文件。(注:注意調(diào)用的底層dll,要放在同一目錄下。此處是為了實(shí)現(xiàn)調(diào)用底層MyCallback.dll,如果僅為了調(diào)用.NET類(lèi)庫(kù),可忽略)

wKgZomT4SCiANIG7AABr2a5L6uQ583.png

選擇要調(diào)用的類(lèi),此處是MyCSharpWrapper,與代碼相對(duì)應(yīng)。

wKgZomT4SdmAYwLlAAB4ssAjV68005.pngwKgZomT4SCeAQCU6AADvv_oEZCs782.png

5)在后方連接調(diào)用節(jié)點(diǎn),可以選擇要執(zhí)行的方法。

wKgZomT4SCeAfg2eAACzKpTQwDE097.pngwKgZomT4SCeAJcCAAACKtun2iKE551.png

6)編寫(xiě)相關(guān)的程序,初始化程序用于判斷底層dll的執(zhí)行情況,SetCallback調(diào)用底層的dll并注冊(cè)回調(diào)函數(shù),ReadData中設(shè)置相關(guān)參數(shù),觸發(fā)回調(diào)函數(shù)并獲得計(jì)算的返回值。

wKgaomT4SCiANpmgAACZFvui4MM675.png

7)測(cè)試運(yùn)算正常

wKgZomT4SCiADt1fAAA6cTrzSks649.png

審核編輯 黃宇
聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 測(cè)試
    +關(guān)注

    關(guān)注

    8

    文章

    5701

    瀏覽量

    128830
  • dll
    dll
    +關(guān)注

    關(guān)注

    0

    文章

    116

    瀏覽量

    46193
  • LabVIEW
    +關(guān)注

    關(guān)注

    2002

    文章

    3670

    瀏覽量

    335817
  • net
    net
    +關(guān)注

    關(guān)注

    0

    文章

    127

    瀏覽量

    56646
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    Qt創(chuàng)建動(dòng)態(tài)庫(kù)C#調(diào)用,通過(guò)回調(diào)完成交互

    在windows下做應(yīng)用開(kāi)發(fā)時(shí),經(jīng)常需要多種不同的語(yǔ)言混合編程。比如:利用Qt開(kāi)發(fā)一個(gè)動(dòng)態(tài)庫(kù),給C#調(diào)用。 當(dāng)前的需求是: 利用Qt開(kāi)發(fā)一個(gè)工具庫(kù),給
    的頭像 發(fā)表于 09-09 11:37 ?6279次閱讀
    Qt創(chuàng)建動(dòng)態(tài)<b class='flag-5'>庫(kù)</b>給<b class='flag-5'>C#</b><b class='flag-5'>調(diào)用</b>,通過(guò)回調(diào)完成交互

    LabVIEWC# 注冊(cè)事件相關(guān)方法

    利用C#編寫(xiě)事件相關(guān)的類(lèi)庫(kù),在WinForm和LabVIEW中進(jìn)行測(cè)試,并描述相關(guān)程序的調(diào)用方法
    的頭像 發(fā)表于 10-09 17:48 ?3321次閱讀
    <b class='flag-5'>LabVIEW</b>與<b class='flag-5'>C#</b> 注冊(cè)事件相關(guān)方法

    LabVIEW程序中包含.netC++dll的注意事項(xiàng)簡(jiǎn)介

    LabVIEW的VI調(diào)用.NET程序集或者C++動(dòng)態(tài)鏈接庫(kù)時(shí)的關(guān)系圖如下
    的頭像 發(fā)表于 12-11 09:22 ?2085次閱讀
    <b class='flag-5'>LabVIEW</b>程序中包含.<b class='flag-5'>net</b>和<b class='flag-5'>C</b>++dll的注意事項(xiàng)簡(jiǎn)介

    labview 調(diào)用.net 類(lèi)問(wèn)題

    labview 調(diào)用.net 類(lèi)庫(kù),在開(kāi)發(fā)壞境中OK,生成exe不行。這個(gè)需要如何操作?
    發(fā)表于 03-11 17:25

    c#采集程序中調(diào)用NI采集卡?

    各位大神好,我現(xiàn)在編寫(xiě)c#的采集程序,怎樣導(dǎo)入NI9215采集卡的動(dòng)態(tài)鏈接庫(kù)啊?官網(wǎng)都是支持labview平臺(tái)的驅(qū)動(dòng),有支持c#.net
    發(fā)表于 11-25 11:37

    C#與LbVIEW混合編程

    演示了如何使用VS開(kāi)發(fā)環(huán)境用C#編寫(xiě)一個(gè)dll文件,dll包含2個(gè)類(lèi),其中第一個(gè)類(lèi)中有2個(gè)方法,一個(gè)數(shù)字加法,一個(gè)字符串連接。并且演示了如何在Lab
    發(fā)表于 04-11 21:48

    LABVIEW通過(guò)C#調(diào)用halcon算子

    用VS創(chuàng)建類(lèi)庫(kù)鍵入這些代碼,點(diǎn)擊生成解決方案,在VS的項(xiàng)目目錄下\bin\Debug文件夾里會(huì)生成一個(gè)DLL。打開(kāi)LABVIEW-互聯(lián)接口-.NET-構(gòu)造器節(jié)點(diǎn),創(chuàng)建一個(gè)構(gòu)造器然后
    發(fā)表于 02-18 10:54

    Labview 調(diào)用C#封裝halcon庫(kù)

    Labview 調(diào)用C#封裝halcon庫(kù),內(nèi)存釋放能做到最好
    發(fā)表于 08-30 15:37

    labview 動(dòng)態(tài)調(diào)用 C# 生成的dll

    目的: 用labview動(dòng)態(tài)調(diào)用C#生成的dll問(wèn)題:目前知道可以用.net的構(gòu)造器調(diào)用,但是該方式不像“
    發(fā)表于 01-04 15:47

    C# 調(diào)用labview導(dǎo)出的 .net assembly 時(shí)出現(xiàn)的異常問(wèn)題

    ],這個(gè)工具包我也已經(jīng)安裝了,可以使用labview查看vi的完整程序框圖,但是導(dǎo)出成.net dll之后,使用C#編寫(xiě)調(diào)用
    發(fā)表于 08-07 14:55

    C# 調(diào)用Labview生成的.NET指令集報(bào)錯(cuò)

    1.如題,C#調(diào)用Labview生成的.NET指令集報(bào)錯(cuò)。錯(cuò)誤內(nèi)容為:未能加載文件或程序集“NationalInstruments.LabVIEW
    發(fā)表于 03-08 16:54

    labview連接mongdb問(wèn)題,找到不.NET類(lèi)中的泛型類(lèi)

    有沒(méi)有人用labview連接mongodb數(shù)據(jù)庫(kù)的?已下載mongodb的c#驅(qū)動(dòng),利用labview中的.net控件
    發(fā)表于 04-08 13:38

    C#知識(shí)類(lèi)庫(kù)

    C#知識(shí)類(lèi)庫(kù):C#注釋符.txt編輯器技巧.txt窗體加載錯(cuò)誤碼.txt如何設(shè)置Path.txt如何在IDE輸入命令行參數(shù).txt顯示行號(hào).txt重新向IIS注冊(cè)asp.
    發(fā)表于 12-26 12:14 ?53次下載
    <b class='flag-5'>C#</b>知識(shí)<b class='flag-5'>類(lèi)</b><b class='flag-5'>庫(kù)</b>

    LabVIEW網(wǎng)絡(luò)講壇第四季:VI編譯成.NET共享庫(kù)文件帶來(lái)的好處

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

    LABVIEW調(diào)用C# DLL的實(shí)例分享

    LABVIEW調(diào)用C# DLL的實(shí)例分享
    發(fā)表于 01-04 11:20 ?110次下載