缓冲区值未打印

时间:2014-11-26 09:03:20

标签: tcl cisco

我已经编写了一个用于在三部电话之间进行会议的代码,现在我正在尝试调用一个方法名称confList,它将显示会议中所有电话的列表,但缓冲区值应该是最后一个的输出命令即将到来,它没有被执行。

我的confList方法是

if {[execCmd -cmd "xCommand Experimental Conference ParticipantList Search CallId: $x" -expectingValue OK -waitTime 15 -buffersize 10000]} {
  OutputInfo error 1 1 0 "[subst $_procInfo] Error in finding the conference Participant List ."

puts "Now my updated budffer is <<<<<< $buffer >>>>>>>>>"
}

以同样的方式,当我试图在最后一个法规上方执行另一个命令时 像这样

if {[execCmd -cmd "xstatus call status" -expectingValue OK -waitTime 5]} {
puts "the Buffer value after executing the command is something like this>>>>>>>>>>>>>>>>>>$buffer<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<\n"
}

然后它给出了预期的行为,但是当我尝试从CLI执行它时,它给出正确的输出并且行为是正确的。

X正确到达。

请帮帮我。

1 个答案:

答案 0 :(得分:0)

如果puts语句根本不运行,则条件不会评估为true。在这种情况下,请执行“[exec Cmd ...”以查看返回的内容。如果puts运行且缓冲区字符串为空,那么您可能正在运行异步命令,并且需要弄清楚如何在完成后运行回调过程,或者定期检查缓冲区响应的循环。

以下是如何检查异步proc的示例。

#!/usr/bin/tclsh

set buffer ""
set count 0

proc async_call {} {
        global buffer
        set buffer "Hello World"
}

proc buffer_check {} {
        global buffer
        global count

        # keep count of buffer checks
        puts [incr count]

        if {$buffer == ""} {
                # buffer is empty.
                # try again in 1 second.
                after 1000 buffer_check
                return
        }

        puts $buffer

        # exit program
        exit
}

# run async_call after 3 seconds
after 3000 async_call

# run the buffer_check
after 1000 buffer_check

# keep program running
vwait forever

输出:

./test.tcl
1
2
3
Hello World