-1

dsrc 用にこの tcl スクリプト (私が作成したものではありません) を実行するために何週間も取り組んできましたが、成功しませんでした。あなたの助けが必要です。エラーは次のとおりです。

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

したがって、問題を非常に複雑にしないために、ここでコードの一部を解析しますが、これは間違いだと思います。

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 つの引数があると思います。実行するには、次のように入力する必要があります: 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 に答える