[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [ns] problem with record procedure
Try to delcare "global null" instead of "global null(0) null(1)...." in
your record procedure..
On Fri, 17 Aug 2001, lorenz meier wrote:
> hi all
> when i try to run the following tcl file, i allways get the error:
>
> ns: record: can't read "null(0)": no such variable
> while executing
> "$null($i) set bytes_"
> (procedure "record" line 5)
> invoked from within
> "record"
>
>
> what's wrong with the file?please help me
> thanks lorenz
> the file looks like:
>
> # ======================================================================
> # Define options
> # ======================================================================
>
> set val(chan) Channel/WirelessChannel
> set val(prop) Propagation/TwoRayGround
> set val(netif) Phy/WirelessPhy
> set val(mac) Mac/802_11
> set val(ifq) Queue/DropTail/PriQueue
> set val(ll) LL
> set val(ant) Antenna/OmniAntenna
> set val(x) 200 ;# X dimension of the topography
> set val(y) 200 ;# Y dimension of the topography
> set val(ifqlen) 50 ;# max packet in ifq
> set val(seed) 0.0
> set val(adhocRouting) DSR
> set val(nn) 5 ;# how many nodes are simulated
> set val(stop) 20 ;# simulation time
>
> # =====================================================================
> # Main Program
> # ======================================================================
>
> #
> # Initialize Global Variables
> #
>
> # create simulator instance
>
> set ns [new Simulator]
>
> # setup topography object
>
> set topo [new Topography]
>
> # create trace object for ns and nam
>
> set tracefd [open 1v3tr.tr w]
> set namtrace [open 1v3nam.nam w]
> for {set i 0} {$i < $val(nn)} {incr i} {
> set f($i) [open out($i).tr w]
> }
> $ns trace-all $tracefd
> $ns namtrace-all-wireless $namtrace $val(x) $val(y)
>
> #Define a 'finish' procedure
> proc finish {} {
> global ns tracefd f0 f1 f2 f3 f4
> $ns flush-trace
> #Close the trace file
> close $tracefd
> for {set i 0} {$i < $val(nn)} {incr i} {
> close f($i)
> }
> exec xgraph -bb -m -y nb(pkts/bytes) -x time out(0).tr out(1).tr
> out(2).tr out(3).tr out(4).tr -geometry 1000x500 &
> #Execute nam on the trace file
> exec nam 1c1nam.nam &
> exit 0
> }
>
> # define topology
> $topo load_flatgrid $val(x) $val(y)
>
> #
> # Create God
> #
> set god [create-god $val(nn)]
>
> #
> # define how node should be created
> #
>
> #global node setting
>
> $ns node-config -adhocRouting $val(adhocRouting) \
> -llType $val(ll) \
> -macType $val(mac) \
> -ifqType $val(ifq) \
> -ifqLen $val(ifqlen) \
> -antType $val(ant) \
> -propType $val(prop) \
> -phyType $val(netif) \
> -channelType $val(chan) \
> -topoInstance $topo \
> -agentTrace ON \
> -routerTrace OFF \
> -macTrace OFF
>
> #
> # Create the specified number of nodes [$val(nn)] and "attach" them
> # to the channel.
>
> for {set i 0} {$i < $val(nn) } {incr i} {
> set node_($i) [$ns node]
> $node_($i) random-motion 0 ;# disable random motion
>
> }
> #
> # Provide initial (X,Y, for now Z=0) co-ordinates for mobilenodes
> for {set i 0} {$i < $val(nn) } {incr i} {
> $node_($i) set X_ 100*$i
> $node_($i) set Y_ 100*$i
> $node_($i) set Z_ 0.0
> }
>
> #
>
>
> #
> for {set i 0} {$i < $val(nn)*($val(nn)-1) } {incr i} {
> set udp($i) [new Agent/CBR/UDP]
> $ns attach-agent $node_([expr $i%$val(nn)]) $udp($i)
> }
>
> for {set i 0} {$i < $val(nn) } {incr i } {
> set null($i) [new Agent/LossMonitor]
> $ns attach-agent $node_($i) $null($i)
> }
>
> for {set i 0} {$i < $val(nn) } {incr i} {
>
> for {set j 0} {$j < ($val(nn)-1) } {incr j} {
> $ns connect $udp([expr ($i+$j*($val(nn)))]) $null([expr
> ($i+$j+1)%$val(nn)])}}
>
> for {set i 0} {$i < $val(nn)*($val(nn)-1) } {incr i} {
> set exp($i) [new Application/Traffic/Exponential]
> $exp($i) set packetSize_ 500
> $exp($i) set burst_time_ 3
> $exp($i) set idle_time_ 1
> $exp($i) set rate_ 1000
> $exp($i) attach-agent $udp([expr ($i)%$val(nn)])}
>
>
> for {set i 0} {$i < $val(nn)*($val(nn)-1) } {incr i} {
> $ns at 5.0 "$exp($i) start" }
>
>
>
> # Define node initial position in nam
>
> for {set i 0} {$i < $val(nn)} {incr i} {
>
> # 20 defines the node size in nam, must adjust it according to your
> scenario
> # The function must be called after mobility model is defined
>
> $ns initial_node_pos $node_($i) 20
> }
>
> proc record {} {
> global null(0) null(1) null(2) null(3) null(4) f(0) f(1) f(2) f(3) f(4)
> set time 0.1
> for {set i 0} {$i < 5} {incr i} {
> set bw($i) [$null($i) set bytes_]
> }
> set now [$ns now]
> for {set i 0} {$i < 5} {incr i} {
> puts $f($i) "$now [expr $bw($i)/$time*8/1000000]"
> $null($i) set bytes_ 0
> }
> $ns at [expr $now+$time] "record"
> }
>
>
> $ns at 0.0 "record"
>
> #Call the finish procedure after 5 seconds of simulation time
> $ns at 20 "finish"
>
> #
> # Tell nodes when the simulation ends
> #
> for {set i 0} {$i < $val(nn) } {incr i} {
> $ns at $val(stop).0 "$node_($i) reset";
> }
>
> $ns at $val(stop).0002 "puts \"NS EXITING...\" ; $ns halt"
>
>
> puts "Starting Simulation..."
> $ns run
>
>
>
>
>
>
> _________________________________________________________________
> Downloaden Sie MSN Explorer kostenlos unter http://explorer.msn.de/intl.asp
>
>