1.10:time & unset
1.
得到代码执行的时间
格式:time script?count?
功能:返回执行script
脚本count次的花费时间,注意是消耗时间,并不是cpu时间,这里cpu时间指的是在cpu上花费的时间片累加,而消耗时间是指等待程序执行完花费时间,通常cpu时间更短。
2.
从解释器的名称空间删除一个变量
格式:unset variableName1? varialeName2 ?......?
功能:从解释器的名称空间删除变量。如果变量名是个数组名,则整个数组被删掉,如果是数组中的某个项,则只删除那个项。如果删除的变量不存在,提示错误。
3.判断一个变量是否存在 existence variableName
例子:040_time.tcl
;#两个过程使用time测算运行时间和描述循环的优化,结论是列表比数组对某项的引用速度慢,还有就是列表和数组在tcl中都非常的大
proc timetst1 {lst} {
set x [lsearch $lst "20000"]
return $x
}
proc timetst2 {array} {
upvar $array a
return $a(20000);
}
;#做个大数组和大列表
for {set i 0} {$i < 20001} {incr i} {
set array($i) $i
lappend list $i
}
;#观察数组和列表的时间花费
puts "Time for list search: [ time {timetst1 $list} 10]"
puts "Time for array index: [ time {timetst2 array} 10]"
;#这个过程测试参数是否存在
proc existence {variable} {
upvar $variable testVar;
if {[info exists testVar]} {
puts "$variable Exists"
} else {
puts "$variable Does Not Exist"
}
}
set x 1
set y 2
for {set i 0} {$i < 5} {incr i} {
set a($i) $i;
}
puts "\ntesting unsetting a simple variable"
;# Confirm that x exists.
existence x
;# Unset x
puts "x has been unset"
unset x
;# Confirm that x no longer exists.
existence x
;# Do the same for a(0);
puts "\ntesting unsetting a member of an array"
existence a(0);
puts "a0 has been unset"
unset a(0);
existence a(0);
puts "\ntesting unsetting several members of an array, with an error"
existence a(3);
existence a(4);
catch {unset a(3) a(0) a(4)} ;#因为a(0)已经被删除,会引起错误
puts "\nAfter attempting to delete a(3), a(0) and a(4)"
existence a(3) ;# a(3)已经被删除,所以不存在
existence a(4) ;# a(4)由于删除a(0)时出错,所以并没有被删除,需要注意
puts "\ntesting unsetting an array"
existence a;
puts "a has been unset"
unset a ;#删除整个数组
existence a;
1.11:socket & fileevent & vwait
1.socket服务端开启
格式:socket –server command ?options? port
-server :表明开启的服务器端
port:端口
command:当有客户端来连接的时候,执行这个过程,这个过程有三个参数
channel:给新客户端的通道
address:提供给客户端连接的ip地址
port:端口
2.客户端连接服务器端
格式:socket ?options? host port
host port :客户端连接的服务器ip和端口
3.fileevent定义了一个句柄,满足条件时执行
格式:fileevent channelId readable? script?
fileevent channelId writeable? script?
readable:当通道channelId有数据准备好被读了,执行脚本script
writeable:当通道channelId有数据准备好接收数据了,执行脚本script
4.vwait命令使执行暂停,知道varName被赋值,即便赋值前后相同
格式:vwait varName
例子:041_socket.tcl
;#当有客户端连接上来的时候执行serverOpen
proc serverOpen {channel addr port} {
global connected
set connected 1
fileevent $channel readable "readLine $channel" ;#当通道可读的时候,执行readLine,所以这个readLine实际上是只有服务器端在使用
puts "OPENED"
}
proc readLine {channel} {
global didRead
if {[gets $channel line]<0} { ;#这是针对客户端通道关闭时,通道可读readLine被调用
fileevent $channel readable {} ;#通道即便可读也不执行任何命令
after idle "puts ok;close $channel;set out 1" ;#空闲回调,下一次进入事物循环时关闭通道
} else {
puts "READ LINE: $line"
puts $channel "This is a return"
flush $channel;
set didRead 1
}
}
set connected 0;
set didRead 0
# catch {socket -server serverOpen 33000} server
set server [socket -server serverOpen 33000] ;#这里只是注册了过程serverOpen,并没有调用
after 100 update ;#这个命令每100ms进入事件循环直到处理了所有的等待事件(包括空闲回调)
set sock [socket -async 127.0.0.1 33000] ;#在客户端连接的时候,才执行serverOpen; async是异步连接
puts "connected: $connected" ;#返回零
vwait connected ;#等待变量被赋值,即便新值和旧值相等
puts "connected: $connected" ;#返回一
puts $sock "A Test Line"
flush $sock ;#将值写入通道,于是可读了,readLine执行
puts "didRead : $didRead" ;#返回零
vwait didRead
puts "didRead : $didRead" ;#返回一
set len [gets $sock line]
puts "Return line: $len -- $line"
catch {close $sock} ;#关闭客户端通道的时候,会造成通道可读,执行readLine
vwait out
close $server
1.格式:clock seconds
功能:返回从计算机纪元开始的秒数,不同操作系统开始时间可能不同,所以这个值通常用来作为命令clock format的输入
2.格式:clock format clockValue ?-gmt boolean ? –format string?
clockValue:clock clicks
返回
-gmt:设置为1或者true,则设置为格林威治时间,否则为当地时间
-format:将格式转化为可读字符串
序号
|
格式
|
描述
|
1
|
%a
|
缩写星期名称,例如:Mon,Tue等
|
2
|
%A
|
写全星期名称,例如:Monday, Tuesday等
|
3
|
%b
|
缩写月名称,例如:Jan, Feb
等
|
4
|
%B
|
写全月名称,例如:January, February
等
|
5
|
%d
|
月的第几日
|
6
|
%j
|
儒略日
|
7
|
%m
|
月数(01-12)
|
8
|
%y
|
世纪年
|
9
|
%Y
|
四位年
|
10
|
%H
|
小时(00-23)
|
11
|
%I
|
小时(00-12)
|
12
|
%M
|
分钟(00-59)
|
13
|
%S
|
秒(00-59)
|
14
|
%p
|
PM或AM
|
15
|
%D
|
日期格式:%m/%d/%y
|
16
|
%r
|
时间格式:%I:%M:%s %p
|
17
|
%R
|
时间格式:%I:%M
|
18
|
%T
|
时间格式:%I:%M:%S
|
19
|
%Z
|
时区名称
|
3.功能:将可读的时间串转换成机器时钟,和clock seconds返回的一样
格式:clock scan dateString
dateString格式可以为:
time : =hh:mm:ss ?meridian ?zone?
=hhmm ?meridian?zone?
meridian:AM或PM
hh:如果没有特别说明,hh指的24小时制
zone:为三个字母描述的时区,如EST,PDT等
date :=mm/dd/yy
=mm/dd
=monthname dd,yy
=monthname dd
=dd monthname yy
=dd monthname
=day, dd monthname yy
分享到:
相关推荐
该文件是关于TCL脚本语言详细教程,非常适合新手入门。
TCL+TCL脚本语言编程+TCL语言教程TCL+TCL脚本语言编程+TCL语言教程TCL+TCL脚本语言编程+TCL语言教程
tcl脚本语言的教程
系统学习TCL脚本入门教程 系统学习TCL脚本入门教程 系统学习TCL脚本入门教程 系统学习TCL脚本入门教程 系统学习TCL脚本入门教程
很给力的脚本语言教程对我们学习自动编程后处理有很大的作用
最好的Tcl中文教程,Tcl语言是目前测试仪表领域中最常用的脚本语言,其中文资料较少,此书是目前为止我看到的最好的Tcl中文教程,看完此书,可以轻松掌握Tcl语言的常见使用,值得下载。
TCL_教程 学习tcl脚本语言的首选
介绍TCL测试脚本语言的语法,变量,表达式,命令,字符串操作,控制流,文件访问,错误和异常等。
系统学习TCL脚本入门教程。tcl脚本语言,可以支持多种数据库的sql,使用标准sql语法
C:\Users\somebody\Desktop\tcl.pdf
推荐,TCL教程(中文)。里面包含了TCL语法,置换(substitution)、变量、表达式、List、控制流、过程(procedure)、字符串操作、文件访问、错误和异常、深入TCL大专题,还有很多细分的专题,推荐使用。
Tcl语言全攻略,TCL脚本语言,很不错哦,在华为实习时用的就是这个
Tcl(Tool Command Language)是一种很通用的脚本语言,它几乎在所有的平台上都可以解释运行,而且VIVADO也提供了TCL命令行。最近发现TCL脚本貌似比GUI下操作VIVADO效率高一些,方便一些。 应用程序(如VIVADO)...
Tcl 全称是Tool command Language。它是一个基于字符串的命令语言,基础结构和...Tcl语言是一个解释性语言,所谓解释性是指不象其他高级语言需要通过编译和联结,它象其他shell语言一样,直接对每条语句顺次解释执行。
此培训介绍行业标准的Tcl脚本语言。Quartus®II软件支持使用Tcl自定义功能或自动执行任务。此培训涵盖语法和基本数据类型,如字符串,列表和数组。 培训目标:经过培训后你将能: ›描述Tcl语法的基本规则 ›列出...
自动化脚本语言tcl,基本教程,里面内容详细,适合基础学习
实用的Tcl脚本教程,帮助那些想自己写脚本的人~
该教程全面的介绍了强大的脚本语言Tcl的语法和本质,并且涵盖了面向对象的内容,是一本详细的Tcl教程,也是一本详细的技术手册。
tcl/tk是一种易学易用的脚本语言,在ansys,hypermesh大型CAE仿真软件得到应用,是二次开发必修的语言。