如何在NS2中使用tcl脚本获取红色节点

时间:2017-06-14 11:44:27

标签: tcl nodes ns2

我想知道哪些节点是红色的,所以我有这个不执行的脚本。

for {set i 0} { $i < $14  } {incr i } {
if {$ns at 0.0 "$n($i) color red"}{
     return $n($i) 
    }
}

我收到此错误:

  

错误:缺少close-blace:执行时注释中可能存在不平衡的大括号。

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

这一行有两个语法问题,其中一个问题导致你现在遇到问题,另一个会在你修复问题后立即出现问题。在闭括号后面需要一个空格,以便将表达式单词与正文单词分开--Tcl关心在关键位置有空格 - 并且调用if条件内的命令需要用方括号括起来。

if {$ns at 0.0 "$n($i) color red"}{

可行的最小修复方法是:

if {[$ns at 0.0 "$n($i) color red"]} {

怀疑这不起作用,因为命令没有给出布尔值,但是在你添加括号和空格之前它肯定不会工作

答案 1 :(得分:0)

许多颜色设置可以在例如NS-2.35 / TCL / EX / WPAN / wpan_demo5.tcl

查找示例:cd [folder-with-examples.tcl] && grep -n "color red" *

红色节点的AODV示例:{aodv10ms.tcl,aodv10nodes.tcl,SoniaLamba-aodv.tcl}→aodv-examples-06.17.tar.gz .... aodv10nodes.tcl片段:

# Provide initial location of mobile nodes
$node_(0) set X_ 50.0
$node_(0) set Y_ 1.0
$node_(0) set Z_ 0.0
$node_(0) shape box
$node_(0) color red
$ns_ at 0.0 "$node_(0) shape box"
$ns_ at 0.0 "$node_(0) color red"
$ns_ at 0.5 "$node_(0) setdest 50.0 499.0 10.0"

所有~2000个例子都是here.