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模块!