RM新时代网站-首页

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與C# 注冊(cè)事件相關(guān)方法

lvxisi ? 來(lái)源:lvxisi ? 作者:lvxisi ? 2023-10-09 17:48 ? 次閱讀

2 利用WinForm調(diào)用類庫(kù)

在解決方案下面,新建WinForm工程

wKgaomUeCSSAPbSkAAE7dGUmgFc745.png

在引用上面,右鍵選擇添加引用

wKgZomUeCSOAT2YPAACEO_I2p6Y872.png

點(diǎn)擊瀏覽,選擇之前生成的dll,

wKgZomUeCSOAKXH9AAAiqs_-0uI086.png

點(diǎn)擊確定按鈕,完成引用的添加。

wKgaomUeCSOARrAxAAAikchJHtg001.png

在調(diào)用庫(kù)時(shí),在開(kāi)頭位置添加命名空間的引用,此處為using EventTesting;

在界面中,進(jìn)行兩個(gè)功能的測(cè)試。1 )在界面內(nèi)輸入字符串,點(diǎn)擊按鈕,觸發(fā)事件2)實(shí)現(xiàn)一個(gè)簡(jiǎn)單函數(shù)Add,在執(zhí)行時(shí),觸發(fā)事件,代碼如下:

wKgZomUeCSSAbeqNAAAyhyDxTQc224.png

using System;
using System.Windows.Forms;
using EventTesting;//導(dǎo)入的類庫(kù)

namespace WindowsFormsApp1
{
 public partial class Form1 : Form
 {
 private EventPublisher publisher; // 聲明 publisher 作為類級(jí)別的字段
 public Form1()
 {
 InitializeComponent();
 publisher = new EventPublisher(); // 在初始化時(shí)創(chuàng)建 EventPublisher 實(shí)例
 publisher.MyEvent += HandleEvent;
 
 }
 
 private static void HandleEvent(object sender, MyEventArgs e)
 {
 MessageBox.Show($"執(zhí)行結(jié)果: {e.Message}");
 }

 private void addBtn_Click(object sender, EventArgs e)
 {
 //將a、b的值傳入Add函數(shù),并觸發(fā) HandleEvent事件
 textBox1.Text = publisher.Add((int)a.Value, (int)b.Value).ToString();
 }

 private void RaiseEvent_Click(object sender, EventArgs e)
 {
 publisher.RaiseEvent(SetStr.Text);
 }
 }
}

執(zhí)行情況:

1)填寫(xiě)輸入,點(diǎn)擊按鈕,觸發(fā)了事件,彈出提示框。

wKgZomUeCSSAZza2AAB1zxdUsk0937.png

2)輸入a=1,b=2,事件觸發(fā),得到結(jié)果。

wKgZomUeCSSAZza2AAB1zxdUsk0937.png

wKgaomUeCSSAYa99AAAuIfjDT3I282.png

3 在LabVIEW中,調(diào)用事件

1)選擇構(gòu)造器節(jié)點(diǎn)

wKgaomUeCSSAeY7PAAFetJA2gfM616.png

2)瀏覽選擇生成的dll,選擇事件類。

wKgaomUeCSSAXHdkAAB0Z4kMWGQ068.png

3)選擇事件回調(diào),建立一個(gè)回調(diào)函數(shù),函數(shù)里面是將觸發(fā)事件的字符串顯示到界面的控件中。

wKgZomUeCSSALjUmAABlPOE38xs584.png

wKgZomUeCSSASJ-JAADu7Kr7jHc348.png

4)同樣是做兩組測(cè)試,一個(gè)直接觸發(fā),另一個(gè)通過(guò)Add函數(shù)間接觸發(fā)。前面板如下:

wKgaomUeCSSAGOzIAADbTiqSPTc526.png

觸發(fā)程序:

wKgaomUeCSSABpMcAADbTiqSPTc048.png

Add程序:

wKgZomUeCSSAMprHAADqsR5CBVY244.png

5)執(zhí)行測(cè)試。觸發(fā)的測(cè)試如下:

執(zhí)行Add的測(cè)試如下:

wKgZomUeCSSAPW6YAACtNvZI6hQ535.png

利用C#編寫(xiě)事件相關(guān)的類庫(kù),在WinForm和LabVIEW中進(jìn)行測(cè)試,并描述相關(guān)程序的調(diào)用方法。

1 編寫(xiě)事件的相關(guān)類庫(kù)

新建項(xiàng)目,先利用C#編寫(xiě).NET Framework類庫(kù)。

wKgZomUeCNKAdsrjAAE6qtkQaXE764.png

這個(gè)類庫(kù)主要用于展示事件的定義和觸發(fā)。EventPublisher類包含了一個(gè)自定義事件MyEvent,并且在Add方法中演示了如何觸發(fā)事件。其他應(yīng)用程序可以訂閱這個(gè)事件,并在事件觸發(fā)時(shí)執(zhí)行相應(yīng)的操作,以便處理事件相關(guān)的信息。

using System;

namespace EventTesting
{
 // 1. 定義事件參數(shù)類
 public class MyEventArgs : EventArgs
 {
 public string Message { get; }

 public MyEventArgs(string message)
 {
 Message = message;
 }
 }

 // 2. 定義包含事件的類
 public class EventPublisher
 {
 // 定義事件,使用 EventHandler 委托,事件參數(shù)類型是 MyEventArgs
 public event EventHandler MyEvent;

