运行环境操作函数
!ChangeLoopStgy(StgyName,n)
函数意义:改变循环策略的循环时间。
返 回 值:数值型。返回值=0:调用正常,<>0:调用不正常。
参 数:StgyName,策略名;
n,数值型,以毫秒数表示循环策略的循环时间。
实 例:!ChangeLoopStgy(报警策略,5000),将报警策略的循环时间改为5秒。
!CloseAllWindow(WndName)
函数意义:关闭所有窗口,如果在字符串”WndName”中指定了一个窗口,则打开这个窗口,关闭其他窗口。如果”WndName”为空串,则关闭所有窗口。
返 回 值:数值型。返回值:=0:调用正常。<>0:调用不正常。
参 数:WndName, 用户窗口名,字符型。
实 例:!CloseAllWindow(“工况图”),关闭除了用户窗口“工况图”以外的其他窗口,若“工况图”窗口没有打开,则在关闭其他窗口的同时打开该窗口;
!CloseAllWindow(” “),关闭所有窗口。
!CloseAllSubWnd()
函数意义:关闭窗口中的所有子窗口。
返 回 值:浮点型,=0为操作。
实 例:!CloseAllSubWnd() ,关闭当前窗口的所有子窗口。
!CloseSubWnd(WndName)
函数意义:关闭子窗口。
返 回 值:浮点型,=1为操作成功,<>1为操作失败。
参 数 值:WndName:子窗口的名字。
实 例:!CloseSubWnd(窗口1),关闭子窗口“窗口1”。
!EnableStgy(StgyName,n)
函数意义:打开或关闭某个策略,如报警策略或循环策略等。
返 回 值:数值型。返回值=0:调用正常,<>0:调用不正常。
参 数:SstgyName,策略名;
n,数值型,为1时表示打开此策略,为0时表示关闭此策略。
实 例:!EnableStgy(报警策略,1), 打开报警策略;
!EnableStgy(报警策略,0), 关闭报警策略,使报警策略无效。
函数意义:按设备顺序取到设备的名字。
返 回 值:字符型。调用成功返回设备名,调用失败时返回空字符串。
参 数:Index,数值型。
实 例:!GetDeviceName(0) ,取0号设备构件的名称。
函数意义:按设备名查询设备的状态。
返 回 值:数值型。
=-1调用不正常。
=1 设备处于正常的工作状态。
=2 设备正在工作,但设备不正常。
=3 设备处于停止工作状态,且设备正常。
=4 设备处于停止状态,且设备有错。
参 数:DevName,设备名,字符型。
实 例:!GetDeviceState(OmronPLC),读取设备构件“OmronPLC”的当前工作状态。
注 意:设备名称是在设备构件基本属性页中设置的。
函数意义:获取最后一次鼠标的动作发生的时间。
返 回 值:开关型。返回为time_t类型的时间值,可以在时间操作脚本函数中使用。
参 数:无。
实 例:在画面,系统对话框上的鼠标事件中添加!GetLastMouseActionTime(),获取鼠标最后动作时间。
!GetStgyName(Index)
函数意义:按运行策略的顺序获得各策略块的名字。
返 回 值:字符型。
参 数:Index,数值型。
实 例:!GetStgyName(0),取0号运行策略的名称。
函数意义:按用户窗口的顺序获得用户窗口的名字。
返 回 值:字符型。
参 数:Index, 数值型。
实 例:!GetWindowName(0) ,读取0号用户窗口的名称。
!GetWindowState(WndName)
函数意义:按照名字取得用户窗口的状态。
返 回 值:数值型。
返回0:用户窗口处于关闭状态。
返回1:用户窗口处于打开状态。
返回2:用户窗口处于隐藏状态。
参 数:WndName,用户窗口名称,字符型。
实 例:!GetWindowState(工况图),获得用户窗口“工况图”的状态。
!OpenSubWnd(参数1,参数2,参数3,参数4,参数5,参数6)
函数意义:显示子窗口。
返 回 值:字符型,如成功就返回子窗口n,n表示打开的第n个子窗口。
参 数 值:参数1:要打开的子窗口名。
参数2:整型,打开子窗口相对于本窗口的X坐标。
参数3:整型,打开子窗口相对于本窗口的Y坐标。
参数4:整型,打开子窗口的宽度。
参数5:整型,打开子窗口的高度。
参数6:整型,打开子窗口的类型。
0位:是否模式打开,使用此功能,必须在此窗口中使用CloseSubWnd来关闭本子窗口,子窗口外别的构件对鼠标操作不响应
1位:是否菜单模式,使用此功能,一旦在子窗口之外按下按钮,则子窗口关闭。
2位:是否显示水平滚动条,使用此功能,可以显示水平滚动条
3位:是否垂直显示滚动条,使用此功能,可以显示垂直滚动条
4位:是否显示边框,选择此功能,在子窗口周围显示细黑线边框
5位:是否自动跟踪显示子窗口,选择此功能,在当前鼠标位置上显示子窗口。此功能用于鼠标打开的子窗口,选用此功能则忽略iLeft,iTop的值,如果此时鼠标位于窗口之外,则在窗口对中显示子窗口
6位:是否自动调整子窗口的宽度和高度为缺省值,使用此功能则忽略iWidth和iHeight的值。
子窗口的关闭办法:
使用关闭窗口直接关闭,则把整个系统中使用到的此子窗口完全关闭
使用指定窗口的CloseSubWnd关闭,可以使用OpenSubWnd返回的控件名,也可以直接指定子窗口关闭,此时只能关闭此窗口下的子窗口。
!SetActiveX()
函数说明:此函数在嵌入版中无效,考虑兼容性问题,故保留。
!CallBackSvr()
函数说明:此函数在嵌入版中无效,考虑兼容性问题,故保留。
!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”开始工作。
!SetMousePace(开关型)
函数意义:设置鼠标灵敏度。
参 数:开关型参数为每次按键消息需要设置的鼠标移动间隔,一般情况下请输入正整数,如果输入0值表示禁止该功能
实 例:!SetMousePace(1);
默认情况下该功能为关闭状态,鼠标灵敏度为0,如果想启用该功能在启动策略中调用!SetMousePace脚本函数指定步长值。
!SetNumPanelSize(Type,Size)
函数意义:根据需要和显示屏的大小调整软键盘或配方对话框的大小。
返 回 值:开关型。
返回值=0:修改成功。新设置将在下一次打开输入键盘时生效。
返回值=1:修改失败,参数错误。(可能是没有匹配的type ,或者size参数超出范围)。
参 数:Type,键盘类型,数值型;
1:代表修改数值输入键盘。
2:代表修改字符输入键盘。
3:代表修改用户登录对话框。
4:代表配方选择对话框。
5:代表配方编辑对话框。
Size,键盘大小,数值型;数值范围:100像素~1024像素;
-1:自动全屏大小。
0:原始大小。
实 例:!SetNumPanelSize(1,500),将数值输入键盘改为500*500大小,该正方形相对于屏幕居中。所有修改将在下一次打开输入框时生效,运行环境退出后,将自动保留上次输入框的大小。
注意事项:放大缩小功能在重新下载工程时没有删除配置文件,换工程后设置仍然有效,除非重新进行了设置。如果要去掉原来的设置则需要手工删除panelSize.ini文件,该文件位于\harddisk\mcgsbin目录下。
函数意义:执行StgyName指定的运行策略。
返 回 值:数值型。返回值=0:调用正常,<>0:调用不正常。
参 数:StgyName,策略名,字符型。
实 例:!SetStgy(阀门关闭),执行一次运行策略“阀门关闭”。
函数意义:按照名字操作用户窗口,如打开、关闭、打印。
返 回 值:数值型。返回值:=0:调用正常。<>0:调用不正常。
参 数:WndName, 用户窗口名, 字符型。Op: 操作用户窗口的方法,数值型。
Op=1:打开窗口并使其可见。
Op=2:打开窗口并使其不可见。
Op=3:关闭窗口。
Op=4:打印窗口。
Op=5:刷新窗口。
实 例:!SetWindow(工况图,1),打开用户窗口“工况图”,并使其可见。
!SysWindow()
函数意义:执行该函数后,打开用户窗口管理窗口,在管理窗口中可以选择打开或关闭指定的用户窗口。
返 回 值:数值型。返回值=0:调用成功;<>0:调用失败。
参 数:无。
实 例:!SysWindow()。
!SetStyMode(StgyName)
函数意义:通过脚本函数(位于系统函数-运行环境类)实现函数调用方式的策略调用。
返回 值:开关型,返回值恒为0。
参 数:StgyName,策略名,字符型。
实 例:!SetStgyMode(阀门关闭),执行一次运行策略“阀门关闭”,“阀门关闭”策略执行完毕后,才返回调用者,调用者继续执行以下程序。
!GetCurrentLanguageIndex( )
函数意义:用于获取当前使用的语言的索引值。
返 回 值:开关型。返回值为语言项索引值。 索引值按照组态下拉框依次排序0,1,2…
参 数: 无。
实 例:N=!GetCurrentLanguageIndex( ) ,其中N为开关型变量 。
!SetCurrentLanguageIndex ( 开关型 )
函数意义:通过索引项设定当前语言环境
返 回 值:开关型。返回值为0表示执行成功,否则表示失败。
参 数:开关型。语言索引值。如果索引参数值超出当前选择语言范围,那么函数不生效。
实 例:!SetCurrentLanguageIndex(1),表示设置当前语言为英文(选择语言为CH,EN)。
!GetLocalLanguageStr( 开关型 )
函数意义:获得指定自定义ID对应的当前语言的内容。
返 回 值:字符型。
参 数:开关型。自定义ID索引值。如果无当前ID对应自定义文本,则返回空值。
实 例:!GetLocalLanguageStr(2),前提是有ID为2的自定义文本内容,如果当前语言为英文,则返回ID为2的自定义文本记录的英文内容。
!GetLanguageNameByIndex(开关型)
函数意义:根据语言索引值返回语言名称,返回值为字符型。
返 回 值:字符型,当前语言的名称。
参 数:开关型。语言的索引值。如果当前索引值无对应语言,则返回空值。
实 例:!GetLanguageNameByIndex(1) ,假如当前语言为中文、英文,则返回值为English。
数据对象操作函数
!AnswerAlm(DatName)
函数意义:应答数据对象DatName所产生的报警。如对应的数据对象没有报警产生或已经应答,则本函数无效。
返 回 值:数值型,=0为操作成功,<>0为操作失败。
参 数:DatName,数据对象名。
实 例:!AnswerAlm(电机温度),应答数据对象“电机温度”所产生的报警。
!ChangeDataSave(Datname,n)
函数意义:改变数据对象Datname存盘的周期。
返 回 值:数值型,=0为操作成功,<>0为操作失败。
参 数:Datname,数据对象名;n,数值型,以秒表示的存盘间隔时间。
实 例:!ChangeDataSave(温度,5), 温度的存盘间隔时间为5秒。
!ChangeSaveData(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:数值型时间量,新的存盘间隔,单位:秒。
实 例:!ChangeSaveData(电机1,-2,5),把组对象“电机1”对应的存盘数据中昨天的存盘数据的存盘间隔改为5秒钟。
!FlushDataInitValueToDisk()
函数意义:把所有数据对象的初始值写入磁盘,调用后即刻刷盘。
返 回 值:数值型,返回值=0:调用正常,<>0:调用不正常。
参 数:无。
!FreshSaveData()
函数意义:实现报警组对象和事件组对象(存盘周期为0)的强制刷盘功能。调用后即刻将报警组对象和事件组对象在内存缓冲区中的存盘数据强制写入磁盘。
返 回 值:数值型,返回值=0:调用正常,<>0:调用不正常。
参 数:无。
!CopySaveDat()
函数说明:此函数在嵌入版中无效,考虑兼容性问题,故保留。
!DataGetInt (变量名,返回值)
函数意义:通过变量名读开关型变量的值。
返 回 值:开关型,
返回0:执行成功;
返回1:类型不匹配;
返回3:变量不存在。
参 数:变量名,字符型,开关型变量的名称 。
返回值,开关型,保存返回的值。
实 例: Ret=!DataGetInt(变量名,Int)。
!DataGetFloat(变量名,返回值)
函数意义:通过变量名读数值型变量的值。
返 回 值:开关型,
返回0:执行成功;
返回1:类型不匹配;
返回3:变量不存在。
参 数:变量名,字符型 。
返回值,数值型,保存返回的值。
实 例: Ret=!DataGetFloat(变量名,Float)。
!DataGetString(变量名,返回值)
函数意义:通过变量名读字符型变量的值。
返 回 值:开关型,
返回0:执行成功;
返回1:类型不匹配;
返回3:变量不存在。
参 数:变量名,字符型 。
返回值,字符型,保存返回的值。
实 例: Ret=!DataGetString(变量名,Str)。
!DataSetInt (变量名,设置值)
函数意义:通过变量名写开关型变量的值。
返 回 值:开关型,
返回0:执行成功;
返回1:类型不匹配;
返回3:变量不存在。
参 数:变量名,字符型 。
设置值,开关型,要设置的值。
实 例: Ret=!DataSetInt (变量名,Int)。
!DataSetFloat(变量名,设置值)
函数意义:通过变量名写数值型变量的值。
返 回 值:开关型,
返回0:执行成功;
返回1:类型不匹配;
返回3:变量不存在。
参 数:变量名,字符型 。
设置值,数值型,要设置的值。
实 例: Ret=!DataSetFloat(变量名,Float)。
!DataSetString(变量名,设置值)
函数意义:通过变量名写字符型变量的值。
返 回 值:开关型,
返回0:执行成功;
返回1:类型不匹配;
返回3:变量不存在。
参 数:变量名,字符型 。
设置值,字符型,要设置的值。
实 例: Ret=!DataSetString(变量名,Str)。
!DelSaveDat(DatName,Num)
函数意义:删除组对象DatName对应的存盘数据中最早Num小时内的存盘数据,如果 Num <= 0 ,那么就是删除该组对象全部的存盘数据。如果 Num > 0, 就删除以当前时间为基点Num个小时之前的内容,删除时是按文件删除的,如果数据不足一个存盘文件,是不会被删除的。
返 回 值:数值型,返回值=0:调用正常,<>0:调用不正常。
参 数:DatName,组对象名。
Num , 参数名。
实 例:!DelSaveDat(电机温度,12) ,删除组对象“电机温度”对应的存盘数据中以当前时间为基点倒推12个小时之前的数据。但从当前时间至倒推的12个小时之内的内容会被保存。
注 意:该函数只对组对象操作有效。
!DelAllSaveDat()
函数意义:删除组对象DataName对应的所有存盘数据。注意,此函数不能用来删除组对象所对应的报警存盘数据。
返 回 值:数值型,返回值=0:调用正常,<>0:调用不正常。
参 数:DatName:组对象名;
实 例:!DelAllSaveDat(电机温度),删除组对象“电机温度”对应的所有存盘数据
注 意:该函数只对组对象操作有效。
!EnableDataSave(name,n)
函数意义:打开/关闭数据对象的定时存盘功能。
返 回 值:数值型,返回值=0:调用正常,<>0:调用不正常。
参 数:name,数据对象名;
n,数值型,1表示打开定时存盘,0表示关闭定时存盘。
实 例:!EnableDataSave(温度,1), 打开温度的定时存盘。
!ExportHisDataToCSV(文件名,组对象名,字段名,开始时间,结束时间,最大记录数,导出模式,导出参数,进度指示数据对象名,取消控制数据对象名)
函数意义:
1.导出指定组对象存盘数据,导出的条件包括:开始时间-结束时间,最大导出总条数;
2.导出字段列表,组对象为MCGS_ALARM则表示导出报警历史数据;
3.可指定导出文件名和路径,主要是U盘导出,可以追加方式也可覆盖方式导出;
4.可显示导出过程进度情况;
5.可取消和中止长时间的导出过程;
6.导出格式为csv文件,导出的第一行为字段名字。
返 回 值:开关型。
返回1 指定组对象错误,可能组对象没有保存历史数据或者没有该组对象
返回2 指定的时间格式错误
返回3 指定的无效的数据对象名
返回4 无效的导出模式
返回5 同时只能支持一个csv导出
参 数:
文件名:字符型,指定导出的文件绝对路径名,指定的第一级目录不能创建,其子目录如果不存在则可以创建。这样避免U盘不存在时创建U盘目录。注意:第一级目录不能自动创建用户必须保证其存在;
组对象名:导出的组对象名字。
字段名:字符型,用逗号分隔的要导出的字段名,不需要指定时间字段,默认第一二个字段就为记录时间字段。如果为空字符串则导出所有字段。
开始时间,结束时间:用表示的时间字符串 “YYYY-MM-DD HH:MM:SS”;
最大记录数:希望导出的最大记录数,超过该记录数就返回,停止导出;
导出模式:“1”表示覆盖现有文件,“2”表示追加到文件最后;
导出参数:暂时为空,保留以后使用;
进度指示数据对象名:开关型数据对象,导出过程中该对象值反映出当前已导出记录条数,如果导出过程中其他异常结束则通过该对象返回同函数返回错误码;
进度指示错误码:
返回-1——文件不能打开
返回-2——没有可导出的数据
返回-4——文件操作出现错误
控制数据对象名:指定一个开关型数据对象,该对象控制导出执行,启动导出时会自动设置该变量为0,用户在导出过程中想取消导出则可以设置该值为<0的任何值,导出函数运行结束后会自动设置对象值为1;
进度指示错误码:
返回0——导出成功
返回-1—–导出路径不存在
返回1——指定组对象错误,可能组对象没有保存历史数据或者没有该组对象
返回2——指定的时间格式错误
返回3——指定的无效的数据对象名
返回4——无效的导出模式
返回5——同时只能支持一个csv导出
实 例: ret= !ExportHisDataToCSV(“\usb harddisk\yang.csv”,”group”,”data1,data4″,”2007/1/1 0:0:0″,”2009/1/1 0:0:0″,20000,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()
函数说明:此函数在嵌入版中无效,考虑兼容性问题,故保留。
!GetEventP()
函数说明:此函数在嵌入版中无效,考虑兼容性问题,故保留。
!GetEventT()
函数说明:此函数在嵌入版中无效,考虑兼容性问题,故保留。
!GroupGetInt (组对象变量,成员编号,返回值)
函数意义:读取组对象中指定的开关型成员变量的值。
返 回 值:开关型,
返回0:执行成功;
返回1:类型不匹配;
返回2:指定编号超出组对象索引范围;
返回3:指定组对象不存在或指定变量不是组对象。
参 数: 组对象变量,组对象类型。
成员编号,开关型,成员变量在组对象中的编号,从0开始。
返回值,开关型,保存返回的值。
实 例:Ret=!GroupGetInt(Group,0,Int)。
!GroupGetFloat(组对象变量,成员编号,返回值)
函数意义:读取组对象中指定的数值型成员变量的值。
返 回 值:开关型,
返回0:执行成功;
返回1:类型不匹配;
返回2:指定编号超出组对象索引范围;
返回3:指定组对象不存在或指定变量不是组对象。
参 数: 组对象变量,组对象类型。
成员编号,开关型,成员变量在组对象中的编号,从0开始。
返回值,数值型,保存返回的值。
实 例: Ret=!GroupGetFloat(Group,0,Float)。
!GroupGetString(组对象变量,成员编号,返回值)
函数意义:读取组对象中指定的字符型成员变量的值。
返 回 值:开关型,
返回0:执行成功;
返回1:类型不匹配;
返回2:指定编号超出组对象索引范围;
返回3:指定组对象不存在或指定变量不是组对象。
参 数: 组对象变量,组对象类型。
成员编号,开关型,成员变量在组对象中的编号,从0开始。
返回值,字符型,保存返回的值。
实 例: Ret=!GroupGetString(Group,0,String)。
!GroupSetInt (组对象变量,成员编号,设置值)
函数意义:设置组对象中指定的开关型成员变量的值。
返 回 值:开关型,
返回0:执行成功;
返回1:类型不匹配;
返回2:指定编号超出组对象索引范围;
返回3:指定组对象不存在或指定变量不是组对象。
参 数: 组对象变量,组对象类型。
成员编号,开关型,成员变量在组对象中的编号,从0开始。
设置值,开关型,要设置的值。
实 例: Ret=!GroupSetInt (Group,0,Int)。
!GroupSetFloat(组对象变量,成员编号,设置值)
函数意义:设置组对象中指定的数值型成员变量的值。
返 回 值:开关型,
返回0:执行成功;
返回1:类型不匹配;
返回2:指定编号超出组对象索引范围;
返回3:指定组对象不存在或指定变量不是组对象。
参 数: 组对象变量,组对象类型。
成员编号,开关型,成员变量在组对象中的编号,从0开始。
设置值,数值型,要设置的值。
实 例: Ret=!GroupSetFloat(Group,0,Float)。
!GroupSetString(组对象变量,成员编号,设置值)
函数意义:设置组对象中指定的字符型成员变量的值。
返 回 值:开关型,
返回0:执行成功;
返回1:类型不匹配;
返回2:指定编号超出组对象索引范围;
返回3:指定组对象不存在或指定变量不是组对象。
参 数: 组对象变量,组对象类型。
成员编号,开关型,成员变量在组对象中的编号,从0开始。
设置值,字符型,要设置的值。
实 例: Ret=!GroupSetString(Group,0,String)。
!MoveSaveDat()
函数说明:此函数在嵌入版中无效,考虑兼容性问题,故保留。
!SaveData(DatName)
函数意义:把数据对象DataName对应的当前值存入存盘数据库中。本函数的操作使对应的数据对象的值存盘一次。此数据对象必须具有存盘属性,且存盘时间需设为0秒。否则会操作失败。
返 回 值:数值型,=0为操作成功,<>0为操作失败。
参 数:DatName,数据对象名。
实 例:!SaveData(电机1),把组对象“电机1”的所有成员对应的当前值存盘一次。
!SaveDataInit()
函数说明:此函数在McgsE7.6(03.0001)及以后版本中无效,考虑兼容性问题,故保留。
!SaveDataOnTime(Time,TimeMS,DataName)
函数意义:使用指定时间保存数据。本函数通常用于指定时间来保存数据,实现与通常机制不一样的存盘方法。
返 回 值:数值型,返回值=0:调用正常,<>0:调用不正常。
参 数:Time,数值型,使用时间函数转换出的时间量。时间精度到秒。
TimeMS,数值型,指定存盘时间的毫秒数。
实 例: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:数值型,标志要操作何种限值,具体意义如下:
=1下下限报警值;
=2下限报警值;
=3上限报警值;
=4上上限报警值;
=5下偏差报警限值;
=6上偏差报警限值;
=7偏差报警基准值;
实 例:!SetAlmValue(电机温度,200,3),把数据对象“电机温度”的报警上限值设为200
!TransToUSB(组对象名,起始时间,结束时间,导出状态,进度指示,转出模式,保留参数)
函数意义:将XXX组对象的存盘数据导出到”USB HARDDISK”目录下,保存为“XXX.csv”文件,模拟环境则是保存到与可执行文件相同路径下。
返 回 值:开关型。
0:参数没有错误。
1:第一个参数错误。(请检查是否组对象名称,或“MCGS_ALARM”)
2: 时间参数格式错误。
3:状态变量的类型错误。(两个变量都必须是开关量)
5:同时只能支持一个csv导出。
参 数: 组对象名:字符型,要导出的组对象名称(或“MCGS_ALARM”)。
起始时间:字符型,要导出的历史数据的开始时间,格式:YYYY-MM-DD HH:MM:SS。
结束时间:字符型,要导出的历史数据的结束时间,格式:YYYY-MM-DD HH:MM:SS。
导出状态:开关型,进度指示数据对象名(开关量),输出导出状态。
正常导出存盘后输出当前已经导出的记录条数。
当创建导出文件“XXX.csv”失败时输出-1。(请检查下位机是否正常插入了U盘)
当前没有记录可导出时输出-2。(请检查对应的组对象是否有存盘信息,或者开始时间结束时间是否设置正确)
导出过程中出现未知数据类型时输出-3。(不应该出现)
导出过程中出现文件操作异常时输出-4。(请检查U盘容量是否足够)
进度指示:开关量,指定一个数字型或开关型对象,该对象控制导出执行,启动导出时会自动设置该变量为0,用户在导出过程中想取消导出可设置该变量为<0的任何值,导出函数运行结束后会自动设置对象值为1。
注:6.5(01.0010)之前的版本,此参数为原导出状态变量2,显示的是导出数据总条数。
转出模式:开关型,保留,设置为0。
保留参数:字符型,保留, 设置为空字符串。
实 例:
!TransToUSB(MCGS_ALARM , 2008-12-1 00:00:00 , 2008-12-31 00:00:00 , Switch01 , Switch02 , 0 , “”)。
注意事项:
该函数最多只能导出30000条记录。当满足导出时间条件的记录数大于30000时,只导出前30000条记录。
!CopyDateFileToDisk(pathName,dataType,copyState)
函数意义: 拷贝当前运行工程的数据到指定的目录pathName中。
返 回 值:
1:在拷贝的过程中,数据对象copyState,由0转变为非0.表示用户不想继续拷贝。
0:表示拷贝成功。
-1:当前工程中,当前运行工程中没有组对象要存盘。
-2:创建目录pathName失败。
-3:创佳索引文件MCGS_DATA.ini失败或者对此文件进行写操作失败。
-4:参数dataType的值,不正确,目前只支持值为0。
-5:磁盘空间不足。
-6:参数copyState不是数据对象类型。
-7:参数copyState是数据对象类型,但不是开关型数据对象。
-8:参数copyState在一开始调用此脚本时,就为非0。
参数说明:
pathName:字符串型.要拷贝数据到此的路径名.例如:在模拟环境可以写”d:\test”,在运行环境可写”harddisk\test”。
dataType:开关型.拷贝数据的类型,0表示历史数据,1表示报警数据.目前只支持拷贝历史数据,报警数据还没有处理。
copyState:数据对象型.是否拷贝的标志.当为0表示可以拷贝,为非0表示取消当前的拷贝。
实 例:!CopyDateFileToDisk(“harddisk\test”,0,copyState) 把当前工程中历史数据拷贝到目录”harddisk\test”中(如copyState为0表示拷贝,为非表示取消)。
说 明:一般此脚本要配合组态环境中的一个小程序DataTrans.exe来一起操作.把拷贝的数据目录,通过U盘或其他方式,导到上位机(PC),通过用程序DataTrans.exe来进行数据的转换。
用户登录操作函数
!ChangePassword()
函数意义:弹出密码修改窗口,供当前登录的用户修改密码。
返 回 值:数值型。返回值=0:调用成功;<>0:调用失败。
参 数:无。
实 例:!ChangePassword()。
!CheckUserGroup(strUserGroup)
函数意义:检查当前登录的用户是否属于strUserGroup用户组的成员。
返 回 值:数值型。返回值=0:调用成功;<>0:调用失败。
参 数:strUserGroup,字符型,用户组的名称。
实 例:!CheckUserGroup(“管理员组”)。
!Editusers()
函数意义:弹出用户管理窗口,供管理员组的操作者配置用户。
返 回 值:数值型。返回值=0:调用成功;<>0:调用失败。
参 数:无。
实 例:!Editusers()。
!EnableExitLogon(n)
函数意义:打开/关闭退出时的权限检查。
返 回 值:数值型。返回值=1:操作成功;返回值=0:操作失败。
参 数:n,数值型,为1时表示在退出时进行权限检查,当权限不足时,会进行提示。为0则退出时不进行权限检查。
实 例:!EnableExitLogon(1), 在退出时进行权限检查。
!EnableExitPrompt(n)
函数意义:打开/关闭退出时的提示信息。
返 回 值:数值型。返回值=0:调用成功;<>0:调用失败。
参 数:n,数值型,为1时表示在退出时弹出提示信息对话框。为0则退出时不出现信息对话框。
实 例:!EnableExitPrompt(1), 在退出时弹出提示信息对话框。
!GetCurrentGroup()
函数意义:读取当前登录用户的所在用户组名。
返 回 值:字符型,当前登录用户组名,如没有登录返回空。
参 数:无。
实 例:!GetCurrentGroup()。
!GetCurrentUser()
函数意义:读取当前登录用户的用户名。
返 回 值:字符型,当前登录用户的用户名,如没有登录返回空。
参 数:无。
实 例:!GetCurrentUser()。
!LogOff()
函数意义:注销当前用户。
返 回 值:数值型。返回值=0:调用成功;<>0:调用失败。
参 数:无。
实 例:!LogOff()。
!LogOn()
函数意义:弹出登录对话框。
返 回 值:数值型。返回值=0:调用成功;<>0:调用失败。
参 数:无。
实 例:!LogOn()。
- 字符串操作函数
!Ascii2I(s)
返 回 值:开关型。
参 数: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,”0.00″) = “1.24”;!Format(1.236,”.00″)= “.24″;
!Format(1.236,”00.00”) = “01.24”。
!Hex2I(s)
函数意义:把16进制字符串转换为数值。
返 回 值:开关型。
参 数:s, 字符型。
实 例:!Hex2I(“11”) =17。
!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,”sdlkfjwe”,”we”) = 7。
!Lcase(str)
函数意义:把字符型数据对象str的所有字符转换成小写。
返 回 值:字符型。
参 数:str, 字符型。
实 例:!LCase(“sedERT”)= “sedert”。
!Left(str,n)
函数意义:字符型数据对象str左边起,取n个字符。
返 回 值:字符型。
参 数:str:字符型,源字符串;n,数值型,取字符个数。
实 例:!Left(“ABCDEFG”,2) =”AB”
函数意义:求字符型数据对象str的字符串长度(字符个数)。
返 回 值:数值型。
参 数:str, 字符型。
实 例:!Len(“ABCDEFG”)= 7。
函数意义:把字符型数据对象str中最左边的空格剔除。
返 回 值:字符型。
参 数:str, 字符型。
实 例:!LTrim(” dsfk “) = “dsfk ”
!lVal(str)
函数意义:将字符串转化为长数值型数值
返 回 值:开关型,转换出的数值。
参 数:str,字符型。待转换的字符串。
实 例:!lVal(“12345678”)=12345678。
函数意义:从字符型数据对象str左边第n个字符起,取k个字符。数字字符时,从零开始算起。
返 回 值:字符型。
参 数:str, 字符型,源字符串;
n, 数值型,起始位置;
k, 数值型,取字符数。
实 例:!Mid(“ABCDEFG”,3,2) = “DE”。
!Oct2I(s)
函数意义:把8进制字符串转换为数值。
返 回 值:开关型。
参 数:s, 字符型。
实 例:!Oct2I(“11”) =9。
函数意义:从字符型数据对象str右边起,取n个字符。
返 回 值:字符型。
参 数:str,字符型,源字符串;n,数值型,取字符个数。
实 例:!Right(“ABCDEFG”,2) =”FG”。
函数意义:把字符型数据对象str中最右边的空格剔除。
返 回 值:字符型。
参 数:str, 字符型。
实 例:!Rtrim(” dsfk “) =” dsfk”。
函数意义:将数值型数据对象x的值转换成字符串。
返 回 值:字符型。
参 数:x, 数值型。
实 例:!Str(0.712) =”0.712″。
函数意义:比较字符型数据对象str1和str2是否相等,返回值为0时相等,否则不相等。不区分大小写字母。
返 回 值:数值型。
参 数:str1, 字符型;
str2, 字符型。
实 例:!StrComp(“ABC”,”abc”) = 0。
!StrFormat(FormatStr,任意个数变量)
函数意义:格式化字符串,可以格式化任意多个数值。使用方法为!StrFormat(“%d”,23),或!StrFormat(“%g-%g-%g”,2.3,2.1,2.2)等,类似C语言中的 Printf的语法。
返 回 值:字符型。
参 数:FormatStr, 字符型,格式化字符串。后面的参数可以任意多个。
实 例:!StrFormat(“%g–%g”,12,12.34)= “12–12.34″。
函数意义:把字符型数据对象str中左右两端的空格剔除。
返 回 值:字符型。
参 数:str, 字符型。
实 例:!Trim(” dsfk “) =”dsfk”。
函数意义:把字符型数据对象str的所有字符转换成大写。
返 回 值:字符型。
参 数:str, 字符型。
实 例:!UCase(“sedERT”) =”SEDERT”。
函数意义:把字符型数据对象str的值转换成数值。
返 回 值:数值型。
参 数:str, 字符型。
实 例:!Val(“0.712”) = 0.712。
5.定时器操作函数
可用的系统定时器范围为1到127,即系统内嵌127个系统定时器。用户可以随意使用其中的任意一个。
定时器返回时间值为数值型,单位为秒,分,时,但是小数位最多可以表示到毫秒。因为采用浮点数表示,随着数值增大会略有误差。
!TimerClearOutput(定时器号)
函数意义: 清除定时器的数据输出连接。
返 回 值:数值型。返回值=0:调用成功;<>0:调用失败。
参 数:定时器号。
实 例:!TimerClearOutput(1),清除1号定时器的数据输出连接。
!TimerRun(定时器号)
函数意义:启动定时器开始工作。
返 回 值:数值型。返回值=0:调用成功;<>0:调用失败。
参 数:定时器号。
实 例:!TimerRun(1),启动1号定时器工作。
!TimerStop(定时器号)
函数意义:停止定时器工作。
返 回 值:数值型。返回值=0:调用成功;<>0:调用失败。
参 数:定时器号。
实 例:!TimerStop(1),停止1号定时器工作。
!TimerSkip(定时器号,步长值)
函数意义:在计时器当前时间数上加/减指定值。
返 回 值:数值型。返回值=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(定时器号,1)
函数意义:以字符串的形式返回当前定时器的值。
返回 值:字符型变量, 将定时器的值以字符型的方式输出(时间格式)。
参 数:定时器号。
实 例:Time=!TimerStr(1,1),取定时器的值以“00:00:00”形式输出给Time。
!TimerState(定时器号)
函数意义:取定时器的工作状态。
返 回 值:数值型变量,0 – 定时器停止,1 – 定时器运行。
参 数:定时器号。
实 例:data1=!TimerState(1),取定时器1的工作状态给data1。
!TimerSetLimit(定时器号,上限值,参数3)
函数意义:设置定时器的最大值,即设置定时器的上限。
返 回 值:数值型。返回值=0:调用成功;<>0:调用失败。
参 数:定时器号(1-255);上限值;第三个参数,1 – 表示运行到60后停止;0 – 表示运行到60后重新循环运行。
实 例:!TimerSetLimit(1,60,1),设置1号定时器的上限为60,运行到60后停止。
!TimerSetOutput(定时器号,变量)
函数意义:设置定时器的值输出连接的变量。
返 回 值:数值型。返回值=0:调用成功;<>0:调用失败。
参 数:定时器号;变量,定时器的值输出连接的变量。
实 例:!TimerSetOutput(1,Data0),将定时器数据连接到Data0。
!TimerWaitFor(定时器号,数值)
函数意义:等待定时器工作到“数值”指定的值后,脚本程序才向下执行。
返 回 值:数值型。返回值=0:调用成功;<>0:调用失败。
参 数:定时器号(1-255);数值, 等待定时器工作到指定的值。
实 例:!TimerWaitFor(1,55),等定时器工作到55秒后再执行其他操作。
- 系统操作函数
!AppActive()
函数说明:此函数在嵌入版中无效,考虑兼容性问题,故保留。
!Beep()
函数意义:发出嗡鸣声。
返 回 值:数值型。返回值=0:调用成功;<>0:调用失败。
参 数:无。
实 例:!Beep()。
!EnableDDEConnection()
函数说明:此函数在嵌入版中无效,考虑兼容性问题,故保留。
!EnableDDEInput()
函数说明:此函数在嵌入版中无效,考虑兼容性问题,故保留。
!LinePrtOutput()
函数说明:此函数在嵌入版中无效,考虑兼容性问题,故保留。
!PlaySound()
函数说明:此函数在嵌入版中无效,考虑兼容性问题,故保留。
!SendKeys(string)
函数意义:将一个或多个按键消息发送到活动窗口,就如同在键盘上进行输入一样。
返 回 值:数值型。返回值=0:调用成功;<>0:调用失败。
参 数:string,字符串表达式,指定要发送的按键消息。
实 例:!SendKeys(“%{TAB}”),切换窗口。
说 明:每个按键由一个或多个字符表示。为了指定单一键盘字符,必须按字符本身的键。例如,为了表示字母 A,可以用 “A” 作为 string。为了表示多个字 符,就必须在字符后面直接加上另一个字符。例如,要表示 A、B 及 C,可用 “ABC” 作为 string。对 SendKeys 来说,加号 (+)、插入符 (^)、百分比符号 (%)、上划线 (~) 及圆括号 ( ) 都具有特殊意义。为了指定上述任何一个字符,要将它放在大括号 ({}) 当中。例如,要指定正号,可用 {+} 表示。为了指定大括号字符,请使用 {{} 及 {}}。为了在按下按键时指定那些不显示的字符,例如:ENTER 或 TAB 以及那些表示动作而非字符的按键,请使用下列代码:
按键 | 代码 |
BACKSPACE | {BACKSPACE}, {BS}, 或 {BKSP} |
BREAK | {BREAK} |
CAPS LOCK | {CAPSLOCK} |
DEL or DELETE | {DELETE} 或 {DEL} |
DOWN ARROW | {DOWN} |
END | {END} |
ENTER | {ENTER}或 ~ |
ESC | {ESC} |
HOME | {HOME} |
INS or INSERT | {INSERT} 或 {INS} |
LEFT ARROW | {LEFT} |
NUM LOCK | {NUMLOCK} |
PAGE DOWN | {PGDN} |
PAGE UP | {PGUP} |
RIGHT ARROW | {RIGHT} |
SCROLL LOCK | {SCROLLLOCK} |
TAB | {TAB} |
UP ARROW | {UP} |
F1 | {F1} |
F2 | {F2} |
F3 | {F3} |
F4 | {F4} |
F5 | {F5} |
F6 | {F6} |
F7 | {F7} |
F8 | {F8} |
F9 | {F9} |
F10 | {F10} |
F11 | {F11} |
F12 | {F12} |
F13 | {F13} |
F14 | {F14} |
F15 | {F15} |
F16 | {F16} |
为了指定那些与 SHIFT、CTRL 及 ALT 等按键结合的组合键,可在这些按键码的前面放置一个或多个代码,这些代码列举如下:
按键 代码
SHIFT +
CTRL ^
ALT %
为了说明在按下其它按键时应同时按下 SHIFT、CTRL、及 ALT 的任意组合键,请把那些按键的码放在括号当中。例如,为了说明按下 E 与 C 的时候同时按下 SHIFT 键,请使用 “+(EC)”。为了说明在按下 E 的时候同时按下 SHIFT 键,但接着按 C 而不按 SHIFT,则使用”+EC”。
注 意:不能用 SendKeys 将按键消息发送到这样一个应用程序,这个应用程序并没有被设计成在 Microsoft Windows 中运行。 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时不变;
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()
函数说明:此函数在嵌入版中无效,考虑兼容性问题,故保留。
!Sleep(mTime)
函数意义:在脚本程序中等待mTime毫秒,然后再执行下条语句。只能在策略中使用,否则会造成系统响应缓慢。
返 回 值:数值型。返回值=0:调用成功;<>0:调用失败。
参 数:mTime,数值型,要等待的毫秒数。
实 例:!Sleep(10)。
!TerminateApplication()
函数说明:此函数在嵌入版中无效,考虑兼容性问题,故保留。
!WaitFor (Dat1,Dat2)
函数意义:在脚本程序中等待设置的条件满足,脚本程序再向下执行。只能在策略中使用,否则造成系统响应缓慢。
返 回 值:数值型。返回值=0:调用成功;<>0:调用失败。
参 数:Dat1,数值型,条件表达式,如:D=15。
Dat2,数值型,等待条件满足的超时时间,单位:ms。为0则无限等待。
实 例:!WaitFor(D=15,12000),等变量D的值等于15后,程序再继续执行,如果在12秒后条件仍然没有满足,也自动继续执行。此函数通常用于做实验时,等待某个条件满足,然后再接着执行实验流程。他与Sleep函数以及While循环语句、其他循环策略配合,能够实现复杂的流程调度。
注 意:!WaitFor只能用于策略中,而不能直接在窗口控件的脚本程序中使用。
!WinHelp()
函数说明:此函数在嵌入版中无效,考虑兼容性问题,故保留。
7.数学函数
函数意义:反正切函数。
返 回 值:数值型,用弧度表示。
参 数:x,数值型。
实 例:!Atn(1)=0.785398。
函数意义:余弦函数。
返 回 值:数值型。
参 数:x,数值型,用弧度表示。
实 例:!Cos(3.14159)=-1.0。
函数意义:正弦函数。
返 回 值:数值型。
参 数:x,数值型,用弧度表示。
实 例:!Sin(3.14159)=0.0。
函数意义:正切函数。
返 回 值:数值型。
参 数:x,数值型,用弧度表示。
实 例:!Tan(3.14159)=0.0。
函数意义:指数函数。
返 回 值:数值型。
参 数:x,数值型。
实 例:!Exp(2.3020585093)=10.0。
函数意义:对数函数。
返 回 值:数值型。
参 数:x,数值型。
实 例:!Log(10)=2.302。
函数意义:平方根函数。
返 回 值:数值型。
参 数:x,数值型。
实 例 :!Sqr(4.0)=2.0。
函数意义:绝对值函数。
返 回 值:数值型。
参 数:x,数值型。
实 例 :!Abs(-3.14159)=3.14159。
函数意义:符号函数。
返 回 值:数值型。
参 数: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开始计算。
返 回 值:开关型。
参 数:x,开关型。y,开关型。
实 例:!BitClear(3,1) = 1,把第2位清空。
!BitSet(x,y)
函数意义:设置指定位,位置从0开始计算。
返 回 值:开关型。
参 数:x,开关型。y,开关型。
实 例:!BitSet (3,2) = 7。
!BitNot(x)
函数意义:按位取反。
返 回 值:开关型。
参 数:x,开关型。
实 例:!BitNot(0) = 0xffffffff。
!BitTest(x,y)
函数意义:检测指定位是否为一,位置从0开始计算。
返 回 值:开关型。
参 数:x,开关型。y,开关型。
实 例:!BitTest(3,2) = 0。
!BitLShift(x,y)
函数意义:左移
返 回 值:开关型。
参 数:x,开关型。y,开关型。
实 例:!BitLShift(3,1) = 6。
!BitRShift(x)
函数意义:右移。
返 回 值:开关型。
参 数:x,开关型。y,开关型。
实 例:!BitRShift(3,1) = 1。
!Rand(x,y)
函数意义:生成随机数,随机数的范围在x和y之间。
返 回 值:数值型。
参 数:x,数值型。y, 数值型。
实 例:!Rand(3,4) = 3.1。
文件操作函数
注意:文件操作函数中所涉及到文件的路径均为绝对路径
!FileAppend(strTarget,strSource)
函数意义:将文件strSource中的内容添加到文件strTarget后面,使两文件合并为一个文件。
返 回 值:开关型。
参 数: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,字符型,要查找的文件的文件名(文件名中可以包含文件通配符:*和?);
objName,字符型对象名,函数调用成功后,保存查找结果的名称。
objSize,数值型对象名,函数调用成功后,保存查找结果的大小;
objAttrib,数值型对象名,函数调用成功后,保存查找结果的属性:
若objAttrib = 0,则查找结果为一个文件;
若objAttrib = 1,则查找结果为一个目录。
实 例:!FileFindFirst(“d:\a*.txt”,Name,Size,Attrib)。
实例说明:查找D盘下第一个名字为:a*.txt的文件或目录,将查找结果的属性存入Attrib数值变量中,大小存入Size数值变量中,名字存入Name数值变量中。
!FileFindNext(FindHandle,objAttrib,objSize,objName)
函数意义:根据FindHandle提供的句柄,继续查找下一个文件或目录。
返 回 值:开关型;
返回0:查找不成功;
返回非0值:查找成功。
参 数:FindHandle,开关型,由函数!FileFindFirst返回。
objAttrib,数值型对象名,函数调用成功后,保存查找结果的属性:
若objAttrib = 0,则查找结果为一个文件;
若objAttrib = 1,则查找结果为一个目录。
objSize,数值型对象名,函数调用成功后,保存查找结果的大小;
objName,字符型对象名,函数调用成功后,保存查找结果的名称。
实 例:!FileFindNext(aa,Attrib,Size,Name)。
实例说明:根据句柄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,字符型,要写入数据所在的节的名称;
strItem,字符型,要读写入据的项名;
objResult,数值型、字符型对象名,用于保存写入的数据;
实 例:!FileIniWriteValue(“d:\a.ini”,”system”,”memory”,result)。
实例说明:将数据对象result的值写入到配置文件a.ini中的system节中memory项中。
!FileIniWriteNoFlush(strIniFilename,strSection,strItem,objResult)
函数意义:!FileIniWriteNoFlush(strIniFilename,strSection,strItem,objResult) 函数和!FileIniWriteValue接口和功能基本一致,只是写完后不刷新磁盘;
返 回 值:开关型。
参 数:strIniFilename,字符型,配置文件的文件名;
strSection,字符型,要写入数据所在的节的名称;
strItem,字符型,要读写入据的项名;
objResult,数值型、字符型对象名,用于保存写入的数据;
实 例:!FileIniNoFlush(“d:\a.ini”,”system”,”memory”,result)。
实例说明:将数据对象result的值写入到配置文件a.ini中的system节中memory项中。此时值被写入内存,磁盘未被刷新,磁盘文件不保存。
!FileIniFlush(strIniFilename)
函数意义:!FileIniWriteFlush(strIniFilename) 函数将内存中的ini文件更新到磁盘上,与!FileIniWriteFlush(strIniFilename,strSection,strItem,objResult) 函数 配合使用
返 回 值:开关型。成功返回0,否则返回1。
参 数:strIniFilename,字符型,配置文件的文件名;
实 例:!FileIniFlush(“d:\a.ini”)。
实例说明:将内存中数据对象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中。
!FileSplit(strSourceFile,strTargetFile,FileSize)
函数意义:此函数用于把一个文件切开为几个文件。
返 回 值:开关型。
参 数:strSourceFile,字符型,准备切开的文件名;
strTargetFile,字符型,切开后的文件名;
FileSize,数值型,切开的文件的最大大小,单位是MB。
实 例:!FileSplit(“d:\1.txt”,”Spl”,1.0)。
实例说明:此时函数将把文件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中的IPosition位置开始,写入一个字符串,或一整行。
返 回 值:开关型。
参 数:strFilename,字符型,文件名;
lPosition,开关型,数据开始位置;
= 0,表示在文件开头;
<>0,表示在文件结尾;
str,字符型,要写入的字符串;
Rn,开关型,是否换行;
0,表示不换行;
1,表示换行。
实 例:!FileWriteStr (“d:\a.txt”,a,”abcdefg”,input)。
实例说明:在D盘下a.txt文件的开头(当a为0时)或结尾(当a为1时)写入一个字符串”abcdefg”,如果input为1时,在此字符串后面添加回车换行,否则不添加。
注 意:在文件开头写入字符串时,将覆盖原有内容;在文件结尾写入字符串时,将在原有基础上添加,并不覆盖原来的内容。
!FileReadStrLimit(str,int,int,int,str)
函数意义:把数据按照给定的长度格式化处理成固定的长度,并且读出文件。
返 回 值:数值型。返回值=0:打开文件成功,读回数据成功;
=1:打开文件成功,没有读到数据(Eof);
=-1:文件不存在;
=-2:文件存在无法打开;
=-3:组态错误;
=-4:未定义的文件打开错误。
参 数:str,字符串,需要操作的文件名称,包含绝对路径和文件名,如果不包含路径,则表示在当前工程路径下;如果不包含扩展名,则扩展名为DAT;如果字符串为空,则表示路径为当前路径,文件名为当前工程名称+File,扩展名为Dat;
int,开关型,读数据的起始位置,该数据的单位是字节,从1开始,如果小于1,则在程序内部应该有防错处理;
int,开关型,读数据的长度,此长度的数据可能包含了若干填充符(Ascii的0);
int,数值型,格式化方式,如果读回的数据中包含填充符,写入MCGS变量中时是否保留这些填充符,0 不保留,1保留;
str,字符型,存放读回来的数据的MCGS字符型变量。
实 例:!FileReadStrLimit(“D:\a.txt”,1,6,1,a)读出格式化后的文件。
实例说明:将a.txt文件从第1字节开始,读取数据,按6字节长度格式化,读回的数据中若包含填充符,写入MCGS变量中时保留这些填充符。
!FileWriteStrLimit(str,int,int,int,str,int,int)
函数意义:把数据按照给定的长度格式化处理成固定的长度,并且写出文件。
返回 值:数值型。返回值=0:打开文件成功,写入数据成功;
=1:打开文件成功,无法写入(硬盘空间不够等);
=-1:文件不存在且无法创建;
=-2:文件存在,无法打开;
=-3:组态错误;
=-4:未定义的文件打开错误。
参 数:str,字符串,需要操作的文件名称,包含绝对路径和文件命,如果不包含路径,则表示在当前工程路径下;如果不包含扩展名,则扩展名为DAT;如果字符串为空,则表示路径为当前路径,文件命为当前工程名称+File,扩展名为Dat;
int,开关型,写数据的起始位置,该数据的单位是字节;任意的正数,表示从该字节的位置开始写数据,插入方式从该字节之后插入,覆盖方式就直接覆盖该部分数据;0,表示用文件头开始写记录;-1,表示从文件尾开始写记录,无论插入或覆盖方式,最后的结果都是插入数据,即不会修改原有的任何数据;
int,开关型,数据写入文件后的长度,此长度的数据可能包含了若干填充符(Ascii的0);
int,格式化方式,如果被写的数据长度大于参数2指定的长度,则在剪裁该数据的左边还是右边,即斩头还是去尾,0左边(斩头),1右边(去尾);如果反之,被写的数据长度小于参数2指定的长度,则固定在在数据的右边(后边)添加填充符(Ascii的0);
str,字符型,存放被写数据的MCGS字符型变量;
int,数值型,写记录的方式,0插入,1覆盖;
int,数值型,本次写操作是否作为结束本条记录,0表示本条记录结束, 1表示本条记录未写完;
实 例:!FileWriteStrLimit(“D:\a.txt”,1,6,1,a,0,0) 写出格式化后的文件。
实例说明:将a.txt文件从第1字节开始,写数据,按6字节长度,右边(去尾)格式化,被写数据的MCGS字符型变量存放在变量a中,记录方式为插入记录,本次操作结束记录。
时间运算函数
!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,”%A, %B %d,%Y”)。
实例说明:将时间值转换为字符串型,其表示格式为:星期,月 日,年。
!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表示下午
%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
时区名称的简写,如果时区不可知则没有字符。如:中国标准时间
%%
百分号表示
注:目前,在此版本中有些显示参数还没有实现其功能,具体的有%p %U %w %W %x %z %a %A %b %B %c %I %j。
!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)
实例说明:计算两个时间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、保存时间值,应该使用数值型数,使用浮点会损失精度,典型的问题是时间添加。
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函数计算得来)。
返 回 值:开关型,时间差中的分钟总数。
参 数:iTimeSpan,开关型,时间差。
实 例:!TimeSpanGetTotalMinutes(TimeSpan)。
实例说明:获取时间差TimeSpan中的分钟总数。
!TimeSpanGetTotalSeconds(iTimeSpan)
函数意义:获取时间差中的秒总数;(时间差由TimeGetSpan函数计算得来)。
返 回 值:开关型,时间差中的秒总数。
参 数:iTimeSpan,开关型,时间差。
实 例:!TimeSpanGetTotalSeconds(TimeSpan)。
实例说明:获取时间差TimeSpan中的秒总数。
!TimeAdd(iTime,iTimeSpan)
函数意义:向时间iTime中加入由iTimeSpan指定的秒数。
返 回 值:开关型,相加后的时间值。
参 数:iTime,开关型,初始时间值。
iTimeSpan,开关型,要加的秒数。
实 例:!TimeAdd(Time,500)。
实例说明:向时间Time中加上500秒。
!Outp(参数1,参数2)
函数意义:向端口输出一个字节。
返 回 值:开关型。返回值=0:调用正常,<>0:调用不正常。
参 数:参数1,开关型,端口号;
参数2,开关型,输出的字节。
实 例:!Outp(320,255)。
实例说明:向端口320输出字节255。
!OutpW(参数1,参数2)
函数意义:向端口输出两个字节。
返 回 值:开关型。返回值=0:调用正常,<>0:调用不正常。
参 数:参数1,开关型,端口号;
参数2,开关型,输出的字节。
实 例:!OutpW(320,256)。
实例说明:向端口320输出字节256。
!OutpD(参数1,参数2)
函数意义:向端口输出四个字节。
返 回 值:开关型。返回值=0:调用正常,<>0:调用不正常。
参 数:参数1,开关型,端口号;
参数2,开关型,输出的字节。
实 例:!OutpD(320,65537)。
实例说明:向端口320输出字节65537。
!Inp(参数1)
函数意义:返回从端口输入的一个字节。
返 回 值:开关型。输入的字节。
参 数:参数1,开关型,端口号。
实 例:!Inp(320)。
实例说明:返回从端口320输入的一个字节。
!InpW(参数1)
函数意义:返回从端口输入的两个字节。
返 回 值:开关型。输入的字节。
参 数:参数1,开关型,端口号。
实 例:!InpW(320)。
实例说明:从端口320输入的两个字节。
!InpD(参数1)
函数意义:返回从端口输入的四个字节。
返 回 值:开关型。输入的字节。
参 数:参数1,开关型,端口号。
实 例:!InpD(320)。
实例说明:返回从端口320输入的四个字节。
!WriteMemory(参数1,参数2)
函数意义:向内存写入一个字节。
返 回 值:开关型。返回值=0:调用正常,<>0:调用不正常。
参 数:参数1,开关型,内存地址,如Oxa0000,注意转换为十进制;
参数2,开关型,写入的字节。
实 例:!WriteMemory(320,255)。
实例说明:向地址320写入255。
!WriteMemoryW(参数1,参数2)
函数意义:向内存写入两个字节。
返 回 值:开关型。返回值=0:调用正常,<>0:调用不正常。
参 数:参数1,开关型,内存地址,如Oxa0000,注意转换位十进制;
参数2,开关型,写入的字节。
实 例:!WriteMemoryW(320,256)。
实例说明:向地址320写入256。
!WriteMemoryD(参数1,参数2)
函数意义:向内存写入四个字节。
返 回 值:开关型。返回值=0:调用正常,<>0:调用不正常。
参 数:参数1,开关型,内存地址,如Oxa0000,注意转换位十进制;
参数2,开关型,写入的字节。
实 例:!WriteMemoryD(320,65537)。
实例说明:向地址320写入65537。
!ReadMemory(参数1)
函数意义:从内存读出一个字节。
返 回 值:开关型。读出的字节。
参 数:参数1,开关型,内存地址,如Oxa0000,注意转换位十进制。
实 例:!ReadMemory(320)。
实例说明:从地址320读出一个字节。
!ReadMemoryW(参数1)
函数意义:从内存读出两个字节。
返 回 值:开关型。读出的字节。
参 数:参数1,开关型,内存地址,如Oxa0000,注意转换位十进制。
实 例:!ReadMemoryW(320)。
实例说明:从地址320读出两个字节。
!ReadMemoryD(参数1)
函数意义:从内存读出四个字节。
返 回 值:开关型。读出的字节。
参 数:参数1,开关型,内存地址,如Oxa0000,注意转换位十进制。
实 例:!ReadMemoryD(320)。
实例说明:从地址320读出四个字节。
!SetSerialBaud(参数1,参数2)
函数意义:设置串口的波特率。
返 回 值:开关型。返回值=0:调用正常,<>0:调用不正常。
参 数:参数1,开关型,串口号,从1开始,串口1对应1;
参数2,开关型,波特率,可选值包括:
/*50,75,110,134.5,150,300,600,1200,1800,2400,4800,7200,9600,19200,38400,57600,115200,230400,460800,921600*/。
实 例:!SetSerialBaud(1,57600)。
实例说明:设置串口1的波特率为57600。
!SetSerialDataBit(参数1,参数2)
函数意义:设置串口的数据位。
返 回 值:开关型。返回值=0:调用正常,<>0:调用不正常。
参 数:参数1,开关型,串口号,从1开始,串口1对应1;
参数2,开关型,数据位,0x00 = bit_5;0x01 = bit_6;0x02 = bit_7;0x03 = bit_8。
实 例:!SetSerialDataBit(1,8)。
实例说明:设置串口1的数据位为8位。
!SetSerialStopBit(参数1,参数2)
函数意义:设置串口的停止位。
返 回 值:开关型。返回值=0:调用正常,<>0:调用不正常。
参 数:参数1,开关型,串口号,从1开始,串口1对应1;
参数2, 开关型,停止位,0x00 = stop_1;0x04 = stop_2。
实 例:!SetSerialStopBit(1,2)。
实例说明:设置串口1的停止位为2位。
!SetSerialParityBit(参数1,参数2)
函数意义:设置串口的校验位。
返 回 值:开关型。返回值=0:调用正常,<>0:调用不正常。
参 数:参数1,开关型,串口号,从1开始,串口1对应1;
参数2, 开关型,校验位,0x00 = none;0x08 = odd;0x18 = even;0x28 = mark;0x38 = space。
实 例:!SetSerialParityBit(1,56)。
实例说明:设置串口1无校验。
!GetSerialBaud(参数1)
函数意义:读取串口的波特率。
返 回 值:开关型。串口的波特率。
参 数:参数1,开关型,串口号,从1开始,串口1对应1。
实 例:!GetSerialBaud(1)。
实例说明:读取串口1的波特率。
!GetSerialDataBit(参数1)
函数意义:读取串口的数据位。
返 回 值:开关型。串口的数据位。
参 数:参数1,开关型,串口号,从1开始,串口1对应1。
实 例:!GetSerialDataBit(1)。
实例说明:读取串口1的数据位
!GetSerialStopBit(参数1)
函数意义:读取串口的停止位。
返 回 值:开关型。串口的停止位。
参 数:参数1,开关型,串口号,从1开始,串口1对应1。
实 例:!GetSerialStopBit(1)。
实例说明:读取串口1的停止位。
!GetSerialParityBit(参数1)
函数意义:读取串口的校验位。
返 回 值:开关型。串口的校验位。
参 数:参数1,开关型,串口号,从1开始,串口1对应1。
实 例:!GetSerialParityBit(1)。
实例说明:读取串口1的校验位。
!WriteSerial(参数1,参数2)
函数意义:向串口写入一个字节。
返 回 值:开关型。返回值=0:调用正常,<>0:调用不正常。
参 数:参数1,开关型,串口号,从1开始,串口1对应1;
参数2,开关型,写入的字节。
实 例:!WriteSerial(1,255)。
实例说明:向串口1写入255。
!ReadSerial(参数1)
函数意义:从串口读取一个字节。
返 回 值:开关型。读取的字节。
参 数:参数1,开关型,串口号,从1开始,串口1对应1。
实 例:!ReadSerial(1)。
实例说明:从串口1读取一个字节。
!WriteSerialStr(参数1,参数2)
函数意义:向串口写一个字符串。
返 回 值:开关型。返回值=0:调用正常,<>0:调用不正常。
参 数:参数1,开关型,串口号,从1开始,串口1对应1;
参数2,开关型,写入的字符串。
实 例:!WriteSerialStr(1,String)。
实例说明:向串口1写入String。
!ReadSerialStr(参数1)
函数意义:从串口读取一个字符串。
返 回 值:字符型。读取的字符串。
参 数:参数1,开关型,串口号,从1开始,串口1对应1。
实 例:!ReadSerialStr(1)。
实例说明:从串口1读取一个字符串。
!GetSerialReadBufferSize(参数1)
函数意义:检查串口缓冲区中有多少个字符。
返 回 值:开关型。串口缓冲区中有多少个字符。
参 数:参数1,开关型,串口号,从1开始,串口1对应1。
实 例:!GetSerialReadBufferSize(1)。
实例说明:检查串口1的缓冲区中有多少个字符。
!GetFreeMemorySpace()
函数意义:读取空余内存空间。
返 回 值:数值型。空余内存空间。
参 数:无。
实 例:!GetFreeMemorySpace()。
实例说明:读取空余的内存空间。
!GetFreeDiskSpace( )
函数意义:读取空余存盘空间。
返 回 值:数值型。空余存盘空间。
参 数:无。
实 例:!GetFreeDiskSpace()。
实例说明:读取空余存盘空间。
!SetRealTimeStgy (策略号)
函数意义:设置指定的策略为实时策略
返 回 值:数值型,>= 0 表示设置成功
参 数:策略的策略号
!CallDllFunc()
函数说明:此函数在嵌入版中无效,考虑兼容性问题,故保留。
!WaitForInterrupt()
函数说明:此函数在嵌入版中无效,考虑兼容性问题,故保留。
!BufferCreate(缓冲区号,缓冲区长度)
函数意义:创建一个用户指定代号,指定长度的缓冲区,用户可以操作这个缓冲区
返 回 值:数值型。>= 创建成功
参 数:参数1 ,数值型:缓冲区号,从0开始
参数2,数值型:缓冲区长度
实 例:!BufferCreate(0,1024)
实例说明:创建一个1024字节长度的缓冲区,代号为0
!BufferGetAt(缓冲区号,数据位置)
函数意义:获取指定缓冲区指定位置的数据
返 回 值:数值型。获取到的数据值
参 数:参数1 ,数值型:缓冲区号,从0开始,是用户自己创建的
参数2,数值型:数据在缓冲区中的位置
实 例:!BufferGetAt(0,8)
实例说明:获取缓冲区0的第八个数据
!BufferSetAt (缓冲区号,数据位置,数值)
函数意义:设置指定缓冲区指定位置的数据
返 回 值:数值型。>= 0 表示操作成功
参 数:参数1 ,数值型:缓冲区号,从0开始,是用户自己创建的
参数2,数值型: 数据在缓冲区中的位置
参数3,数值型:数据的值
实 例:!BufferSetAt(0,8,100)
实例说明:设置缓冲区0的第八个数据的值为100
!BufferStoreToFile(缓冲区号,文件名)
函数意义:将指定缓冲区的数据写入指定的文件中
返 回 值:数值型。为0表示成功
参 数:参数1 ,数值型:缓冲区号,从0开始,是用户自己创建的
参数2,字符型,用户指定的文件名
实 例:!BufferStoreToFile (0,”/harddisk/mcgsbin/myData/data.buf”)
实例说明:将缓冲区0的数据写入文件:/harddisk/mcgsbin/myData/data.buf中。
!BufferLoadFromFile(缓冲区号,文件名)
函数意义:从文件中读取数据读入缓冲区,如果缓冲区尚不存在,系统自动创建
返 回 值:数值型。为0表示成功
参 数:参数1 ,数值型:缓冲区号,从0开始,是用户自己创建的
参数2,字符型,用户指定的文件名
实 例:!BufferLoadFromFile (0,”/harddisk/mcgsbin/myData/data.buf”)
实例说明:将文件:/harddisk/mcgsbin/myData/data.buf中的数据读入缓冲区。
!PrinterSetup()
函数意义:调用打印设置
返 回 值:数值型。为0表示成功
参 数:无
注:在模拟环境下不起作用。
11.用户窗口的方法与属性
11.1 用户窗口方法
Open
方法作用:打开窗口。
返 回 值:浮点型,=0为操作成功,<>0为操作失败。
Close
方法作用:关闭窗口。
返 回 值:浮点型,=0为操作成功,<>0为操作失败。
Hide
方法作用:隐藏窗口。
返 回 值:浮点型,=0为操作成功,<>0为操作失败。
方法作用:打印窗口。
返 回 值:浮点型,=0为操作成功,<>0为操作失败。
Refresh
方法作用:刷新窗口。
返 回 值:浮点型,=0为操作成功,<>0为操作失败。
BringToTop
方法作用:把窗口显示在最前面。
返 回 值:浮点型,=0为操作成功,<>0为操作失败。
OpenSubWnd
方法作用:显示子窗口。
返 回 值:字符型,如成功就返回子窗口n,n表示打开的第n个子窗口。
参 数 值:参数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为操作失败。
参 数 值:参数1:子窗口的名字。
CloseAllSubWnd
方法作用:关闭窗口中的所有子窗口。
返 回 值:浮点型,=0为操作。
11.2 用户窗口属性
Name
属性意义:窗口的名字。
属性类型:字符型。
Left
属性意义:窗口的X坐标。
属性类型:整型。
Top
属性意义:窗口的Y坐标。
属性类型:整型。
Width
属性意义:窗口的宽度。
属性类型:整型。
Height
属性意义:窗口的高度。
属性类型:整型。
Visible
属性意义:窗口的可见度。
属性类型:整型。
Caption
属性意义:窗口标题。
属性类型:字符型。
12.数据对象的属性
Value
属性意义:数据对象中的值。
属性类型:类型与数据对象的类型相同。
Name
属性意义:数据对象的名字。
属性类型:字符型,只读
Min
属性意义:数据对象的最小值。
属性类型:浮点型
Max
属性意义:数据对象的最大值。
属性类型:浮点型
Unit
属性意义:数据对象的工程单位。
属性类型:字符型
Comment
属性意义:数据对象的注释。
属性类型:字符型
InitValue
属性意义:数据对象的初值.。
属性类型:字符型
Type
属性意义:数据对象的类型。
属性类型:浮点型,只读
AlmEnable
属性意义:数据对象的启动报警标志。
属性类型:浮点型
AlmHH
属性意义:数值型报警的上上限值或开关型报警的状态值。
属性类型:浮点型
AlmH
属性意义:数值型报警的上限值。
属性类型:浮点型
AlmL
属性意义:数值型报警的下限值。
属性类型:浮点型
AlmLL
属性意义:数值型报警的下下限值。
属性类型:浮点型
AlmV
属性意义:数值型偏差报警的基准值。
属性类型:浮点型
AlmVH
属性意义:数值型偏差报警的上偏差值。
属性类型:浮点型
AlmVL
属性意义:数值型偏差报警的下偏差值。
属性类型:浮点型
AlmFlagHH
属性意义:允许上上限报警,或允许开关量报警标志。
属性类型:浮点型
AlmFlagH
属性意义:允许上限报警,或允许开关量跳变报警标志。
属性类型:浮点型
AlmFlagL
属性意义:允许下限报警,或允许开关量正跳变报警标志。
属性类型:浮点型
AlmFlagLL
属性意义:允许下下限报警,或允许开关量负跳变报警标志。
属性类型:浮点型
AlmFlagVH
属性意义:允许上偏差报警。
属性类型:浮点型
AlmFlagVL
属性意义:允许下偏差报警。
属性类型:浮点型
AlmComment
属性意义:报警信息注释。
属性类型:字符型
AlmDelay
属性意义:报警延时次数。
属性类型:浮点型
AlmPriority
属性意义:报警优先级。
属性类型:浮点型
AlmState
属性意义:报警状态
属性类型:浮点型,只读
AlmType
属性意义:报警类型
属性类型:浮点型,只读
13.配方操作函数
!RecipeLoad(strFilename,strRecipeName)
函数意义:装载配方文件;用来新建或打开原有的配方,当新建配方时必须与!RecipeSave()函数连用,否则配方不自动保存。
返 回 值:开关型;
- 0:操作成功;
- <0:操作不成功。
参 数:strFilename,字符型,配方文件名;
strRecipeName,字符型,配方表名。
实 例:!RecipeLoad(“d:\MCGSE \work\1.csv”,”rec” ):!RecipeBind(“rec”,t1,t2,t3,t4 )。
实例说明:装载一个配方文件,文件名为:”d:\MCGSE \work\1.csv”,装载后的配方表名为:rec,并将它绑定到变量t1,t2,t3,t4上。
!RecipeMoveFirst(strRecipeName)
函数意义:移动到第一个配方记录。
返 回 值:开关型;
- 返回0:操作成功;
- 返回值<0:操作不成功。
参 数:strRecipeName,字符型,配方表名。
实 例:!RecipeMoveFirst(“rec”)。
实例说明:移动到配方表rec的第一个配方记录。
!RecipeMoveLast(strRecipeName)
函数意义:移动到最后一个配方记录。
返 回 值:开关型;
- 返回0:操作成功;
- 返回值<0:操作不成功。
参 数:strRecipeName,字符型,配方表名。
实 例:!RecipeMoveLast(“rec”)。
实例说明:移动到配方表rec的最后一个配方记录。
!RecipeMoveNext(strRecipeName)
函数意义:移动到下一个配方记录。
返 回 值:开关型;
参 数:strRecipeName,字符型,配方表名。
实 例:!RecipeMoveNext(“rec”)。
实例说明:移动到配方表Rec的下一个配方记录。
!RecipeMovePrev(strRecipeName)
函数意义:移动到前一个配方记录。
返 回 值:开关型;
- 返回0:操作成功;
- 返回值<0:操作不成功。
参 数:strRecipeName,字符型,配方表名。
实 例:!RecipeMovePrev(“rec”)。
实例说明:移动到配方表Rec的前一个配方记录。
!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”)
实例说明:跳转到配方表Rec,t1对应的值为111处,若有多处匹配,则跳转到第一个匹配的配方记录。
!RecipeSeekToPosition(strRecipeName,rPosition)
函数意义:跳转到配方表strRecipeName的指定的记录rPosition。
返 回 值:开关型;
- 返回0:操作成功;
- 返回值<0:操作不成功。
参 数:strRecipeName,字符型,配方表名;
rPosition,开关型,指定跳转的记录行。
实 例:!RecipeSeekToPosition(“rec”,5)。
实例说明:跳转到配方表rec的记录5。
注 意:记录是从0开始计算的。
!RecipeSort(strRecipeName,DataName,Num)
函数意义:配方表排序。
返 回 值:开关型;
- 返回0:操作成功;
- 返回值<0:操作不成功;
参 数:strRecipeName,字符型,配方表名;
- DataName,数据对象名;
- Num,开关型,0,表示按升序排列;1,表示按降序排列。
实 例:!RecipeSort(“rec”,t1,0)。
实例说明:对配方表rec按t1的升序排列。
注 意:排序后,需要进行保存配方操作,方才有效。
!RecipeClose(strRecipeName)
函数意义:关闭配方表。
返 回 值:开关型;
- 返回0:操作成功;
- 返回值<0:操作不成功;
参 数:strRecipeName,字符型,配方表名。
实 例:!RecipeClose(“rec”)。
实例说明:关闭名为Rec的配方表。
!RecipeDelete(strRecipeName)
函数意义:删除配方表strRecipeName的当前配方。
返 回 值:开关型;
- 返回0:操作成功;
- 返回值<0:操作不成功。
参 数:strRecipeName,字符型,配方表名。
实 例:!RecipeDelete(“rec”)。
实例说明:删除配方表Rec的当前配方。
!RecipeGetCount(strRecipeName)
函数意义:获取配方表strRecipeName中配方的个数。
返 回 值:开关型;
- 返回值>=0:操作成功,其值为配方个数;
- 返回值<0:操作不成功。
参 数:strRecipeName,字符型,配方表名。
实 例:!RecipeGetCount(“rec”)。
实例说明:获取配方表Rec中配方的个数。
!RecipeGetCurrentPosition(strRecipeName)
函数意义:获取配方表strRecipeName中当前的位置。
返 回 值:开关型;
- 返回值>=0:操作成功,其值为当前位置;
- 返回值<0:操作不成功。
参 数:strRecipeName,字符型,配方表名。
实 例:x=!RecipeGetCurrentPosition(“rec”)。
实例说明:获取配方表Rec中当前的位置,并存储在变量x中。
!RecipeGetCurrentValue(strRecipeName)
函数意义:将配方表strRecipeName中的值装载到与其绑定的数据对象上,起到刷新的作用。
返 回 值:开关型;
- 返回值0:操作成功;
- 返回值<0:操作不成功。
参 数:strRecipeName,字符型,配方表名。
实 例:!RecipeGetCurrentValue(“rec”)。
实例说明:将配方表Rec中的值装载到与其绑定的数据对象上。
!RecipeBind(strRecipeName,任意个数变量)
函数意义:把若干数据对象绑定到配方表strRecipeName上。
返 回 值:开关型;
- 返回0:操作成功;
- 返回-1:操作不成功。
参 数:strRecipeName,字符型,配方表名。
实 例:!RecipeBind(“rec”,t1,t2,t3,t4)。
实例说明:把数据对象t1,t2,t3,t4绑定到配方表rec上。
!RecipeAddNew(strRecipeName)
函数意义:在配方表中,用当前连接的数据对象的值添加一行。
返 回 值:开关型;
- 返回0:操作成功;
- 返回-1:操作不成功。
参 数:strRecipeName,字符型,配方表名。
实 例:!RecipeAddNew(“rec”)。
实例说明:在配方表rec中,用当前连接的数据对象的值添加一行。
!RecipeToCsv(配方组名,csv文件名,导出列名,起始编号,要求导出条数,实际导出条数,导出参数)
函数意义:将指定配方组的数据导出到csv文件中。
返 回 值:开关型;
- 返回0:导出成功;
- 返回1:起始编号超过范围;
- 返回2:导出文件创建或写入失败;
- 返回4:指定的配方组不存在;
- 返回5:指定的导出列名在配方组中不存在;
- 返回6:指定的导出参数类型错误(必须是开关型)。
参 数:配方组名,字符型,欲导出的配方组名称。
csv文件名,字符型, 数据导出的目标文件名称。文件保存为csv文件。导出目录固定为Data\recipe。
导出列名,字符型,需要导出的列的集合,各列名以逗号分隔,区分大小写,内容应与配方列标题一致。如果为空表示导出所有列 。
起始编号,开关型,起始编号不能大于配方记录条数减1,起始编号从0开始。
要求导出条数,开关型,要求导出配方记录的最大条数。
实际导出条数,开关型,输出参数,实际导出配方记录的条数。
导出参数,开关型,使用方法如下:
BIT0表示导出数据的方式:追加写入文件或覆盖现有数据:
=0代表保存现有数据,并追加到文件尾部;
=1代表删除文件中现有数据,写入导出数据;
BIT1表示控制导出数据的内容:包含配方组成员字段名称、不包含配方组成员字段名称:
=0代表不包含;
=1代表包含。
实 例:假设工程中已存在“面包配方”,包含成员:面粉、水、奶油、鸡蛋、酵母、糖。
strRecipeName = “面包配方”
strFileName = “面包配方” (此处文件名自行定义)
strTitle = “面粉,水,糖” (如果全部导出则 strTitle = “”)
iStartNum = 0 (从第一条开始导出)
iNeedExpCount = 20 (欲导出的配方条数)
iresExpCount (输出参数,如果导出超出实在条数,或中途失败,此值会小于需要导出条数)
ExportModel = 3 (BIT0=1,BIT1=1,覆盖导出,并在导出数据中包含列头字段)
!CsvToRecipe(配方组名,csv文件名,导入列名,要求导入条数,实际导入条数,导入参数)
函数意义:从csv文件中导入数据到指定配方组。
返 回 值:开关型;
- 返回0:导入成功;
- 返回1:导入文件创建或写入失败;
- 返回2:指定的配方组不存在;
- 返回3:指定的导入列名在配方组中不存在;
- 返回6:指定的导入参数类型错误(必须是开关型)。
参 数:配方组名,字符型,导入的配方组名称。
csv文件名,字符串,导入的csv文件名称,文件固定从Data\recipe目录中导入文件。
导入列名,字符型,以逗号分隔,区分大小写,内容应与配方列标题一致。
要求导入条数,开关型,要求导入配方记录的最大条数。
实际导入条数,开关型,实际导入配方记录的条数。
导入参数,开关型,导入参数要根据文件内容设置:
如果文件中包含列头字段,则导入参数须将BIT1设为1;
如果文件内容中不包含列头字段,则导入参数须将BIT1设置为0。
!RecipeCreate(新建配方组,模板配方组,创建参数)
函数意义:以工程中已存在的配方组为模板,创建新的配方组。
返 回 值:开关型;
- 返回0:创建成功;
- 返回1:指定的模板配方组不存在;
- 返回2:新配方组已存在,且创建参数指定为不覆盖;
- 返回3:创建配方文件失败;
- 返回5:创建参数使用变量的类型不正确(必须是开关型)。
参 数:新建配方组,字符型,新创建配方组的名称。
模板配方组,字符型,作为模板使用的配方组的名称。
创建参数,开关型,指定配方创建的方式及条件。使用方法如下:
BIT0表示创建新配方组时,是否拷贝模板配方组数据:
=0代表不拷贝模板数据,新创建配方组数据为空;
=1代表拷贝模板数据,创建新配方组中数据与模板一致。
BIT1表示欲创建的配方组已在工程中存在时的处理方式:
=0代表不覆盖现有配方组,返回失败;
=1代表覆盖现在配方组;
实 例:StrRecipe = “新式面包配方”
StrModelRecipe = “奶油面包配方”
CreateMode= 1(BIT0=1,BIT1=0;如果欲创建配方已存在,则此调用不成功。若不存在,则创建并拷贝模板数据)
res = RecipeCreate(StrNewRecipe, StrModelRecipe, CreateMode)。
14.配方功能脚本函数
!RecipeLoadByDialog(strRecipeGroupName,strDialogTitle)
函数意义:弹出配方选择对话框,让用户选择要装入的配方。选择后配方变量的值会输出到对应数据对象上。
参 数:strRecipeGroupName ,配方组名称,字符型
strDialogTitle ,对话框标题,字符型
实 例:!RecipeLoadByDialog (” 面包配方组 “,” 装入配方 “)
界 面:
!RecipeModifyByDialog(strRecipeGroupName)
函数意义:通过配方编辑对话框,让用户在运行环境中编辑配方。
参 数:strRecipeGroupName – 配方组名称,字符型
实 例:!RecipeModifyByDialog(” 面包配方组 “)
界 面:
!RecipeManageByDialog()
函数意义:保留函数,没有实现。
!RecipeLoadByName (strRecipeGroupName,strRecipeName)
函数意义:装载指定配方组中的指定配方。配方的参数值将复制到对应的数据对象上。
参 数:strRecipeGroupName – 配方组名称,字符型
strRecipeName – 配方名称,字符型
返 回 值:0 成功; -1 失败
实 例:!RecipeLoadByName(” 面包配方组 “,” 甜面包配方 “)
!RecipeLoadByNum(strRecipeGroupName,nRecipeNum)
函数意义:装载指定配方组中指定编号的配方。配方的参数值将复制到对应的数据对象上。
参 数:strRecipeGroupName – 配方组名称,字符型
nRecipeNum – 配方编号,数值型
返 回 值:0 成功; -1 失败
实 例:!RecipeLoadByNum(” 面包配方组 “, 2)
在当前配方组中选择配方的函数:
!RecipeMoveFirst(strRecipeGroupName)
函数意义:设置指定配方组的当前配方为配方组中的第一个配方。
参 数:strRecipeGroupName – 配方组名称,字符型
返 回 值:0 成功; -1 失败
实 例:!RecipeMoveFirst(” 面包配方组 “)
!RecipeMoveLast(strRecipeGroupName)
函数意义:设置指定配方组的当前配方为配方组中的最后一个配方。
参 数:strRecipeGroupName – 配方组名称,字符型
返 回 值:0 成功; -1 失败
实 例:!RecipeMoveLast(” 面包配方组 “)
!RecipeMoveNext(strRecipeGroupName)
函数意义:设置指定配方组的当前配方为配方组当前配方的下一个配方。
参 数:strRecipeGroupName – 配方组名称,字符型
返 回 值:0 成功; -1 失败
实 例:!RecipeMoveNext(” 面包配方组 “)
!RecipeMovePrev(strRecipeGroupName)
函数意义:设置指定配方组的当前配方为配方组当前配方的上一个配方。
参 数:strRecipeGroupName – 配方组名称,字符型
返回 值:0 成功; -1 失败
实 例:!RecipeMovePrev(” 面包配方组 “)
!RecipeSeekTo(strRecipeGroupName,strRecipeName)
函数意义:设置指定配方组的当前配方为配方组中指定名称的配方。
参 数:strRecipeGroupName – 配方组名称,字符型
strRecipeName – 配方名称,字符型
返 回 值:0 成功; -1 失败
实 例:!RecipeSeekTo(” 面包配方组 “,” 甜面包配方 “)
!RecipeSeekToPosition(strRecipeGroupName,nPosition)
函数意义:设置指定配方组的当前配方为配方组中指定编号的配方。
参 数:strRecipeGroupName – 配方组名称,字符型
nPosition – 配方编号,数值型
返 回 值:0 成功; -1 失败
实 例:!RecipeSeekToPosition(” 面包配方组 “,2)
!RecipeGetCurrentPosition(strRecipeGroupName)
函数意义:返回指定配方组当前配方的编号。
参 数:strRecipeGroupName – 配方组名称,字符型
返 回 值:-1 不成功;其他值,当前配方的编号
实 例:配方组当前位置 = !RecipeGetCurrentPosition(” 面包配方组 “)
!RecipeDelete(strRecipeGroupName)
函数意义: 删除指定配方组的当前配方。删除成功后当前配方会重新定位到被删除配方的下一个配方。
参 数: strRecipeGroupName – 配方组名称,字符型
返 回 值: -1 不成功;其他值,当前配方的编号
实 例: !RecipeDelete(” 面包配方组”)
!RecipeSetValueTo(strRecipeGroupName,GroupObject)
函数意义:将指定配方组当前配方的参数值复制到组对象的成员中。
参 数:strRecipeGroupName – 配方组名称,字符型
GroupObject – 组对象
返 回 值:0 成功; -1 失败; -2 组对象不存在;
-3 组对象成员类型或者数量不匹配
实 例:!RecipeSetValueTo(” 面包配方组 “,面包配方组对象 )
注 意: 这个脚本函数复制参数值时不会受到配方组成员变量输出延时参数的影响。
!RecipeGetValueFrom(strRecipeGroupName,GroupObject)
函数意义:将组对象成员中的值复制到指定配方组的当前配方中。
参 数:strRecipeGroupName – 配方组名称,字符型
GroupObject – 组对象
返 回 值:0 成功; -1 失败; -2 组对象不存在;
-3 组对象成员类型或者数量不匹配
实 例:!RecipeGetValueFrom(” 面包配方组 “,面包配方组对象 )
!RecipeAddNew(strRecipeGroupName,strRecipeName,GroupObject)
函数意义:在指定配方组中追加一个新配方,并将组对象成员的值复制到配方中。
参 数:strRecipeGroupName – 配方组名称,字符型
strRecipeName – 配方名称,字符型
GroupObject – 组对象
返 回 值:0 成功; -1 失败; -2 组对象不存在;
-3 组对象成员类型或者数量不匹配
实 例:!RecipeAddNew(” 面包配方组 “,” 新配方 “,面包配方组对象 )
!RecipeAddAt(strRecipeGroupName,strRecipeName,GroupObject)
函数意义:在指定配方组当前配方的前面插入一个新配方,并将组对象成员的值复制到配方中。
参 数:strRecipeGroupName – 配方组名称,字符型
strRecipeName – 配方名称,字符型
GroupObject – 组对象
返 回 值:0 成功; -1 失败; -2 组对象不存在;
-3 组对象成员类型或者数量不匹配
实 例:!RecipeAddAt(” 面包配方组 “,” 新配方 “,面包配方组对象 )
!RecipeGetName(strRecipeGroupName)
函数意义:得到指定配方组当前配方的名称。
参 数:strRecipeGroupName – 配方组名称,字符型
返 回 值:配方组名称,如果当前配方无效,则返回空字符串
!RecipeSetName(strRecipeGroupName,strRecipeName)
函数意义:设置指定配方组当前配方的名称。
参 数:strRecipeGroupName – 配方组名称,字符型
strRecipeName – 配方名称,字符型
返 回 值:0 成功; -1 失败
版权声明:本文内容来源于网络搜集无法获知原创作者,仅供个人学习用途,若侵犯到您的权益请联系我们及时删除。邮箱:1370723259@qq.com