【问题标题】:buffer value is not getting printed缓冲区值未打印
【发布时间】:2014-11-26 09:03:20
【问题描述】:

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

我的 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 的值正确到达那里。

请帮帮我。

【问题讨论】:

  • 你到底想在这里运行什么? xCommand Experimental Conference ParticipantList Search CallId: $x 中的任何内容都应该组合成一个词吗?

标签: tcl cisco


【解决方案1】:

如果 puts 语句根本没有运行,则条件不会评估为真。在这种情况下,执行“[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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多