


版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、腳本程序本章介紹 MCGS嵌入版的腳本語言,主要內容包括:腳本語言編輯環境腳本程序語言要素腳本程序基本語句腳本程序的查錯和運行腳本程序簡介腳本程序是組態軟件中的一種內置編程語言引擎。 當某些控制和計算任務通過常規組態方法難以實現時, 通過使用腳本語言, 能夠增強整個系統的靈活性, 解決其常規組態方法難以解決的問題。MCGS 嵌入版腳本程序為有效地編制各種特定的流程控制程序和操作處理程序提供了方便的途徑。它被封裝在一個功能構件里(稱為腳本程序功能構件) ,在后臺由獨立的線程來運行和處理,能夠避免由于單個腳本程序的錯誤而導致整個系統的癱瘓。在 MCGS 嵌入版中,腳本語言是一種語法上類似Basic
2、 的編程語言。可以應用在運行策略中,把整個腳本程序作為一個策略功能塊執行,也可以在動畫界面的事件中執行。MCGS嵌入版引入的事件驅動機制,與VB 或 VC 中的事件驅動機制類似,比如:對用戶窗口,有裝載,卸載事件; 對窗口中的控件, 有鼠標單擊事件, 鍵盤按鍵事件等等。 這些事件發生時,就會觸發一個腳本程序,執行腳本程序中的操作。腳本語言編輯環境腳本程序編輯環境是用戶書寫腳本語句的地方。腳本程序編輯環境主要由腳本程序編輯框、編輯功能按鈕、MCGS 嵌入版操作對象列表和函數列表、腳本語句和表達式4 個部分構成,分別說明如下:腳本程序編輯框用于書寫腳本程序和腳本注釋,用戶必須遵照MCGS 嵌入版規
3、定的語法結構和書寫規范書寫腳本程序,否則語法檢查不能通過。編輯功能按鈕提供了文本編輯的基本操作,用戶使用這些操作可以方便操作和提高編輯速度。比如,在腳本程序編輯框中選定一個函數,然后按下幫助按鈕,MCGS嵌入版將自動打開關于這個函數的在線幫助,或者,如果函數拼寫錯誤,MCGS嵌入版將列出與所提供的名字最接近函數的在線幫助。腳本語句和表達式列出了MCGS嵌入版使用的三種語句的書寫形式和MCGS嵌入版允許的表達式類型。用鼠標單擊要選用的語句和表達式符號按鈕,在腳本編輯處光標所在的位置填上語句或表達式的標準格式。比如,用鼠標單擊ifthen按鈕,則 MCGS 嵌入版自動提供一個 if then 結構
4、,并把輸入光標停到合適的位置上。MCGS 嵌入版對象和函數列表以樹結構的形式,列出了工程中所有的窗口、策略、設備、變量、系統支持的各種方法、屬性以及各種函數,以供用戶快速的查找和使用。比如,可以在用戶窗口樹中,選定一個窗口: “窗口 0”,打開窗口 0 下的“方法”,雙擊 Open 函數,則 MCGS 嵌入版自動在腳本程序編輯框中, 添加一行語句:用戶窗口 .窗口 0.Open() ,通過這行語句,就可以完成窗口打開的工作。腳本程序語言要素在 MCGS 嵌入版中,腳本程序使用的語言非常類似普通的 Basic 語言,本節將對腳本程序的語言要素進行詳細的說明。數據類型MCGS 嵌入版腳本程序語言使
5、用的數據類型只有三種:開關型:表示開或者關的數據類型,通常 0 表示關,非 0 表示開。也可以作為整數使用;數值型:值在 3.4E ±38 范圍內;字符型:最多 512 個字符組成的字符串。變量、常量及系統函數變量: 腳本程序中, 用戶不能定義子程序和子函數,其中數據對象可以看作是腳本程序中的全局變量, 在所有的程序段共用。可以用數據對象的名稱來讀寫數據對象的值,也可以對數據對象的屬性進行操作。開關型、 數值型、 字符型三種數據對象分別對應于腳本程序中的三種數據類型。中不能對組對象和事件型數據對象進行讀寫操作,但可以對組對象進行存盤處理。在腳本程序常量:開關型常量: 0 或非 0 的
6、整數,通常 0 表示關,非 0 表示開;數值型常量:帶小數點或不帶小數點的數值,如:12.45, 100字符型常量:雙引號內的字符串,如:“OK”, “正常”系統變量: MCGS嵌入版系統定義的內部數據對象作為系統內部變量,在腳本程序中可自由使用,在使用系統變量時,變量的前面必須加“$”符號,如$Date。系統函數: MCGS 嵌入版系統定義的內部函數,在腳本程序中可自由使用,在使用系統函數時,函數的前面必須加“ !”符號,如 !abs( )。屬性和方法:MCGS 嵌入版系統內的屬性和方法都是相對于MCGS嵌入版的對象而說的,引用對象的方法可以參見下個部分。注:有關系統變量和系統函數詳細的使用
7、方法,請參見MCGS嵌入版參考手冊MCGS 嵌入版對象MCGS 嵌入版的對象形成一個對象樹,MCGS 嵌入版對象的屬性就是系統變量,MCGS 嵌入版對象的方法就是系統函數。MCGS 嵌入版對象下面有“用戶窗口”對象,“設備”對象,“數據對象”等子對象。“用戶窗口”以各個用戶窗口作為子對象,每個用戶窗口對象以這個窗口里的構件作為子對象。使用對象的方法和屬性,必須要引用對象,然后使用點操作來調用這個對象的方法或屬性。為了引用一個對象, 需要從對象根部開始引用,這里的對象根部, 是指可以公開使用的對象。MCGS 嵌入版對象,用戶窗口、設備和數據對象都是公開對象,因此,語句 InputETime =
8、$Time是正確的,而語句InputETime= MCGS.$Time 也是正確的,同樣,調用函數!Beep() 時,也可以采用MCGS.!Beep() 的形式。可以寫:窗口0.Open(),也可以寫: MCGS. 用戶窗口 .窗口0.Open(),還可以寫:用戶窗口.窗口 0.Open() 。但是,如果要使用控件,就不能只寫:控件0.Left ,而必須寫:窗口 0.控件 0.Left ,或:用戶窗口 .窗口 0.控件 0.Left 。在對象列表框中,雙擊需要的方法和屬性, MCGS 將自動生成最小可能的表達式。事件在 MCGS 嵌入版的動畫界面組態中,可以組態處理動畫事件。動畫事件是在某個對
9、象上發生的,它可能是帶參數也可能是不帶參數的動作驅動源。如:用戶窗口上可以發生事件:Load ,Unload ,它們分別在用戶窗口打開和關閉時觸發。 可以對這兩個事件編寫一段腳本程序,當某一事件觸發時(用戶窗口打開或關閉時)其相應腳本程序被執行。用戶窗口的Load 和 Unload 事件沒有參數, 而 MouseMove 事件有參數, 在組態這個事件時,可以在參數組態中,選擇把 MouseMove 事件的幾個參數連接到數據對象上,這樣,當 MouseMove 事件被觸發時,就會把 MouseMove 的參數,包括鼠標位置,按鍵信息等送到連接的數據對象,然后,在事件連接的腳本程序中,就可以對這些
10、數據對象進行處理。表達式由數據對象 (包括設計者在實時數據庫中定義的數據對象、系統內部數據對象和系統函數)、括號和各種運算符組成的運算式稱為表達式,表達式的計算結果稱為表達式的值。當表達式中包含有邏輯運算符或比較運算符時,表達式的值只可能為0(條件不成立,假)或非0(條件成立,真) ,這類表達式稱為邏輯表達式;當表達式中只包含算術運算符,表達式的運算結果為具體的數值時,這類表達式稱為算術表達式;常量或數據對象是狹義的表達式,這些單個量的值即為表達式的值。 表達式值的類型即為表達式的類型, 必須是開關型、數值型、字符型三種類型中的一種。表達式是構成腳本程序的最基本元素,在MCGS 嵌入版的組態過
11、程中,也常常需要通過表達式來建立實時數據庫對象與其它對象的連接關系,正確輸入和構造表達式是 MCGS 嵌入版的一項重要工作。運算符算術運算符*Mod乘方乘法除法整除加法減法取模運算邏輯運算符ANDNOTORXOR邏輯與邏輯非邏輯或邏輯異或比較運算符接使用大于大于等于等于(注意,字符串比較需要使用字符串函數等于運算符)!StrCmp,不能直小于等于小于不等于運算符優先級按照優先級從高到低的順序,各個運算符排列如下:( )* , , Mod,,NOTAND,OR,XOR基本輔助函數作為腳本語言的一部分,MCGS 嵌入版提供了幾組基本輔助函數,這些函數主要不是作為組態軟件的功能提供的,而是為了完成腳
12、本語言的功能提供的。這些函數包括以下幾類:位操作函數,數學函數,字符串函數,時間函數。位操作函數提供了對數值型數據中的位進行操作的功能。可以用開關型變量來提供這里的數值型數據。在腳本程序編輯器里,位操作函數都列在數學函數中,包括按位與(!BitAnd),按位或( !BitOr ),按位異或( !BitXor ),按位取反( !BitNot ),清除數據中的某一位或把某一位置 0( !BitClear ),設置數據中的某一位或把某一位置1( !BitSet ),檢查數據中某一位是否為 1( !BitTest ),左移和右移( !BitLShift,!BitRShift )。數學函數提供了常見的數
13、學操作,包括開方,隨機數生成以及三角函數等。字符串函數提供了與字符串相關的操作,包括字符串比較,截取,搜索以及格式化等。時間函數提供了和時間計算相關的函數。時間可以以一個字符串的形式表示,但是,為了方便進行時間計算,在MCGS 嵌入版中,使用了一種內部格式來保存時間的值,這種內部格式的時間值可以保存在一個開關型變量中,同時,可以使用函數!TimeStr2I和 !TimeI2Str來完成字符串形式時間量和內部格式形式時間量的轉換,如:A1= !TimeStr2I(“2001-3-212:23:23”),這里A1是一個開關型數據對象,獲得了一個內部形式的時間量,而再用InputETime=!Tim
14、eI2Str(A1,"%Y-%m-%d%H:%M:%S ")又可以把保存在A1 中的內部形式的時間量轉換為字符串形式。 當時間轉換為內部格式后, 就可以進行時間的運算。 運算完畢后,再轉換為字符串形式的時間,以便輸出和使用。具體函數的使用方法,可以參照MCGS 嵌入版參考手冊中的說明。功能函數為了提供輔助的系統功能, MCGS 嵌入版提供了功能函數。功能函數主要包括以下幾類:運行環境函數,數據對象函數,系統函數,用戶登錄函數,定時器操作,文件操作,配方操作函數等。運行環境函數和數據對象函數主要是提供了對 MCGS 嵌入版內部各個對象操作的方法。系統函數提供了系統功能,包括啟
15、動程序,發出按鍵信息等等。用戶登錄函數提供了用戶登錄和管理的功能。 包括打開登錄對話框, 打開用戶管理對話框等等。定時器提供了 MCGS 嵌入版內建定時器的操作。包括對內建時鐘的啟動,停止,復位,時間讀取等操作。文件操作提供了對文件的操作,包括刪除、拷貝文件,把文件拆開、合并,尋找文件,遍歷文件,在文件中進行讀寫操作。對 CSV(逗號分割的文本文件)進行讀寫操作等等。具體的函數說明,可以參看MCGS 嵌入版參考手冊。腳本程序基本語句由于 MCGS 嵌入版腳本程序是為了實現某些多分支流程的控制及操作處理,因此包括了幾種最簡單的語句:賦值語句、條件語句、退出語句和注釋語句,同時,為了提供一些高級的
16、循環和遍歷功能,還提供了循環語句。所有的腳本程序都可由這五種語句組成,當需要在一個程序行中包含多條語句時,各條語句之間須用“: ”分開,程序行也可以是沒有任何語句的空行。 大多數情況下, 一個程序行只包含一條語句, 賦值程序行中根據需要可在一行上放置多條語句。賦值語句賦值語句的形式為:數據對象 = 表達式。賦值號用“ =”表示,它的具體含義是:把“ =”右邊表達式的運算值賦給左邊的數據對象。賦值號左邊必須是能夠讀寫的數據對象, 如:開關型數據、 數值型數據以及能進行寫操作的內部數據對象,而組對象、事件型數據對象、只讀的內部數據對象、系統函數以及常量,均不能出現在賦值號的左邊,因為不能對這些對象
17、進行寫操作。賦值號的右邊為一表達式,表達式的類型必須與左邊數據對象值的類型相符合,否則系統會提示“賦值語句類型不匹配”的錯誤信息。條件語句條件語句有如下三種形式:If表達式Then 賦值語句或退出語句If表達式Then語句EndIfIf表達式 Then語句Else語句EndIf條件語句中的四個關鍵字“If ”、“ Then ”、“ Else”、“ Endif ”不分大小寫。如拼寫不正確,檢查程序會提示出錯信息。條件語句允許多級嵌套, 即條件語句中可以包含新的條件語句, MCGS 腳本程序的條件語句最多可以有 8 級嵌套,為編制多分支流程的控制程序提供方便。“ IF ”語句的表達式一般為邏輯表達
18、式, 也可以是值為數值型的表達式, 當表達式的值為非 0 時,條件成立,執行“ Then ”后的語句,否則,條件不成立,將不執行該條件塊中包含的語句,開始執行該條件塊后面的語句。值為字符型的表達式不能作為“if ”語句中的表達式。循環語句循環語句為While 和 EndWhile ,其結構為:While條件表達式 .EndWhile當條件表達式成立時 (非零),循環執行 While 和 EndWhile 之間的語句。 直到條件表達式不成立(為零),退出。退出語句退出語句為“ Exit ”,用于中斷腳本程序的運行,停止執行其后面的語句。一般在條件語句中使用退出語句,以便在某種條件下,停止并退出腳
19、本程序的執行。注釋語句以單引號“ ”開頭的語句稱為注釋語句,注釋語句在腳本程序中只起到注釋說明的作用,實際運行時,系統不對注釋語句作任何處理。腳本程序的查錯和運行腳本程序編制完成后,系統首先對程序代碼進行檢查,以確認腳本程序的編寫是否正確。檢查過程中, 如果發現腳本程序有錯誤,則會返回相應的信息, 以提示可能的出錯原因, 幫助用戶查找和排除錯誤。常見的提示信息有:組態設置正確,沒有錯誤未知變量未知表達式未知的字符型變量未知的操作符未知函數函數參數不足括號不配對IF 語句缺少 ENDIFIF 語句缺少 THENELSE 語句缺少對應的IF 語句ENDIF 缺少對應的 IF語句未知的語法錯誤根據系
20、統提供的錯誤信息,作出相應的改正, 系統檢查通過, 就可以在運行環境中運行,達到簡化組態過程、優化控制流程的目的。系統操作函數!AppActive()函數說明 :此函數在嵌入版中無效,考慮兼容性問題,故保留。!Beep()函數意義 :發出嗡鳴聲。返 回 值:數值型。返回值=0:調用成功; <>0 :調用失敗。參數:無。實例: !Beep() 。!EnableDDEConnection()函數說明 :此函數在嵌入版中無效,考慮兼容性問題,故保留。!EnableDDEInput()函數說明 :此函數在嵌入版中無效,考慮兼容性問題,故保留。!LinePrtOutput()函數說明 :此函
21、數在嵌入版中無效,考慮兼容性問題,故保留。!PlaySound()函數說明 :此函數在嵌入版中無效,考慮兼容性問題,故保留。!SendKeys(string)函數意義 :將一個或多個按鍵消息發送到活動窗口,就如同在鍵盤上進行輸入一樣。返 回 值:數值型。返回值=0:調用成功; <>0 :調用失敗。參數: string,字符串表達式,指定要發送的按鍵消息。實例: !SendKeys("%TAB"),切換窗口。說明:每個按鍵由一個或多個字符表示。為了指定單一鍵盤字符,必須按字符本身的鍵。例如,為了表示字母A ,可以用"A"作為 string 。為
22、了表示多個字符,就必須在字符后面直接加上另一個字符。例如,要表示 A 、 B 及 C,可用"ABC"作為string 。對SendKeys 來說,加號(+)、插入符 ()、百分比符號 (%) 、上劃線 () 及圓括號( ) 都具有特殊意義。為了指定上述任何一個字符,要將它放在大括號() 當中。例如,要指定正號, 可用 + 表示。為了指定大括號字符,請使用 及 。為了在按下按鍵時指定那些不顯示的字符,例如:ENTER 或TAB 以及那些表示動作而非字符的按鍵,請使用下列代碼:按鍵代碼BACKSPACEBACKSPACE,BS, 或BKSPBREAKBREAKCAPS LOCK
23、CAPSLOCKDEL or DELETEDELETE或 DELDOWN ARROWDOWNENDENDENTERENTER 或 ESCESCHOMEHOMEINS or INSERTINSERT或 INSLEFT ARROWLEFTNUM LOCKNUMLOCKPAGE DOWNPGDNPAGE UPPGUPRIGHT ARROWRIGHTSCROLL LOCKSCROLLLOCKTABTABUP ARROWUPF1F1F2F2F3F3F4F4F5F5F6F6F7F7F8F8F9F9F10F10F11F11F12F12F13F13F14F14F15F15F16F16為了指定那些與SHIFT
24、、 CTRL及 ALT等按鍵結合的組合鍵,可在這些按鍵碼的前面放置一個或多個代碼,這些代碼列舉如下:按鍵代碼SHIFT+CTRLALT%為了說明在按下其它按鍵時應同時按下SHIFT 、CTRL 、及 ALT 的任意組合鍵, 請把那些按鍵的碼放在括號當中。例如,為了說明按下E 與 C的時候同時按下SHIFT鍵,請使用"+(EC)" 。為了說明在按下E 的時候同時按下SHIFT鍵,但接著按C 而不按SHIFT ,則使用 "+EC" 。注意:不能用SendKeys 將按鍵消息發送到這樣一個應用程序,這個應用程序并沒有被設計成在 Microsoft Window
25、s 中運行。 Sendkeys 也無法將 PRINT SCREEN 按鍵 PRTSC 發送到任何應用程序。!SetLinePrinter(n)函數意義 :打開 /關閉行式打印輸出。返 回 值:數值型。返回值=0:調用成功; <>0: 調用失敗。參數: n,數值型, 1,表示打開行式打印輸出;0,則關閉行式打印輸出。實例: !SetLinePrinter(1) ,打開行式打印輸出。!SetTime(n1,n2,n3,n4,n5,n6)函數意義 :設置當前系統時間返 回 值:數值型。返回值=0:調用成功; <>0 :調用失敗。參數: n1,數值型,設定年數,小于1000 和大于9999 時
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
評論
0/150
提交評論