opnet 学习之 process

来源:互联网 发布:红草药月季淘宝网 编辑:程序博客网 时间:2024/05/17 02:53

目的:设计一个模块,能够记录它所收到的包的数量 ,然后将包数量写到统计表中。(此为opnet 文挡当中的例子,第二部分 process)

设计模块:

1,模块分3个状态 初始态 initilization 到达态 arrival ,空闲态 idle

2,做状态转移图FSM .initilization状态,arrival 状态为强迫状态,idle状态为非强迫状态。

     从idle状态转移到arrival状态的条件为 数据包packet的到达。

3,定义状态和变量

     #define ARRIVAL  (op_intrpt_type()==opc_INTRPT_STRM)

    ARRIVAL 为状态转移条件。它为真的条件为:op_intrpt_type() (中断类型)为 opc_INTRPT_STRM (流中断)

4, 定义两个状态变量(state variables)

    Type                      Name                                    Comments
     int                         pk_count                               Counts total packets
    Stathandle          pk_cnt_stathandle               Statistic to record   packet count

其中定义 pk_count 用来记录数据包的量,可以理解,可是为什么要定义 pk_cnt_stathandle 呢 ?这个变量的作用是什么 ?

5,create state executives 创建状态代码

   a ,初始状态进入代码  :

     pk_count = 0;

     //设置 数据包的统计量的初始值为 0
    pk_cnt_stathandle = op_stat_reg ("packet count",  OPC_STAT_INDEX_NONE, OPC_STAT_LOCAL);

   //这个又是干什么用的呢 ?不知道 哦

 b,arrival 状态的进入代码

   进入了arrival 状态,当然pk_count 必须自加1;destroy 掉进入的packet,先要获得使系统中断的packet stream的句柄。

         ++pk_count;  //自加1
        op_pk_destroy (op_pk_get (op_intrpt_strm ()));//得到流的句柄,销毁数据包
         op_stat_write (pk_cnt_stathandle, pk_count); //将变量写入统计表

6,编辑进程接口 edit process interface

7,实现结点和网络模型

8,运行仿真