0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

LabVIEW与C# 注册事件相关方法

lvxisi 来源:lvxisi 作者:lvxisi 2023-10-09 17:48 次阅读

2 利用WinForm调用类库

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

wKgaomUeCSSAPbSkAAE7dGUmgFc745.png

在引用上面,右键选择添加引用

wKgZomUeCSOAT2YPAACEO_I2p6Y872.png

点击浏览,选择之前生成的dll,

wKgZomUeCSOAKXH9AAAiqs_-0uI086.png

点击确定按钮,完成引用的添加。

wKgaomUeCSOARrAxAAAikchJHtg001.png

在调用库时,在开头位置添加命名空间的引用,此处为using EventTesting;

在界面中,进行两个功能的测试。1 )在界面内输入字符串,点击按钮,触发事件2)实现一个简单函数Add,在执行时,触发事件,代码如下:

wKgZomUeCSSAbeqNAAAyhyDxTQc224.png

using System;
using System.Windows.Forms;
using EventTesting;//导入的类库

namespace WindowsFormsApp1
{
 public partial class Form1 : Form
 {
 private EventPublisher publisher; // 声明 publisher 作为类级别的字段
 public Form1()
 {
 InitializeComponent();
 publisher = new EventPublisher(); // 在初始化时创建 EventPublisher 实例
 publisher.MyEvent += HandleEvent;
 
 }
 
 private static void HandleEvent(object sender, MyEventArgs e)
 {
 MessageBox.Show($"执行结果: {e.Message}");
 }

 private void addBtn_Click(object sender, EventArgs e)
 {
 //将a、b的值传入Add函数,并触发 HandleEvent事件
 textBox1.Text = publisher.Add((int)a.Value, (int)b.Value).ToString();
 }

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

执行情况:

1)填写输入,点击按钮,触发了事件,弹出提示框。

wKgZomUeCSSAZza2AAB1zxdUsk0937.png

2)输入a=1,b=2,事件触发,得到结果。

wKgZomUeCSSAZza2AAB1zxdUsk0937.png

wKgaomUeCSSAYa99AAAuIfjDT3I282.png

3 在LabVIEW中,调用事件

1)选择构造器节点

wKgaomUeCSSAeY7PAAFetJA2gfM616.png

2)浏览选择生成的dll,选择事件类。

wKgaomUeCSSAXHdkAAB0Z4kMWGQ068.png

3)选择事件回调,建立一个回调函数,函数里面是将触发事件的字符串显示到界面的控件中。

wKgZomUeCSSALjUmAABlPOE38xs584.png

wKgZomUeCSSASJ-JAADu7Kr7jHc348.png

4)同样是做两组测试,一个直接触发,另一个通过Add函数间接触发。前面板如下:

wKgaomUeCSSAGOzIAADbTiqSPTc526.png

触发程序:

wKgaomUeCSSABpMcAADbTiqSPTc048.png

Add程序:

wKgZomUeCSSAMprHAADqsR5CBVY244.png

5)执行测试。触发的测试如下:

执行Add的测试如下:

wKgZomUeCSSAPW6YAACtNvZI6hQ535.png

利用C#编写事件相关的类库,在WinForm和LabVIEW中进行测试,并描述相关程序的调用方法。

1 编写事件的相关类库

新建项目,先利用C#编写.NET Framework类库。

wKgZomUeCNKAdsrjAAE6qtkQaXE764.png

这个类库主要用于展示事件的定义和触发。EventPublisher类包含了一个自定义事件MyEvent,并且在Add方法中演示了如何触发事件。其他应用程序可以订阅这个事件,并在事件触发时执行相应的操作,以便处理事件相关的信息

using System;

namespace EventTesting
{
 // 1. 定义事件参数类
 public class MyEventArgs : EventArgs
 {
 public string Message { get; }

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

 // 2. 定义包含事件的类
 public class EventPublisher
 {
 // 定义事件,使用 EventHandler 委托,事件参数类型是 MyEventArgs
 public event EventHandler< MyEventArgs > MyEvent;

 // 触发事件的方法
 public void RaiseEvent(string message)
 {
 // 创建事件参数对象
 MyEventArgs args = new MyEventArgs(message);
 
 // 触发事件
 MyEvent?.Invoke(this, args);
 }

