MCGS系统内部函数参考手册 下载本文

MCGS系统内部函数

MCGS内部为用户提供了一些常用的数学函数和对MCGS内部对象操作的函数。组态时,可在表达式中或用户脚本程序中直接使用这些函数。为了与其它名称相区别,系统内部函数的名称一律以“!”符号开头。下面分别介绍各个函数的用途和使用方法。

运行环境操作函数

!CallBackSvr(DatName) 函数意义:调用后台对象

返 回 值:数值型,后台对象的值 参 数:DatName,对象名,数值型

实 例:X=!CallBackSvr(X),调用后台数值型对象X

注 意:本函数在新版本MCGS系统内部,已经无效。为了保留与旧版本的兼容性,暂时保留。

!ChangeLoopStgy(StgyName,n) 函数意义:改变循环策略的循环时间

返 回 值:数值型。返回值=0:调用正常;<>0:调用不正常。

参 数:StgyName,策略名;n,数值型,以毫秒数表示循环策略的循环时间 实 例:!ChangeLoopStgy(报警策略,5000),将报警策略的循环时间改为为5秒

!CloseAllWindow(WndName)

函数意义:关闭所有窗口,如果在字符串”WndName”中指定了一个窗口,则打开这个窗口,关闭其他窗口。如果”WndName”为空串,则关闭所有窗口。 返 回 值:数值型。返回值:=0:调用正常;<>0:调用不正常。 参 数:WndName, 用户窗口名,字符型。

实 例:!CloseAllWindow(“工况图”),关闭除了用户窗口“工况图”以外的其他窗口,若“工况图”窗口没有打开,则在关闭其他窗口的同时打开该窗口 !CloseAllWindow(“”),关闭所有窗口。 !EnableStgy(StgyName,n)

函数意义:打开或关闭某个策略,如报警策略或循环策略等。 返 回 值:数值型。返回值=0:调用正常;<>0:调用不正常。 参 数:StgyName,策略名;

n,数值型,为1时表示打开此策略,为0时表示关闭此策略。 实 例:!EnableStgy(报警策略,1), 打开报警策略;

1

!EnableStgy(报警策略,0), 关闭报警策略,使报警策略无效 !GetDeviceName(Index)

函数意义:按设备顺序取到设备的名字。

返 回 值:字符型。调用成功返回设备名,调用失败时返回空字符串。 参 数:Index,数值型。

实 例:!GetDeviceName(0) ,取0号设备构件的名称。 !GetDeviceState(DevName)

函数意义:按设备名查询设备的状态。 返 回 值:数值型。 =-1调用不正常。

=1 设备处于正常的工作状态。 =2 设备正在工作,但设备不正常。 =3 设备处于停止工作状态,且设备正常。 =4 设备处于停止状态,且设备有错。 参 数:DevName,设备名,字符型。

实 例:!GetDeviceState( OmronPLC),读取设备构件“OmronPLC”的当前工作状态。

!GetStgyName(Index)

函数意义:按运行策略的顺序获得各策略块的名字。 返 回 值:字符型。 参 数:Index,数值型。

实 例:!GetStgyName(0),取0号运行策略的名称。 !GetWindowName(Index)

函数意义:按用户窗口的顺序获得用户窗口的名字。 返 回 值:字符型。 参 数:Index, 数值型。

实 例:!GetWindowName(0) ,读取0号用户窗口的名称。 !GetWindowState(WndName)

函数意义:按照名字取得用户窗口的状态。 返 回 值:数值型。

返回0:用户窗口处于关闭状态。 返回1:用户窗口处于打开状态。 返回2:用户窗口处于隐藏状态。

参 数:WndName,用户窗口名称,字符型。

2

实 例:!GetWindowState(工况图),获得用户窗口“工况图”的状态 !SetActiveX(Activename,n,str)

函数意义:操作指定的动画构件, 向窗口中的ActiveX控件发出控件命令 返 回 值:无

参 数:Activename,字符型,控件名称,用“.”分割窗口名和控件名,如:窗口0.控件1表示在用户窗口“窗口0”中的名为“控件1”的控件。 n,数值型,命令类型,请填1;

str,字符型,命令字符串,具体含义请参照控件帮助。

实 例:!SetActiveX(“窗口0.控件0”,1,”start”),启动窗口0的控件0开始工作。

!SetDevice(DevName,DevOp,CmdStr) 函数意义:按照设备名字对设备进行操作。

返 回 值:数值型。返回值:=0:调用正常;<>0:调用不正常。 参 数:DevName,设备名,字符型; DevOp,设备操作码,数值型;

CmdStr,设备命令字符串,只有当DevOp=6时CmdStr才有意义。 DevOp取值范围及相应含义: 1:启动设备开始工作。

2:停止设备的工作使其处于停止状态。 3:测试设备的工作状态。 4:启动设备工作一次。

5:改变设备的工作周期,CmdStr中包含新的工作周期,单位为ms。 6:执行指定的设备命令,CmdStr中包含指定命令的格式。

实 例:!SetDevice(OmronPLC,1,\\),启动设备构件“OmronPLC”开始工作。 !SetStgy(StgyName)

函数意义:执行StgyName指定的运行策略。

返 回 值:数值型。返回值=0:调用正常;<>0:调用不正常。 参 数:StgyName,策略名,字符型。

实 例:!SetStgy(阀门关闭),执行一次运行策略“阀门关闭”。 !SetWindow(WndName,Op)

函数意义:按照名字操作用户窗口,如打开、关闭、打印。 返 回 值:数值型。返回值:=0:调用正常;<>0:调用不正常。 参 数:WndName, 用户窗口名, 字符型。 Op: 操作用户窗口的方法,数值型。

3

Op=1:打开窗口并使其可见。Op=2:打开窗口并使其不可见。 Op=3:关闭窗口。Op=4:打印窗口。Op=5:刷新窗口。

实 例:!SetWindow(工况图,1),打开用户窗口“工况图”,并使其可见。 !SysWindow()

函数意义:执行该函数后,打开用户窗口管理窗口,在管理窗口中可以选择打开或关闭指定的用户窗口。

返 回 值:数值型。返回值=0:调用成功;<>0:调用失败。 参 数:无。

实 例:!SysWindow() !DisableCtrlAltDel()

函数意义:屏蔽热键Ctrl+Alt+Del的功能。无法打开任务管理器窗口或执行锁定计算机﹑注销﹑关机﹑密码修改等操作。

返 回 值:数值型。返回值=0:调用成功;<>0:调用失败。 参 数:无。

实 例:!DisableCtrlAltDel()

注 意此函数在网络版客户端和WIN98操作系统下无效。 !EnableCtrlAltDel()

函数意义:恢复热键Ctrl+Alt+Del的功能。使用任务管理器关闭不响应的程序或执行锁定计算机﹑注销﹑关机﹑修改密码等,为了维护系统安全的操作。 返 回 值:数值型。返回值=0:调用成功;<>0:调用失败。 参 数:无。

实 例:!EnableCtrlAltDel()

注 意:1. 不要把这两个脚本函数同时使用,否则,看不到任何效果,没有任何意义;

2. 不要把这两个函数放到循环中使用;

3. 在使用这2个脚本函数时,最好与登录密码同时使用,以达到真正的热键屏蔽效果。

4. 此函数在网络版客户端和WIN98操作系统下无效。 !RestartProject()

函数意义:当检查组态工程在运行过程中出现非正常状态,可以调用该函数重新启动运行环境。该功能必须在加密狗生效时方可工作。 返 回 值:无。 参 数:无。

实 例:!RestartProject()

4

数据对象操作函数

!AnswerAlm(DatName)

函数意义:应答数据对象DatName所产生的报警。如对应的数据对象没有报警产生或已经应答,则本函数无效。

返 回 值:数值型,=0为操作成功;<>0为操作失败。 参 数:DatName,数据对象名;

实 例:!AnswerAlm(电机温度),应答数据对象“电机温度”所产生的报警。 !ChangeDataSave(Datname,n)

函数意义:改变数据对象Datname存盘的周期。 返 回 值:数值型,=0为操作成功;<>0为操作失败。 参 数:Datname,数据对象名; n,数值型,以秒表示的存盘间隔时间

实 例:ChangeDataSave(温度,5), 温度的存盘间隔时间为5秒 !ChangeSaveDat(DatName,Num1,Num2)

函数意义:改变数据对象DatName所对应存盘数据的存盘间隔,把Num1小时以前的存盘数据(以当前时间为0点)的存盘间隔改为Num2秒。本操作只对组对象有效,对单个的数据对象无效。当DataName =空字符,或Num1=0或Num2=0时,本操作无效。

返 回 值:数值型,返回值=0:调用正常;<>0:调用不正常。 参 数:DatName:数据对象名。

Num1:数值型时间量,单位:小时。本函数用Num1<0的一些数值来表示一些特殊意义的操作:

=-1 改变当天对应数据对象所有存盘数据的存盘间隔; =-2 改变昨天对应数据对象所有存盘数据的存盘间隔; =-3 改变本星期对应数据对象所有存盘数据的存盘间隔; =-4 改变上星期对应数据对象所有存盘数据的存盘间隔; =-5 改变本月对应数据对象所有存盘数据的存盘间隔; =-6 改变上个月对应数据对象所有存盘数据的存盘间隔; Num2:数值型时间量,新的存盘间隔,单位:秒。

实 例:! ChangeSaveDat(电机1, -2, 5),把组对象“电机1”对应的存盘数据中昨天的存盘数据的存盘间隔改为5秒钟。 !CopySaveDat(Tdb,Sdb,TabName,TimeField,Flag ) 函数意义:拷贝数据库中数据表的数据

返 回 值:开关型,返回值=0:调用正常;返回值<>0:调用不正常。

5

参 数:Tdb,目标数据库名;Sdb,源数据库名;TabName,数据表名; TimeField,定义的时间字段名;Flag,拷贝方式,0:覆盖拷贝;1:添加拷贝。 实 例: !CopySaveDat(Tdb,Sdb,TabName,TimeField,0),将数据库Sdb中表TabName中的数据拷贝到数据库Tdb中,表名仍是TabName,定义的时间字段为TimeField,拷贝方式为覆盖拷贝。 !DelAllSaveDat(DatName)

函数意义:删除数据对象DatName对应的所有存盘数据。 返 回 值:数值型,返回值=0:调用正常;<>0:调用不正常。 参 数:DatName,数据对象名。

实 例:! DelAllSaveDat(电机温度) ,删除数据对象“电机温度”对应的所有存盘数据。

!DelAllAlmDat(DatName)

函数意义:删除数据对象DataName对应的所有报警存盘数据。注意,此函数不能用来删除组对象所对应的报警存盘数据。

