2013-06-11 2 views
-1

dsrc에 대해이 tcl 스크립트 (저에게 쓴 것이 아니라)를 실행하는 데 수 주일 동안 노력했지만 성공하지 못했습니다. 제발 내가 도움이 필요해. 오류는 다음과 같습니다dsrc vanet ns2 tcl scipt 작동하지 않습니다.

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

때문에 매우 복잡 thgs을하지 않기 위해, 나는 여기에 내가 거기 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)" 

이 날 수정하시기 바랍니다 내가 거기에 5 개의 args가 있다고 생각하면 실행해야합니다. ie : ns test.tcl 10 12 4 10 2

문제는 comRange에 있습니다.

1- 올바른 방법으로 생각하고 있습니다. 올바른 방법은 무엇입니까?

2 나는 그것을 바로 잡을 수 있습니까?

이 감사합니다 너무 많은 당신의 도움이 많은 감사입니다 그것을

+0

오류가 스 니펫과 일치하지 않는 것 같습니다. '10 12 4 10 2' 인자로 스크립트를 호출한다면'set payload $ val (payload)'는 잘 동작하지만'set yi2 [expr $ yi * [$ val (comRange)]]'는 실패 할 것입니다. 그것은 오류가 말하는 것이 아닙니다. 그걸 확인해 줄 수 있니? – pn8830

답변

0

확실하지 귀하의 오류는 다음과 같습니다하지만 당신은 변경할 필요가 라인 (14)의 실수가 이유 : 뭔가

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

은 같은 : $val(comRange)하지 않는 한

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

는 argv를 제공 유효한 Tcl의 명령이 있어야한다.

+0

감사합니다 :) 그것은 작동했습니다 :) – user2475065