关于事件回调 的解释 ,官方的是这样的:
注册VI,在事件发生时调用该VI。该函数用于注册和处理.NET和ActiveX事件。LabVIEW依据连线至各项的输入引用的类型确定可注册的事件。
我理解的就是:注册了事件回调之后,当某些事件发生以后,就会触发程序掉应设置好的子VI,运行子VI,类似于单片机C语言里面的中断处理。
看这样的一个例子(官方原例)
关于通过回调VI修改标题显示的例子。
在VI前面板实现网页浏览的基本功能。
前面板是这样的
程序框图是这样的
事件回调注册事件 用了两个事件。即 Titlechange和BeforeNavigate2.我们以第一个回调事件来进行解释。
当该浏览器控件发生标题改变时间后,就会回调TitleChangeCallback.vi进行某些处理。
我们打开这个子VI进行查看。
程序中 就是 将 事件数据 里面的TEXT 赋值给 我们前面板上的字符串显示控件 Title。
【当浏览器控件的标题发生变化时,事件会存在一个事件数据,这个事件数据当然不会和我们独立创建的字符串显示控件(Title控件)产生关联,于是,我们回调这个子VI将事件的title属性赋值给字符串显示控件】
至于我们应该怎么样创建一个子VI。下面我们进行简单的探索。
我们先 创建一个 事件回调注册 节点(互连接口——.net——事件回调注册)
然后我们将这个节点与 ActiveX控件或.net控件 链接起来。
然后 我们从 第一个选项 “事件”里 选择 TitleChange 事件。就关联了Titlechange事件
右键VI引用端子,创建回调VI。就会创建一个半成型的VI。这个半成型的 VI会根据上一步选择事件的不同而不同。主要是因为用到的参数不同,我们在这个基础之上进行修改。
有的回调VI需要用户参数,有的则不需要。而本例中 我们用到的用户参数就是 我们用到的字符串显示控件Title的引用句柄。
看一下 半成型的回调VI的不同。
Titlechange回调VI是这样的
回调VI BeforeNavigate2.VI
则是这样的:
存在着很大的不同吧!在这个基础上 修改回调VI就相对比较简单了。
语言组织比较乱!我自己能懂。如有不同想法,大家一起留言探讨。
我们可以把这种思维用到 中断程序处理中(例如 串口中断),继续探讨。
需要说明的是: 在回调VI中,用户参数一般都是 变体数据类型的。如果我们想改变回调参数的数据类型,在创建回调VI之前,连线用户参数端子,如连线的是字符串引用句柄,则回调VI中的用户参数为字符串型引用。
我们之前创建的半成型的Titlechange回调VI就是这样来的。
关键字:事件回调 中断
引用地址:
关于事件回调的运用(有关于 中断)
推荐阅读最新更新时间:2024-03-30 23:04
STM8L外部中断为何死循环 寄存器操作
STM8L 系列单片机是 ST公司推出的低功耗单片机,与STM8S系列相比功耗降低了很多,但内部结构也删减了很多,使用时一定要仔细阅读手册。 这是第一次使用STM8,实现功能不是很复杂就没想研究库函数,准备直接控制寄存器操作,没想到本人 因为中断问题纠结了大半天。 在外部中断中这一点很不同, STM8S自动清除外部中断,而STM8L是需要软件清除, 清除标志位的寄存器根据设置而不同,下面有说明。 下面以STM8L外部中断 PB1为例 说明外部中断 寄存器操作 设置外部中断有下面几步: 第一步、设置IO口为中断输入 通过设置 (PB_DDR |= 0X00; PB_CR1 |= 0X02; PB_CR2 |= 0X02;)
[单片机]
ARM嵌入式中断向量表配置策略和实现方法
一般32位ARM嵌入式系统的中断向量表是程序编译前设置好的。在编写32位ARM嵌入式系统的中断服务程序、设置和修改ARM体系结构的中断向量表时,常感到相当麻烦,不得不修改汇编代码,对不喜欢使用汇编代码编程的程序员尤其如此。当需要在程序运行过程中动态修改中断向量的程序时会感到更为不便,不得不增加很多分支处理指令才能实现。为此本文提出一种简便高效的配置方法,实现了ROM固化程序在运行时动态配置ARM嵌入式系统中断向量表的功能。 1 ARM中断向量两种设置方法 在32位ARM系统中,一般都是在中断向量表中放置一条分支指令或PC寄存器加载指令,实现程序跳转到中断服务例程的功能。例如: IRQEntry B HandleIR
[单片机]
Realview MDK中编译器对中断处理的过程详解
在ARM程序的开发过程中,对中断的处理是很普遍的、也是相当重要的。Realview MDK使用的RVCT编译器提供了__irq关键字,用此关键字修饰的函数被作为中断出来函数编译,即在编译的过程中,编译器会自动添加中断处理过程中现场保护和恢复的代码,减小程序的开发难度,加快软件的开发过程。 在理解__irq关键字的作用之前,先看一下ARM核对异常的处理过程。当产生异常时, ARM核拷贝CPSR寄存器的内容SPSR_ mode 寄存器中,同时设置适当的CPSR 位、改变处理器状态进入ARM 态和处理器模式,从而进入相应的异常模式。在设置中断禁止位禁止相应中断(如果需要)后,ARM核保存返回地址到LR_ mode ,同时设置PC为相应的异
[单片机]
个人对单片机中断程序的理解
开题首先贴上一段练习中遇到的代码: /*1:利用定时/计数器T0从P1.0输出周期为1s的方波,让发光二极管以1HZ闪烁,设晶振频率为12MHz。*/ #include reg52.h #include intrins.h #define uint unsigned int #define uchar unsigned char sbit P1_1=P1^0; uchar time; void main() { time=0; TMOD=0x01;////设置定时器0为工作方式1 TH0=(65536-50000)/256; TL0=(65536-50000)%256; EA=1;//开总中断 ET0=1;//开定时器0中断 T
[单片机]
基于51汇编语言的外部中断
主程序显示八位流水灯; 外部中断0:左右四位闪烁三次; 外部中断1:各位间隔闪烁三次。 仿真电路如下: ;程序如下: ORG 0000H LJMP START ORG 0003H LJMP X0_INT ORG 0013H LJMP X1_INT ORG 0030H START: SETB IT0 SETB IT1 SETB EX0 SETB EX1 SETB EA MOV SP, #50H ;---------------------- MOV A, #0FEH LOOP: MOV P1, A CALL DELAY RL
[单片机]
STM32中断,及FreeRTOS中断优先级配置
很多朋友对中断的一些知识还是不了解,今天就写点关于Cortex-M3处理器中断相关,以及FreeRTOS中断优先级配置的内容。 1写在前面 写本文之前,先写点相关的扩展内容。 STM32属于ARM中Cortex-M系列处理器,比如:STM32F1数据Cortex-M3,STM32F7数据Cortex-M7。 可以参看我之前分享文章: 从Cortex-M到Cortex-A认识ARM处理器 ,了解一下关于ARM处理器的种类。 本文主要结合Cortex-M3下面STM32F1系列处理器为例来讲述中断控制相关内容。而Cortex-M其它系列,或者说STM32其它系列关于中断的内容类似。 Cortex
[单片机]
PIC16F877A单片机 (外部中断)
1 基本原理 2 实现代码 /*----------------函数功能: 外部中断RB0/INT 按下按键(即产生一个中断),此时LED灯亮 --------------------------*/ #include pic.h // 调用PIC16f87XA单片机的头文件 //#include delay.h //调用延时子函数的头文件 __CONFIG(0xFF32);//芯片配置字,看门狗关,上电延时开,掉电检测关,低压编程关 //__CONFIG(HS&WDTDIS&LVPDIS); /*-----------宏定义--------------*/ #define ui
[单片机]
MCS-51系统中断优先级的软扩展
摘要:鉴于MCS-51系统只提供“二级中断嵌套”,提出扩展51系统中断优先级的纯软件方法。其利用51系统内建的中断允许寄存器IE和中断优先级寄存器IP,通过屏蔽字机制来实现;以C51的形式,给出这种扩展方法的函数库实现,为该方法的使用赋予友好、简洁的用户接口。
关键词:MCS-51单片机 中断优先级 软扩展 C51
引言
众所周知,MCS-51系统只提供“二级中断嵌套”,而大多数嵌入式系统希望有多于两级的优先级别。因为一般来说,系统都有掉电中断,且应置为最高优先级,这样所有其它中断只能共用一个最低优先级,如此,往往不能满足实际的逻辑需求。为了使系统具有多于两级的中断优先级别,可以利用8259A之类的中断控制芯片实现中断优先
[单片机]