我曾經學習如何設置UG的后處理器,進入后處理構造器后,原來進行設置時,要用到tcl語言,自己不會但通過搜索網上的教程和程序,也能基本滿足使用要求,但總是心里沒底的感覺。
+ b, q$ |9 x/ a2 G原來這個tcl語言是可以學習的,有空下載點資料來學習一下。: x/ ]8 d% j( o* |) [
資料:0 c) {9 l; _, [/ b5 M% _
TCL語言 Tcl (最早稱為“工具命令語言”"Tool Command Language", 但是目前已經不是這個含義,不過我們仍然稱呼它為TCL)是一種 腳本語言。 由John Ousterhout創建。 TCL很好學,功能很強大。TCL經常被用于 快速原型開發,腳本編程, GUI和測試等方面。 Tcl (最早稱為“工具命令語言”"Tool Command Language", 但是目前已經不是這個含義,不過我們仍然稱呼它為TCL)是一種 腳本語言。 由John Ousterhout創建。 TCL很好學,功能很強大。TCL經常被用于 快速原型開發,腳本編程, GUI和測試等方面。TCL念作“踢叩” "tickle". Tcl的特性包括: * 任何東西都是一條命令,包括語法結構(for, if等)。 * 任何事物都可以重新定義和重載。 * 所有的數據類型都可以看作字符串。 * 語法規則相當簡單 * 提供事件驅動給Socket和文件。基于時間或者用戶定義的事件也可以。 * 動態的域定義。 * 很容易用C, C++,或者Java擴展。 * 解釋語言,代碼能夠動態的改變。 * 完全的Unicode支持。 * 平臺無關。Win32, UNIX, Mac 上都可以跑。 * 和Windows的GUI緊密集成。 Tk * 代碼緊湊,易于維護。 TCL本身不提供面向對象的支持。但是語言本身很容易擴展到支持面向對象。許多C語言擴展都提供面向對象能力,包括XOTcl, Incr Tcl 等。另外SNIT擴展本身就是用TCL寫的。 使用最廣泛的TCL擴展是TK。 TK提供了各種OS平臺下的圖形用戶界面GUI。連強大的Python語言都不單獨提供自己的GUI,而是提供接口適配到TK上。另一個流行的擴展包是Expect. Expect提供了通過終端自動執行命令的能力,例如(passwd, ftp, telnet等命令驅動的外殼). 具體例子 下面是TCL程序的例子: #!/bin/sh # next line restarts using tclsh in path \
8 ?- p: H' l6 {& v2 n exec tclsh ${1+"$@"} # echo server that can handle multiple # simultaneous connections.
4 ^. R3 g3 }. ]# c. c! x proc newConnection { sock addr port } { # client connections will be handled in # line-buffered, non-blocking mode ' ?; b7 g4 n" E$ S; ^1 O$ O' B$ w, y
fconfigure $sock -blocking no -buffering line # call handleData when socket is readable 9 }* K# b/ u' _3 N3 v9 J
fileevent $sock readable [ list handleData $sock ] } ) G) V8 G' }! I2 W& | Q
proc handleData {
7 g3 G/ C- B# t. z" Q% Q* V8 `+ j puts $sock [ gets $sock ] if { [ eof $sock ] } { close $sock } }
# b. B4 p9 e6 v: Y. |% l0 u; v # handle all connections to port given # as argument when server was invoked # by calling newConnection
0 n" c& ]* H. `: yset port [ lindex $argv 0 ]
; a' n7 ~% s2 G/ \" Q- h socket -server newConnection $port # enter the event loop by waiting
) e% K9 x# W4 Y # on a dummy variable that is otherwise # unused. 8 Y$ F; e* U @ p2 B! O
vwait forever . Q$ D% j; S& x( h2 D* L
另外一個TK的例子 (來自 A simple A/D clock) 它使用了定時器時間,3行就顯示了一個時鐘。 3 N% b0 S' t% v1 M/ f2 n. m! \
proc every {ms body} {eval $body; after $ms [info level 0]} pack [label .clock -textvar time]
5 P# [$ g8 D4 [, K4 o- w/ [- V2 C every 1000 {set ::time [clock format [clock sec] ' T5 x& P8 |+ L% R& }
-format %H:%M:%S]} # RS
! J& x+ V* c# ^# ^/ _- R, A 解釋:第一行定義了過程every, 每隔ms毫秒,就重新執行body代碼。第二行創建了標簽起內容由time變量決定。第3行中設置定時器,time變量從當前時間中每秒更新一次。
8 j/ i4 M- E( |0 x8 c
( W8 }# T# x3 r" S
% o% S( L, Y6 [' r+ u
! s9 ^! R! X% k- `. b- i |