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