OPNET自中斷的使用

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

發佈了36 篇原創文章 · 獲贊 9 · 訪問量 8萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章