Tcl 无效的命令名";“试剂/浸出剂”;
我尝试为LEACH协议实现一个简单的场景,但出现以下错误:Tcl 无效的命令名";“试剂/浸出剂”;,tcl,ns2,Tcl,Ns2,我尝试为LEACH协议实现一个简单的场景,但出现以下错误: Creating Sensors ... invalid command name "Agent/LeachAgent" while executing "Agent/LeachAgent create _o2340 " invoked from within "catch "$className create $o $args" msg" invoked fr
Creating Sensors ...
invalid command name "Agent/LeachAgent"
while executing
"Agent/LeachAgent create _o2340 "
invoked from within
"catch "$className create $o $args" msg"
invoked from within
"if [catch "$className create $o $args" msg] {
if [string match "__FAILED_SHADOW_OBJECT_" $msg] {
delete $o
return ""
}
global errorInfo
error "class $..."
(procedure "new" line 3)
invoked from within
"new Agent/LeachAgent"
("for" body line 3)
invoked from within
"for {set i 1} {$i <= $val(nsn)} {incr i} {
set agent($i) [new Agent/LeachAgent]
$ns attach-agent $node_($i) $agent($i)
$agent($i) set packetSize_..."
(file "newleach3.tcl" line 187)
正在创建传感器。。。
无效的命令名“Agent/LeachAgent”
执行时
“代理/沥滤剂创建\u o2340”
从内部调用
捕获“$className创建$o$args”消息
从内部调用
“if[catch”$className create$o$args”msg]{
如果[string match”\uuuu失败\u SHADOW\u OBJECT\uuuu“$msg]{
删除$o
返回“”
}
全局错误信息
错误“类$…”
(程序“新建”第3行)
从内部调用
“新试剂/浸出剂”
(“适用于”车身第3行)
从内部调用
“对于{set i 1}{$i更改脚本以使用Agent/RCAgent/LeachAgent
作为类名:
set agent($i) [new Agent/RCAgent/LeachAgent]
据我所见,在ns-allinone-2.35
中没有Agent/LeachAgent
,我没有成功地在我的场景中编写正确的附加Leach协议的代码,但我发现mannasim有一个mannasim脚本生成器(MSG)。它是TCL
模拟脚本轻松创建的前端。该类是如何创建的?@glenn jackman,我不明白你的意思。new
和create
提示OTcl类将被实例化。命令名Agent/LeachAgent
也是类名。因此,glenn的想法是正确的ion.结果是,Agent/LeachAgent
不存在。请看我的答案。是的,你是对的。LEACH协议不受ns-allinone-2.35支持,但我添加了它,我的方案工作正常。我最近遇到了这个错误。我测试了你的解决方案,但它不起作用。好吧,除非你披露你是如何将LEACH贡献给ns的,否则没有人能够为了帮助您。最好的猜测是,用interp
注册TclClass
在某种程度上被破坏了。为什么不使用已经修补过的ns 2.35,包括LEACH,例如:?MIT LEACH没有类似LeachAgent
(或类似)的定义……Mannasim使用set代理[新代理/RCAgent/LeachAgent]
。我指的是Mannasim,是的。