返 回 值:数值型,返回值=0:调用正常;<>0:调用不正常。 参 数:DatName:数据对象名;

实 例:!DelAllAlmDat(电机温度),删除数据对象“电机温度”对应的所有报警存盘数据

!DelAlmDat(DatName,Num)

函数意义:删除数据对象DataName对应的报警存储数据中最早Num小时内的报警存储数据,如Num<=0或DatName=空字符,则该函数无效。 返 回 值:数值型,返回值=0:调用正常;<>0:调用不正常。 参 数:DatName:数据对象名; Num:数值型时间值,单位:小时。

实 例:! DelAlmDat(电机温度,1),删除数据对象“电机温度”对应的报警存盘数据中最早1小时内的数据。 !DelSaveDat(DatName,Num)

函数意义:删除数据对象DataName对应的存盘数据中最早Num小时内的存盘数据,如Num<=0或DatName=空字符,则该函数无效。

返 回 值:数值型,返回值=0:调用正常;<>0:调用不正常。 参 数:DatName:数据对象名; Num:数值型时间值,单位:小时。

实 例:! DelSaveDat(电机温度,12) ,删除数据对象“电机温度”对应的存盘数据中最早12小时内的数据。

6

!EnableAlm(name,n)

函数意义:打开/关闭数据对象的报警功能。

返 回 值:数值型,返回值=0:调用正常;<>0:调用不正常。 参 数:name,变量名;

n,数值型,1表示打开报警,0表示关闭报警

实 例:!EnableAlm(电机温度,1), 打开电机温度的报警功能 !EnableDataSave(name,n)

函数意义:打开/关闭数据对象的定时存盘功能。

返 回 值:数值型,返回值=0:调用正常;<>0:调用不正常。 参 数:name,数据对象名;

n,数值型,1表示打开定时存盘,0表示关闭定时存盘 实 例:!EnableDataSave(温度,1), 打开温度的定时存盘 !GetAlmValue(DatName,Value,Flag)

函数意义:读取数据对象DatName报警限值,只有在数据对象DatName的“允许进行报警处理”属性选项被选中后,本函数的操作才有意义。对组对象、字符型数据对象、事件型数据对象本函数无效。对数值型数据对象,用Flag来标识读取何种报警限值。

返 回 值:数值型,返回值=0:调用正常;<>0:调用不正常。 参 数:DatName:数据对象名。

Value:DataName的当前的报警限值,数值型。 Flag:数值型,标志要读取何种限值,具体意义如下: =1下下限报警值; =2 下限报警值; =3 上限报警值; =4 上上限报警值; =5 下偏差报警限值; =6 上偏差报警限值; =7 偏差报警基准值;

实 例:! GetAlmValue(电机温度, Value, 3),读取数据对象“电机温度”的报警上限值,放入数值型数据对象Value中。 !GetEventDT(EvName)

函数意义:返回当前事件和上一次事件之间的时间差,单位为秒。 返 回 值:数值型。返回的时间差 参 数:EvName,事件变量名,事件型。

7

实 例:!GetEventDT(EvName),取事件变量EvName当前事件和上一次事件之间的时间差,单位为秒。 !GetEventP(EvName)

函数意义:取到当前事件的附加说明字符串。 返 回 值:字符型。返回的附加说明字符串。 参 数:EvName,事件变量名,事件型。

实 例:!GetEventP(EvName) ,取事件型变量EvName的当前事件的附加说明字符串。

!GetEventT(EvName)

函数意义:取到当前事件产生的时间,以秒为单位,相对于1980年以来的秒数。如没有事件产生,返回-1。 返 回 值:数值型。

参 数:EvName,事件变量名,事件型。

实 例:!GetEventT(EvName),取事件型变量EvName的当前事件产生时刻。 !MoveAlmDat(DatName,FileName,Num1,Num2,Flag)

函数意义:把数据对象DatName所对应的报警存盘信息中的第Num1小时到Num1+Num2小时内(以当前时间为0点)的报警存盘信息提取出来,转存到FileName所指定的数据库文件中(Access数据库)。当DatName=空字符,或FileName=空字符,或Num2<0时,本函数无效。删除数据对象DatName对应的所有报警存储数据。

返 回 值:数值型,返回值=0:调用正常;<>0:调用不正常。 参 数:DatName:数据对象名。

FileName:新的报警存盘文件名(包括路径),字符型。

Num1:数值型时间量,单位:小时。本函数用Num1<0的一些数值来表示一些特殊意义的操作(此时Num2无效): =-1 转存当天的所有报警信息存盘数据; =-2 转存昨天的所有报警信息存盘数据; =-3 转存本星期的所有报警信息存盘数据; =-4 转存上星期的所有报警信息存盘数据; =-5 转存本月的所有报警信息存盘数据; =-6 转存上个月的所有报警信息存盘数据; Num2:数值型时间量,单位:小时。 Flag:转存标志,数值型。

8

Flag=0时,创建一个新文件(如原文件已存在,则把原文件改名为***.BK1);Flag=1时,在原有的基础上增加新的数据。

实 例:!MoveAlmDat(电机温度, \,-6,0,1),把数据对象“电机温度”对应的报警存盘数据中的上个月的所有报警信息存盘数据转存添加到数据库文件\中。

!MoveSaveDat(DatName,FileName,Num1,Num2,Flag)

函数意义:把数据对象DatName所对应的存盘数据中的第Num1小时到Num1+Num2小时内(以当前时间为0点)的存盘数据提取出来,转存到FileName所指定的数据库文件中(Access数据库)。当DatName=空字符,或FileName=空字符,或Num2<0时,本函数无效。

返 回 值:数值型,返回值=0:调用正常;<>0:调用不正常。 参 数:DatName:数据对象名。

FileName:新的存盘数据文件名(包括路径),字符型。 Num1:数值型时间量,单位:小时。

本函数用Num1<0的一些数值来表示一些特殊意义的操作(此时Num2无效): =-1 转存当天对应数据对象的所有存盘数据; =-2 转存昨天对应数据对象的所有存盘数据; =-3 转存本星期对应数据对象的所有存盘数据; =-4 转存上星期对应数据对象的所有存盘数据; =-5 转存本月对应数据对象的所有存盘数据; =-6 转存上个月对应数据对象的所有存盘数据; Num2:数值型时间量,单位:小时。 Flag:转存标志,数值型。

Flag=0时,创建一个新文件(如原文件已存在,则把原文件改名为***.BK1);Flag=1时,在原有的基础上增加新的数据。

实 例:! MoveSaveDat(电机温度, \,-6,0,1) 把数据对象“电机温度”对应的存盘数据中的上个月的所有存盘数据转存添加到数据库文件“D:\\Temp\\ttt.mdb”中。 !SaveData(DatName)

函数意义:把数据对象DataName对应的当前值存入存盘数据库中。本函数的操作使对应的数据对象的值存盘一次。此数据对象必须具有存盘属性,且存盘时间需设为0秒。否则会操作失败。

返 回 值:数值型,=0为操作成功;<>0为操作失败。 参 数:DatName,数据对象名。

9

实 例:! SaveData(电机1),把组对象“电机1”的所有成员对应的当前值存盘一次。 !SaveDataInit()

函数意义:本操作把设置有“退出时自动保存数据对象的当前值作为初始值”属性的数据对象的当前值存入组态结果数据中作为初始值,防止突然断电而无法保存,以便MCGS下次启动时这些数据对象能自动恢复其值。 返 回 值:数值型,返回值=0:调用正常;<>0:调用不正常。 参 数:无。

实 例:! SaveDataInit()

!SaveDataOnTime(Time,TimeMS,DataName)

函数意义:使用指定时间保存数据。本函数通常用于指定时间来保存数据,实现与通常机制不一样的存盘方法。

返 回 值:数值型,返回值=0:调用正常;<>0:调用不正常。 参 数:Time,整型,使用时间函数转换出的时间量。时间精度到秒。 TimeMS,整型,指定存盘时间的毫秒数。 DataName, 数据对象名。

实 例:t = !TimeStr2I(“2001年2月21日3时2分3秒”) !SaveDataOnTime (t,0,DataGroup), 按照指定时间保存数据对象 !SaveSingleDataInit(Name)

函数意义:本操作把数据对象的当前值设置为初始值(不管该对象是否设置有“退出时自动保存数据对象的当前值作为初始值”属性),防止突然断电而无法保存,以便MCGS下次启动时这些数据对象能自动恢复其值。

返 回 值:数值型,返回值=0:调用正常;<>0:调用不正常。 参 数:Name,数据对象名。

实 例:!SaveSingleDataInit(温度),把温度的当前值设置成初始值。 !SetAlmValue(DatName,Value,Flag)

函数意义:设置数据对象DatName对应的报警限值,只有在数据对象DatName“允许进行报警处理”的属性被选中后,本函数的操作才有意义。对组对象、字符型数据对象、事件型数据对象本函数无效。对数值型数据对象,用Flag来标识改变何种报警限值。

返 回 值:数值型,返回值=0:调用正常;<>0:调用不正常。 参 数:DatName:数据对象名。 Value:新的报警值,数值型。

Flag:数值型,标志要操作何种限值,具体意义如下:

10

=1下下限报警值; =2下限报警值; =3上限报警值; =4上上限报警值; =5下偏差报警限值; =6上偏差报警限值; =7偏差报警基准值;

实 例:! SetAlmValue(电机温度, 200, 3),把数据对象“电机温度”的报警上限值设为200

用户登录操作函数

!ChangePassword()

函数意义:弹出密码修改窗口,供当前登录的用户修改密码。 返 回 值:数值型。返回值=0:调用成功;<>0:调用失败。 参 数:无。

实 例:!ChangePassword() !CheckUserGroup(strUserGroup)

