日本福利一区_最近中文高清在线观看_免费黄色电影在线观看_亚洲天堂成人在线 - 91人人

用戶中心
· 企業(yè)空間 首頁 | 資訊 | 技術(shù) | 產(chǎn)品 | 企業(yè) | 直播 | 專題 | 智能制造 | 論壇| 在線研討會(huì)
天津昆侖縱橫自動(dòng)化技術(shù)有限公司
企業(yè)空間 > 資料下載 > 正文
  • 上傳時(shí)間:2009/1/22 9:39:39
  • 下載次數(shù):2733
  • 授權(quán)方式: 由提供單位免費(fèi)提供,本站注冊用戶才可以下載此文件。注冊  登錄
  • 詳細(xì)介紹:
    基于HMIBuilder 的TCL 腳本學(xué)習(xí)
    北京縱橫科技
    2008年
    Dlh
    在線瀏覽:http://www.hmibuilder.com/bbs/Topic.asp?id=26&BoardID=2&TB=1
    引言:
    HMIBuilder 內(nèi)嵌TK/Tcl83標(biāo)準(zhǔn)庫,尤其是HMIBuilder 通用版全面支持TCL 語言,下面是我們在
    HMIBuilder 基礎(chǔ)上的各種應(yīng)用測試,希望對大家有所幫助。
    注意:對已HMIBuilder 嵌入版,由于平臺兼容性問題,有些Tcl 命令沒有移植,比如文件操作!下面腳
    本都在通用版中測試通過。
    正文
    ?? Tcl腳本串口操作測試
    (HMIBuilder 通用版支持,嵌入版目前不支持!)
    #配置串口
    #-------------------------------------------------------------------------------#
    proc ComSetup {ComPort ComRate} {
    set iChannel [open $ComPort w+]
    set rate $ComRate
    fconfigure $iChannel -mode $ComRate,n,8,1
    fconfigure $iChannel -blocking 0
    fconfigure $iChannel -buffering none
    fileevent $iChannel readable ""
    return $iChannel
    }
    #-------------------------------------------------------------------------------#
    # 讀取數(shù)據(jù)
    #-------------------------------------------------------------------------------#
    proc GetData {iChannel} {
    global output
    update
    after 2000
    set cap [read -nonewline $iChannel]
    return "$cap"
    }
    #-------------------------------------------------------------------------------#
    # 發(fā)送數(shù)據(jù)
    #-------------------------------------------------------------------------------#
    proc SendCmd {channel command} {
    global output debug
    set letter_delay 10
    set commandlen [string length $command]
    for {set i 0} {$i < $commandlen} {incr i} {
    set letter [string index $command $i]
    after $letter_delay
    puts -nonewline $channel $letter
    #if {$debug(dutConfig) == 1} {puts -nonewline $output "$letter"}
    }
    after $letter_delay
    puts -nonewline $channel "\n"
    #if {$debug(dutConfig) == 1} {puts $output ""}
    after 500
    flush $channel
    }
    #-------------------------------------------------------------------------------#
    # 測試代碼
    #-------------------------------------------------------------------------------#
    set com "com6" ;
    set channelRate 9600;
    #close $channelId
    set channelId [ComSetup $com $channelRate]
    set buffer "test by dlh"
    SendCmd $channelId $buffer;
    sleep 50000
    set data [GetData $channelId]
    messagebox "Get" $data
    ?? 進(jìn)制的轉(zhuǎn)換
    #d 十進(jìn)制o 八進(jìn)制x 十六進(jìn)制X 十六進(jìn)制大寫
    set age 10
    set msg [format "%X" $age];
    set msg [format "%x" $age];
    set msg [format "%o" $age];
    set msg [format "%d" $age];
    #10進(jìn)制數(shù)轉(zhuǎn)換為2進(jìn)制16位顯示
    proc dec2bin {dec change} {
    set bin ""
    set a 1
    while {$a>0} {
    set a [expr $dec/$change]
    set b [expr $dec%$change]
    set dec $a
    set bin $b$bin
    }
    set len [string length $bin]
    #如果8位顯示,請修改16為8
    if {$len < 16 } {
    #如果8位顯示,請修改16為8
    for {set i 0} {$i<[expr 16-$len]} {incr i} {
    set bin 0$bin
    }
    }
    return $bin
    }
    set sss [ dec2bin 16 2]
    set_edit_text "ObjID" $sss
    Learning,sporting and fighting!
    ?? Tcl數(shù)組
    理解Tcl 數(shù)組的捷徑是,將它們視作與Perl 散列相同的東西。Tcl 數(shù)組不是用數(shù)字建立下標(biāo)的線性數(shù)據(jù)
    結(jié)構(gòu),除非選擇對數(shù)據(jù)強(qiáng)加那種解釋。盡管帶空格的字符串需要用引號括起或需要一個(gè)變量引用,但下標(biāo)
    (或鍵)可以是任何字符串。
    正如一般的變量一樣,使用set 命令初始化數(shù)組,如左邊所示。圓括號內(nèi)是給出的下標(biāo)部分。請注意,圓
    括號不象花括號或雙引號那樣提供分組。一旦初始化為數(shù)組,就不能將變量作為單一變量來訪問。如左邊
    列表底部所示,數(shù)組元素也可以是列表。
    set i 1
    set j 10
    set array($i,$j) 3.14159
    incr j
    set array($i,$j) 2.71828
    ?? switch結(jié)構(gòu)測試
    set x c # 請改變x 的內(nèi)容, 通過Debugger 查看執(zhí)行路線!
    set t0 0
    set t1 0
    set t2 0
    set t3 0
    set a 1
    set b 2
    set c 3
    switch $x {
    a {incr t0}
    b {incr t1}
    c {incr t2}
    default {incr t3}
    }
    ?? 如何獲取每天早晨00點(diǎn)的時(shí)間值.
    #初始化時(shí)間
    set t [get_current_time]; #通過HMIBuilder 接口,獲取系統(tǒng)當(dāng)前時(shí)間
    set tStart [expr $t - ( $t % (60*60*24)) - 60*60*8 ];# - 60*60*8 就是減去8小時(shí),為了到0
    點(diǎn);
    set tEnd [expr $tTime + 60*60*24]; #獲取一天的結(jié)束時(shí)間
    messagebox $tStart $tEnd ;
    Learning,sporting and fighting!
    ?? 獲取32位整型數(shù)的bit位,如何處理
    最佳方案:
    set val [expr {int([get_analog_value “ sta0 ” “ val0 ” ])}];
    set c [expr {$val & (1 << 7)}]; #取val 的第7位
    set_status_val “ sta0 ” “ status0 ” [expr {$c ? 1 : 0}]; #設(shè)置對應(yīng)狀態(tài)量
    set val [expr {$val | (1 << 7)}]; #將val 的第7位置位
    set val [expr {$val & (~(1 << 7))}]; #將val 第7位復(fù)位
    其他解決方法:
    set bit 1;
    set data 16;
    set b [expr { $data ^ int (pow(2,$bit))}]; #data的bit位置1
    messagebox "data 的bit 位置1后為" $b;
    set bit 2;
    set data 15;
    set c [expr { $data&int(pow(2,$bit))}]; #data的bit位清0
    messagebox "data 的bit 位清0后為" $c;
    Learning,sporting and fighting!
    ?? 如何通過腳本實(shí)現(xiàn)一個(gè)開關(guān)量數(shù)據(jù)的取反?
    建立一個(gè)變量sta0站的開關(guān)量status0!
    在按鈕中,采用下面腳本,實(shí)現(xiàn)取反操作:
    set a [get_status_value "sta0" "status0" ]
    set a [expr {!$a }] #取反操作
    set_status_value "sta0" "status0" $a
    ?? 工程轉(zhuǎn)化的實(shí)現(xiàn):
    在HMIBuilder 中,我們經(jīng)常通過Y=kX+b 的方式,進(jìn)行工程轉(zhuǎn)換,也就是線性轉(zhuǎn)化。
    但是,在實(shí)際工程中,經(jīng)常通過輸入量的最大/最小值和轉(zhuǎn)換量的最大/最小值的關(guān)系進(jìn)行轉(zhuǎn)換。
    那么如何通過輸入量的最大/最小值(MaxI /MinI )和轉(zhuǎn)換量的最大/最小值(MaxO /MinO )算出公
    式Y(jié)(轉(zhuǎn)換值)=kX(輸入值)+b 中的k 和b 呢?
    下面就是程序代碼:
    set MaxI [get_edit_text "edit_MaxI"];
    set MinI [get_edit_text "edit_MinI"];
    set MaxO [get_edit_text "edit_MaxO"];
    set MinO [get_edit_text "edit_MinO"];
    set k [expr ($MaxO-$MinO)/($MaxI-$MinI) ];
    set b [expr $MinO-$k*$MinI]
    messagebox $b $k;
    set In [get_edit_text "edit_In"];
    set Out [expr $k*$In+$b]
    messagebox "" $Out
    ?? Everything is string的感悟
    TCL 腳本的特點(diǎn)是Everything is string,使TCL 腳本命令的參數(shù)的變量字符串可以通過
    字符串命令動(dòng)態(tài)獲得,這樣減少了判斷。
    set val [get_current_select "combox_1025" 1]; #從下拉框獲取站號
    set modle [format "sta%d" $val];
    set val [get_current_select "combox_1026" 1]; #從下拉框獲取通道號
    set channel [format "analog%d" $val];
    set a [get_analog_para $modle $channel "description"];#動(dòng)態(tài)對站和通道的參數(shù)進(jìn)行設(shè)置。
    也就是,通過窗口的啟動(dòng)腳本將窗口中的下拉選擇菜單初始化,并根據(jù)初始化的菜單,
    初始化模塊通道的各個(gè)參數(shù)顯示和設(shè)置構(gòu)件。然后,在下拉菜單和設(shè)置保存按鈕中,當(dāng)
    操作結(jié)束,根據(jù)選擇的模塊和通道更新當(dāng)前參數(shù)的刷新。
  • 企業(yè)介紹
