我已经工作了几个星期来为dsrc运行这个tcl脚本(不是我写的),但我从未成功过。拜托,我需要你的帮助。错误是:
invalid command name "10"
while executing
"$val(payload)"
invoked from within
"set payload [$val(payload)]"
(file "singleBroadcast.tcl" line 7)
所以为了不让thgs变得非常复杂,我将在这里解析一部分代码,我认为这是一个错误:
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,所以要运行它,我必须键入即:ns test.tcl 10 12 4 10 2
问题在于comRange。
凌晨1点我以正确的方式思考,运行它是否正确?
你可以帮我纠正一下吗?非常感谢你 你的帮助非常感谢
答案 0 :(得分:0)
不确定为什么你的错误看起来像这样,但第14行有一个错误。你需要改变:
set yi2 [expr $yi*[$val(comRange)]]
类似于:
set yi2 [expr { $yi*$val(comRange) }]
除非$val(comRange)
应该是argv中提供的有效Tcl命令。