-1

我已经工作了几个星期来为 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 个参数,所以要运行它,我必须输入 ie:ns test.tcl 10 12 4 10 2

问题出在comRange中。

1-我是否以正确的方式思考,我如何运行它是否正确?

2-你能帮我改正吗?

非常感谢您的帮助非常感谢

4

1 回答 1

0

不知道为什么您的错误看起来像这样,但第 14 行有一个错误。您需要更改:

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

类似于:

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

除非$val(comRange)应该是 argv 中提供的有效 Tcl 命令。

于 2013-06-11T16:01:10.020 回答