ns-3中的数据跟踪与采集——Tracing系统的配置

在文章ns-3中的数据跟踪与采集——Tracing系统综述及fourth脚本中学习的函数TraceConnectWithoutContext在实际编写中很少用到。通常使用“Config path”子系统从系统中选取用户所要使用的Trace Source。这里使用在ns-3脚本初识——WIFI无线网络:third脚本中学过的third.cc作为基本代码,然后通过定义一个Trace Sink来输出移动节点的位置变化信息。

下面的函数CourseChange就是要定义的Trace Sink,和定义普通函数没有太大区别,在主函数前声明定义就行。

void
CourseChange (std::string context, Ptr<const MobilityModel> model)
{Vector position = model->GetPosition ();NS_LOG_UNCOND (context <<" x = " << position.x << ", y = " << position.y);
}

下面的代码就是使上面的Trace Sink和Trace Source相关联的代码。放在 Simulator::Run ();前面即可。

std::ostringstream oss;
oss << "/NodeList/"<< wifiStaNodes.Get (nWifi - 1)->GetId ()<< "/$ns3::MobilityModel/CourseChange";Config::Connect (oss.str (), MakeCallback (&CourseChange));

使用类Config的第一个静态成员函数Connect将二者关联在一起。这个函数有两个参数。其中,第二个参数MakeCallback (&CourseChange)的功能是使函数CourseChange成为一个回调函数。第一个参数oss.str ()是一个由各种字符组成的字符串,下面来分析这个作为路径的字符串所代表的含义:

为了便于讨论,假设getid()返回的节点号是“7”。在这种情况下,上面的路径是

"/NodeList/7/$ns3::MobilityModel/CourseChange"

第一个“/”符号代表后面要紧跟的是命名空间,后面所跟的“/”符号可以像目录与子目录一样来理解。这里用到的命名空间为NodeList。而NodeList是一个仿真中使用的节点的一个列表,紧随其后的是这个列表的一个索引,这里是通过Get函数来获取该节点,再通过GetId函数来得到该节点的索引。下一段字符串的第一个字符为“$”,当程序遇到这个符号时,就会调用函数GetObject来返回一个对象,因为在实际仿真中使用的对象聚合技术已经把许多对象全都集成在这个节点中。因为节点中集成了所需要的对象,所以后面就要给出返回对象的类型,此处要返回的对象类型是MobilityModel。而类MobilityModel有一个CourseChange属性,也就是我们要跟踪的Trace Sources。

如何确定“Config path”?
只要进入API文档,进入所需要的类,就会看到一个标题Config Paths,如下图所示:
下面对比更改前的程序third.cc和更改后的mythird.cc运行结果对比。可以看到,后者的结果中不仅包含了前者的结果,还有后来通过Tracing系统定义的一些相关输出结果,即节点7(如下所示)的位置坐标变化信息。

third.cc的运行结果:

mythird.cc的运行结果:

在本例中已经研究了系统中可能有任意数量的跟踪源对应于具有移动模型的任意数量的节点。需要有某种方法来确定哪个跟踪源实际上是触发回调的跟踪源。简单的方法是使用Config::Connect连接,而不是使用Config::ConnectWithoutContext。

