2014-11-26 2 views
1

세 전화 사이에서 회의를 수행하기위한 코드를 작성했습니다. 이제 회의의 모든 전화 목록을 표시하는 메소드 이름 인 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" 
} 

같은 마지막 한 Statment 위 한 다른 명령을 실행하려고 같은 방법으로

입니다 하지만 CLI에서 그것을하려고 할 때 올바른 출력을 제공하고 동작은 올바른 것입니다.

값이 X에 올바르게 도달하고 있습니다.

나를 도와주세요.

+0

? 'xCommand Experimental Conference ParticipantList Search CallId : $ x'를 단어로 그룹화해야합니까? –

답변

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 
정확히 여기에 실행하려고 무엇
관련 문제