zoukankan      html  css  js  c++  java
  • 文本建模

    外部模块访问( EMA, External Model Access),它采用文本方式建模,可以用循环语句来刻画多个特定规格的节点。

     

    一般过程:

    首先在图形界面下做一个简单的网络模型(可以只包含一个网络对象,例如一个固定节点或一个移动节点),选择 Topology→Export Topology→To EMA 就可以生成 EMA 文件( *.em.c),仔细观察这个文件,就可以发现文件中包含设置节点属性的函数,通常是ema_obj_attr_set()等函数,手动把这个函数放置到一个 for 循环语句里,再把函数设置的属性值(如坐标、名称)改为变量,这样就可以通过循环设置大量的节点。

    改完后需要在 OPNET 控制台( console)下进行编译,具体步骤如下:

    ( 1)打开 OPNET 控制台窗口,进入修改过的*.em.c 所在目录

    ( 2)输入命令 op_mkema -m 文件名<不加后缀>。

    ( 3)执行刚创建的可执行文件<文件名.i0.em.x>。整个操作过程如图所示。

      

    ( 4)在 OPNET 菜单中点击 File->Model Files->Refresh Model Directories 刷新模型目录,在项目编辑器中选择Scenarios→Scenario Components→import...

     

    EMA 与外部数据的接口

    EMA设置对象的自定义属性

    ( 1) 读取数据文件,这里给出一个样本程序:

    double double_data;
    string node_name;
    printf ("开始读入%s 文件.
    ", FILE);
    fp = fopen(FILE, "r");
    if (fp == NULL)     printf ("打不开文件%s.
    ", FILE);
    while (fscanf (fp, "%f;%s", &double_data,node_name) != EOF)
    {
        //找到 node_name 对应的节点 Objid
        //根据这个 Objid 给节点设置属性值 double_data
    }
    fclose(fp);
    printf ("成功读入文件%s.
    ", FILE);

    ( 2)定义所需变量

    EmaT_Model_Id model_id;

    这时整个 EMA 模型的 ID 号,导出的 EMA 文件已经自动定义好

    EmaT_Object_Id node_objid, self_attr

    定义需要设置属性的节点 Objid ( node_objid)和自定义属性对象的 Objid ( self_attr)
    ( 3)创建自定义属性对象

    Self_attr = Ema_Object_Create (model_id, OBJ_ATTR_PROPS);

    ( 4)

    Ema_Object_Attr_Set (model_id, self_attr,
    "units", COMP_CONTENTS, "",
    "default value", COMP_CONTENTS_TYPE, EMAC_DOUBLE,
    "default value", COMP_CONTENTS, (double) 0,
    "high limit", COMP_CONTENTS, (double) 0,
    "low limit", COMP_CONTENTS, (double) 0,
    "symbol map list", COMP_INTENDED, EMAC_DISABLED,
    "flags", COMP_CONTENTS, 0,
    "data type", COMP_CONTENTS, 1,
    "count properties", COMP_INTENDED, EMAC_DISABLED,
    "list attribute definitions",COMP_INTENDED, EMAC_DISABLED,
    EMAC_EOL);

    ( 5)绑定自定义属性的名称( attr name)及其 Objid( self_attr)

    Ema_Object_Prom_Attr_Set (model_id, node_objid, "attr name", self_attr);

    (6 )将从步骤( 1)读到的数据 double_data 设置为自定义属性的值。

    Ema_Object_Attr_Set (model_id, node_objid, "attr name",COMP_PROMOTE,
    EMAC_DISABLED, "attr name",COMP_CONTENTS, (double) double_data, EMAC_EOL);
  • 相关阅读:
    java1.8--OptionalInt,OptionalDouble,OptionalLong类
    java1.8--Optional类
    java1.8--Null Object模式
    JDK自带的缓存--包装类的缓存
    函数式编程--lambda表达式对比匿名内部类
    java1.8--改进的接口
    Mybatis Generator(定制化)代码生成器
    Mybatis
    git fork
    git原理图解
  • 原文地址:https://www.cnblogs.com/liwei33/p/7344493.html
Copyright © 2011-2022 走看看