NS2仿真中节点颜色设置
2009-02-16 20:01

NS中提供了配置节点与流量颜色标识的方法,给一条流“上色”是经常用的方法,但是在无线仿真的时候不好用,经常出现只有fid=0的流上了颜色,经过仔细研究源代码,发现有下面一段,[cmu-trace.cc]

// A simple hack for scadds demo (fernandez's visit) -- Chalermek
     int pkt_color = 0;

之后还有一些判断,好像是在802.15.4的情况下才有颜色,如果添上下面这段,颜色是都有了,但是很可能不太正确,期望有高手能解决。

hdr_ip* iph = hdr_ip::access(p);
     pkt_color = iph -> fid_;

再说节点的颜色配置,可能很少有人用到。但是在无线环境下,尤其是节点会移动的情况下,把节点标记成不同的颜色,会大大提高可视化程度。NS给用户提供的节点配置颜色的方法定义在Ns-namsupp.tcl中,函数的声明为:

Node instproc color { color } {
$self instvar attr_ id_

set ns [Simulator instance]

if [$ns is-started] {
   # color must be initialized

$ns puts-nam-config /
   [eval list "n -t [format "%.15g" [$ns now]] -s $id_ -S COLOR -c $color -o $attr_(COLOR) -i $color -I $attr_(LCOLOR)"]
   set attr_(COLOR) $color
         set attr_(LCOLOR) $color
} else {
set attr_(COLOR) $color
         set attr_(LCOLOR) $color
}
}

前几天我在配置脚本的时候想使用节点颜色,还有节点标签,所以我做了如下配置:

$node_(1) color red
$node_(1) label mobile_node

但是Nam播放中,节点仍然是黑色的,我又仔细看了函数声明,发现配置方法没错,可是为什么节点的颜色就是没变呢?进一步深入研究了NamTrace文件,我发现前面的若干行是用来初始化节点的位置、形状、颜色的:

n -t * -s 1 -x 300 -y 200 -Z 0 -z 30 -v circle -c black

可以清楚的看见颜色的配置是黑色,可是我明明指定它为红色了!我要看看是哪里打印了这一行,一番搜索,找到了在Ns-lib.tcl中负责Node的Nam配置初始化函数:

Simulator instproc initial_node_pos {nodep size} {
$self instvar addressType_
$self instvar energyModel_

if [info exists energyModel_] {
  set nodeColor "green"
} else {
   set nodeColor "black"
}
......
   # Flat addressing
   $self puts-nam-config "n -t * -s [$nodep id] /
-x [$nodep set X_] -y [$nodep set Y_] -Z [$nodep set Z_] -z $size /
-v circle -c $nodeColor"
}
}

注意看那个 if 结构,由于只有两种情况,开启了能量模型节点就是绿色的否则就是黑的,所以我们前面所做的配置都没有用了,于是乎,改之!将那个 if 结构的内容改成如下所示:

if [info exists energyModel_] {
   set nodeColor "green"
} else {
#   set nodeColor "black"
  set tempcolor [$nodep set attr_(COLOR)]
   if {$tempcolor == "green"} {
   puts "Green is reserved for energy model, you may not set your node green..."
    set tempcolor "black"
   }
   puts "Node color is set to $tempcolor"
   set nodeColor $tempcolor
}

然后重新make一下,甚至不用重新make,只要你把改过的Simulator instproc initial_node_pos 的声明与定义都写到你的TCL脚本的头部,这样你这个脚本中调用的函数就是你自定义的了。再重新运行一遍试试。检查一下NamTrace文件:

n -t * -s 1 -x 300 -y 200 -Z 0 -z 30 -v circle -c red

好了,这次配置正确了,用Nam跑一遍,赏心悦目啊~

Trackback: http://blog.csdn.net/robin2046/archive/2007/07/26/1710478.aspx

按此方法设置节点颜色的出错原因(这一点可以参考:How to change nodes' color in NS2 Wireless Simulation)

1. 出错原因:没有把所有的节点都设置成别的颜色(指除了黑色的颜色)
例如:有三个节点,而只设置了一个或者两个节点有颜色,此时就会出错
2. 解决方法:把所有的节点都设置颜色,不想改变颜色的也要设置成黑色
如果有三个节点,要进行如下的设置
$node_(0) color "purple"
$node_(1) color "red"
$node_(2) color "black"
3. 出错分析:
if [info exists energyModel_] {  
   set nodeColor "green"
} else {
#   set nodeColor "black"
   set tempcolor [$nodep set attr_(COLOR)]
   if {$tempcolor == "green"} {
puts "Green is reserved for energy model, you may not set your node green..."
set tempcolor "black"
   }
   puts "Node color is set to $tempcolor"
   set nodeColor $tempcolor
}
仔细分析上面的if语句中的else部分可以看出在既不存在能量模型也不存在节点颜色为green的时候,节点是没有颜色的,所以才会出现attr_(COLOR)不能读取的错误.

注意其中2很重要。

摘自:http://www.baisi.net/viewthread.php?tid=64178&extra=&page=2

三:

$node_       color black                             ---1
$ns_ at 30.0 "$node_ color red"          ---2
第一行只是给节点增加了颜色属性 ,注意必须有,否则后面颜色的设置将不起作用

第二行是设置节点在30.0时颜色为 red,其中时间任意,但是必须大于0 :)

