ImageVerifierCode 换一换
格式:DOCX , 页数:15 ,大小:22.69KB ,
资源ID:7103102      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/7103102.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(MCGS嵌入版脚本程序.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

MCGS嵌入版脚本程序.docx

1、MCGS 嵌入版脚本程序嵌入版脚本程序 脚本程序脚本程序 本章介绍 MCGS 嵌入版的脚本语言,主要内容包括:脚本语言编辑环境 脚本程序语言要素 脚本程序基本语句 脚本程序的查错和运行 脚本程序简介 脚本程序是组态软件中的一种内置编程语言引擎。当某些控制和计算任务通过常规组态方法难以实现时,通过使用脚本语言,能够增强整个系统的灵活性,解决其常规组态方法难以解决的问题。MCGS 嵌入版脚本程序为有效地编制各种特定的流程控制程序和操作处理程序提供了方便的途径。它被封装在一个功能构件里(称为脚本程序功能构件),在后台由独立的线程来运行和处理,能够避免由于单个脚本程序的错误而导致整个系统的瘫痪。在 M

2、CGS 嵌入版中,脚本语言是一种语法上类似 Basic的编程语言。可以应用在运行策略中,把整个脚本程序作为一个策略功能块执行,也可以在动画界面的事件中执行。MCGS 嵌入版引入的事件驱动机制,与 VB或 VC 中的事件驱动机制类似,比如:对用户窗口,有装载,卸载事件;对窗口中的控件,有鼠标单击事件,键盘按键事件等等。这些事件发生时,就会触发一个脚本程序,执行脚本程序中的操作。脚本语言编辑环境 脚本程序编辑环境是用户书写脚本语句的地方。脚本程序编辑环境主要由脚本程序编辑框、编辑功能按钮、MCGS 嵌入版操作对象列表和函数列表、脚本语句和表达式 4 个部分构成,分别说明如下:脚本程序编辑框用于书写

3、脚本程序和脚本注释,用户必须遵照 MCGS 嵌入版规定的语法结构和书写规范书写脚本程序,否则语法检查不能通过。编辑功能按钮提供了文本编辑的基本操作,用户使用这些操作可以方便操作和提高编辑速度。比如,在脚本程序编辑框中选定一个函数,然后按下帮助按钮,MCGS 嵌入版将自动打开关于这个函数的在线帮助,或者,如果函数拼写错误,MCGS 嵌入版将列出与所提供的名字最接近函数的在线帮助。脚本语句和表达式列出了 MCGS 嵌入版使用的三种语句的书写形式和 MCGS 嵌入版允许的表达式类型。用鼠标单击要选用的语句和表达式符号按钮,在脚本编辑处光标所在的位置填上语句或表达式的标准格式。比如,用鼠标单击 ift

4、hen 按钮,则MCGS 嵌入版自动提供一个 ifthen结构,并把输入光标停到合适的位置上。MCGS 嵌入版对象和函数列表以树结构的形式,列出了工程中所有的窗口、策略、设备、变量、系统支持的各种方法、属性以及各种函数,以供用户快速的查找和使用。比如,可以在用户窗口树中,选定一个窗口:“窗口 0”,打开窗口 0 下的“方法”,双击 Open 函数,则 MCGS 嵌入版自动在脚本程序编辑框中,添加一行语句:用户窗口.窗口 0.Open(),通过这行语句,就可以完成窗口打开的工作。脚本程序语言要素 在 MCGS 嵌入版中,脚本程序使用的语言非常类似普通的 Basic语言,本节将对脚本程序的语言要素

5、进行详细的说明。数据类型 MCGS 嵌入版脚本程序语言使用的数据类型只有三种:开关型:表示开或者关的数据类型,通常 0表示关,非 0表示开。也可以作为整数使用;数值型:值在 3.4E 38范围内;字符型:最多 512个字符组成的字符串。变量、常量及系统函数 变量:脚本程序中,用户不能定义子程序和子函数,其中数据对象可以看作是脚本程序中的全局变量,在所有的程序段共用。可以用数据对象的名称来读写数据对象的值,也可以对数据对象的属性进行操作。开关型、数值型、字符型三种数据对象分别对应于脚本程序中的三种数据类型。在脚本程序中不能对组对象和事件型数据对象进行读写操作,但可以对组对象进行存盘处理。常量:开

6、关型常量:0或非 0 的整数,通常 0 表示关,非 0表示开;数值型常量:带小数点或不带小数点的数值,如:12.45,100 字符型常量:双引号内的字符串,如:“OK”,“正常”系统变量:MCGS 嵌入版系统定义的内部数据对象作为系统内部变量,在脚本程序中可自由使用,在使用系统变量时,变量的前面必须加“$”符号,如$Date。系统函数:MCGS 嵌入版系统定义的内部函数,在脚本程序中可自由使用,在使用系统函数时,函数的前面必须加“!”符号,如!abs()。属性和方法:MCGS 嵌入版系统内的属性和方法都是相对于 MCGS 嵌入版的对象而说的,引用对象的方法可以参见下个部分。注:有关系统变量和系

7、统函数详细的使用方法,请参见MCGS 嵌入版参考手册MCGS 嵌入版对象 MCGS 嵌入版的对象形成一个对象树,MCGS 嵌入版对象的属性就是系统变量,MCGS 嵌入版对象的方法就是系统函数。MCGS 嵌入版对象下面有“用户窗口”对象,“设备”对象,“数据对象”等子对象。“用户窗口”以各个用户窗口作为子对象,每个用户窗口对象以这个窗口里的构件作为子对象。使用对象的方法和属性,必须要引用对象,然后使用点操作来调用这个对象的方法或属性。为了引用一个对象,需要从对象根部开始引用,这里的对象根部,是指可以公开使用的对象。MCGS 嵌入版对象,用户窗口、设备和数据对象都是公开对象,因此,语句InputE

8、Time=$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 取模运算 逻辑运算符 AND逻辑与 NOT逻辑非 OR 逻辑或 XOR 逻辑异或 比较运算符 大于 大于等于 等于(注意,字符串比较需要使用字符串函数!StrCmp,不能直接使用等于运算符)小于等于 小于 不等于 运算符优先级 按照优先级从高到低的顺序,各个运算符排列如下:()*,Mod,,NOT AND,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=!Ti

14、meI2Str(A1,%Y-%m-%d%H:%M:%S)又可以把保存在 A1 中的内部形式的时间量转换为字符串形式。当时间转换为内部格式后,就可以进行时间的运算。运算完毕后,再转换为字符串形式的时间,以便输出和使用。具体函数的使用方法,可以参照MCGS 嵌入版参考手册中的说明。功能函数 为了提供辅助的系统功能,MCGS 嵌入版提供了功能函数。功能函数主要包括以下几类:运行环境函数,数据对象函数,系统函数,用户登录函数,定时器操作,文件操作,配方操作函数等。运行环境函数和数据对象函数主要是提供了对 MCGS 嵌入版内部各个对象操作的方法。系统函数提供了系统功能,包括启动程序,发出按键信息等等。用

15、户登录函数提供了用户登录和管理的功能。包括打开登录对话框,打开用户管理对话框等等。定时器提供了 MCGS 嵌入版内建定时器的操作。包括对内建时钟的启动,停止,复位,时间读取等操作。文件操作提供了对文件的操作,包括删除、拷贝文件,把文件拆开、合并,寻找文件,遍历文件,在文件中进行读写操作。对 CSV(逗号分割的文本文件)进行读写操作等等。具体的函数说明,可以参看MCGS 嵌入版参考手册。脚本程序基本语句 由于 MCGS 嵌入版脚本程序是为了实现某些多分支流程的控制及操作处理,因此包括了几种最简单的语句:赋值语句、条件语句、退出语句和注释语句,同时,为了提供一些高级的循环和遍历功能,还提供了循环语

16、句。所有的脚本程序都可由这五种语句组成,当需要在一个程序行中包含多条语句时,各条语句之间须用“:”分开,程序行也可以是没有任何语句的空行。大多数情况下,一个程序行只包含一条语句,赋值程序行中根据需要可在一行上放置多条语句。赋值语句 赋值语句的形式为:数据对象=表达式。赋值号用“=”表示,它的具体含义是:把“=”右边表达式的运算值赋给左边的数据对象。赋值号左边必须是能够读写的数据对象,如:开关型数据、数值型数据以及能进行写操作的内部数据对象,而组对象、事件型数据对象、只读的内部数据对象、系统函数以及常量,均不能出现在赋值号的左边,因为不能对这些对象进行写操作。赋值号的右边为一表达式,表达式的类型

17、必须与左边数据对象值的类型相符合,否则系统会提示“赋值语句类型不匹配”的错误信息。条件语句 条件语句有如下三种形式:If表达式Then赋值语句或退出语句 If表达式Then 语句 EndIf If表达式Then 语句 Else 语句 EndIf 条件语句中的四个关键字“If”、“Then”、“Else”、“Endif”不分大小写。如拼写不正确,检查程序会提示出错信息。条件语句允许多级嵌套,即条件语句中可以包含新的条件语句,MCGS 脚本程序的条件语句最多可以有 8级嵌套,为编制多分支流程的控制程序提供方便。“IF”语句的表达式一般为逻辑表达式,也可以是值为数值型的表达式,当表达式的值为非 0时

18、,条件成立,执行“Then”后的语句,否则,条件不成立,将不执行该条件块中包含的语句,开始执行该条件块后面的语句。值为字符型的表达式不能作为“if”语句中的表达式。循环语句 循环语句为 While 和 EndWhile,其结构为:While条件表达式.EndWhile 当条件表达式成立时(非零),循环执行 While 和 EndWhile之间的语句。直到条件表达式不成立(为零),退出。退出语句 退出语句为“Exit”,用于中断脚本程序的运行,停止执行其后面的语句。一般在条件语句中使用退出语句,以便在某种条件下,停止并退出脚本程序的执行。注释语句 以单引号“”开头的语句称为注释语句,注释语句在脚

19、本程序中只起到注释说明的作用,实际运行时,系统不对注释语句作任何处理。脚本程序的查错和运行 脚本程序编制完成后,系统首先对程序代码进行检查,以确认脚本程序的编写是否正确。检查过程中,如果发现脚本程序有错误,则会返回相应的信息,以提示可能的出错原因,帮助用户查找和排除错误。常见的提示信息有:组态设置正确,没有错误 未知变量 未知表达式 未知的字符型变量 未知的操作符 未知函数 函数参数不足 括号不配对 IF语句缺少 ENDIF IF语句缺少 THEN ELSE 语句缺少对应的 IF语句 ENDIF 缺少对应的 IF语句 未知的语法错误 根据系统提供的错误信息,作出相应的改正,系统检查通过,就可以

20、在运行环境中运行,达到简化组态过程、优化控制流程的目的。系统操作函数!AppActive()函数说明:此函数在嵌入版中无效,考虑兼容性问题,故保留。!Beep()函数意义:发出嗡鸣声。返回值:数值型。返回值=0:调用成功;0:调用失败。参数:无。实例:!Beep()。!EnableDDEConnection()函数说明:此函数在嵌入版中无效,考虑兼容性问题,故保留。!EnableDDEInput()函数说明:此函数在嵌入版中无效,考虑兼容性问题,故保留。!LinePrtOutput()函数说明:此函数在嵌入版中无效,考虑兼容性问题,故保留。!PlaySound()函数说明:此函数在嵌入版中无效

21、,考虑兼容性问题,故保留。!SendKeys(string)函数意义:将一个或多个按键消息发送到活动窗口,就如同在键盘上进行输入一样。返回值:数值型。返回值=0:调用成功;0:调用失败。参数:string,字符串表达式,指定要发送的按键消息。实例:!SendKeys(%TAB),切换窗口。说明:每个按键由一个或多个字符表示。为了指定单一键盘字符,必须按字符 本身的键。例如,为了表示字母 A,可以用A作为 string。为了表示多个字符,就必须在字符后面直接加上另一个字符。例如,要表示 A、B及 C,可用ABC作为 string。对 SendKeys 来说,加号(+)、插入符()、百分比符号(%

22、)、上划线()及圆括号()都具有特殊意义。为了指定上述任何一个字符,要将它放在大括号()当中。例如,要指定正号,可用+表示。为了指定大括号字符,请使用及。为了在按下按键时指定那些不显示的字符,例如:ENTER 或 TAB以及那些表示动作而非字符的按键,请使用下列代码:按键 BACKSPACE BREAK代码 BACKSPACE,BS,或 BKSP BREAK CAPSLOCK DELETE或DEL DOWN END ENTER或 ESC HOME INSERT或INS LEFT NUMLOCK PGDN PGUP RIGHT SCROLLLOCK TAB UP F1 F2 F3 F4 F5 F

23、6 F7 F8 F9 F10 F11 F12 F13 F14 F15 CAPS LOCK DEL or DELETE DOWN ARROW END ESC ENTER HOME INS or INSERT LEFT ARROW NUM LOCK PAGE DOWN PAGE UP RIGHT ARROW SCROLL LOCK TAB F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 UP ARROW F16F16 为了指定那些与 SHIFT、CTRL及 ALT等按键结合的组合键,可在这些按键码的前面放置一个或多个代码,这些代码列举如下:按键

24、 SHIFT CTRL ALT+代码%为了说明在按下其它按键时应同时按下 SHIFT、CTRL、及 ALT的任意组合键,请把那些按键的码放在括号当中。例如,为了说明按下 E与 C 的时候同时按下 SHIFT键,请使用+(EC)。为了说明在按下 E的时候同时按下 SHIFT 键,但接着按 C 而不按SHIFT,则使用+EC。注意:不能用 SendKeys 将按键消息发送到这样一个应用程序,这个应用程序并没有被设计成在 MicrosoftWindows 中运行。Sendkeys 也无法将 PRINT SCREEN 按键PRTSC发送到任何应用程序。!SetLinePrinter(n)函数意义:打开

25、/关闭行式打印输出。返回值:数值型。返回值=0:调用成功;0:调用失败。参数:n,数值型,1,表示打开行式打印输出;0,则关闭行式打印输出。实例:!SetLinePrinter(1),打开行式打印输出。!SetTime(n1,n2,n3,n4,n5,n6)函数意义:设置当前系统时间 返回值:数值型。返回值=0:调用成功;0:调用失败。参数:n1,数值型,设定年数,小于 1000和大于 99时不变;n2,数值型,设定月数,大于 12和小于 1 时不变;n3,数值型,设定天数,大于 31和小于 1 时不变;n4,数值型,设定小时数,大于 23和小于 0时不变;n5,数值型,设定分钟数,大于 59和

26、小于 0时不变;n6,数值型,设定秒数,大于 59和小于 0 时不变。实例:!SetTime(2000,1,1,1,1,1),设置当前系统时间为 2000年 1 月 1日 1 时 1分 1秒。!Shell()函数说明:此函数在嵌入版中无效,考虑兼容性问题,故保留。!Sleep(mTime)函数意义:在脚本程序中等待 mTime毫秒,然后再执行下条语句。只能在策略中使用,否则会造成系统响应缓慢。返回值:数值型。返回值=0:调用成功;0:调用失败。参数:mTime,数值型,要等待的毫秒数。实例:!Sleep(10)。!TerminateApplication()函数说明:此函数在嵌入版中无效,考虑

27、兼容性问题,故保留。!WaitFor(Dat1,Dat2)函数意义:在脚本程序中等待设置的条件满足,脚本程序再向下执行。只能在策略 中使用,否则造成系统响应缓慢。返回值:数值型。返回值=0:调用成功;0:调用失败。参数:Dat1,数值型,条件表达式,如:D=15。Dat2,数值型,等待条件满足的超时时间,单位:ms。为 0 则无限等待。实例:!WaitFor(D=15,12000),等变量 D的值等于 15后,程序再继续执行,如果在 12秒后条件仍然没有满足,也自动继续执行。此函数通常用于做实验时,等待某个条件满足,然后再接着执行实验流程。他与 Sleep 函数以及 While循环语句、其他循环策略配合,能够实现复杂的流程调度。注意:!WaitFor只能用于策略中,而不能直接在窗口控件的脚本程序中使用。!WinHelp()函数说明:此函数在嵌入版中无效,考虑兼容性问题,故保留。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1