OPNET自中断的使用

来源:互联网 发布:retrofit2上传json 编辑:程序博客网 时间:2024/04/30 14:05

OPNET自中断介绍

所有这些中断函数在用户手册的中断部分有介绍。不过自中断不仅仅是写一个函数就能执行了,而且学会自中断我们可以做很多事情,学过硬件编程的人应该都知道,硬件编程中,很多功能如游戏的按键控制、通信触发生效等都是必须要通过中断来实现的。而OPNET里面中断略多,而自中断相对来说比较典型,比较难,所以就单独写了个自中断的介绍。

一、自中断:

代码:op_intrpt_schedule_self (op_sim_time () + dest_time, 0);

为了方便介绍,改成这样:op_intrpt_schedule_self (a, b);

a为时间,是double变量;表示我要在什么时间执行这个中断。其中op_sim_time()代表当前仿真时间,常在这出现,以方便我们能够决定自中断在这之后多久执行。

b表示自中断的序号,为什么要写这个序号呢?那就顺着下面的问题思考。

如果我写了多个自中断,我怎么知道当前发生的是哪一个中断?

所以,我们需要一个序号,来方便写代码的人能够区分出这是哪一个中断被触发了!

这个序号怎么用,如图:

 

这里定义了两个自中断,中断类型必须标明是自中断,然后中断序号就根据自己写中断的时候所定的序号写!

 

自中断怎么生效的?

 

就像前面我写的一样,我在这里写了一个自中断,我希望进程能够在这里随机的等待一段时间再开始执行正常的功能,所以只有等到这个时间到了,才会触发自中断。

定义自中断的代码(定义代码需写在头文件中):

#define SELF_INTRUPT0  (op_intrpt_type () == OPC_INTRPT_SELF && op_intrpt_code () == 0)

开始自中断的代码:

op_intrpt_schedule_self (op_sim_time () + dest_time, 0);

 

当时间从当前的时间走了dest_time之后,自中断触发了,然后程序就从delay1模块到了idle模块!

0 0
原创粉丝点击