 public int Add(int a, int b)
 {
 //在调用此函数时,触发事假
 int sum = a + b;
 RaiseEvent(sum.ToString());
 return sum;
 }
 }

}

选择“生成”或“重新生成”,生成dll文件。

wKgZomUeCP2AEpfOAABpcdKZCkI987.pngwKgaomUeCP2AY6D2AACHfqi8JjQ659.png

审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • LabVIEW
    +关注

    关注

    1918

    文章

    3619

    浏览量

    317005
收藏 人收藏

    评论

    相关推荐

    LabVIEW调用C#编写的.NET类库

    本文主要是LabVIEW无法调用回调函数dll的问题的解决方法,也介绍了LabVIEW调用C#库的方法
    的头像 发表于 09-06 17:43 3620次阅读
    <b class='flag-5'>LabVIEW</b>调用<b class='flag-5'>C#</b>编写的.NET类库

    LabVIEW 能控制C#编写的软件

    已经有C#写好的上位机程序,并生成了软件达到控制板块的功能。现需用LabVIEW编写新程序,原本的上位机控制软件作为其中控制的一部分,如何能达到???如用LabVIEW编写程序控制已经可以用软件控制的板块的串口开或关。
    发表于 03-16 08:35

    Arduino compatible compiler for labview注册方法

    谁有Arduino compatible compiler for labview注册方法注册包直接买官网的要300+美刀经济能力薄弱啊付不起
    发表于 11-03 13:59

    《Visual C# 2008程序设计经典案例设计与实现》---动态设置注册表是否可运行

    《Visual C# 2008程序设计经典案例设计与实现》---动态设置注册表是否可运行.zip
    发表于 06-25 16:43

    LabVIEW视觉模块怎么与C#联合编程

    我今天看到一家美国供应商写的C#程序,调用的是LabVIEW Vision。但是电脑没有安装LabVIEW,只安装了LabVIEW Engine。我看了NI官网,写的是
    发表于 06-30 23:24

    LABVIEW通过C#调用halcon算子

    本人看过不少LABVIEW直接调用HALCON的例子,感觉不如调用C#速度快,方便简洁。今天就把本人的经验分享一下。第一次发帖。。。。首先打开HALCON 例如:我们要把下面的算子转换
    发表于 02-18 10:54

    Labview 调用C#封装halcon库

    Labview 调用C#封装halcon库,内存释放能做到最好
    发表于 08-30 15:37

    labview 动态调用 C# 生成的dll

    目的: 用labview动态调用C#生成的dll问题:目前知道可以用.net的构造器调用,但是该方式不像“调用库函数节点”那样可以在运行过程中指定某个路径下的dll调用。所以希望可以获知通过“调用库函数节点”调用C#生成dll的
    发表于 01-04 15:47

    labview调用C#延时消除问题

    采用了截图中的C#编制.dll文件调用方式,发现其中大约由100+ms的延时无法消除,求问能否由方法消除该延时。Ps:同样的代码用labview实现,运行时间
    发表于 01-17 14:46

    Labview调用控制C#窗体dll

    Labview调用并且控制C#的窗体dll,实现邮件发送。网上未见有类似的帖子。摸索了半天成功。希望分享出来帮助在坑里的人。请看图片
    发表于 02-26 17:04

    金橙子打标卡labview打标开发没头绪?c#封装成dll后labview调用真香!

    对接会面临很多数据类型和指针的调用问题。labview如何调用?我们的方法是直接用c#封装dll后提供labview调用。初始化与反初始化函数名]返回值: 通用错误码备注:]使用条件:
    发表于 07-26 01:18

    C#教程之注册注册机制

    C#教程之注册注册机制,很好的C#资料,快来学习吧。
    发表于 04-21 09:52 17次下载

    labview注册机算号器

    labview 注册机 算号器 适用所有版本
    发表于 12-17 16:43 17次下载

    LABVIEW调用C# DLL的实例分享

    LABVIEW调用C# DLL的实例分享
    发表于 01-04 11:20 95次下载

    LabVIEW的编程之道—事件注册和取消注册方法

    我在一个帖子里碰到这样一个问题,在LabVIEW中取消一个已经注册事件或再次注册事件呢?然后就有了这篇文章。
    的头像 发表于 10-31 11:29 3742次阅读