Labview实用04:Labview调用.net中的事件

本节目标:

1)使用c#编写一个定时发送int型数值事件的类库;

2)使用Labview调用.net类库,添加事件回调功能,在线显示返回的int数值;

1.1 新建dll文件

1)新建项目

项目名称为LabVIEWEventDemo。

2)添加程序

在程序中添加Tick事件,然后新建定时器没过intervalMs时间后触发一次Tick事件,程序如下:

cs 复制代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Timers;

namespace LabVIEWEventDemo
{
    public class MyCounter
    {
        private readonly Timer _timer;
        private int _count;

        // 这就是 LabVIEW 要订阅的事件
        public event EventHandler<int> Tick;

        public MyCounter(double intervalMs = 1000)
        {
            _timer = new Timer(intervalMs);
            _timer.Elapsed += OnTimedEvent;
            _timer.AutoReset = true;
        }

        public void Start() 
        { _timer.Start();
        }
        public void Stop()
        { 
            _timer.Stop();
        }

        private void OnTimedEvent(object sender, ElapsedEventArgs e)
        {
            _count++;
            // 触发事件,LabVIEW 的回调 VI 会被异步调用
            Tick.Invoke(this, _count);
        }
    }
}

编译完成后,在debug文件夹下存在以下文件,后续让Labview使用。

1.2 Labview程序

1)新建项目

2)加入dll文件

将LabVIEWEventDemo.dll文件拷入到Labview项目文件中;

然后将其添加到项目中。

3)添加构造节点

右击->互连接口->.NET->构造节点;

浏览到添加的dll文件,选择MyCounter类,点击确定。

类初始化的时候输入参数为定时器时间间隔1000ms

4)添加事件回调注册

将其连接起来,选择事件Tick。

5)添加用户事件

创建用户事件,右击->对话框与用户界面->事件->创建用户事件;

6)创建回调VI

在VI引用处右击,选择创建回调VI。

将其命名为DotNetEvent.vi,保存。

在回调函数中添加产生用户事件。

产生用户事件,右击->对话框与用户界面->事件->产生用户事件;

7)添加一个while循环和事件结构

8)在前面板上添加三个按钮和一个数值显示控件

9)停止按钮事件

10)在开始Tick事件中添加调用节点(.NET)

调用节点(.NET),右击->互连接口->.NET->调用节点(.NET);

选择Start方法。

11)停止Tick事件

12)用户事件

1.3 运行

运行程序后,点击开始Tick按钮,数值每过一秒增加1,点击停止Tick按钮停止增加。

本节范例比较简单,但是该功能在.net的调用中非常有用,可以作为很好的参考。

相关推荐
LabVIEW开发6 小时前
32位与64位LabVIEW的CPU占用差异
labview·labview知识·labview功能·labview程序
码农刚子9 小时前
用 .NET 8 + uni-app 做一套多租户畜牧 SaaS:我们在秦巴牧云踩过的 6 个坑
uni-app·.net·saas
LabVIEW开发1 天前
基于原始套接字实现LabVIEW网络Ping检测的编程方法
网络·labview·labview知识·labview功能·labview程序
LabVIEW开发1 天前
如何为特定频率波形确定合适的缓冲区长度
labview·labview知识·labview功能·labview程序
zlinear数据采集卡1 天前
数据采集卡从入门到精通(38):上位机开发实战——Python/QT/LabVIEW的技术选型与分层架构
python·单片机·嵌入式硬件·qt·fpga开发·开源·labview
宝桥南山2 天前
Blazor Web Assembly - 体验一下Authentication State从Server共享给Client
microsoft·微软·c#·asp.net·.net·.netcore
rockey6272 天前
C#脚本引擎之AScript与DynamicExpresso对比
c#·.net·script·动态脚本
qq_548612453 天前
.NET 平台报表工具汇总(.NET Framework /.NET6-8,中国式复杂报表、Web 嵌入、填报、导出打印)
前端·.net
公子小六3 天前
基于.NET的Windows窗体编程之WinForms音频控件
windows·microsoft·c#·.net·音视频·winforms
界面开发小八哥3 天前
界面控件DevExpress Blazor v26.1新版亮点 - Navigation(导航)
javascript·.net·界面控件·blazor·devexpress·ui开发