 // 觸發(fā)事件的方法
 public void RaiseEvent(string message)
 {
 // 創(chuàng)建事件參數(shù)對(duì)象
 MyEventArgs args = new MyEventArgs(message);
 
 // 觸發(fā)事件
 MyEvent?.Invoke(this, args);
 }

 public int Add(int a, int b)
 {
 //在調(diào)用此函數(shù)時(shí),觸發(fā)事假
 int sum = a + b;
 RaiseEvent(sum.ToString());
 return sum;
 }
 }

}

選擇“生成”或“重新生成”,生成dll文件。

wKgZomUeCP2AEpfOAABpcdKZCkI987.pngwKgaomUeCP2AY6D2AACHfqi8JjQ659.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)投訴
  • LabVIEW
    +關(guān)注

    關(guān)注

    1970

    文章

    3654

    瀏覽量

    323309
收藏 人收藏

    評(píng)論

    相關(guān)推薦

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

    本文主要是LabVIEW無(wú)法調(diào)用回調(diào)函數(shù)dll的問(wèn)題的解決方法,也介紹了LabVIEW調(diào)用C#庫(kù)的方法。
    的頭像 發(fā)表于 09-06 17:43 ?5960次閱讀
    <b class='flag-5'>LabVIEW</b>調(diào)用<b class='flag-5'>C#</b>編寫(xiě)的.NET類庫(kù)

    LabVIEW視覺(jué)模塊怎么與C#聯(lián)合編程

    我今天看到一家美國(guó)供應(yīng)商寫(xiě)的C#程序,調(diào)用的是LabVIEW Vision。但是電腦沒(méi)有安裝LabVIEW,只安裝了LabVIEW Engine。我看了NI官網(wǎng),寫(xiě)的是
    發(fā)表于 06-30 23:24

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

    本人看過(guò)不少LABVIEW直接調(diào)用HALCON的例子,感覺(jué)不如調(diào)用C#速度快,方便簡(jiǎn)潔。今天就把本人的經(jīng)驗(yàn)分享一下。第一次發(fā)帖。。。。首先打開(kāi)HALCON 例如:我們要把下面的算子轉(zhuǎn)換
    發(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)用,但是該方式不像“調(diào)用庫(kù)函數(shù)節(jié)點(diǎn)”那樣可以在運(yùn)行過(guò)程中指定某個(gè)路徑下的dll調(diào)用。所以希望可以獲知通過(guò)“調(diào)用庫(kù)函數(shù)節(jié)點(diǎn)”調(diào)用C#生成dll的
    發(fā)表于 01-04 15:47

    labview調(diào)用C#延時(shí)消除問(wèn)題

    采用了截圖中的C#編制.dll文件調(diào)用方式,發(fā)現(xiàn)其中大約由100+ms的延時(shí)無(wú)法消除,求問(wèn)能否由方法消除該延時(shí)。Ps:同樣的代碼用labview實(shí)現(xiàn),運(yùn)行時(shí)間
    發(fā)表于 01-17 14:46

    金橙子打標(biāo)卡labview打標(biāo)開(kāi)發(fā)沒(méi)頭緒?c#封裝成dll后labview調(diào)用真香!

    對(duì)接會(huì)面臨很多數(shù)據(jù)類型和指針的調(diào)用問(wèn)題。labview如何調(diào)用?我們的方法是直接用c#封裝dll后提供labview調(diào)用。初始化與反初始化函數(shù)名]返回值: 通用錯(cuò)誤碼備注:]使用條件:
    發(fā)表于 07-26 01:18

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

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

    LabVIEWC語(yǔ)言接口的方法

    摘要介紹了一種LabVIEWC 語(yǔ)言接口的方法,由實(shí)例證明,該方法高效、易行,是增強(qiáng)LabVIEW整體功能的一條有效的途徑。關(guān)鍵詞虛擬儀器
    發(fā)表于 01-17 21:54 ?82次下載

    C#教程之注冊(cè)注冊(cè)機(jī)制

    C#教程之注冊(cè)注冊(cè)機(jī)制,很好的C#資料,快來(lái)學(xué)習(xí)吧。
    發(fā)表于 04-21 09:52 ?17次下載

    LabVIEW外部程序(C和matlab)接口相關(guān)資料

    LabVIEW外部程序(C和matlab)接口相關(guān)資料LabVIEW外部程序(C和matlab)接口相關(guān)
    發(fā)表于 08-22 15:24 ?0次下載

    《Visual C# 2008程序設(shè)計(jì)經(jīng)典案例設(shè)計(jì)與實(shí)現(xiàn)》---

    《Visual C# 2008程序設(shè)計(jì)經(jīng)典案例設(shè)計(jì)與實(shí)現(xiàn)》---動(dòng)態(tài)設(shè)置注冊(cè)表是否可運(yùn)行
    發(fā)表于 02-07 12:29 ?0次下載

    《Visual C# 2005開(kāi)發(fā)技術(shù)》C#程序設(shè)計(jì)基礎(chǔ)

    《Visual C# 2005開(kāi)發(fā)技術(shù)》C#程序設(shè)計(jì)基礎(chǔ)
    發(fā)表于 02-07 15:11 ?0次下載

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

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

    LabVIEW的編程之道—事件注冊(cè)和取消注冊(cè)方法

    我在一個(gè)帖子里碰到這樣一個(gè)問(wèn)題,在LabVIEW中取消一個(gè)已經(jīng)注冊(cè)事件或再次注冊(cè)事件呢?然后就有了這篇文章。
    的頭像 發(fā)表于 10-31 11:29 ?6048次閱讀
    RM新时代网站-首页