天津縱橫公司以人機(jī)界面產(chǎn)品組合為核心,為專屬行業(yè)客戶群提供最佳的系統(tǒng)級解決方案,我們把對行業(yè)的關(guān)注轉(zhuǎn)化為實(shí)際產(chǎn)品的提供,始終關(guān)注自動(dòng)化市場中的應(yīng)用需求,努力成為成為工業(yè)自動(dòng)化客戶群首選的HMI系統(tǒng)級解決方案提供商。  縱橫科技提…  更多>>
  • 產(chǎn)品分類
  • 該公司暫未設(shè)置產(chǎn)品類別
  • 聯(lián)系方式

天津昆侖縱橫自動(dòng)化技術(shù)有限公司

聯(lián)系人:縱橫科技HMIBuilder

地址:天津市南開區(qū)科研西路12號科技創(chuàng)業(yè)中心118室

郵編:300192

電話:022-87890516

傳真:022-87890516

公司網(wǎng)址:http://www.hmibuilder.com

  • 該空間手機(jī)版

掃描此二維碼即可訪問該空間手機(jī)版

  • 在線反饋
1.我有以下需求:



2.詳細(xì)的需求:
姓名:
單位:
電話:
郵件:
您還沒有登錄,請登陸,
如果您還沒有注冊,點(diǎn)擊這里注冊.
  • 網(wǎng)友反饋
  • 宋陽 在2019/9/28 13:06:00留言
  • 留言類型:貴公司技術(shù)支持人員聯(lián)系我,
  • 詳細(xì)留言:hmi與plc通訊報(bào)出初始化通道錯(cuò)誤
  • 康雨瀟 在2013/10/30 14:49:00留言
  • 留言類型:我讓貴公司技術(shù)支持人員聯(lián)系我,
  • 詳細(xì)留言:如何獲取系統(tǒng)時(shí)間日期圖元
  • 康雨瀟 在2013/10/30 14:48:00留言
  • 留言類型:我讓貴公司技術(shù)支持人員聯(lián)系我,
  • 詳細(xì)留言:如何獲取系統(tǒng)時(shí)間日期圖元
  • 劉國棟 在2012/7/24 14:33:00留言
  • 留言類型:我讓貴公司技術(shù)支持人員聯(lián)系我,
  • 詳細(xì)留言:為什么初始化通道錯(cuò)誤
  • 張振華 在2012/3/31 16:27:00留言
  • 留言類型:得到貴公司產(chǎn)品詳細(xì)資料,得到貴公司產(chǎn)品的價(jià)格信息,
  • 詳細(xì)留言:縱橫科技HMIBuilder全中文組態(tài)軟件 的價(jià)格及手冊
更多請進(jìn)入空間管理中心查看
關(guān)于我們 | 網(wǎng)站地圖 | 聯(lián)系我們
© 2003-2018    經(jīng)營許可編號:京ICP證120335號
公安機(jī)關(guān)備案號:110102002318  服務(wù)熱線:010-82053688
我要反饋