Dear Jalaluddin,
 Thanks very much for your great suggestion. But it is difficult for me to
modify some cc file to reach the target. And I think I should spend more
time to get understood how TCL communicates with C++ class.
 Just as the same as what I said before, there is a way to get a mobile
node’s position. The TCL script codes are shown as bellow:
set node(1) [$ns node] 
     $ node(1) set X_ 15.0 
     $ node(1)set Y_ 15.0 
     $ node(1)set Z_ 0.0 
 ... 
for {set i 0} {$i < $val(nn)} {incr i} {
   $ns initial_node_pos $node($i) 60
}
….
     the script ‘set x_pos [$node(1) set X_]’ could be used to get the x
value of the mobile node at the time 0.0. 
So, I am wondering may I write a proc used to record this x value every 0.5
second. The tcl codes are:
proc record {} {
  global filepr d pt l lambda gt gr pi node(1) #here I just want to record
node 1
   set ns [Simulator instance] 
   set time 0.5;# record 0.5 second
   set pr 0.0
   set m [expr (1 /(4 * $pi * $d))]
   set pr [expr ($pt * $gr * $gt * $m * $m / 1)]
   set d [expr ($d+10)]
  # set xp [$n1 set X_]
   set now [$ns now]
   set node_x [$node(1) set X_]
   set node_y [$node(1) set Y_]
   puts $filepr "$now\t$pr\t$node_x\t$node_y"
   $ns at [expr $now + $time] "record"
}
$ns at 1.0 "record"

But when I run this script, there is an error” node(1), no such variable”.
Today I happen to find the solution about this problem in the internet:
Change ‘global node(1)’ to ‘global node’. Pay attention that node($i) is an
array[I still havn't found the reason yet]. And this function record will
help me to finish the job[record  a mobile node’s position (x,y) every 0.5
second]

And, I think I will think over your idea when i get enough knowledge about
NS.
Thanks very much again.
Best wishes.:jumping:
Liceven


Jalaluddin Qureshi wrote:
> 
> 
> 
> 
> Dear Liceven,
> 
> While I cant give you step-by-step instruction on how to solve your
> problem. But here is the idea. If you were to go to
> ns-allinone2.xx/ns2.xx/mobile/antenna.cc file you will see the function:
> 
> Antenna::Antenna()
> {
>   X_ = 0; Y_= 0; Z_= 0;
>   bind("X_", &X_);
>   bind("Y_", &Y_);
>   bind("Z_", &Z_);
> }
> 
> Basically this constructors binds the X_ variable in the TCL file with the
> X_ in the C++ file. If you were to add say:
> 
> cout << "X position" << X_ << endl;
> cout << "Y position" << Y_ << endl;
> cout << "Z position" << Z_ << endl;
> 
> after   bind("Z_", &Z_); but before }. And then run the "make clean" and
> "make" command at the Linux command terminal in the
> ns-allinone2.xx/ns2.xx/ prompt area. Once thats done, if you were to run
> your .tcl file, you will see an output, which specifies the position of
> your node in X, Y, Z coordinate.
> 
> The glitch with this approach is that it shows you the coordinates for
> time 0.0, mean just at the start of the simulation.
> 
> For your problem, YOU need to find the .cc file which is responsible for
> changing the X, Y, Z coordinates. Once you locate that .cc file, then
> locate the function which is changing the value of X, Y, Z, and then you
> can add the above cout lines at the end of that function.
> 
> This way, when you run the simulation, you will get live time output of
> the X, Y, Z coordinates. If you know C++ half-decent, then I think it will
> not take you more than 2-5 hours to locate the function and find the
> solution of your problem.
> 
> PLEASE ONCE YOU SOLVE YOUR PROBLEM, DO SHARE YOUR SOLUTION WITH OTHERS ON
> THE NS MAILING LIST.
> 
> Kind Regards
> Jalaluddin Qureshi
> 
> Research Student @ CeMNet, SCE
> Nanayang Technological University
> N4-B2c-06, Nanyang Avenue
> Singapore 639798
> http://www.cemnet.ntu.edu.sg
> 
> --Forwarded Message Attachment--
> From: [EMAIL PROTECTED]
> To: ns-users@ISI.EDU
> Date: Wed, 23 Jul 2008 00:00:36 -0700
> Subject: [ns] How to get a mobile node's current position
> 
> 
> Hello,everyone:
>       I want to simulate a wireless scenario with two access points and a
> mobile node. This mobile node moves randomly, the question is how to
> calculate it's position like(x=?,y=?,z=0) at any given time. It could be
> better if you could give me an example. Of course, any suggestion is
> welcome.
>      Regards.
>      Liceven
> --
> View this message in context:
> http://www.nabble.com/How-to-get-a-mobile-node%27s-current-position-tp18604950p18604950.html
> Sent from the ns-users mailing list archive at Nabble.com.
> 
> 
> 
> _________________________________________________________________
> Check out Barclays Premier League exclusive video clips here!
> http://fc.sg.msn.com/index.aspx
> 
> 
> 

-- 
View this message in context: 
http://www.nabble.com/How-to-get-a-mobile-node%27s-current-position-tp18604950p18645996.html
Sent from the ns-users mailing list archive at Nabble.com.


Reply via email to