通信人家园

 找回密码
 注册

只需一步,快速开始

短信验证,便捷登录

搜索

军衔等级:

  新兵

注册:2009-8-29
跳转到指定楼层
1#
发表于 2010-4-26 16:41:19 |只看该作者 |倒序浏览
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"

}

}

举报本楼

您需要登录后才可以回帖 登录 | 注册 |

版规|手机版|C114 ( 沪ICP备12002291号-1 )|联系我们 |网站地图  

GMT+8, 2025-7-16 21:26 , Processed in 0.255656 second(s), 17 queries , Gzip On.

Copyright © 1999-2025 C114 All Rights Reserved

Discuz Licensed

回顶部