函数意义:检查当前登录的用户是否属于strUserGroup用户组的成员。 返 回 值:数值型。返回值=0:调用成功;<>0:调用失败。 参 数:strUserGroup,字符型,用户组的名称。 实 例:! CheckUserGroup(\管理员组\!Editusers()

函数意义:弹出用户管理窗口,供管理员组的操作者配置用户。 返 回 值:数值型。返回值=0:调用成功;<>0:调用失败。 参 数:无。

实 例:!Editusers() !EnableExitLogon(n)

函数意义:打开/关闭退出时的权限检查 返 回 值:无

参 数:n,数值型,为1时表示在退出时进行权限检查,当权限不足时,会进行提示。为0则退出时不进行权限检查。

实 例:!EnableExitLogon(1), 在退出时进行权限检查 !EnableExitPrompt (n)

函数意义:打开/关闭退出时的提示信息

11

返 回 值:无

参 数:n,数值型,为1时表示在退出时弹出提示信息对话框。为0则退出时不出现信息对话框。

实 例:!EnableExitLogon(1), 在退出时弹出提示信息对话框 !GetCurrentGroup()

函数意义:读取当前登录用户的所在用户组名。

返 回 值:字符型,当前登录用户组名,如没有登录返回空。 参 数:无。

实 例:!GetCurrentGroup() !GetCurrentUser()

函数意义:读取当前登录用户的用户名。

返 回 值:字符型,当前登录用户的用户名,如没有登录返回空。 参 数:无。

实 例:!GetCurrentUser() !LogOff()

函数意义:注销当前用户。

返 回 值:数值型。返回值=0:调用成功;<>0:调用失败。 参 数:无。 实 例:!LogOff() !LogOn()

函数意义:弹出登录对话框。

返 回 值:数值型。返回值=0:调用成功;<>0:调用失败。 参 数:无。 实 例:!LogOn() !GetUserNameByIndex()

函数意义:按索引号取得当前用户名。

返 回 值:字符型。与索引号相对应的当前用户名。 参 数:索引号值。

实 例:!GetUserNameByIndex(0) ,索引为0的用户名称。 !GetGroupNameByIndex()

函数意义:按索引号取得当前用户组名。

返 回 值:字符型。与索引号相对应的当前用户组名。 参 数:索引号值。

实 例:!GetGroupNameByIndex(0) ,索引为0的用户组名称。

12

!GetProjectTotalUsers ()

函数意义:取得当前工程用户总数。 返 回 值:开关型。当前工程用户总数。 参 数:无

实 例: !GetProjectTotalUsers(),激活该函数,取得当前工程的用户总数。

字符串操作函数

!Ascii2I(s)

函数意义:返回字符串s的首字母的Ascii值。 返 回 值:开关型。 参 数:s, 字符型。

实 例:!Ascii2I(“Afd”) =65 !Bin2I(s)

函数意义:把二进制字符串转换为数值。 返 回 值:开关型。 参 数:s, 字符型。 实 例:!Bin2I(“101”) =5 !Format(n,str)

函数意义:格式化数值型数据对象 返 回 值:字符型。

参 数:n,数值型,要格式化的数值;

str,字符型,格式化数值的格式。表示为0.00样式。小数点后的0的个数表示需要格式化出的小数位数。小数点前的0为一个时,表示小数点前根据实际数值显示。当小数点前没有0时,表示为.xx式样,当小数点前的0不止一个时,使用0来填充不够的位数。

实 例:!Format(1.236,\;!Format(1.236,\; !Format(1.236,\; !Hex2I(s)

函数意义:把16进制字符串转换为数值。 返 回 值:开关型。 参 数:s, 字符型。 实 例:!Hex2I (“11”) =17

13

!I2Ascii(s)

函数意义:返回指定Ascii值的字符。 返 回 值:字符型。 参 数:s, 开关型。 实 例:!I2Ascii(65) =”A” !I2Bin(s)

函数意义:把数值转换为二进制字符串。 返 回 值:字符型。 参 数:s,开关型。 实 例:!I2Bin (5) =“101” !I2Hex(s)

函数意义:把数值转换为16进制字符串。 返 回 值:字符型。 参 数:s,开关型。 实 例:!I2Hex (17) =“11” !I2Oct(s)

函数意义:把数值转换为8进制字符串。 返 回 值:字符型。 参 数:s,开关型。 实 例:!I2Oct (9) =“11” !InStr(n,str1,str2)

函数意义:查找一字符串在另一字符串中最先出现的位置 返 回 值:数值型。

参 数:n,数值型,开始搜索的位置; str1,字符串,被搜索的字符串; str2,字符串,要搜索的字符串

实 例:!InStr(3,\,\

实 例:!InStr(1,\,\= 1,表示从str1字符串的第一个字符位置搜索str2字符串,返回最先出现的位置 !Lcase(str)

函数意义:把字符型数据对象str的所有字符转换成小写。 返 回 值:字符型。 参 数:str, 字符型。

实 例:!LCase(\

14

!Left(str,n)

函数意义:字符型数据对象str左边起,取n个字符。 返 回 值:字符型。

参 数:str:字符型,源字符串;n,数值型,取字符个数。 实 例:!Left(\,2) =\!Len(Str)

函数意义:求字符型数据对象str的字符串长度(字符个数)。 返 回 值:数值型。 参 数:str, 字符型。 实 例:!Len(\!Ltrim(str)

函数意义:把字符型数据对象str中最左边的空格剔除。 返 回 值:字符型。 参 数:str, 字符型。

实 例:!LTrim(\!lVal(str)

函数意义:将数值类字符串转化为长整型数值 返 回 值:开关型,转换出的数值。

参 数:str,字符型。要求待转换的字符串为数值类字符串 实 例:!lVal(“12345678”)=12345678 !Mid(str,n,k)

函数意义:从字符型数据对象str左边第n个字符起,取k个字符。 返 回 值:字符型。

参 数:str, 字符型,源字符串; n, 数值型,起始位置; k, 数值型,取字符数。

实 例:!Mid(\,3,2) = \!Oct2I(s)

函数意义:把8进制字符串转换为数值。 返 回 值:开关型。 参 数:s, 字符型。 实 例:!Oct2I (“11”) =9 !Right(str,n)

函数意义:从字符型数据对象str右边起,取n个字符。

15

返 回 值:字符型。

参 数:str,字符型,源字符串;n,数值型,取字符个数。 实 例:!Right(\,2) =\!Rtrim(str)

函数意义:把字符型数据对象str中最右边的空格剔除。 返 回 值:字符型。 参 数:str, 字符型。

实 例:!LTrim(\!Str(x)

函数意义:将数值型数据对象x的值转换成字符串。 返 回 值:字符型。 参 数:x, 数值型。 实 例:!Str(0.712) =\!StrComp(str1,str2)

函数意义:比较字符型数据对象str1和str2是否相等,返回值为0时相等,否则不相等。不区分大小写字母。 返 回 值:数值型。 参 数:str1, 字符型; str2, 字符型。

实 例:!StrComp(\!StrFormat(FormatStr,任意个数变量)

函数意义:格式化字符串,可以格式化任意多个数值。使用方法

为!StrFormat(“%d”,23)或!StrFormat(“%g-%g-%g”,2.3,2.1,2.2)等,类似C语言中的Printf的语法。 返 回 值:字符型。

参 数:FormatStr,字符型,格式化字符串,如:“%d”、 “%g”。后面的参数可以任意多个。

实 例:!StrFormat(\

注 意:输出多个数值时,可以使用在多个格式化字符串之间,添加分格符的方法,区别任意个数的输出变量。如:\、\。 !Trim(str)

函数意义:把字符型数据对象str中左右两端的空格剔除。 返 回 值:字符型。 参 数:str, 字符型。

16

实 例:!Trim(\!Ucase(str)

函数意义:把字符型数据对象str的所有字符转换成大写。 返 回 值:字符型。 参 数:str, 字符型。

实 例:!UCase(\!Val(str)

函数意义:把数值类字符型数据对象str的值转换成数值。 返 回 值:数值型。 参 数:str, 字符型。 实 例:!Val(\

注 意:使用表签控件显示输出时,必需设置\小数位数\的个数;否则系统将以四舍五入的规则,显示输出整数数值。

定时器操作函数

定时器号:系统定时器的序号1—127,MCGS系统内嵌127个系统定时器。系统定时器以秒为定时单位。

!TimerClearOutput(定时器号)

函数意义: 断开定时器的数据输出连接

返 回 值:数值型。返回值=0:调用成功;<>0:调用失败。 参 数:定时器号。

实 例:!TimerClearOutput(1),断开1号定时器的数据输出连接 !TimerRun(定时器号)

函数意义:启动定时器开始工作

返 回 值:数值型。返回值=0:调用成功;<>0:调用失败。 参 数:定时器号

实 例:!TimerRun(1),启动1号定时器工作。 !TimerStop(定时器号) 函数意义:停止定时器工作

返 回 值:数值型。返回值=0:调用成功;<>0:调用失败。 参 数:定时器号

实 例:!TimerStop(1 ),停止1号定时器工作。 !TimerSkip(定时器号,步长值)

函数意义:在计时器当前时间数上加/减指定值

17

返 回 值:数值型。返回值=0:调用成功;<>0:调用失败。 参 数:定时器号;步长值

实 例:!TimerSkip(1,3),1号定时器当前值+3 !TimerReset(定时器号,数值)

函数意义:设置定时器的当前值,由第二个参数设定,第二个参数可以是MCGS变量

返 回 值:数值型。返回值=0:调用成功;<>0:调用失败。 参 数:定时器号;数值

实 例:!TimerReset(1,12),设置1号定时器的值为12 !TimerValue(定时器号,0) 函数意义:取定时器的当前值

返 回 值:将定时器的值以数值型的方式输出(数值格式) 参 数:定时器号

实 例:Data3=!TimerValue(1,0),取定时器1的值给Data3 !TimerStr(定时器号,转换类型)

函数意义:以时间类字符串的形式返回当前定时器的值

返 回 值:字符型变量, 将定时器的值以字符型的方式输出(时间格式) 参 数:定时器号 转换类型值:开关型

= 0:取定时器的值以“00:00”形式输出; = 1:取定时器的值以“00:00:00”形式输出; = 2:取定时器的值以“0 00:00:00”形式输出; = 3:取定时器的值以“0 00:00:00.000”形式输出;

实 例:Time=!TimerStr(1,1),取定时器的值以“00:00:00”形式输出给Time !TimerState(定时器号)

函数意义:取定时器的工作状态

返 回 值:数值型变量,0 - 定时器停止,1 - 定时器运行 参 数:定时器号

实 例:data1=!TimerState(1),取定时器1的工作状态给data1 !TimerSetLimit(定时器号,上限值,参数3)

函数意义:设置定时器的最大值,即设置定时器的上限 返 回 值:数值型。返回值=0:调用成功;<>0:调用失败。

参 数:定时器号;上限值;参数3,1 - 表示运行到60后停止;0 - 表示运行到60后重新循环运行

18

实 例:!TimerSetLimit(1,60,1),设置1号定时器的上限为60,运行到60后停止。

!TimerSetOutput(定时器号,数值型变量)

函数意义:设置定时器的值输出连接的数值型变量

返 回 值:数值型。返回值=0:调用成功;<>0:调用失败。 参 数:定时器号;数值型变量,定时器的值输出连接的数值型变量 实 例:!TimerSetOutput(1,Data0),将1号定时器的数据连接到Data0 !TimerWaitFor(定时器号,数值)

函数意义:等待定时器工作到“数值”指定的值后,脚本程序才向下执行 返 回 值:数值型。返回值=0:调用成功;<>0:调用失败。 参 数:定时器号;数值, 等待定时器工作到指定的值

实 例:!TimerWaitFor(1,55),等定时器工作到55秒后再执行其他操作

系统操作函数

!AppActive(Title)

函数意义:激活指定的应用程序。使用时一般先用!Shell函数启动指定的应用程序,然后用本函数激活应用程序,再用!SendKeys函数发送击键消息,控制应用程序的执行。

返 回 值:数值型。返回值=0:调用成功;<>0:调用失败。

参 数:Title,字符型,字符串表达式,所要激活的应用程序窗口的标题。 实 例:!Shell(\,6) ! AppActive(“Microsorft Excel – Book1”)

说 明:AppActivate 语句将焦点移动到命名的应用程序或窗口,但并不影响焦点是否最大化或最小化。当用户采取行动改变焦点或将窗口关闭时,就会将焦点从活动的应用程序窗口移动出去。可用 Shell 函数启动一个应用程序并设置窗口样式。在决定激活哪个应用程序时,将 title 与每一个运行中的应用程序的标题字符串进行比较。如果没有完全匹配,就激活任何这样的应用程序,其标题字符串以 title 开头。如果以 title 命名的应用程序有很多实例,则激活任意一个实例。 !Beep()

函数意义:发出嗡鸣声。

返 回 值:数值型。返回值=0:调用成功;<>0:调用失败。 参 数:无。 实 例:!Beep()

19

!EnableDDEConnection(DatName,n) 函数意义:启动/停止数据对象的DDE连接。

返 回 值:数值型。返回值=0:调用失败;<>0:调用成功。 参 数:DatName,数据对象名;

n,数值型,为1时表示启动数据对象的DDE连接。为0时则停止数据对象的DDE连接。

实 例:!EnableDDEConnection(温度,1),启动数据对象“温度”的DDE连接。 !EnableDDEInput(DatName,n)

函数意义:启动/停止数据对象的DDE连接时外部数值的输入。 返 回 值:数值型。返回值=0:调用成功;<>0:调用失败。 参 数:DatName,数据对象名;

n,数值型,为1时表示启动数据对象的DDE连接,接收外部数值的输入。为0时则停止数据对象的DDE连接过程中外部数值的输入。

实 例:!EnableDDEConnection(压力,1),启动数据对象“压力”的DDE连接,接收外部数值的输入。

!EnableDDEOutput (DatName,n)

函数意义:启动/停止数据对象的DDE连接时向外部输出数值。 返 回 值:数值型。返回值=0:调用成功;<>0:调用失败。 参 数:DatName,数据对象名;

n,数值型,为1时表示启动数据对象的DDE连接时向外部输出数值的功能。为0时则停止数据对象的DDE连接时向外部输出数值的功能。

实 例:!EnableDDEConnection(压力,1),启动数据对象“压力”通过 DDE连接向外部输出数值的功能。 !LinePrtOutput (str)

函数意义:输出到行式打印机。

返 回 值:数值型。返回值=0:调用成功;<>0:调用失败。 参 数:str,字符型。

实 例:!LinePrtOutput (“ABCDEFG”),将字符串输出到行式打印机。 !PlaySound(SndFileName,Op) 函数意义:播放声音文件。

返 回 值:数值型。返回值=0:调用成功;<>0:调用失败。 参 数:SndFileName,字符型,声音文件的名字。 Op,开关型 = 0:停止播放。

20

= 1:同步播放,播放完毕后再返回(在播放完成之前不能进行其它的操作)。 = 2:播放一遍,启动播放,立即返回。 = 3:循环播放,启动循环播放后立即返回。

实 例:!PlaySound(“c:\\ring.wav”,1)播放声音文件。 !SendKeys(string)

函数意义:将一个或多个按键消息发送到活动窗口,就如同在键盘上进行输入一样。

返 回 值:数值型。返回值=0:调用成功;<>0:调用失败。 参 数:string,字符串表达式,指定要发送的按键消息。

实 例:!SendKeys(\,给当前激活的程序发送Alt+F4击键消息。 说 明:每个按键由一个或多个字符表示。为了指定单一键盘字符,必须按字符本身的键。例如,为了表示字母 A,可以用 \作为 string。为了表示多个字符,就必须在字符后面直接加上另一个字符。例如,要表示 A、B 及 C,可用 \作为 string。对 SendKeys 来说,加号 (+)、插入符 (^)、百分比符号 (%)、上划线 (~) 及圆括号 ( ) 都具有特殊意义。为了指定上述任何一个字符,要将它放在大括号 ({}) 当中。例如,要指定正号,可用 {+} 表示。为了指定大括号字符,请使用 {{} 及 {}}。为了在按下按键时指定那些不显示的字符,例如:ENTER 或 TAB 以及那些表示动作而非字符的按键,请使用下列代码: 按键

BACKSPACE BREAK

CAPS LOCK DOWN ARROW END ESC HOME ENTER

{BACKSPACE}, {BS}, 或 {BKSP} {BREAK} {CAPSLOCK} {DOWN} {ENTER}或 ~ {ESC}

代码

DEL or DELETE {DELETE} 或 {DEL}

{END}

{HOME}

{LEFT} {NUMLOCK} {PGDN}

INS or INSERT {INSERT} 或 {INS} LEFT ARROW NUM LOCK PAGE DOWN

21

PAGE UP

{PGUP} {RIGHT} {SCROLLLOCK}

RIGHT ARROW SCROLL LOCK TAB F1 F2 F3 F4 F5 F6 F7 F8

UP ARROW

{TAB} {UP} {F1} {F2} {F3} {F4} {F5} {F6} {F7} {F8}

F9 F10 F11 F12 F13 F14 F15 F16

{F9} {F10} {F11} {F12} {F13} {F14} {F15} {F16}

为了指定那些与 SHIFT、CTRL 及 ALT 等按键结合的组合键,可在这些按键码的前面放置一个或多个代码,这些代码列举如下: 按键 SHIFT CTRL ALT

^ %

+

代码

为了说明在按下其它按键时应同时按下 SHIFT、CTRL、及 ALT 的任意组合键,请把那些按键的码放在括号当中。例如,为了说明按下 E 与 C 的时候同时按下 SHIFT 键,请使用 \。为了说明在按下 E 的时候同时按下 SHIFT 键,但接着按 C 而不按 SHIFT,则使用\。

注 意:不能用 SendKeys 将按键消息发送到这样一个应用程序,这个应用程序并没有被设计成在 Microsoft Windows 中运行。 Sendkeys 也无法将 PRINT SCREEN 按键 {PRTSC} 发送到任何应用程序。 !SetLinePrinter(n)

函数意义:打开/关闭行式打印输出。

返 回 值:数值型。返回值=0:调用成功;<>0:调用失败。

22

参 数:n,数值型,1,表示打开行式打印输出;0,则关闭行式打印输出。 实 例:!SetLinePrinter(1),打开行式打印输出。 !SetTime(n1,n2,n3,n4,n5,n6) 函数意义:设置当前系统时间

返 回 值:数值型。返回值=0:调用成功;<>0:调用失败。 参 数:n1,数值型,设定年数,小于1000和大于9999时不变; n2,数值型,设定月数,大于12和小于1时不变; n3,数值型,设定天数,大于31和小于1时不变; n4,数值型,设定小时数,大于23和小于0时不变; n5,数值型,设定分钟数,大于59和小于0时不变; n6,数值型,设定秒数,大于59和小于0时不变。

实 例:!SetTime(2000,1,1,1,1,1), 设置当前系统时间为2000年1月1日1时1分1秒。

!Shell(pathname,windowstyle)

函数意义:启动并执行指定的外部可执行文件。

返 回 值:数值型。返回值=0:调用成功;=1:调用失败。

参 数:pathname,字符型,要执行的外部应用程序的名称,以及任何必需的参数或命令行变量,包括路径。

windowstyle,数值型,指定被执行的外部应用程序窗口的状态。 windowstyle 命名参数有以下这些值:

常量值描述

VbHide 0 窗口被隐藏,且焦点会移到隐式窗口。 VbNormalFocus 置。

VbMinimizedFocus VbMaximizedFocus VbNormalNoFocus VbMinimizedNoFocus 口仍然保持活动。

实 例:!Shell(\,3),启动Excel,并使其最大化显示。

2 窗口会以一个具有焦点的图标来显示。 3 窗口是一个具有焦点的最大化窗口。 4 窗口会被还原到最近使用的大小和位置,而当

6 窗口会以一个图标来显示。而当前活动的的窗 1 窗口具有焦点,且还原到它原来的大小和位

前活动的窗口仍然保持活动。

23

说 明:如果Shell 函数成功地执行了所要执行的文件,则它会返回程序的任务ID。任务ID是一个唯一的数值,用来指明正在运行的程序。

注 意:Shell 函数是以异步方式来执行其它程序的。也就是说,用Shell 启动的程序可能还没有完成执行过程,就已经执行到 Shell 函数之后的语句。 !Sleep(mTime)

函数意义:在脚本程序中等待mTime毫秒,然后再执行下条语句。只能在策略中使用,否则会造成系统响应缓慢。

返 回 值:数值型。返回值=0:调用成功;<>0:调用失败。 参 数:mTime,数值型,要等待的毫秒数。 实 例:!Sleep(10)

!TerminateApplication(AppName,Timeout) 函数意义:强行关闭指定的应用程序。

返 回 值:数值型。返回值=0:调用成功;<>0:调用失败。

参 数:AppName,字符型,应用程序标题名,也就是显示在任务栏上的应用程序的名字。

Timeout,开关型,等待超时时间,以秒为单位

实 例:!TerminateApplication(\Excel - Book1\关闭microsoft excel - book1 !WaitFor (Dat1,Dat2)

函数意义:在脚本程序中等待设置的条件满足,脚本程序再向下执行。只能在策略中使用,否则造成系统响应缓慢。

返 回 值:数值型。返回值=0:调用成功;<>0:调用失败。 参 数:Dat1,数值型,条件表达式,如:D=15。

Dat2,数值型,等待条件满足的超时时间,单位:ms。为0则无限等待。 实 例:!WaitFor(D=15,12000),等变量D的值等于15后,程序再继续执行,如果在12秒后条件仍然没有满足,也自动继续执行。此函数通常用于做实验时,等待某个条件满足,然后再接着执行实验流程。他与Sleep函数以及While循环语句、其他循环策略配合,能够实现复杂的流程调度。

注 意:!WaitFor只能用于策略中,而不能直接在窗口控件的脚本程序中使用。 !WinHelp(HelpFileName,uCommand,dwData) 函数意义:调用Windows帮助文件。

返 回 值:数值型。返回值=0:调用成功;<>0:调用失败。 参 数:HelpFileName,字符型,帮助文件名。 Ucommand,开关型,

24

=1,显示由上下文编号标识的特定主题的帮助。 =2,关闭帮助窗口。 =3,弹出帮助内容。 =11,弹出查找帮助对话框。

当Ucommand =2,3,11时,dwData = 0,开关型 当Ucommand=1时,dwData为上下文编号的数值

实 例:!WinHelp(“c:\\1.hlp”,3,0)打开帮助文件C:\\1.hlp !Navigate(WebAddress)

函数意义:引导浏览器浏览其他的网页,只有在使用www版进行IE浏览时有效。 返 回 值:开关型,返回值=0,调用成功;返回值<>0,调用失败 参 数:WebAddress,字符型,所要浏览的网址。 实 例:!Navigate(“www.mcgs.com.cn”). !DDEReconnect( )

函数意义:重新检查并恢复所有的DDE连接。

返 回 值:开关型,返回值=0,调用成功;返回值<>0,调用失败 参 数:无参数

实 例:!DDEReconnect( ) !ShowDataBackup( )

函数意义:显示数据备份恢复对话框,需要先定义有存盘属性的数据对象,再启动存盘数据备份设置,此函数才有效。

返 回 值:数值型,返回值=0,调用成功;返回值<>0,调用失败 参 数:无参数

实 例:!ShowDataBackup( ).

数学函数

!Atn(x)

函数意义:反正切函数。

返 回 值:数值型,用弧度表示。 参 数:x,数值型。 实 例:!Atn(1) =0.785398 !Arcsin(x)

函数意义:反正弦函数。

返 回 值:数值型,用弧度表示。

参 数:x,数值型。范围为-1~1之间的值。

25

实 例:!arcsin(1) =1.5708 !Arccos(x)

函数意义:反余弦函数。

返 回 值:数值型,用弧度表示。

参 数:x,数值型。范围为-1~1之间的值。 实 例:!arccos(0.5)=1.0472 !Cos(x)

函数意义:余弦函数。 返 回 值:数值型。

参 数:x,数值型,用弧度表示。 实 例:!Cos(3.14159)=-1.0 !Sin(x)

函数意义:正弦函数。 返 回 值:数值型。

参 数:x,数值型,用弧度表示。 实 例:!Sin(3.14159)=0.0 !Tan(x)

函数意义:正切函数。 返 回 值:数值型。

参 数:x,数值型,用弧度表示。 实 例:!Tan(3.14159)=0.0 !Exp(x)

函数意义:指数函数。 返 回 值:数值型。 参 数:x,数值型。

实 例:!Exp(2.3020585093)=10.0 !Log(x)

函数意义:对数函数。 返 回 值:数值型。 参 数:x,数值型。 实 例:!Log(10)=2.302 !Sqr(x)

函数意义:平方根函数。 返 回 值:数值型。

26

参 数:x,数值型。 实 例 :!Sqr(4.0)=2.0 !Abs(x)

函数意义:绝对值函数。 返 回 值:数值型。 参 数:x,数值型。

实 例 :!Abs(-3.14159)=3.14159 !Sgn(x)

函数意义:符号函数。

返 回 值:数值型。正数的返回值为1,负数的返回值为-1,0的返回值为0。 参 数:x,数值型。

实 例:!Sgn(-10) = -1;!Sgn(10) = 1;!Sgn(0) = 0 !BitAnd(x,y) 函数意义:按位与。 返 回 值:开关型。

参 数:x,开关型,y,开关型。 实 例:!BitAnd(3,4) =0 !BitOr(x,y)

函数意义:按位或。 返 回 值:开关型。 参 数:x,开关型。Y,开关型 实 例:!BitOr(3,4) =7 !BitXor(x,y)

函数意义:按位异或 返 回 值:开关型。 参 数:x,开关型。Y,开关型 实 例:!BitXor(3,4) = 7 !BitClear(x,y)

函数意义:清除指定位,位置从0开始计算,,到y位止。 返 回 值:开关型。 参 数:x,开关型。Y,开关型

实 例:!BitClear(3,1) = 1,把第2位清空。 !BitSet(x,y)

函数意义:设置指定位,位置从0开始计算,将第y位置1。

27

返 回 值:开关型。 参 数:x,开关型。Y,开关型 实 例:!BitSet (3,2) = 7 !BitNot(x)

函数意义:按位取反 返 回 值:开关型。 参 数:x,开关型

实 例:!BitNot(0) = 0xffffffff !BitTest(x,y)

函数意义:检测指定位是否为1,位置从0开始计算,到y位止。 返 回 值:开关型。=0,表示该位不为1;=1,表示该位为1; 参 数:x,开关型。Y,开关型 实 例:!BitTest(3,2) = 0 !BitLShift(x,y)

函数意义:左移。位置从0位开始移动,向左移动y位。 返 回 值:开关型。 参 数:x,开关型。Y,开关型 实 例:!BitLShift(3,1) = 6 !BitRShift(x)

函数意义:右移。位置从0位开始移动,向右移动y位。 返 回 值:开关型。 参 数:x,开关型。Y,开关型 实 例:!BitRShift(3,1) = 1 !Rand(x,y)

函数意义:生成随机数,随机数的范围在x和y之间。 返 回 值:数值型。

参 数:x,数值型。Y, 数值型 实 例:!Rand(3,4) = 3.1

文件操作函数

注意:文件操作函数中所涉及到文件的路径均为绝对路径 !FileAppend(strTarget ,strSource)

函数意义:将文件strSource中的内容添加到文件strTarget后面,使两文件合并为一个文件。

28

返 回 值:开关型。

参 数:strTarget,字符型,目标文件,需要写绝对路径; strSource,字符型,源文件,需要写绝对路径。 实 例:!FileAppend(“d:\\a.txt”,”d:\\b.txt”)

实例说明:将D盘下文件b.txt合并到文件a.txt的后面。若a.txt不存在,则会自动新建一个文件。

!FileCopy(strSource ,strTarget)

函数意义:将源文件strSource复制到目标文件strTarget,若目标文件已存在,则将目标文件覆盖。 返 回 值:开关型;

返回0,操作不成功;返回非0值,操作成功。 参 数:strSource,字符型,源文件; strTarget,字符型,目标文件。

实 例:!FileCopy(“d:\\a.txt”,”d:\\b.txt”) 实例说明:将D盘下文件a.txt复制到b.txt。 !FileDelete(strFilename)

函数意义:将strFilename指定的文件删除。 返 回 值:开关型;

返回0,操作不成功;返回非0值,操作成功。 参 数:str1,字符型,将被删除的文件。 实 例:!FileDelete(“d:\\a.txt”) 实例说明:删除将D盘下文件a.txt。

!FileFindFirst(strFilename,objName,objSize,objAttrib) 函数意义:查找第一个名字为strFilename的文件或目录。 返 回 值:开关型; 返回-1,操作不成功;

返回其它值:操作成功,返回值为一个句柄,该值为以后的查找提供根据。 参 数:strFilename,字符型,要查找的文件的文件名(文件名中可以包含文件通配符:*和?);

objAttrib,数值型对象名,函数调用成功后,保存查找结果的属性: 若objAttrib = 0,则查找结果为一个文件; 若objAttrib = 1,则查找结果为一个目录。

objSize,数值型对象名,函数调用成功后,保存查找结果的大小; objname,字符型对象名,函数调用成功后,保存查找结果的名称。

29

实 例:!FileFindFirst(“d:\\a*.txt”,Name,Size,Attrib)

实例说明:查找D盘下第一个名字为:a*.txt的文件或目录,将查找结果的属性存入Attrib数值变量中,大小存入Size数值变量中,名字存入Name数值变量中。

!FileFindNext(FindHandle,objName,objSize,objAttrib)

函数意义:根据FindHandle提供的句柄,继续查找下一个文件或目录。 返 回 值:开关型;

返回0:查找不成功;返回非0值:查找成功。

参 数:FindHandle,开关型,由函数!FileFindFirst返回。 objAttrib,数值型对象名,函数调用成功后,保存查找结果的属性: 若objAttrib = 0,则查找结果为一个文件; 若objAttrib = 1,则查找结果为一个目录。

objSize,数值型对象名,函数调用成功后,保存查找结果的大小; objName,字符型对象名,函数调用成功后,保存查找结果的名称。 实 例:!FileFindNext(aa, Name,Size,Attrib)

实例说明:根据句柄aa,继续查找下一个文件或目录,其中,aa由函数!FileFindFirst的返回值提供。

注 意:!FileFindFirst()函数与!FileFindNext()函数必须在同一个脚本块中编写才生效。

!FileIniReadValue(strIniFilename,strSection,strItem,objResult) 函数意义:从配置文件(.ini文件)中读取一个值。 返 回 值:开关型。

参 数:strIniFilename,字符型,配置文件的文件名; strSection,字符型,要读取数据所在的节的名称; strItem,字符型,要读取数据的项名;

objResult,数值型对象名,用于保存读到的数据;

实 例:!FileIniReadValue(“d:\\a.ini”,”system”,”memory”,result) 实例说明:从配置文件a.ini中的system节中读取memory项的值,并将该值放入result数据对象中。

!FileIniWriteValue(strIniFilename,strSection,strItem,objResult) 函数意义:向配置文件(.ini文件)中写入一个值。 返 回 值:开关型。

参 数:strIniFilename,字符型,配置文件的文件名; strSection,字符型,要读取数据所在的节的名称;

30

strItem,字符型,要读取数据的项名;

objResult,数值型对象名,用于保存读到的数据;

实 例:!FileIniWriteValue(“d:\\a.ini”,”system”,”memory”,result) 实例说明:将数据对象result的值写入到配置文件a.ini中的system节中memory项中。

!FileMove(strSource,strTarget)

函数意义:将文件strSource移动并改名为strTarget。 返 回 值:开关型;

返回0:操作失败;返回非0值:操作成功。 参 数:strSource,字符型,源文件; strTarget,字符型,目标文件。

实 例:!Filemove(“d:\\a.txt”,”d:\\b.txt”)

实例说明:将D盘下文件a.txt移至同一目录下,并改名为b.txt。 注 意:如果目标文件已存在,直接返回0,操作失败。 !FileReadFields(strFilename,lPosition,任意个数变量)

函数意义:从strFilename指定的文件中读出CSV(逗号分隔变量)记录。 返 回 值:开关型。

参 数:strFilename,字符型,文件名; lPosition,数值型,数据开始位置;

实 例:!FileReadFields(“d:\\a.csv”,200,var1,var2,var3,var4)

实例说明:从文件a.csv中的第200个字节开始,读取4个数据,分别存入变量:var1,var2,var3,var4中。

!FileReadStr(strFilename,lPosition,lLength,objResult)

函数意义:从strFilename指定文件(需为.dat文件)中的lPosition,位置开始,读取lLength个字节,或一整行,并将结果保存到objResult字符型数据对象中。

返 回 值:开关型

参 数:strFilename,字符型,文件名; lPosition,开关型,数据开始位置;

lLength,开关型,要读取数据的字节数,若小于或等于0,则读取整行; objResult,字符型数据对象名,用于存放结果的数据对象。 实 例:!FileReadStr(“d:\\a.dat”,100,20,abc)

实例说明:从D盘下文件a.dat中的第100个字节开始,读取20个字节的数据,结果存入字符型变量abc中。

31

!FileSplit(strSourceFile,strTargetFile, FileSize) 函数意义:此函数用于把一个文件切开为几个文件 返 回 值:开关型

参 数:strSourceFile,字符型,准备切开的文件名; strTargetFile,字符型,切开后的文件名;

FileSize,数值型,切开的文件的最大大小,单位是MB。 实 例:!FileSplit(\

实例说明:此时函数将把文件d:\\1.txt切开为大小是1MB的文件,并存放在组态软件work下,名称分别为spl000.spl,spl001.spl,spl002.spl等等 !FileWriteFields(strFilename,lPosition,任意个数变量)

函数意义:向strFilename指定的文件中写入CSV(逗号分隔变量)记录。 返 回 值:开关型。

参 数:strFilename,字符型,文件名; lPosition,开关型,数据开始位置;

= 0,表示在文件开头;<>0,表示在文件结尾;

实 例:! FileWriteFields (“d:\\a.csv”,200,var1,var2,var3,var4) 实例说明:向D盘文件a.csv的文件结尾,写入4个数据,分别为变量:var1,var2,var3,var4的值。

注 意:在文件开头写入数据时,将覆盖原有内容;在文件结尾写入数据时,将在原有基础上添加,并不覆盖原来的内容。 !FileWriteStr(strFilename,lPosition,str,Rn)

函数意义:向指定文件strFilename中的lPosition位置开始,写入一个字符串,或一整行。 返 回 值:开关型

参 数:strFilename,字符型,文件名;

lPosition,开关型,数据开始位置;= 0,表示在文件开头;<>0,表示在文件结尾;

str,字符型,要写入的字符串;

Rn,开关型,是否换行;0,表示不换行;1,表示换行; 实 例:!FileWriteStr (\

实例说明:在D盘下a.txt文件的开头(当a为0时)或结尾(当a为1时)写入一个字符串\,如果input为1时,在此字符串后面添加回车换行,否则不添加。

32

注 意:在文件开头写入字符串时,将覆盖原有内容;在文件结尾写入字符串时,将在原有基础上添加,并不覆盖原来的内容。

ODBC数据库函数

注意:MCGS从SQL Server读取数据时,是按照键值排列的,而不是输入数据的先后顺序。

!ODBCOpen(strDatabastName,strSQL,strName)

函数意义:打开strDatabastName指定的数据库中的数据表,并为该数据库连接指定一个名字strName,以方便以后对该数据库进行操作。 返 回 值:开关型, 返回0:操作成功;

返回-1:无法打开指定的数据库; 返回-2:指定的数据库已经打开。

参 数:strDatabastName,字符型,数据库名; strSQL,字符型,SQL语句; strName,字符型,指定数据连接名。

实 例:!ODBCOpen(\

实例说明:打开一个ODBC数据库dddd中的数据表Table1,并将该数据库连接命名为DB1。

!ODBCSeekToPosition(strName,lPosition)

函数意义:跳转到数据库strName的指定的行lPosition。 返 回 值:开关型,

返回0:操作成功;返回-1:操作不成功。 参 数:strName,字符型,数据库连接名。 lPosition,开关型,指定跳转的行。 实 例:! ODBCSeekToPosition(“DB1”,20) 实例说明:跳转到数据库DB1的第20行。 !ODBCClose(strName)

函数意义:关闭strName指定的数据连接。 返 回 值:开关型,

返回0:操作成功;返回-1:操作不成功。 参 数:strName,字符型,数据库连接名。 实 例:!ODBCClose(“DB1”) 实例说明:关闭数据库连接DB1。

33

!ODBCConnectionCloseAll()

函数意义:关闭当前使用的所有的ODBC数据库。 返 回 值:开关型; 参 数:无

实 例:!ODBCConnectionCloseAll()

实例说明:关闭当前使用的所有的ODBC数据库。 !ODBCConnectionCount()

函数意义:获取当前使用的所有ODBC数据库的个数。 返 回 值:开关型,当前使用的ODBC数据库的个数; 参 数:无;

实 例:!ODBCConnectionCount()

实例说明:获取当前使用的所有ODBC数据库的个数。 !ODBCConnectionGetName(lID)

函数意义:获取由lID指定的ODBC数据库的名称; 返 回 值:字符型,指定数据库的名称; 参 数:lID,开关型;

实 例:!ODBCConnectionGetName(aa)

实例说明:获取由开关型变量aa指定的ODBC数据库的名称。 !ODBCDelete(strName)

函数意义:删除由strName指定的数据库的当前行; 返 回 值:开关型; 返回0:操作成功;

返回值<0:操作不成功;但若删除的是最后一条记录,则返回值为-3 参 数:strName,字符型,数据连接名; 实 例:!ODBCDelete(“DB1”) 实例说明:删除数据库DB1的当前行。 !ODBCEdit(strName)

函数意义:在由strName指定的ODBC数据库中,用当前连接的数据对象的值修改数据库当前行; 返 回 值:开关型;

返回0:操作成功;返回值<0:操作不成功; 参 数:strName,字符型,数据连接名; 实 例:!ODBCEdit(“DB1”)

实例说明:用当前连接的数据对象的值修改数据库DB1的当前行。

34

!ODBCExecute(strName,strSQL)

函数意义:在打开的数据strName中,执行一条SQL语句strSQL;在使用该函数时应注意,对ODBC数据库进行修改后,要想看到修改的结果,必须关闭数据库并重新打开它; 返 回 值:开关型;

返回0:操作成功;返回值<0:操作不成功; 参 数:strName,字符型,数据连接名; strSQL,字符型,SQL语句;

实 例:!ODBCExecute(\('2001-05-31 12:00:00')\

实例说明: 在已经打开的数据库DB1中,执行SQL语句“INSERT INTO table1 (MCGS_Time) VALUES ('2001-05-31 12:00:00')”。 !ODBCGetCurrentValue(strName)

函数意义:获取数据库strName当前行的值; 返 回 值:开关型;

返回0:操作成功;返回值<0:操作不成功; 参 数:strName,字符型,数据连接名; 实 例:!ODBCGetCurrentValue(“DB1”) 实例说明:获取数据库DB1当前行的值; !ODBCGetRowCount(strName)

函数意义:获取ODBC数据库strName的行数; 返 回 值:开关型;

返回值>0:操作成功,其值为数据库的行数; 返回-1:操作不在功;

参 数:strName,字符型,数据连接名; 实 例:!ODBCGetRowCount(“DB1”) 实例说明:获取ODBC数据库DB1的行数。 !ODBCIsBOF(strName)

函数意义:判断ODBC数据库strName的当前位置是否位于所有数据的最前面; 返 回 值:开关型;

返回1:操作成功,且当前位置位于所有数据的最前面; 返回0:操作成功,但当前位置不是位于所有数据的最前面; 返回-1:操作不成功;

参 数:strName,字符型,数据连接名;

35

实 例:!ODBCIsBOF(“DB1”)

实例说明:若数据库DB1的当前位置位于所有数据的最前面,则返回1,否则返回0,若出错,则返回-1。

注 意:只有当移动到数据库的最前面(使用!ODBCMoveFirst)之后,再向前移动一个记录(使用!ODBCMovePrev)才会到达数据库记录集的开始位置(BOF);向后移动记录(使用!ODBCMoveNext)一直到超过所有纪录的尾部,才会到达数据库记录集的结束位置(EOF),出现BOF或EOF后,必须使用!ODBMoveFirst或!ODBC MoveLast才能移到有效位置。 !ODBCIsEOF(strName)

函数意义:判断ODBC数据库strName的当前位置是否位于所有数据的最后面; 返 回 值:开关型;

返回1:操作成功,且当前位置位于所有数据的最后面; 返回0:操作成功,但当前位置不是位于所有数据的最后面; 返回-1:操作不成功;

参 数:strName,字符型,数据连接名; 实 例:!ODBCIsEOF (“DB1”)

实例说明:若数据库DB1的当前位置位于所有数据的最后面,则返回1,否则返回0,若出错,则返回-1。 !ODBCMoveFirst(strName)

函数意义:移动到数据库strName的最前面; 返 回 值:开关型;

返回0:操作成功;返回值<0:操作不成功; 参 数:strName,字符型,数据连接名; 实 例:!ODBCMoveFirst (“DB1”) 实例说明:移动到数据库DB1的最前面; !ODBCMoveLast(strName)

函数意义:移动到数据库strName的最后面; 返 回 值:开关型;

返回0:操作成功;返回值<0:操作不成功; 参 数:strName,字符型,数据连接名; 实 例:!ODBCMoveLast(“DB1”) 实例说明:移动到数据库DB1的最后面; !ODBCMoveNext(strName)

函数意义:移动到数据库strName的下一个记录;

36

返 回 值:开关型;

返回0:操作成功;返回值<0:操作不成功; 参 数:strName,字符型,数据连接名; 实 例:!ODBCMoveNext (“DB1”)

实例说明:移动到数据库DB1的下一个记录; !ODBCMovePrev(strName)

函数意义:移动到数据库strName的上一个记录; 返 回 值:开关型;

返回0:操作成功;返回值<0:操作不成功; 参 数:strName,字符型,数据连接名; 实 例:!ODBCMovePrev (“DB1”)

实例说明:移动到数据库DB1的上一个记录; !ODBCBind(strName,任意个数变量)

函数意义:把若干数据对象绑定到ODBC数据库上; 返 回 值:开关型;

返回0:操作成功;返回-1:操作不成功;返回-3:数据库中记录条数为0; 参 数:strName,字符型,数据连接名; 实 例:!ODBCBind(“DB1”,aa,bb,cc)

实例说明:把数据对象aa,bb,cc绑定到ODBC数据库DB1上; !ODBCAddnew(strName)

函数意义:在ODBC数据库中,用当前连接的数据对象的值添加一行;应注意键值不能相同; 返 回 值:开关型;

返回0:操作成功;返回-1:操作不成功; 参 数:strName,字符型,数据连接名; 实 例:!ODBCAddnew(“DB1”)

实例说明:在数据库DB1中,用当前连接的数据对象的值添加一行;

配方操作函数

!RecipeLoad(strFilename ,strRecipeName) 函数意义:装载配方文件; 返 回 值:开关型;

返回0:操作成功;返回值<0:操作不成功; 参 数:strFilename,字符型,配方文件名;

37

strRecipeName,字符型,配方表名; 实例:

!RecipeLoad(\4 )

实例说明:装载一个配方文件,文件名为:\,装载后的配方表名为:rec,并将它绑定到变量t1,t2,t3,t4上。 !RecipeMoveFirst(strRecipeName) 函数意义:移动到第一个配方记录; 返 回 值:开关型;

返回0:操作成功;返回值<0:操作不成功; 参 数:strRecipeName,字符型,配方表名; 实 例:!RecipeMoveFirst(“rec”)

实例说明:移动到配方表rec的第一个配方记录。 !RecipeMoveLast(strRecipeName) 函数意义:移动到最后一个配方记录; 返 回 值:开关型;

返回0:操作成功;返回值<0:操作不成功; 参 数:strRecipeName,字符型,配方表名; 实 例:!RecipeMoveLast(“rec”)

实例说明:移动到配方表rec的最后一个配方记录。 !RecipeMoveNext(strRecipeName) 函数意义:移动到下一个配方记录; 返 回 值:开关型;

返回0:操作成功;返回值<0:操作不成功; 参 数:strRecipeName,字符型,配方表名; 实 例:!RecipeMoveNext(“Rec”)

实例说明:移动到配方表Rec的下一个配方记录。 !RecipeMovePrev(strRecipeName) 函数意义:移动到前一个配方记录; 返 回 值:开关型;

返回0:操作成功;返回值<0:操作不成功; 参 数:strRecipeName,字符型,配方表名; 实 例:!RecipeMovePrev(“Rec”)

实例说明:移动到配方表Rec的前一个配方记录。

38

!RecipeSave(strRecipeName,strFilename) 函数意义:保存配方文件; 返 回 值:开关型;

返回0:操作成功;返回值<0:操作不成功; 参 数:strRecipeName,字符型,配方表名; strFilename,字符型,配方文件名;

实 例:!RecipeSave(“Rec”,”d:\\1.csv”)

实例说明:保存一个配方文件,文件名为:d:\\1csv,要保存的配方表名为:Rec。 注 意:进行配方的编辑,添加,修改,删除,排序等操作后,都要进行保存配方操作才有效。

!RecipeSeekTo(strRecipeName,DataName,str) 函数意义:查找配方; 返 回 值:开关型;

返回值=0:操作成功;返回值<0:操作不成功; 参 数:strRecipeName,字符型,配方表名; DataName,数据对象名;

Str,字符型,数据对象对应的值; 实 例:!RecipeSeekTo(\

实例说明:跳转到配方表Rec,t1对应的值为111处,若有多处匹配,则跳转到第一个匹配的配方记录。

!RecipeSeekToPosition(strRecipeName,rPosition)

函数意义:跳转到配方表strRecipeName的指定的记录rPosition。 返 回 值:开关型;

返回0:操作成功;返回值<0:操作不成功; 参 数:strRecipeName,字符型,配方表名; rPosition,开关型,指定跳转的记录行; 实 例:!RecipeSeekToPosition(\ 实例说明:跳转到配方表rec的记录5。 注 意:记录是从0开始计算的。

!RecipeSort(strRecipeName,DataName,Num) 函数意义:配方表排序。 返 回 值:开关型;

返回0:操作成功;返回值<0:操作不成功; 参 数:strRecipeName,字符型,配方表名;

39

DataName,数据对象名;

Num,开关型,0,表示按升序排列;1,表示按降序排列; 实 例:!RecipeSort(\

实例说明:对配方表rec按t1的升序排列。 注 意:排序后,需要进行保存配方操作,方才有效。 !RecipeClose(strRecipeName) 函数意义:关闭配方表; 返 回 值:开关型;

返回0:操作成功;返回值<0:操作不成功; 参 数:strRecipeName,字符型,配方表名; 实 例:!RecipeClose(“Rec”) 实例说明:关闭名为Rec的配方表。 !RecipeDelete(strRecipeName)

函数意义:删除配方表strRecipeName的当前配方; 返 回 值:开关型;

返回0:操作成功;返回值<0:操作不成功; 参 数:strRecipeName,字符型,配方表名; 实 例:!RecipeDelete(“Rec”) 实例说明:删除配方表Rec的当前配方; !RecipeEdit(strRecipeName)

函数意义:用当前数据对象的值来修改配方表strRecipeName中的当前配方; 返 回 值:开关型;

返回0:操作成功;返回值<0:操作不成功; 参 数:strRecipeName,字符型,配方表名; 实 例:!RecipeEdit(“Rec”)

实例说明:用当前数据对象的值来修改配方表Rec中的当前配方; !RecipeGetCount(strRecipeName)

函数意义:获取配方表strRecipeName中配方的个数; 返 回 值:开关型;

返回值>=0:操作成功,其值为配方个数;返回值<0:操作不成功; 参 数:strRecipeName,字符型,配方表名; 实 例:!RecipeGetCount(“Rec”) 实例说明:获取配方表Rec中配方的个数; !RecipeGetCurrentPosition(strRecipeName)

40

函数意义:获取配方表strRecipeName中当前的位置; 返 回 值:开关型;

返回值>=0:操作成功,其值为当前位置;返回值<0:操作不成功; 参 数:strRecipeName,字符型,配方表名; 实 例:x=!RecipeGetCurrentPosition(“Rec”)

实例说明:获取配方表Rec中当前的位置,并存储在变量x中。 !RecipeGetCurrentValue(strRecipeName)

函数意义:将配方表strRecipeName中的值装载到与其绑定的数据对象上,起到刷新的作用; 返 回 值:开关型;

返回值0:操作成功;返回值<0:操作不成功; 参 数:strRecipeName,字符型,配方表名; 实 例:!RecipeGetCurrentValue(“Rec”)

实例说明:将配方表Rec中的值装载到与其绑定的数据对象上; !RecipeInsertAt(strRecipeName,rPosition)

函数意义:将当前数据对象的值,添加到配方表strRecipeName的rPosition所指定的记录行上; 返 回 值:开关型;

返回值0:操作成功;返回值<0:操作不成功; 参 数:strRecipeName,字符型,配方表名; rPosition,开关型,指定添加的记录行; 实 例:!RecipeInsertAt(\

实例说明:将当前数据对象的值添加到配方表rec的记录5上。 !RecipeBind(strRecipeName,任意个数变量)

函数意义:把若干数据对象绑定到配方表strRecipeName上; 返 回 值:开关型;

返回0:操作成功;返回-1:操作不成功; 参 数:strRecipeName,字符型,配方表名; 实 例:!RecipeBind(\

实例说明:把数据对象t1,t2,t3,t4绑定到配方表rec上。 !RecipeAddNew(strRecipeName)

函数意义:在配方表中,用当前连接的数据对象的值添加一行; 返 回 值:开关型;

返回0:操作成功;返回-1:操作不成功;

41

参 数:strRecipeName,字符型,配方表名 实 例:!RecipeAddNew(\

实例说明:在配方表rec中,用当前连接的数据对象的值添加一行。

时间运算函数

!TimeStr2I(strTime)

函数意义:将表示时间的字符串(YYYY/mm/DD HH:MM:SS)转换为时间值; 返 回 值:开关型,转换后的时间值;

参 数:strTime,字符型,以字符串型表示的时间 (必须是YYYY/mm/DD HH:MM:SS的格式);

实 例:!TimeStr2I(“2001/1/1 3:15:28”)

实例说明:将表示时间的字符串“2001/1/1 3:15:28”转换为开关型的时间值。 !TimeI2Str(iTime,strFormat)

函数意义:将时间值转换为字符串表示的时间; 返 回 值:字符型,转换后的时间字符串;

参 数:iTime,开关型,时间值;(注意,这里只能用!TimeStr2I(strTime)转换出的时间值,否则将不能正确转换。); strFormat,字符型,转换后的时间字符串的格式; 实 例:!TimeI2Str(Time,\

实例说明:将时间值转换为字符串型,其表示格式为:星期,月 日,年。 !TimeI2Str的格式化标准为:

%a星期的简写。如:Fri是Friday的简写表示星期五 %A星期的全称。如:Sunday表示星期日

%b月份的简写。如:Jan是January的简写表示一月 %B月份的全称。如:June表示六月

%c适合于本地习惯的时间日期表示。如:05/07/01 09:47:12,表示2001年5月7日9时47分12秒

%d月份中日期的十进制表示。如:07表示7日 %H 24时制的小时表示。如:17表示下午5时 %I 12时制的小时表示。

%j 一年中天数的十进制表示。如:2001-06-07是一年中第158天 %m 月份的十进制表示。如:06表示6月 %M 分钟的十进制表示。如:28表示28分

%p 以AM/PM方式表示上下午;AM表示上午;PM表示下午

42

%S 秒钟的十进制表示。

%U 一年中周数的十进制表示,星期日为第一天。如:2001-06-07是第22周 %w 星期的十进制表示;0,表示星期日;1,表示星期一;依此类推。 %W 一年中周数的十进制表示,星期一为第一天。如:2001-06-07是第23周 %x适合当地的日期表示。如:2001-06-07表示为:06/07/01 %X 适合当地的时间表示。如:9时47分12秒表示为:09:47:12 %y 不显示世纪的年的十进制表示。如:01表示2001年 %Y 显示世纪的年的十进制表示。如:2001表示2001年

%z或者%Z 时区名称的简写,如果时区不可知则没有字符。如:中国标准时间 %% 百分号表示 !TimeGetYear(iTime)

函数意义:获取时间值iTime中的年份; 返 回 值:开关型,时间值iTime中的年份; 参 数:iTime,开关型,时间值; 实 例:!TimeGetYear(iTime)

实例说明:获取时间值iTime中的年份; !TimeGetMonth(iTime)

函数意义:获取时间值iTime中的月份;

返 回 值:开关型,时间值iTime中的月份(1~12); 参 数:iTime,开关型,时间值; 实 例:!TimeGetMonth (iTime)

实例说明:获取时间值iTime中的月份。 !TimeGetSecond(iTime)

函数意义:获取时间值iTime中的秒数;

返 回 值:开关型,时间值iTime中的秒数(0~59); 参 数:iTime,开关型,时间值; 实 例:!TimeGetSecond (iTime) 实例说明:获取时间值iTime中的秒数。 !TimeGetSpan(iTime1,iTime2)

函数意义:计算两个时间iTime1和iTime2之差; 返 回 值:开关型,两时间之差; 参 数:iTime1,开关型,时间值; iTime2,开关型,时间值;

实 例:!TimeGetSpan(iTime1,iTime2)

43

实例说明:计算两个时间iTime1和iTime2之差。 !TimeGetDayOfWeek(iTime)

函数意义:获取时间值iTime中的星期;

返 回 值:开关型,时间值iTime中的星期数(1 为星期日, 2 表示星期一,??); 参 数:iTime,开关型,时间值; 实 例:!TimeGetDayOfWeek (iTime) 实例说明:获取时间值iTime中的星期; !TimeGetHour(iTime)

函数意义:获取时间值iTime中的小时;

返 回 值:开关型,时间值iTime中的小时(0~23); 参 数:iTime,开关型,时间值; 实 例:!TimeGetHour (iTime)

实例说明:获取时间值iTime中的小时; !TimeGetMinute(iTime)

函数意义:获取时间值iTime中的分钟;

返 回 值:开关型,时间值iTime中的分钟(0~59); 参 数:iTime,开关型,时间值; 实 例:!TimeGetMinute (iTime) 实例说明:获取时间值iTime中的分钟; !TimeGetDay(iTime)

函数意义:获取时间值iTime中的日期;

返 回 值:开关型,时间值iTime中的日期(1~31); 参 数:iTime,开关型,时间值; 实 例:!TimeGetDay (iTime)

实例说明:获取时间值iTime中的日期; !TimeGetCurrentTime() 函数意义:获取当前时间值; 返 回 值:开关型,当前的时间值; 参 数:无;

实 例:!TimeGetCurrentTime() 实例说明:获取当前时间值。

注 意:1、保存时间值,应该使用整型数,使用浮点会损失精度,典型的问题是时间添加。

44

2、显示时间值,应该转换为字符串表示,使用浮点会损失精度,典型问题是当前时间不刷新,其实已经刷新了,但用浮点数表达不出来。 !TimeSpanGetDays(iTimeSpan)

函数意义:获取时间差中的天数;(时间差由TimeGetSpan函数计算得来) 返 回 值:开关型,时间差中的天数(1~31); 参 数:iTimeSpan,开关型,时间差; 实 例:!TimeSpanGetDays(TimeSpan) 实例说明:获取时间差TimeSpan中的天数。 !TimeSpanGetHours(iTimeSpan)

函数意义:获取时间差中的小时数;(时间差由TimeGetSpan函数计算得来) 返 回 值:开关型,时间差中的小时数(0~23); 参 数:iTimeSpan,开关型,时间差; 实 例:!TimeSpanGetHours(TimeSpan) 实例说明:获取时间差TimeSpan中的小时数。 !TimeSpanGetMinutes(iTimeSpan)

函数意义:获取时间差中的分钟数;(时间差由TimeGetSpan函数计算得来) 返 回 值:开关型,时间差中的分钟数(0~59); 参 数:iTimeSpan,开关型,时间差; 实 例:!TimeSpanGetMinutes(TimeSpan) 实例说明:获取时间差TimeSpan中的分钟数。 !TimeSpanGetSeconds(iTimeSpan)

函数意义:获取时间差中的秒数;(时间差由TimeGetSpan函数计算得来) 返 回 值:开关型,时间差中的秒数(0~59); 参 数:iTimeSpan,开关型,时间差; 实 例:!TimeSpanGetSeconds(TimeSpan) 实例说明:获取时间差TimeSpan中的秒数。 !TimeSpanGetTotalHours(iTimeSpan)

函数意义:获取时间差中的小时总数;(时间差由TimeGetSpan函数计算得来) 返 回 值:开关型,时间差中的小时总数; 参 数:iTimeSpan,开关型,时间差; 实 例:!TimeSpanGetTotalHours(TimeSpan) 实例说明:获取时间差TimeSpan中的小时总数。 !TimeSpanGetTotalMinutes(iTimeSpan)

函数意义:获取时间差中的分钟总数;(时间差由TimeGetSpan函数计算得来)

45

返 回 值:开关型,时间差中的分钟总数; 参 数:iTimeSpan,开关型,时间差; 实 例:!TimeSpanGetTotalMinutes(TimeSpan) 实例说明:获取时间差TimeSpan中的分钟总数。 !TimeSpanGetTotalSeconds(iTimeSpan)

函数意义:获取时间差中的秒总数;(时间差由TimeGetSpan函数计算得来) 返 回 值:开关型,时间差中的秒总数; 参 数:iTimeSpan,开关型,时间差; 实 例:!TimeSpanGetTotalSeconds(TimeSpan) 实例说明:获取时间差TimeSpan中的秒总数。 !TimeAdd(iTime,iTimeSpan)

函数意义:向时间iTime中加入由iTimeSpan指定的秒数; 返 回 值:开关型,相加后的时间值; 参 数:iTime,开关型,初始时间值; iTimeSpan,开关型,要加的秒数; 实 例:!TimeAdd(Time,500)

实例说明:向时间Time中加上500秒。

用户窗口方法

Open()

方法作用:打开窗口。

返 回 值:浮点型,=0为操作成功,<>0为操作失败。 Close()

方法作用:关闭窗口。

返 回 值:浮点型,=0为操作成功,<>0为操作失败。 Hide()

方法作用:隐藏窗口。

返 回 值:浮点型,=0为操作成功,<>0为操作失败。 Print()

方法作用:打印窗口。

返 回 值:浮点型,=0为操作成功,<>0为操作失败。 Refresh()

方法作用:刷新窗口。

返 回 值:浮点型,=0为操作成功,<>0为操作失败。

46

BringToTop()

方法作用:把窗口显示在最前面。

返 回 值:浮点型,=0为操作成功,<>0为操作失败。

OpenSubWnd(用户窗口名,参数1,参数2,参数3,参数4,参数5) 方法作用:显示子窗口。

返 回 值:浮点型,=0为操作成功,<>0为操作失败。 参 数 值:参数1:用户窗口名。

参数2:整型,打开子窗口相对于本窗口的X坐标。 参数3:整型,打开子窗口相对于本窗口的Y坐标。 参数4:整型,打开子窗口的宽度。 参数5:整型,打开子窗口的高度。 参数6:整型,打开子窗口的类型。

0位:是否模式打开,使用此功能,必须在此窗口中使用CloseSubWnd来关闭本子窗口,子窗口外别的构件对鼠标操作不响应

1位:是否菜单模式,使用此功能,一旦在子窗口之外按下按钮,则子窗口关闭。 2位:是否显示水平滚动条,使用此功能,可以显示水平滚动条 3位:是否垂直显示滚动条,使用此功能,可以显示垂直滚动条 4位:是否显示边框,选择此功能,在子窗口周围显示细黑线边框

5位:是否自动跟踪显示子窗口,选择此功能,在当前鼠标位置上显示子窗口。此功能用于鼠标打开的子窗口,选用此功能则忽略iLeft,iTop的值,如果此时鼠标位于窗口之外,则在窗口对中显示子窗口

6位:是否自动调整子窗口的宽度和高度为缺省值,使用此功能则忽略iWidth和iHeight的值。 子窗口的关闭办法:

使用关闭窗口直接关闭,则把整个系统中使用到的此子窗口完全关闭

使用指定窗口的CloseSubWnd关闭,可以使用OpenSubWnd返回的控件名,也可以直接指定子窗口关闭,此时只能关闭此窗口下的子窗口。 CloseSubWnd(参数1) 方法作用:关闭子窗口。

返 回 值:浮点型,=0为操作成功,<>0为操作失败。 参 数 值:参数1:子窗口的名字。 CloseAllSubWnd()

方法作用:关闭窗口中的所有子窗口。 返 回 值:浮点型,=0为操作。

47

用户窗口属性

Name

属性意义:窗口的名字。 属性类型:字符型。 Left

属性意义:窗口的X坐标。 属性类型:整型。 Top

属性意义:窗口的Y坐标。 属性类型:整型。 Width

属性意义:窗口的宽度。 属性类型:整型。 Height

属性意义:窗口的高度。 属性类型:整型。 Visible

属性意义:窗口的可见度。 属性类型:整型。 Caption

属性意义:窗口标题。 属性类型:字符型。

数据对象的属性

Value

属性意义:数据对象中的值。

属性类型:类型与数据对象的类型相同。 Name

属性意义:数据对象的名字。 属性类型:字符型,只读 Min

属性意义:数据对象的最小值。 属性类型:浮点型

48

Max

属性意义:数据对象的最大值。 属性类型:浮点型 Unit

属性意义:数据对象的工程单位。 属性类型:字符型 Comment

属性意义:数据对象的注释。 属性类型:字符型 InitValue

属性意义:数据对象的初值.。 属性类型:字符型 Type

属性意义:数据对象的类型。 属性类型:浮点型,只读 State

属性意义:数据对象的工作状态。 属性类型:浮点型 AlmEnable

属性意义:数据对象的启动报警标志。 属性类型:浮点型 AlmSave

属性意义:数据对象的报警存盘标志。 属性类型:浮点型 AlmPrint

属性意义:数据对象的报警打印标志。 属性类型:浮点型 AlmHH

属性意义:数值型报警的上上限值或开关型报警的状态值。 属性类型:浮点型 AlmH

属性意义:数值型报警的上限值。 属性类型:浮点型

49

AlmL

属性意义:数值型报警的下限值。 属性类型:浮点型 AlmLL

属性意义:数值型报警的下下限值。 属性类型:浮点型 AlmV

属性意义:数值型偏差报警的基准值。 属性类型:浮点型 AlmVH

属性意义:数值型偏差报警的上偏差值。 属性类型:浮点型 AlmVL

属性意义:数值型偏差报警的下偏差值。 属性类型:浮点型 AlmFlagHH

属性意义:允许上上限报警,或允许开关量报警标志。 属性类型:浮点型 AlmFlagH

属性意义:允许上限报警,或允许开关量跳变报警标志。 属性类型:浮点型 AlmFlagL

属性意义:允许下限报警,或允许开关量正跳变报警标志。 属性类型:浮点型 AlmFlagLL

属性意义:允许下下限报警,或允许开关量负跳变报警标志。 属性类型:浮点型 AlmFlagVH

属性意义:允许上偏差报警。 属性类型:浮点型 AlmFlagVL

属性意义:允许下偏差报警。 属性类型:浮点型

50