ns-3中的数据跟踪与采集——Tracing系统的配置相关推荐

  1. ns-3中的数据跟踪与采集——Tracing系统综述及fourth脚本

    ns-3中的数据跟踪与采集--Tracing系统综述及fourth脚本 ns-3的跟踪与采集技术除了直接将执行过程显示在命令行中的Logging系统,还有一种更为常用的将采集到的数据直接存放在一个文件 ...

  2. SAP MM学习笔记13-SAP系统中的数据种类-(1)系统数据

    SAP中有三种数据, 1,系统数据 2,配置数据(Customizing Data) 3,应用数据(Application Data) 1,系统数据 ABAP数据字典,程序集(Program Libr ...

  3. linux中对数据怎么降序,Linux系统sort排序命令怎么使用

    sort命令的功能是对文件中的各行进行排序.sort命令有许多非常实用的选项,这些选项最初是用来对数据库格式的文件内容进行各种排序操作的.那么Linux系统sort排序命令怎么使用呢?小编为大家分享了 ...

  4. springbatch apache-activemq 整合(往mq中put数据,从mq中take数据)

    简单测试如下: 1:收下下载apache-activemq-5.14.4 解压apache-activemq-5.14.4\bin\win64,运行activemq.bat 启动本地MQ服务器. 通过 ...

  5. 如何创建最简单的 ABAP 数据库表,以及编码从数据库表中读取数据 (下)

    在本文的前续篇章:如何创建最简单的 ABAP 数据库表,以及编码从数据库表中读取数据 (上) 我们已经在系统里创建了两张数据库表 ZPERSON 和 ZMYORDERS, 并插入了对应的记录: 文章的 ...

  6. 重装Ubuntu时如何保留/home分区中的数据

    转自:https://www.cnblogs.com/maowang1991/p/3270441.html 重装Ubuntu时如何保留/home分区中的数据 作者:maowang Windows系统可 ...

  7. Pico示波器高速脉冲信号采集测试系统NSAT-4000

    *测试仪器:Pico示波器 *被测信号:终端高速重复信号的波形与数据的实时采集 1.系统优势 >>实现对Pico示波器多路信号同时实时采集. >>采集模块各个通道时延可进行独立 ...

  8. 前嗅教你大数据:批量采集/下载网页中的图片数据

    l 采集网站 [场景描述]采集revisionvillage网页中所有真题图片的数据. [源网站介绍]revisionvillage,国外知名IB真题网站,每道题都有视频讲解的IB数学刷题网站. [使 ...

  9. 使用kettle采集excel表格中的数据

    使用kettle采集excel表格中的数据 一.任务描述 二.任务目标 三.任务环境 四.任务分析 五. 任务实施 步骤1.环境准备 步骤2.创建Transformmations 申明: 未经许可,禁 ...

最新文章

  1. 内存分配器memblock【转】
  2. 一文详解单目结构光参数法
  3. 理工男有多香?一张桌子、一条视频,股价狂涨13.51%!网友:我看到了乔布斯!...
  4. SweetAlert2模态窗的使用
  5. 2.6 更多导数例子-深度学习-Stanford吴恩达教授
  6. showModalDialog数据缓存问题
  7. XML基础——extensible markup language
  8. ASP.NET MVC入门(一)---MVC的Hello World
  9. CSS之创建等高列布局之一
  10. thinkphp中如何使用PHP函数,如何在ThinkPHP中使用函数进行回调
  11. Linux系统编程17:进程控制之进程等待为什么进程需要被等待wait方法和waitpid方法阻塞和非阻塞等待
  12. python输出print(x+y)_Python语句序列“x='car';y=2;print(x+y)”的输出结果是() (2.0分)_学小易找答案...
  13. 字段合并_报表数据合并困难?找VBA!数据不标准字段缺失如何合并?找VBA
  14. 数理化计算机电子 武大水平,全方位比较南开大学、武汉大学——以数据为基础.doc...
  15. iphone修改app名称_ios软件如何改名字 苹果手机怎么修改软件的图标名称呢
  16. python--控制窗体
  17. 北大计算机学霸,揭秘:2018北大在京录取的学霸们有何特长(组图)
  18. 怎么把pdf转换成高清图片
  19. 微信摇一摇php,微信摇一摇功能实现 - 微信公众平台开发:微信
  20. C# Process.HasExited准确性

热门文章

  1. apt-get 提示 无法解析域名“cn.archive.ubuntu.com” 的解决
  2. Laravel SQL查询中first, pluck与lists方法
  3. does not exist or is not a readable directory
  4. 考 PMP 证书真有用吗?
  5. 【LearnOpenGL】-PBR材质
  6. NTL密码算法开源库-大整数ZZ类(一)
  7. 什么是MTTF,MTBF?
  8. 高级商务办公软件应用【9】
  9. FIL存储服务器订单系统,开源存储系统Slate构建FIL检索市场
  10. ElementUI el-input 设置 type 类型为 number 时,如何去掉上下指示箭头