2013-06-11 1 views
-1

J'ai travaillé pendant des semaines pour exécuter ce script tcl (PAS écrit par moi) pour dsrc mais je n'ai jamais réussi. S'il te plaît, j'ai besoin de ton aide. l'erreur est:dsrc vanet ns2 tcl scipt ne fonctionne pas

invalid command name "10" 
    while executing 
"$val(payload)" 
    invoked from within 
"set payload [$val(payload)]" 
    (file "singleBroadcast.tcl" line 7) 

donc pour ne pas faire les thgs très compliqué, je vais analyser ici une partie du code que je pense qu'il ya erreur de sa:

set val(modIndex) [lindex $argv 0] 
set val(ncars) [lindex $argv 1] 
set val(payload) [lindex $argv 2] 
set val(comRange) [lindex $argv 3] ;#"intended" Communication Range 
set val(vseed)  [lindex $argv 4] 

set payload $val(payload) 
set modulationIndex $val(modIndex) 

#Calculate the needed Transmission power corresponding to the intended Communication  Range 
set lambda  [expr 3e+8/5.9e+9] ;# lambda = c/f 
set pi    3.1415926535897931 
set yi   [expr $pi*4] 
set yi2   [expr $yi*[$val(comRange)]] 
set M   [expr $lambda/$yi2]; 
set Pr2Pt  [expr [expr 5.118 * 5.118 * $M * $M ]/1]; 
set Pt   [expr 3.162e-12/$Pr2Pt] 
set PtmW  [expr $Pt * 1000] 
puts "mod Index is $val(modIndex)" 

s'il vous plaît me corriger, je pense qu'il ya 5 args, donc pour l'exécuter, je dois taper ie: ns test.tcl 10 12 4 10 2

le problème est dans la comRange.

1- Est-ce que je pense de la bonne façon, est-ce correct de savoir comment je l'utilise?

2- pouvez-vous m'aider à le corriger?

Merci beaucoup votre aide est reconnaissant de bien vouloir

+0

Votre erreur ne semble pas correspondre à l'extrait. Si vous invoquez le script avec les arguments '10 12 4 10 2' votre' set payload $ val (payload) 'devrait fonctionner correctement mais' set yi2 [expr $ yi * [$ val (comRange)]] 'échouera. Ce n'est pas ce que l'erreur dit. Pourriez-vous confirmer cela? – pn8830

Répondre

0

Je ne sais pas pourquoi votre erreur ressemble à cela, mais il y a une erreur sur la ligne 14. Vous devez changer:

set yi2 [expr $yi*[$val(comRange)]] 

à quelque chose comme:

set yi2 [expr { $yi*$val(comRange) }] 

à moins $val(comRange) est censé être une commande Tcl valide fournie dans argv.

+0

Merci :) cela a fonctionné :) – user2475065

Questions connexes