通信人家园

标题: 那位大哥帮忙详细解释一下下面的TCL脚本  [查看完整版帖子] [打印本页]

时间:  2010-4-26 16:41
作者: youngjump     标题: 那位大哥帮忙详细解释一下下面的TCL脚本

console show
proc receiver {switch cmd CmdOutPutEnd WaitTime} {

global RecvBuf savefile debugprintcom debugcheckV

#empty the recv buffer

set RecvBuf ""

puts -nonewline $switch $cmd\r


#set begin time

set TimeStart [ clock seconds ]

set TimeOut 0


set RecvBufList ""

set ch ""



#wait for 100 mili seconds

after 100

while { 1 } {

set TimeEnd [ clock seconds ]

set TimeSpend [ expr $TimeEnd - $TimeStart ]


#Time out

if { $TimeSpend > $WaitTime } \

{

set TimeOut 1

if {$debugprintcom} {

puts $RecvBuf


}

if {$debugcheckV} {


if {[ regexp
"Unknown command" $RecvBuf
] > 0} {

puts "discover Unknown command"

}


}

break

}


#get all output from the active switch


set TempStr [ read $switch ]

set RecvBufList [ concat $RecvBufList [ split $TempStr {} ] ]


if { [string length $TempStr] > 0 } {

foreach ch [ split
$TempStr {}] {

#append out put chars to ComPort Recv Buffer

switch -regexp -- $ch {

\x07
{ #ignore }

\x08
{ #ignore }

\x0A
{ #ignore }

\x0D
{ append RecvBuf "\n" }

\0x1a
{ #ignore }

default { append RecvBuf $ch }

}

}

}


#find the end output info string for the command

if { [ regexp
$CmdOutPutEnd $RecvBuf
] > 0 }
\

{

if {$debugprintcom} {

puts $RecvBuf

}

if {$debugcheckV} {



if {[ regexp
"Unknown command" $RecvBuf
] > 0} {

puts "discover Unknown command"

}

}

break

}



#The last line is ---More---



if { [ regexp
"More--" $RecvBuf
] > 0 }
\

{

#write " " to com port

set RecvBufList [split $RecvBuf "\n"]

set RecvBuf ""

foreach ch $RecvBufList {

if { $ch != " --More-- " } {

append RecvBuf $ch

append RecvBuf "\n"

}

}





通信人家园 (https://www.txrjy.com/) Powered by C114