ns中用到的几种颜色:(其中yellow和gold不太容易分清,建议不要同时用)

red

yellow

blue

green

black

chocolate

brown

tan

gold

转自:http://hi.baidu.com/jrwen0/blog/item/1f213cca1c9ded41f31fe755.html

NS2仿真中nam节点颜色设置相关推荐

  1. NS2仿真中nam节点颜色设置(转)

    NS2仿真中节点颜色设置 2009-02-16 20:01 NS中提供了配置节点与流量颜色标识的方法,给一条流"上色"是经常用的方法,但是在无线仿真的时候不好用,经常出现只有fid ...

  2. 关于NS-2仿真中移动节点的设置

    关于NS-2仿真中移动节点的设置 要做一个4个节点的Ad hoc网络仿真,实验环境和要求是: cf&p4W�H0s1[0u1i"ED u W0采 用的无线网拓扑结构,主机节点数共有4 ...

  3. android 颜色资源文件,android中colors.xml颜色设置资源文件的方法

    1. 打开res目录下的values文件夹,双击打开colors.xml文件进行编辑 上代码 #008577 #00574B #D81B60 #ff0000 #0000ff 2. 在res目录下的la ...

  4. android 中color目录,android中colors.xml颜色设置资源文件的方法

    1. 打开res目录下的values文件夹,双击打开colors.xml文件进行编辑 上代码 #008577 #00574B #D81B60 #ff0000 #0000ff 2. 在res目录下的la ...

  5. java中laber字体颜色设置,QLabel:设置文本和背景的颜色

    我添加这个答案是因为我觉得它对任何人都有用 . 我在绘画应用程序中为彩色显示标签设置了RGBA颜色(即RGB颜色,透明度为Alpha值)的问题 . 当我遇到第一个答案时,我无法设置RGBA颜色 . 我 ...

  6. Myeclipse中导入字体颜色设置的epf…

    因为要长期看程序,所以有必要将开发工具的字体颜色包括背景等设置成让眼睛舒适的效果,但是想要改变Eclipse或者Myeclipse中的代码颜色和背景等等,如果一项一项来,太麻烦了.程序员不可能整天去做 ...

  7. java中laber字体颜色设置,重写jxl中可用的颜色实现自定义颜色

    在jxl组建中没有提供直接的自定义16进制颜色的方法,但是可以通过他的某些方法来实现 参考方法如下: package com.manager.util; import java.awt.Color; ...

  8. keil4编写c语言代码颜色设置,Keil中代码的颜色设置

    因为长时间要编程,对于keil上的黑字白底,如果看久了会让人眼睛产生疲倦感,所以最好将代码颜色和底色都改变一下,让自己看起来舒服一点. 下面是文字图片教程(如果自己没空去设置,我后面也有两套模板可以直 ...

  9. Keil中代码的颜色设置

    因为长时间要编程,对于keil上的黑字白底,如果看久了会让人眼睛产生疲倦感,所以最好将代码颜色和底色都改变一下,让自己看起来舒服一点. 下面是文字图片教程(如果自己没空去设置,我后面也有两套模板可以直 ...

最新文章

  1. 将Numpy加速700倍——CuPy
  2. 菜鸟发现--网站的皮肤 ^_^
  3. 水果电池打造柠檬电动汽车!
  4. Revit Family API 找到实体某一方向上的面。
  5. python 面试题2
  6. sqlserver evaluation是什么版本_SQL Server 基础知识
  7. 微博粉丝平台开发全攻略
  8. 坚果pro android版本号,锤子手机/坚果U3-Pro-SE/坚果Pro2特别版-LOS-安卓9.0.0-稳定版Stable3.0-来去电归属-农历等-本地化增强...
  9. 科技爱好者周刊(第 108 期):阵地战与奇袭战
  10. Linux Ubuntu快捷键技巧
  11. 机工社威武!再送你30本我的第二套数据分析书籍!
  12. agv系统介绍_智能自动化物流系统AGV基础知识(完整介绍)
  13. 【大数据实战】flume 数据采集
  14. scribed 安装
  15. Android 自定义折线图实现教程
  16. 成长的旅途,未知的邂逅
  17. 用计算机模拟掷骰子实验,实验一古典概型及其模拟(6页)-原创力文档
  18. AI+药物研发:人工智能赋能新药研发
  19. Octopus FS 论文阅读 (一)
  20. 易灵思发力系统级封装SiP,探索FPGA新玩法

热门文章

  1. python爬虫快速添加请求头、随机生成user-agent
  2. 图形图像相关格式简介
  3. 最短路算法整理 七七八八的总结
  4. 秦九邵算法,牛顿迭代算法,盛金公式
  5. java web树形图查询_Javaweb生成族谱树形图
  6. 大数据产品价值主张_大数据背景下新零售商业模式探究
  7. sqlmap中的columns哪里看_ROC,AUC 还是看我的吧,别人都千篇一律
  8. Rings(思维/贪心)
  9. debug(3)--kali gnome桌面图标无法显示
  10. 黑马程序员:Socket编程之(UDP vs TCP)