wincc-全套脚本总结

更新时间:2024-03-20 03:35:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

——————1、wincc全局脚本动作-------隐藏控件——————

#include \ int gscAction( void ) {

// WINCC:TAGNAME_SECTION_START

// syntax: #define TagNameInAction \// next TagID : 1

// WINCC:TAGNAME_SECTION_END int value;

value=GetTagBit(\为触发的变量。 if(value==1) {

SetVisible(\按钮8\为控制对象所在画面名,“按钮8”为对象名称 } else {

SetVisible(\按钮8\}

// WINCC:PICNAME_SECTION_START

// syntax: #define PicNameInAction \// next PicID : 1

// WINCC:PICNAME_SECTION_END

return 0; }

===================================================== 说明:在触发器里选择变量IM_in

——————2、wincc

全局脚本动作----提示框——————

#include \int gscAction( void ) {

// WINCC:TAGNAME_SECTION_START

// syntax: #define TagNameInAction \// next TagID : 1

// WINCC:TAGNAME_SECTION_END int value;

1

value=GetTagBit(\if(value==1) {

MessageBox(NULL,\请确认三厅相关门是否关好,或者请解锁。\提示框\ }

// WINCC:PICNAME_SECTION_START

// syntax: #define PicNameInAction \// next PicID : 1

// WINCC:PICNAME_SECTION_END return 0; }

============================= 说明:在触发器中选择变量触发。

——————3、趋势面板——————————

char * str_a = NULL; int Hi; int Lo;

str_a = GetTagChar(\Lo= GetTagSWord(\Hi= GetTagSWord(\

SetPropWord(lpszPictureName,\

SetPropChar(lpszPictureName,\

SetPropWord(lpszPictureName,\SetPropWord(lpszPictureName,\alue\————————————————————————

——————4、获取位号————————

SetTagChar(\//Return-Type: BOOL SetTagSWord(\SetTagSWord(\SetTagByte(\

————————————————————————

——————5、调用登陆函数——————

#pragma code(\#include \#pragma code()

if (strcmp(GetTagChar(\{

PWRTLogin('c');

2

}

-------------------------------------

——————6、时间同步——————

void SetCpuTime() {

#pragma code(\

void GetLocalTime(SYSTEMTIME *lpst); #pragma code(); SYSTEMTIME time BOOL ret;

//printf(\ GetLocalTime(&time);

ret= SetTagMultiWait(\

\

\

\

\

\

\

\

) }

-------------------------------------

——————7、对话框调用——————

BOOL A; BOOL B;

HWND hwnd=NULL; int RetMsg;

A=GetTagBit(\//Return-Type: BOOL hwnd=FindWindow(NULL,\运行系统 - \if (A==0)

3

{

RetMsg =MessageBox (hwnd, \确定要停机?\\停机警告\MB_OKCANCEL|MB_SYSTEMMODAL|MB_SETFOREGROUND); if (RetMsg==IDOK) {

SetTagBit(\ MessageBox (hwnd, \停机\\停机警告MB_OK|MB_SYSTEMMODAL|MB_SETFOREGROUND); SetTagBit(\ }

else B=0; } else { }

------------------------------------------

——————8、声音报警——————

#pragma code(\ VOID WINAPI PlaySoundA(char* pszSound,char* hmode,DWORD dwflag); #pragma code() if(GetTagFloat(\ PlaySoundA(\ if(GetTagFloat(\ PlaySoundA(\-----------------------------------------------

——————9、水平移动——————

建立内部变量BOOL-Q,无符号32位-P 全局动作 int a;int a1;

a=GetTagBit(\if(a==1) {

a1=a1+10; }

if(a1>=100) {

a1=0;

\4

}

SetTagDWord(\

然后用一个按钮控制二进制变量Q,为启动信号。物体的X位置对应的是变量P,设置为模拟量。当P为1的时候对应的X位置。P为2的时候对应X的位置,以此类推,就可以做出物体移动画面了,要做全局脚本 -----------------------------------------------

——————10、WinCC

中调用SQL语言 ——————

1、创建一个 SQL文件,此文件在ISQL中建立,文件内包含所要执行的SQL语句。Windows对话框实现。具体如下:

2、在WinCC中用C Script 调用上述SQL文件,如下所示: #include"apdefap.h"

void OnLButtonDown(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName, UINT nFlags,int x,int y) {

char*a="c:siemenscommonSQLANYISQL-q-b-c UID=DBA;PWD=SQL;DBF=E:testsqltestsqlRT.DB; DBN=CC_testsql_99-12-03-12:48:26R;READ E:testsqltest.sql"; Printf("%srn",a); ProgramExcute(a); }

下面是一个简单的SQL文件内容: select *from pde#hd#t#test;

output to e:test2.txt FORMAT ascii 注意:文件名及路径中不要带空格。

——————11、设置或重置一个变量——————

void OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName) {

BOOL z;

z=GetTagBit("MyBitVariable");//获得变量值 if (z==0)

SetTagBit("MyBitVariable",1); //设置变量值 else

SetTagBit("MyBitVariable",0); }

——————12、运行时图形产生动态旋转——————

#include "apdefap.h"

long _main(char* lpszPictureName, char* lpszObjectName, char*

5

lpszPropertyName) {

static int x=25,y,z;//x为半径的初始值为25,y为切换变量,z为搅拌机运行状态变量 z=GetTagBit("202搅拌机运行"); //取得PLC搅拌机的运行状态 if(z!=0) {

switch(y) {

case 0: x=x-4; if(x<=0) y=1; break; default : x=x+4;

if(x>=25) y=0; break; } }

return x; }

——————13、WINCC--如何在程序中动态修改用户密码 —————— 1、点击“开始”--》“设置”--》“控制面板”--》“管理工具”--》“数据源(ODBC)”,打开ODBC数据源管理器

2、在用户DSN页面的用户数据源中找到与当前项目所关联的一项,其名称为“CC_项目名_项目建立日期时间”,记下该项的名称 3、在脚本中加入以下代码: #pragma code(\ #include \.H\ #pragma code()

LPCMN_ERROR err; //定义的LPCMN_ERROR型变量,在函数调用中需使用 if (PWGENConnect(\建立与数据库的联接,其中CC_ass_04-09-21_16:35:22用第二步中记下的名称取代 { if

(PWGENChangePassword(GetTagChar(\(\修改密码,user,oldpassword,password分别为存贮用户名,原密码,新密码的内部变量,类型为文本变量8位字符集 {

//密码修改成功后的操作,如给用户提示等 } }

6

PWGENDisconnect(err); //断开与数据库的联接 4、编译运行程序 5、工作完成

6、与用户管理相关的函数定义存贮在APPLIB目录下的USEGENAP.H文件中,可根据上面示例自行完成添加用户,修改权限等功能。

——————14、WinCC如何实现鼠标OnMouseOVer事件 —————— 用WINDOWAPI函数GetCusorPos获取当前鼠标位置,用GetWindowRect函数获取窗口位置,两值相减得鼠标在WINCC frame上的相对位置。用全局脚本(设定为1s定时刷新),然后获取要OnMouseOver事件的物体的位置,并与鼠标位置相比较,如一致则触发自己定义的动作。

#include \int gscAction( void ) {

#pragma code(\

BOOL GetCusorPos(POINT lpPoint); //获取鼠标的位置(绝对位置-对应屏幕分辨率) BOOL GetWindowRect(HWND hwnd,LPRECT lpRect); //获取窗体位置 #pragma code(); POINT pPos; RECT rRec; HWND hwnd; BOOL bRet,bRet2;

long lLeft,lTop,lWidth,lHeight; long lX,lY; char szStr[100];

hwnd=FindWindow(NULL,\如语言为中文应为\运行系统-\if (hwnd==0) {printf(\bRet=GetCursorPos(&pPos); if (bRet==0) goto over;

bRet2=GetWindowRect(hwnd,&rRec); if (bRet2==0) goto over;

lX=pPos.x-rRec.left; //鼠标 对{置 lY=pPos.y-rRec.top; //鼠标 位置

//如果为非全屏模式,需将上述数值中的高height判断减去标题栏的宽度 //printf(\

//printf(\ lLeft=GetLeft(\ lTop=GetTop(\ lWidth=GetWidth(\ lHeight=GetHeight(\

if ((lX>=lLeft)&&(lY>=lTop)&&(lX<=lLeft+lWidth)&&(lY<=lTop+lHeight)) { sprintf(szStr,\

7

SetText(\}

//printf(\ over: return 0; }

——————————————————————————————————————— ——————15、如何在退出

WINCC监控时直接关闭电脑 ——————

1.利用动态向导

2.在脚本中加入 DMExitWinCCEx (DM_SDMODE_SYSTEM);也可以

——————16、过

WINCC API函数读出当前报警消息 ——————

1、使用GMsgFunction中读出当前报警信息的ID(dwMsgNr);

2、使用MSRTGetMsgCSData函数读出该报警信息ID对应文本库TEXTLIB中的文本ID(dwTextID1);

3、使用MSRTGetMsgText函数读出该文本ID的文本。 信息到达处理:如果读取文本成功,则置文本变量MSG。

信息离去处理:如果MsgNr与上一次相同,则复位MSG,如果不是,则继续保持信息。 具体函数说明请看ODK文档

BOOL GMsgFunction( char* pszMsgData) {

#pragma code(\ #i nclude \ #pragma code();

MSG_TEXT_STRUCT tMeld; MSG_CSDATA_STRUCT sM; CMN_ERROR err; BOOL bRet;

DWORD dwTextID1; DWORD dwMsgNum; char szMsg[255];

#define TAG_MSG \

MSG_RTDATA_STRUCT mRT;

memset( &mRT, 0, sizeof( MSG_RTDATA_STRUCT ) ); if( pszMsgData != NULL ) {

printf( \ sscanf( pszMsgData, \ &mRT.dwMsgNr, // Meldungsnummer

&mRT.dwMsgState, // Status MSG_STATE_COME, .._GO, .._QUIT, .._QUIT_SYSTEM &mRT.stMsgTime.wYear, // Tag

8

&mRT.stMsgTime.wMonth, // Monat &mRT.stMsgTime.wDay, // Jahr &mRT.stMsgTime.wHour, // Stunde &mRT.stMsgTime.wMinute, // Minute &mRT.stMsgTime.wSecond, // Sekunde

&mRT.stMsgTime.wMilliseconds, // Millisekunde

&mRT.dwTimeDiff, // Zeitdauer der anstehenden Meldung &mRT.dwCounter, // Interner Meldungsz?hler &mRT.dwFlags, // Flags( intern ) &mRT.wPValueUsed, &mRT.wTextValueUsed );

//**************************************************************************************code for dcount

if (mRT.dwMsgState==MSG_STATE_COME)//信息到达处理 {

dwMsgNum=mRT.dwMsgNr;

printf(\ bRet=MSRTGetMsgCSData(dwMsgNum,&sM,&err); if (bRet==TRUE) {

dwTextID1=sM.dwTextID[0];

printf(\ bRet=MSRTGetMsgText(1,dwTextID1,&tMeld,&err); if (bRet==TRUE) {

sprintf(szMsg,\

printf(\ } } }

if (mRT.dwMsgState==MSG_STATE_GO)//信息离去处理 {

dwMsgNum=mRT.dwMsgNr;

if (dwMsgNum==GetTagDWord(TAG_MSG_NR)) SetTagChar(TAG_MSG,\}

//**************************************************************************************code for dcount // Meldungsdaten einlesen

// Prozesswerte lesen, falls gew???????§???1nscht }

printf(\ mRT.dwMsgNr, mRT.dwMsgState, mRT.stMsgTime.wDay, mRT.stMsgTime.wMonth, mRT.stMsgTime.wYear,

9

mRT.stMsgTime.wHour, mRT.stMsgTime.wMinute, mRT.stMsgTime.wMilliseconds, mRT.dwTimeDiff, mRT.dwCounter, mRT.dwFlags ) ; SetTagChar(TAG_MSG,szMsg); return( TRUE ); }

mRT.stMsgTime.wSecond,

——————17、实现用户登陆日志(wincc中用c脚本实现?)—————— 用户登陆日志:(包括用户的登陆退出信息,以便查询在什么时间段是哪个用户在使用这个监控软件)

#i nclude \int gscAction( void ) {

#pragma code(\

VOID GetLocalTime(LPSYSTEMTIME lpSystemTime); #pragma code() char* username; char buf[128];

static char preuser[128]; unsigned a,b,c,d,e,f; FILE* fp;

SYSTEMTIME sysTime;

//读取系统时间,并且复制给变量a,b,c,d,e,f GetLocalTime(&sysTime); a=sysTime.wHour; b=sysTime.wMinute; c=sysTime.wSecond; f=sysTime.wYear; e=sysTime.wMonth; d=sysTime.wDay; //得到当前用户名称

username = GetTagChar(\ fp= fopen(\

if(strcmp(username, preuser)!=0) //如果当前用户名称和前一个用户名不同 {

if((strcmp(username, \如果当前用户名称不空同时前一个用户名为空 {

sprintf(buf, \用户:%st登陆时间是:t %d-%d-%d,%d-%d-%dn\ fputs(buf, fp); } else

10

{

if((strcmp(username, \如果当前用户名称为空同时前一个用户名不空 {

sprintf(buf, \用户:%st退出时间是:t %d-%d-%d,%d-%d-%dn\ fputs(buf, fp); } else {

sprintf(buf, \用户:%st退出时间是:t %d-%d-%d,%d-%d-%dn\ fputs(buf, fp);

sprintf(buf, \用户:%st登陆时间是:t %d-%d-%d,%d-%d-%dn\ fputs(buf, fp); } } }

strcpy(preuser, username); fclose(fp); return 0; }

——————18、全局脚本--声音报警——————

#pragma code(\ VOID WINAPI PlaySoundA(char* pszSound,char* hmode,DWORD dwflag); #pragma code() if (GetTagBit(\ { if(GetTagFloat(\ //热井液位 { PlaySoundA(\热井液位高1.wav\ } if(GetTagFloat(\ //热井液位 { PlaySoundA(\热井液位低1.wav\ } if(GetTagFloat(\|| GetTagFloat(\|| GetTagFloat(\|| GetTagFloat(\|| GetTagFloat(\|| GetTagFloat(\|| GetTagFloat(\ //轴瓦温度 {

11

PlaySoundA(\轴瓦温度高1.wav\ } if(GetTagFloat(\ //冷油器出口油温 { PlaySoundA(\冷油器出口油温高.wav\ } if(GetTagFloat(\ //进汽压力 { PlaySoundA(\蒸汽压力低.wav\ } if(GetTagFloat(\ //真空低 { PlaySoundA(\排汽压力高.wav\ } if(GetTagFloat(\ //润滑油压力低 { PlaySoundA(\润滑油压力低1.wav\ } if(GetTagFloat(\|| GetTagFloat(\|| GetTagBit(\|| GetTagBit(\ //滤油器差压 { PlaySoundA(\滤油器差压高.wav\ } if(GetTagFloat(\ //主油泵出口压力 { PlaySoundA(\主油泵出口压力低.wav\ } if(GetTagFloat(\ //油箱油位 { PlaySoundA(\油箱油位低.wav\ } if(GetTagFloat(\| GetTagFloat(\ | GetTagFloat(\|| GetTagBit(\|| GetTagBit(\|| GetTagBit(\ //振动大 { PlaySoundA(\轴瓦振动高.wav\

12

} if(GetTagFloat(\ || GetTagFloat(\ || GetTagBit(\ //汽机转子轴向位移 { PlaySoundA(\轴相位移高.wav\ } if(GetTagFloat(\ //汽机转子胀差 { PlaySoundA(\胀差高.wav\ } if(GetTagFloat(\ //转速 { PlaySoundA(\汽轮机转速高.wav\ } if(GetTagBit(\|| GetTagBit(\ //保护跳闸 { PlaySoundA(\发电机保护跳闸.wav\ } if(GetTagBit(\|| GetTagBit(\) //定子转子一点接地 { PlaySoundA(\发电机转子接地.wav\ } if(GetTagBit(\ //过负荷 { PlaySoundA(\发电机过负荷.wav\ } if(GetTagBit(\ //失磁 { PlaySoundA(\发电机失磁.wav\ } if(GetTagBit(\ //ETS动作 { PlaySoundA(\动作.wav\ } }

----------------------------------------------------------------------------------------------

——————19、闪烁边框图片的脚本——————

13

Flash - 简短描述

使用Flash组中的函数可以修改或调用各种闪烁属性。

1.long int GetBackFlashColorOff(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,指定取消激活状态的闪烁背景色 读出闪烁颜色的实例 {

long int flashcol_on; //获得背景闪烁颜色

Flash col_on = GetBackFlashColorOn(lpszPictureName,\//自定义代码

//在那里用户可以使用返回值做某事 }

GetBackFlashColorOn函数参数:

“lpszPictureName”是在其中组态该对象的画面的名称。 “Group 1”是该对象的名称。

1). 读出该对象的开状态的当前背景闪烁颜色以及flashcol_on中的缓冲区。 2). 执行处理返回值的自定义代码。

2. long int GetBackFlashColorOn(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,指定激活状态的背景闪烁颜色。 读出闪烁颜色的实例 {

long int flashcol_on; //获得背景闪烁颜色

Flash col_on = GetBackFlashColorOn(lpszPictureName,\//自定义代码

//在那里用户可以使用返回值做某事 }

GetBackFlashColorOn函数参数:

“lpszPictureName”是在其中组态该对象的画面的名称。 “Group 1”是该对象的名称。

1). 读出该对象的开状态的当前背景闪烁颜色以及flashcol_on中的缓冲区。 2). 执行处理返回值的自定义代码。

3. long int GetBorderFlashColorOff(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,指定取消激活状态的边框或线闪烁颜色。 读出闪烁颜色的实例 {

long int flashcol_on; //获得背景闪烁颜色

flashcol_on = GetBackFlashColorOn(lpszPictureName,\//自定义代码

//在那里用户可以使用返回值做某事 }

14

GetBackFlashColorOn函数参数:

“lpszPictureName”是在其中组态该对象的画面的名称。 “Group 1”是该对象的名称。

4. long int GetBorderFlashColorOn(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,指定激活状态的边框或线闪烁颜色。 读出闪烁颜色的实例 {

long int flashcol_on; //获得背景闪烁颜色

flashcol_on = GetBackFlashColorOn(lpszPictureName,\//自定义代码

//在那里用户可以使用返回值做某事 }

GetBackFlashColorOn函数参数:

“lpszPictureName”是在其中组态该对象的画面的名称。 “Group 1”是该对象的名称。

5. BOOL GetFlashBackColor(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,指定是否激活背景闪烁。

读出“闪烁背景激活”属性的实例 {

BOOL bflash_col;

//了解闪烁是开还是关 bflash

_col = GetFlashBackColor(lpszPictureName,\if(bflash_col) {

// 自定义代码 // 闪烁是否被激活 } else {

// 自定义代码

// 闪烁是否被取消激活 } }

GetFlashBackColor函数参数:

“lpszPictureName”是在其中组态该对象的画面的名称。 “Group 1”是该对象的名称。

1). 读出背景色闪烁是否被激活以及bflash_col中的缓冲区。 2). 根据该函数的返回值执行自定义代码。

——————20、I/0

脚本——————

15

使用i_o组中的函数可以修改或调用影响输入和输出值的各种属性。

1. char* GetAssignments(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,对于列表,分配文本给数值范围

2. BOOL GetAssumeOnExit(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,使用I/O域时,它指定退出该域时是否应用输入的数值。

3. BOOL GetAssumeOnFull(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,使用I/O域时,它指定完成输入时是否应用输入的数值。

4. long int GetBitNumber(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,使用列表类型“位”时,它指定输出值中相关的位。 读出布尔型属性的实例 {

BOOL bHiddenInput;

//获得隐藏输入的状态 bHiddenInput

= GetHiddenInput(lpszPictureName,\if(bHiddenInput)

{ // 自定义代码 // 隐藏输入是否被激活 } else {

// 自定义代码 // 隐藏输入是否被取消激活 } }

GetHiddenInput函数参数:

“lpszPictureName”是在其中组态该对象的画面的名称。 “IO Field1”是该对象的名称。

1). 读出文本是否是粗体字以及bHiddenInput中的缓冲区。 2). 根据该函数的返回值执行自定义代码。

5. BOOL GetClearOnError(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,使用I/O域时,它指定错误输入后是否激活删除内容。

6. long int GetDataFormat(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,对于I/O域,它指定域内容的数据类型。 读出布尔型属性的实例 {

BOOL bHiddenInput;

//获得隐藏输入的状态 bHiddenInput

= GetHiddenInput(lpszPictureName,\if(bHiddenInput) {

// 自定义代码// 隐藏输入是否被激活 }

16

else {

// 自定义代码// 隐藏输入是否被取消激活 } }

——————21 tag

脚本——————

使用来自Tag组的函数可以设置或调用变量。

1. BOOL GetTagBitStateWait(Tag Tag_Name, PDWORD lp_dwstate)函数,

建立数据类型“二进制变量”的过程变量的数值。直接从PLC读取该数值。 也返回变量的状态。

读出二进制类型变量的实例 {

DWORD dwstate; BOOL bValue;

dwstate = 0xFFFFFFFF;

//获得该变量值 //dwstate是变量状态 bValue

= GetTagBitStateWait(\创建包含该变量值的字符串 if (bValue) {

// 自定义代码// 该变量的数值是否是true.. } else {

// 自定义代码 // 该变量的数值是否是false } }

GetTagBitStateWait函数参数: “gs_tag_bit”是该变量的名称。

“&dwstate”是应在其中存储变量状态的变量地址。

1). 读出该变量值以及bstate中的缓冲区。 该函数将变量状态存储在dwstate中。 2). 根据该函数的返回值执行自定义代码。

——————22、Wincc

项目脚本——————

使用来自WinCC组的函数可以在运行系统中定义各种设置。 使用System子组中的函数可以操作WinCC运行系统。 1. BOOL DeactivateRTProject()函数,取消激活该项目。 取消激活WinCC运行系统的实例 {

//取消激活运行系统 DeactivateRTProject (); }

该函数取消激活WinCC运行系统。

17

2.BOOL ExitWinCC()函数,终止WinCC

3.退出WinCC的实例 {

//退出wincc ExitWinCC ();

}该函数终止WinCC。

WinCC组包含影响整个WinCC系统的函数。

1. BOOL GetHWDiag(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName, LPCTSTR lpProperties)函数

运行时该函数可实现诊断的直接启动,由事件触发。必须在对象上组态、运用该事件。 如果该事件发生,硬件诊断功能从关联PLC的STEP7被启动。 为了使用该功能,必须满足下列条件:

? WinCC项目,带有从其进行访问的画面,而且STEP7项目必须在同一台计算机上。 ? 必须将WinCC项目存储为STEP7项目(STEP7 Projekt\\wincproj\\WinCC Projekt)的子目录。

? 已将S7变量映射到WinCC。

2. BOOL GetHWDiagLevel(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName, LPCTSTR lpProperties, DWORD dwLevel)函数

根据在dwLevel下面指定的用户管理员功能号为激活的用户执行用户配置文件级测试。 之后,运行时诊断被直接启动并由事件触发,须在对象上组态该事件。 如果该事件发生,硬件诊断功能从关联PLC的STEP7被启动。 为了使用该功能,必须满足下列条件:

? 在WinCC中激活的用户必须有必要的用户配置文件级。

? WinCC项目,带有从其进行访问的画面,而且STEP7项目必须在同一台计算机上。 ? 必须将WinCC项目存储为STEP7项目(STEP7 Projekt\\wincproj\\WinCC Projekt)的子目录.

? 已将S7变量映射到WinCC。

3. BOOL GetKopFupAwl(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName, LPCTSTR lpProperties)函数

该函数执行WinCC Step7编辑器“KFA”的网络激活。 执行该函数,完成两项子任务:

? 建立从WinCC访问网络所需要的数据。

? 将该数据传送到Step 7并使用AUTAPI定位Step 7程序中操作数的利用点。 4. BOOL GetKopFupAwlLevel(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName,LPCTSTR lpProperties, DWORD dwLevel)函数

根据在dwLevel下面指定的用户管理员功能号为激活的用户执行用户配置文件级测试,然后访问Step 7编辑器“KFA”。 作为三项子任务执行该函数:

? 建立从WinCC进行网络访问所需要的数据。

? 在WinCC中为激活的用户执行用户配置文件级测试。

18

? 将该数据传送到Step 7并使用AUTAPI定位Step 7程序中操作数的利用点。

5. void OnDeactivateExecute()函数 终止WinCC时调用该函数。

由于它是标准函数,可以插入指令,然后执行它们。

6. void OnErrorExecute(CCAPErrorExecute ErrorExecute)函数 执行动作或函数而发生错误时由系统调用OnErrorExecute。 此函数能够确定出错的准确原因。

由系统调用该函数,并且不要求附加的调用命令。

由于包括作为标准函数的此函数,可以改变输出的类型。

7. void OnTime(CCAPTime time)函数

OnTime只能由系统调用。该函数给出所有动作的运行时间或确定哪个动作的运行时间超出了指定时间。 通过APDIAG可以激活和取消激活时间测量。

由于此函数是一个标准函数,所以可以通过修改函数代码来改变输出的类型。 结构定义CCAPTime typedef struct {

DWORD dwCurrentThreadID; 当前线程的线程ID DWORD dwCode; 代码 BOOL bCycle; 周期/非周期

char* szApplicationName;应用程序的名称 char* szFunctionName; 函数的名称 LPVOID lpParam; 指向动作堆栈的指针 DWORD dwParamSize; 动作堆栈的大小 double dblTime;

DWORD dwFlags; 标记 } CCAPTime; 组成部分 dwCode

dwCode结构元素提供OnTime调用信息: dwCode = 113 用每个动作的时间调用 dwCode = 114 用一个动作的超时调用 dwFlags

dwFlags结构元素提供输出类型的信息: dwFlags = TRUE 结果被输出到文件中。 dwFlags = FALSE 结果被输出到诊断窗口中

——————23、Alarm

脚本——————

Alarm组包含控制WinCC报警控件的函数。标准函数可用于工具栏中的每一个按钮。这些函数可用来创建自定义工具栏,例如选择画面,或者定义控件上的设置。

1.void AcknowledgeMessage(DWORD MsgNr)函数,确认消息系统中带编号的消息,该编号被传递为参数。

19

使用标准函数操作WinCC报警控件的实例 {//确认选择的报警记录消息

AcknowledgeMessage(GetTagWord(\}

指定待确认的消息号。在本例中是从变量读取的。 2.BOOL AXC_OnBtnArcLong(char* lpszPictureName, char* pszMsgWin)函数,在消息窗口中该函数表示消息存储在长期归档中。

使用标准函数操作WinCC报警控件的实例 {// 跳转到WinCC报警控件中的第一条消息 AXC_OnBtnMsgFirst(\}

AXC_OnBtnMsgFirst函数参数:

“gs_alarm_00”是在其中组态WinCC报警控件的画面的名称。 Control 1是WinCC报警控件的对象名。

3.BOOL AXC_OnBtnArcShort(char* lpszPictureName, char* pszMsgWin)函数,在消息窗口中该函数表示消息存储在短期归档中。 使用标准函数操作WinCC报警控件的实例 {// 跳转到WinCC报警控件中的第一条消息 AXC_OnBtnMsgFirst(\}

AXC_OnBtnMsgFirst函数参数:

“gs_alarm_00”是在其中组态WinCC报警控件的画面的名称。 Control 1是WinCC报警控件的对象名。

4.BOOL AXC_OnBtnComment(char* lpszPictureName, char* pszMsgWin)函数 外部消息窗口操作,该函数显示先前所选消息的注释。 使用标准函数操作WinCC报警控件的实例 {// 跳转到WinCC报警控件中的第一条消息 AXC_OnBtnMsgFirst(\}

AXC_OnBtnMsgFirst函数参数:

“gs_alarm_00”是在其中组态WinCC报警控件的画面的名称。 Control 1是WinCC报警控件的对象名。

5.BOOL AXC_OnBtnEmergAckn(char* lpszPictureName, char* pszMsgWin)函数,外部消息窗口操作,此函数打开确认对话框(紧急确认/复位)。 使用标准函数操作WinCC报警控件的实例 {// 跳转到WinCC报警控件中的第一条消息 AXC_OnBtnMsgFirst(\}

AXC_OnBtnMsgFirst函数参数:

“gs_alarm_00”是在其中组态WinCC报警控件的画面的名称。

20

Control 1是WinCC报警控件的对象名。

6.BOOL AXC_OnBtnHornAckn(char* lpszPictureName, char* pszMsgWin)函数,外部消息窗口操作,该函数确认蜂鸣器信号。

使用标准函数操作WinCC报警控件的实例 {// 跳转到WinCC报警控件中的第一条消息 AXC_OnBtnMsgFirst(\}

AXC_OnBtnMsgFirst函数参数:

“gs_alarm_00”是在其中组态WinCC报警控件的画面的名称。 Control 1是WinCC报警控件的对象名。

7.BOOL AXC_OnBtnInfo(char* lpszPictureName, char* pszMsgWin)函数,外部消息窗口操作,该函数显示信息文本。

使用标准函数操作WinCC报警控件的实例 {// 跳转到WinCC报警控件中的第一条消息 AXC_OnBtnMsgFirst(\}

AXC_OnBtnMsgFirst函数参数:

“gs_alarm_00”是在其中组态WinCC报警控件的画面的名称。 Control 1是WinCC报警控件的对象名。

8.BOOL AXC_OnBtnLock(char* lpszPictureName, char* pszMsgWin)函数,外部消息窗口操作,该函数打开“设置锁定”对话框。 使用标准函数操作WinCC报警控件的实例 {// 跳转到WinCC报警控件中的第一条消息 AXC_OnBtnMsgFirst(\}

AXC_OnBtnMsgFirst函数参数:

“gs_alarm_00”是在其中组态WinCC报警控件的画面的名称。 Control 1是WinCC报警控件的对象名。

9.BOOL AXC_OnBtnLockUnlock(char* lpszPictureName, char* pszMsgWin),函数,该函数锁住在消息窗口中选择的消息。之后,不再归档该消息。该函数释放在锁定列表中选择的消息。

使用标准函数操作WinCC报警控件的实例 {// 跳转到WinCC报警控件中的第一条消息 AXC_OnBtnMsgFirst(\}

AXC_OnBtnMsgFirst函数参数:

“gs_alarm_00”是在其中组态WinCC报警控件的画面的名称。 Control 1是WinCC报警控件的对象名。

10.BOOL AXC_OnBtnLockWin(char* lpszPictureName, char* pszMsgWin)函数,外部消息窗

21

口操作.该函数调用锁定列表。

使用标准函数操作WinCC报警控件的实例 {// 跳转到WinCC报警控件中的第一条消息 AXC_OnBtnMsgFirst(\}

AXC_OnBtnMsgFirst函数参数:

“gs_alarm_00”是在其中组态WinCC报警控件的画面的名称。 Control 1是WinCC报警控件的对象名。 11.BOOL AXC_OnBtnLoop(char* lpszPictureName, char* pszMsgWin)函数,外部消息窗口操作,此函数触发所选消息的“报警回路”函数。 使用标准函数操作WinCC报警控件的实例 {// 跳转到WinCC报警控件中的第一条消息 AXC_OnBtnMsgFirst(\}

AXC_OnBtnMsgFirst函数参数:

“gs_alarm_00”是在其中组态WinCC报警控件的画面的名称。 Control 1是WinCC报警控件的对象名。

12.BOOL AXC_OnBtnMsgFirst(char* lpszPictureName, char* pszMsgWin)函数,外部消息窗口操作,该函数移动到消息列表的开始处。 使用标准函数操作WinCC报警控件的实例 {// 跳转到WinCC报警控件中的第一条消息 AXC_OnBtnMsgFirst(\}

AXC_OnBtnMsgFirst函数参数:

“gs_alarm_00”是在其中组态WinCC报警控件的画面的名称。 Control 1是WinCC报警控件的对象名。

13.BOOL AXC_OnBtnMsgLast(char* lpszPictureName, char* pszMsgWin)函数,外部消息窗口操作,该函数移动到消息列表的结束处。 使用标准函数操作WinCC报警控件的实例 {// 跳转到WinCC报警控件中的最后一条消息 AXC_OnBtnMsgLast(\}

AXC_OnBtnMsgLast函数参数:

“gs_alarm_00”是在其中组态WinCC报警控件的画面的名称。 Control 1是WinCC报警控件的对象名。

14.BOOL AXC_OnBtnMsgNext(char* lpszPictureName, char* pszMsgWin)函数,外部消息窗口操作,该函数移动到消息列表中的下一条消息。 使用标准函数操作WinCC报警控件的实例 {// 跳转到WinCC报警控件中的第一条消息 AXC_OnBtnMsgFirst(\

22

}

AXC_OnBtnMsgFirst函数参数:

“gs_alarm_00”是在其中组态WinCC报警控件的画面的名称。 Control 1是WinCC报警控件的对象名。

15.BOOL AXC_OnBtnMsgPrev(char* lpszPictureName, char* pszMsgWin)函数,外部消息窗口操作,该函数移动到消息列表中的前一条消息。 使用标准函数操作WinCC报警控件的实例 {// 跳转到WinCC报警控件中的第一条消息 AXC_OnBtnMsgFirst(\}

AXC_OnBtnMsgFirst函数参数:

“gs_alarm_00”是在其中组态WinCC报警控件的画面的名称。 Control 1是WinCC报警控件的对象名。

16.BOOL AXC_OnBtnMsgWin(char* lpszPictureName, char* pszMsgWin)函数,外部消息窗口操作,该函数调用过程消息窗口。

使用标准函数操作WinCC报警控件的实例 {// 跳转到WinCC报警控件中的第一条消息 AXC_OnBtnMsgFirst(\}

AXC_OnBtnMsgFirst函数参数:

“gs_alarm_00”是在其中组态WinCC报警控件的画面的名称。 Control 1是WinCC报警控件的对象名。

17.BOOL AXC_OnBtnPrint(char* lpszPictureName, char* pszMsgWin)函数,外部消息窗口操作,打印机打印出符合在报警控件中定义的选择标准的全部消息。 WinCC报警控件的实例

{// 跳转到WinCC报警控件中的第一条消息 AXC_OnBtnMsgFirst(\}

AXC_OnBtnMsgFirst函数参数:

“gs_alarm_00”是在其中组态WinCC报警控件的画面的名称。 Control 1是WinCC报警控件的对象名。

18.BOOL AXC_OnBtnScroll(char* lpszPictureName, char* pszMsgWin)函数,外部消息窗口操作,该函数激活水平和垂直滚动功能。 使用标准函数操作WinCC报警控件的实例 {// 激活/取消激活滚动功能

AXC_OnBtnScroll(\}

AXC_OnBtnScroll函数参数:

“gs_alarm_00”是在其中组态WinCC报警控件的画面的名称。 Control 1是WinCC报警控件的对象名。

23

19.BOOL AXC_OnBtnSelect(char* lpszPictureName, char* pszMsgWin)函数,外部消息窗口操作,该函数打开“设置选择”对话框。 使用标准函数操作WinCC报警控件的实例 {// 跳转到WinCC报警控件中的第一条消息 AXC_OnBtnMsgFirst(\}

AXC_OnBtnMsgFirst函数参数:

“gs_alarm_00”是在其中组态WinCC报警控件的画面的名称。 Control 1是WinCC报警控件的对象名。

20.BOOL AXC_OnBtnSinglAckn(char* lpszPictureName, char* pszMsgWin)函数,外部消息窗口操作,该函数确认当前所选的消息。 使用标准函数操作WinCC报警控件的实例 {// 确认激活的消息

AXC_OnBtnSinglAckn(\}

AXC_OnBtnSinglAckn函数参数:

“gs_alarm_00”是在其中组态WinCC报警控件的画面的名称。 Control 1是WinCC报警控件的对象名。

21.BOOL AXC_OnBtnVisibleAckn(char* lpszPictureName, char* pszMsgWin)函数,外部消息窗口操作,确认消息窗口中可见的全部消息(组确认)。 使用标准函数操作WinCC报警控件的实例 {// 跳转到WinCC报警控件中的第一条消息 AXC_OnBtnMsgFirst(\}

AXC_OnBtnMsgFirst函数参数:

“gs_alarm_00”是在其中组态WinCC报警控件的画面的名称。 Control 1是WinCC报警控件的对象名。 22 BOOL AXC_SetFilter(char* lpszPictureName, char* lpszObjectName, LPMSG_FILTER_STRUCT lpMsgFilter, LPCMN_ERROR, lpError)函数,外部消息窗口操作,该函数为WinCC报警控件设置过滤器,以便根据指定的过滤标准筛选出可用的消息。 使用标准函数操作WinCC报警控件的实例 {BOOL ret;

MSG_FILTER_STRUCT Filter; CMN_ERROR Error;

//重新设置过滤器结构 memset

( &Filter, 0, sizeof( MSG_FILTER_STRUCT ) ); //设置过滤器名称 strcpy

( Filter.szFilterName, \// 挑选选择元素 Filter

.dwFilter = MSG_FILTER_NR_FROM | MSG_FILTER_NR_TO;

24

// 消息号来自 Filter .dwMsgNr[0] = 2; // 消息号来自 Filter .dwMsgNr[1] = 2;

ret = AXC_SetFilter(\}

1. 命名该过滤器。 2. 选择过滤器的类型。 3. 指定过滤器标准。 4. 设置过滤器。 常规使用注释

过滤器类型和过滤器标准必须适合使用;在过滤器结构中描述所有其它的过滤器类型。使用标准函数操作WinCC报警控件的实例 {BOOL ret;

MSG_FILTER_STRUCT Filter; CMN_ERROR Error;

//删除整个过滤器结构 memset

( &Filter, 0, sizeof( MSG_FILTER_STRUCT ) ); //设置空的过滤器结构 AXC

_SetFilter(\}

1. 删除该过滤器结构。

2. 用空值填充过滤器结构。 结构定义MSG_FILTER_STRUCT typedef struct {

CHAR szFilterName[MSG_MAX_TEXTLEN+1]; WORD dwFilter; SYSTEMTIME st[2]; DWORD dwMsgNr[2]; DWORD dwMsgClass;

DWORD dwMsgType[MSG_MAX_CLASS]; DWORD dwMsgState; WORD wAGNr[2]; WORD wAGSubNr[2]; DWORD dwArchivMode; char szTB[MSG_MAX_TB][ MSG_MAX_TB_CONTENT+1] DWORD dwTB;

Double dPValue[MSG_MAX_PVALUE][2]; DWORD dwPValue[2];

DWORD dwMsgCounter[2]; DWORD dwQuickSelect; }

MSG_FILTER_STRUCT;

25

描述

在该结构中定义过滤标准。 组成部分 dwFilter

通过下列常数从“m_global.h”文件定义过滤条件: MSG_FILTER_DATE_FROM 从日期 MSG_FILTER_DATE_TO 到日期 MSG_FILTER_TIME_FROM 从时间 MSG_FILTER_TIME_TO 到时间 MSG_FILTER_NR_FROM 从消息号 MSG_FILTER_NR_TO 到消息号 MSG_FILTER_CLASS 消息等级 MSG_FILTER_STATE 消息状态 MSG_FILTER_AG_FROM 从AG号 MSG_FILTER_AG_TO 到AG号

MSG_FILTER_AGSUB_FROM 从AG子号 MSG_FILTER_AGSUB_TO 到AG子号 MSG_FILTER_TEXT 消息文本 MSG_FILTER_PVALUE 过程值

MSG_FILTER_COUNTER_FROM 从内部消息计数器 MSG_FILTER_COUNTER_TO 到内部消息计数器 MSG_FILTER_PROCESSMSG 过程消息 MSG_FILTER_SYSMSG 系统消息 MSG_FILTER_BEDMSG 事件消息 MSG_FILTER_DATE 日期从...到... MSG_FILTER_TIME 日期从...到... MSG_FILTER_NR 消息号从...到...st 日期/时间从...到...

在这种情况下,st[0]是开始时间(从),st[1]是结束时间(到)

为过滤标准填充这些域:MSG_FILTER_DATE,MSG_FILTER_DATE_FROM,MSG_FILTER_DATE_TO, MSG_FILTER_TIME,MSG_FILTER_TIME_FROM和MSG_FILTER_TIME_TO

如果传送SYSTEMTIME参数要求当前时间,使用GetLocalTime函数而非GetSystemTime。通常这两个函数之间的时间差别很大。 dwMsgNr

消息号从...到...

在这种情况下,dwMsgNr[0]是开始号(从),dwMsgNr[1]是结束号(到)

为过滤标准填充这些域:MSG_FILTER_NR,MSG_FILTER_NR_FROM和MSG_FILTER_NR_TO dwMsgClass 位代码消息等级

为过滤标准填充这个域:MSG_FILTER_CLASS dwMsgType

每个消息等级的位代码消息类型

26

为过滤标准填充这个域:MSG_FILTER_CLASS dwMsgState

位代码消息状态

为过滤标准填充这个域:MSG_FILTER_STATE wAGNr

AG号从...到...

为过滤标准填充这些域:MSG_FILTER_AG_FROM和MSG_FILTER_AG_TO wAGSubNr

AGSubNr从...到

为过滤标准填充这些域:MSG_FILTER_AGSUB_FROM和MSG_FILTER_AGSUB_TO dwArchivMode 归档/协议识别 必须用0填充。 szTB

文本块文本

为过滤标准填充这个域:MSG_FILTER_TEXT dwTB

文本块激活(从...到...,位代码)

为过滤标准填充这个域:MSG_FILTER_TEXT dPValue

过程值从...到...

为过滤标准填充这个域:MSG_FILTER_PVALUE dwPValue

过程值激活(从...到... 位代码)

为过滤标准填充这个域:MSG_FILTER_PVALUE dwMsgCounter

内部消息计数器从...到...

为过滤标准填充这些域:MSG_FILTER_COUNTER_FROM,MSG_FILTER_COUNTER_TO dwQuickSelect

快速选择小时,天,月

为以后扩展而保留该参数,并且必须用0预定义。

为过滤标准填充这个域:MSG_FILTER_QUICKSELECT LOWORD类型:

MSG_FILTER_QUICK_MONTH 快速选择后n个月 MSG_FILTER_QUICK_DAYS 快速选择后n天

MSG_FILTER_QUICK_HOUR 快速选择后n个小时 HIWORD号:1...n

快速选择函数的结束时间与本地计算机的当前系统时间有关。开始时间是n * (往回计算月,日,小时)。

结构定义CMNERROR

struct CMNERRORSTRUCT { DWORD dwError1, DWORD dwError2, DWORD dwError3,

27

DWORD dwError4, DWORD dwError5;

TCHAR szErrorText[MAX_ERROR_LEN]; }

CMNERROR 描述

扩展的错误结构包含错误代码和与发生的错误相关的错误文本。每个应用程序可以使用该错误结构评价或发出错误消息。 组成部分

dwError1 .. dwError5

可按API函数的要求使用这些条目。

API描述包含出错时条目的各自数值。否则,错误代码在dwError1中。 szErrorText

错误代码的文本描述缓冲区

从资源建立该内容,因此依赖于语言。 BOOL GMsgFunction(char* pszMsgData)函数 该函数提供消息数据。

表示单个消息的全局函数。为每个消息调用全局函数,为每个消息设置“触发动作”参数。 最好在项目函数中解释消息数据,从GMsgFunction调用项目函数。 参数

pszMsgData

指向在其中存储消息数据的缓冲区的指针。 返回值 TRUE

已执行函数,无错。 FALSE 出错。 注意

请注意,WinCC安装会重写已修改的标准函数,所以被改变的函数丢失

——————24 graphics

脚本——————

Graphics组包含用于编程图形系统的函数。

1.char* GetLinkedVariable(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)函数,提供与指定的对象属性链接的变量的名称。 读出直接连接的变量名的实例。 {char* pszVarName = NULL;

char szVarName[_MAX_PATH+1]; //获得变量名 pszVarName

= GetLinkedVariable(\ //复制字符串

if (pszVarName != NULL)

{ strncpy(szVarName,pszVarName,_MAX_PATH); }

28

//自定义代码

//在那里用户可以使用返回值做某事 ...}

GetLinkedVariable函数参数:

“gs_stand_graph_00”是在其中组态该对象的画面的名称。 “Static Text 6”是该对象的名称。 “Visible”是链接到变量的属性。

1). 将函数GetLinkedVariable的返回值缓冲存储在pszVarName中。

2). 如果返回有效数值,将该返回值存储在szVarName中。最多存储_MAX_PATH个字符。

3). 执行处理返回值的自定义代码。

2.char* GetLocalPicture(char* lpszPictureName)函数,返回指向画面名的指针。 在这种情况下,画面名就是该文件名,不带扩展名“.PDL”。 读出本地画面的实例。 {char* pszPicName = NULL;

char szPicName[_MAX_PATH+1]; //获得本地画面 pszPicName

= GetLocalPicture(lpszPictureName); //复制字符串

if (pszPicName != NULL)

{ strncpy(szPicName,pszPicName,_MAX_PATH); }//自定义代码

//在那里用户可以使用返回值做某事 ... }

1). 将函数GetLocalPicture的返回值缓冲存储在pszPicName中。

2). 如果返回有效数值,将该返回值存储在szPicName中。最多存储_MAX_PATH个字符。

3). 执行处理返回值的自定义代码。

3.char* GetParentPicture(char* lpszPictureName)函数,返回指向画面名称的指针。 在这种情况下,画面名就是该文件名,不带扩展名“.PDL”。 读出画面名称路径的实例 {char* pszPicName = NULL;

char szPicName[_MAX_PATH+1]; //获得母画面 pszPicName

= GetParentPicture(lpszPictureName); //复制字符串

if (pszPicName != NULL)

{strncpy(szPicName,pszPicName,_MAX_PATH); }//自定义代码

//在那里用户可以使用返回值做某事 ...}

29

1). 将该函数GetParentPicture的返回值缓冲存储在pszPicName中。 2). 如果返回有效数值,将该返回值存储在szPicName中。。。。。. 最多存储_MAX_PATH个字符。

3). 执行处理返回值的自定义代码。

4.char* GetParentPictureWindow(char* lpszPictureName)函数,返回指向画面窗口的名称的指针。 实例:

基本画面“Picture_1”有画面窗口“Picture Window_1”,在其中调用画面“Picture_2”。 画面“Picture_2”有画面窗口“Picture Window_2”,在其中调用画面“Picture_3”。 该函数调用

GetParentPictureWindow(lpszPictureName) 指向画面窗口名称的指针:

“Picture_2”,是否从画面“Picture_3”调用该函数。

“Picture Window_1”,是否从画面“Picture_2”调用该函数。 “Picture_1”,是否从画面“Picture_1”调用该函数。

5. void OpenPicture(Picture Name)函数,用设置的画面名打开画面。

6. char* Registry2(char* mode, char* String0, char* String1)函数,该函数管理字符串对(String0,String1)的列表。

——————25、Report

脚本——————

Report组包含用来启动打印作业的打印预览或打印输出本身的函数。

1. void ReportJob(LPSTR lpJobName, LPSTR lpMethodName)函数,根据参数lpMethodName的数值,决定启动打印作业或打印预览。

RPTJobPreview和RPTJobPrint, 打印作业被启动和打印作业的预览被启动 2. BOOL RPTJobPreview(LPSTR lpJobName)函数,打印作业的预览被启动。 启动作业预览的实例

{//启动指定打印作业的打印预览

RPTJobPreview(\ }

RPTJobPreview函数参数:

@Text library (compact)是打印作业的名称。

3. BOOL RPTJobPrint(LPSTR lpJobName)函数,打印作业被启动。 启动打印作业的实例

{//打印输出指定的打印作业

RPTJobPrint(\ }

RPTJobPrint函数参数:

@Text library (compact)是打印作业的名称。

4. void RptShowError(LPCSTR pszFailedFunction, CMN_ERRORA* pCmnErrorA)函数,该函数提供对失败的打印作业的错误描述。该函数调用是标准函数RptJobPrint和

30

RptJobPreview的组成部分,因此不要求单个调用命令。 结构定义CMNERROR

struct CMNERRORSTRUCT { DWORD dwError1, DWORD dwError2, DWORD dwError3, DWORD dwError4, DWORD dwError5;

TCHAR szErrorText[MAX_ERROR_LEN]; }

CMNERROR描述

扩展的错误结构包含错误代码和与发生的错误相关的错误文本。每个应用程序可以使用该错误结构评价或发出错误消息。 组成部分

dwError1 .. dwError5

可按API函数的要求使用这些条目。

API描述包含出错时条目的各自数值。否则,错误代码在dwError1中。 szErrorText

错误代码的文本描述缓冲区

从资源建立该内容,因此依赖于语言

——————26、TagLog

脚本——————

TagLog函数包含控制WinCC表格控件和WinCC趋势控件的函数。 Template子组包含调用某些控制值的函数。

Toolbar Buttons子组包含用于工具栏中每个按钮的标准函数。 这些函数可用来创建自定义工具栏,例如选择画面,或者定义控件上的设置。

1. int TlgGetColumnPosition(char* lpszTemplate)函数,以表格窗口中的列指针的当前位置作为列索引。

使用标准函数操作WinCC表格控件的实例 {char text[5]; long int columns //获得列数

columns = GetNumberOfColumns(\ //转换长整型为字符 sprintf (text,\

//在Text Field 5 SetText上设置文本 (lpszPictureName,\ }

TlgGetNumberOfColumns函数参数:

“Table Control_01”是WinCC表格控件的名称。

1). 将函数TlgGetNumberOfColumns的返回值缓冲存储在columns中。 2). 将返回值缓冲存储在String text中。 3). 在静态文本域中发出返回值。

31

2. int TlgGetNumberOfColumns(char* lpszTemplate)函数,在表格窗口中给出列的数量。用参数lpszTemplate传递相应WinCC在线表格控件窗口的名称。 使用标准函数操作WinCC表格控件的实例 {char text[5]; long int columns //获得列数

columns = GetNumberOfColumns(\ //转换长整型为字符 sprintf (text,\

//在Text Field 5 SetText上设置文本 (lpszPictureName,\ }

TlgGetNumberOfColumns函数参数:

“Table Control_01”是WinCC表格控件的名称。

1). 将函数TlgGetNumberOfColumns的返回值缓冲存储在columns中。 2). 将返回值缓冲存储在String text中。 3). 在静态文本域中发出返回值。

3. int TlgGetNumberOfRows(char* lpszTemplate)函数,在表格窗口中给出行的数量。用参数lpszTemplate传递相应WinCC在线表格控件窗口的名称。 使用标准函数操作WinCC表格控件的实例 {char text[5]; long int rows; //获得行数

rows = TlgGetNumberOfRows(\ //转换长整型为字符 sprintf (text,\

//在Text Field 5 SetText上设置文本 (lpszPictureName,\ }

TlgGetNumberOfRows函数参数:

Table Control_01是WinCC表格控件的名称。

1). 将函数TlgGetNumberOfRows的返回值缓冲存储在rows中。 2). 将返回值缓冲存储在String text中。 3). 在静态文本域中发出返回值。

4. int TlgGetNumberOfTrends(char* lpszTemplate)函数,在趋势窗口中给出趋势的数量。用参数lpszTemplate传递相应WinCC在线趋势控件窗口的名称。 使用标准函数操作WinCC表格控件的实例 {char text[5]; long int columns //获得列数

columns = GetNumberOfColumns(\ //转换长整型为字符 sprintf (text,\

32

//在Text Field 5 SetText上设置文本 (lpszPictureName,\ }

TlgGetNumberOfColumns函数参数:

“Table Control_01”是WinCC表格控件的名称。

1). 将函数TlgGetNumberOfColumns的返回值缓冲存储在columns中。 2). 将返回值缓冲存储在String text中。 3). 在静态文本域中发出返回值。

5. int TlgGetRowPosition(char* lpszTemplate)函数,在表格窗口中给出行指针的当前位置。用参数lpszTemplate传递相应WinCC在线表格控件窗口的名称。 使用标准函数操作WinCC表格控件的实例 {char text[5]; long int columns //获得列数

columns = GetNumberOfColumns(\ //转换长整型为字符 sprintf (text,\

//在Text Field 5 SetText上设置文本 (lpszPictureName,\ }

TlgGetNumberOfColumns函数参数:

“Table Control_01”是WinCC表格控件的名称。

1). 将函数TlgGetNumberOfColumns的返回值缓冲存储在columns中。 2). 将返回值缓冲存储在String text中。 3). 在静态文本域中发出返回值。

6. char* TlgGetRulerArchivNameTrend(char* lpszTemplate, int nTrend)函数,在趋势窗口中这个标尺位置上给出带编号nTrend的趋势的归挡名称。用参数lpszTemplate传递相应WinCC在线趋势控件窗口的名称。

使用标准函数操作WinCC趋势控件的实例 {char* pszVarName = NULL; char szVarName[20];

//获得标尺变量名 pszVarName

= TlgGetRulerVariableNameTrend(\ if (pszVarName != NULL) {// 复制字符串 strncpy (szVarName,pszVarName,19); }

//输出变量名 SetText

(lpszPictureName,\ }

TlgGetRulerVariableNameTrend函数参数:

“Trend Control_01”是WinCC趋势控件的名称。 “0”是该趋势的编号。

33

1). 将函数TlgGetRulerVariableNameTrend的返回值缓冲存储在pszVarName中。 2). 如果返回有效数值,将返回值复制到szVarName中。 3). 在静态文本域中发出返回值。

7. SYSTEMTIME TlgGetRulerTimeTrend(char* lpszTemplate, int nTrend)函数,在趋势窗口中这个标尺位置上给出带编号nTrend的趋势的时间。用参数lpszTemplate传递相应WinCC在线趋势控件窗口。

使用标准函数操作WinCC趋势控件的实例 {SYSTEMTIME systime; WORD wHour; WORD wMin; WORD wSec; char szTime[10];

//获得当前系统时间 systime

= TlgGetRulerTimeTrend(\ //获得小时 wHour = systime.wHour; //获得分钟 wMin = systime.wMinute; //获得秒 wSec

= systime.wSecond; //

sprintf(szTime,\ //输出变量名 SetText

(lpszPictureName,\ }

1). 读出当前系统时间。

2). 从SYSTEMTIME结构读出小时、分和秒。 3). 创建包含该时间的字符串。 4). 读出当前时间。

8. double TlgGetRulerValueTrend(char* lpszTemplate, int nTrend)函数,在趋势窗口中这个标尺位置上给出带编号nTrend的趋势的数值。用参数lpszTemplate传递相应WinCC在线趋势控件窗口。

使用标准函数操作WinCC表格控件的实例 {char text[5]; long int columns //获得列数

columns = GetNumberOfColumns(\ //转换长整型为字符 sprintf (text,\

//在Text Field 5 SetText上设置文本 (lpszPictureName,\ }

34

TlgGetNumberOfColumns函数参数:

“Table Control_01”是WinCC表格控件的名称。

1). 将函数TlgGetNumberOfColumns的返回值缓冲存储在columns中。 2). 将返回值缓冲存储在String text中。 3). 在静态文本域中发出返回值。

9. char* TlgGetRulerVariableNameTrend(char* lpszTemplate, int nTrend)函数,在趋势窗口中给出编号为nTrend的趋势的变量名。用参数lpszTemplate传递相应WinCC在线趋势控件窗口。

使用标准函数操作WinCC趋势控件的实例 {char* pszVarName = NULL; char szVarName[20];

//获得标尺变量名 pszVarName

= TlgGetRulerVariableNameTrend(\ if (pszVarName != NULL) {// 复制字符串 strncpy (szVarName,pszVarName,19); }

//输出变量名 SetText

(lpszPictureName,\ }

TlgGetRulerVariableNameTrend函数参数:

“Trend Control_01”是WinCC趋势控件的名称。 “0”是该趋势的编号。

1). 将函数TlgGetRulerVariableNameTrend的返回值缓冲存储在pszVarName中。 2). 如果返回有效数值,将返回值复制到szVarName中。 3). 在静态文本域中发出返回值。

10. char* TlgGetTextAtPos(char* lpszTemplate, int nColumn, int nLine)函数,为过程变量归档和用户归档提供表格窗口的单元格内容作为文本。单元由nColumn和nLine指定。用参数lpszTemplate传递相应WinCC在线表格控件窗口的名称。 使用标准函数操作WinCC趋势控件的实例 {char* pszVarName = NULL; char szVarName[20];

//获得标尺变量名 pszVarName

= TlgGetRulerVariableNameTrend(\ if (pszVarName != NULL) {// 复制字符串 strncpy (szVarName,pszVarName,19); }

//输出变量名 SetText

(lpszPictureName,\ }

TlgGetRulerVariableNameTrend函数参数:

35

“Trend Control_01”是WinCC趋势控件的名称。 “0”是该趋势的编号。

1). 将函数TlgGetRulerVariableNameTrend的返回值缓冲存储在pszVarName中。 2). 如果返回有效数值,将返回值复制到szVarName中。 3). 在静态文本域中发出返回值。

11. BOOL TlgTableWindowPressEditRecordButton(char* lpszWindowName)函数,锁住或释放表格窗口的编辑(切换功能)。如果允许编辑,将停止更新表格窗口。即使因为使用另一个函数而使编辑被禁止,表格窗口更新将仍保持停止状态。 使用标准函数操作WinCC报警趋势的实例 {//开始/停止

TlgTrendWindowPressStartStopButton(\ }

TlgTrendWindowPressStartStopButton函数参数: “TrendControl_01”是WinCC趋势控件的对象名。

12. BOOL TlgTableWindowPressFirstButton(char* lpszWindowName)函数,显示表格窗口中显示区域的第一个数据记录。显示的数据记录数量由所组态的时间范围决定。 使用标准函数操作WinCC报警趋势的实例 {//开始/停止

TlgTrendWindowPressStartStopButton(\ }

TlgTrendWindowPressStartStopButton函数参数: “TrendControl_01”是WinCC趋势控件的对象名。

13. BOOL TlgTableWindowPressHelpButton(char* lpszWindowName)函数,显示表格窗口的在线帮助

使用标准函数操作WinCC报警趋势的实例 {//开始/停止

TlgTrendWindowPressStartStopButton(\ }

TlgTrendWindowPressStartStopButton函数参数: “TrendControl_01”是WinCC趋势控件的对象名。

14. BOOL TlgTableWindowPressInsertRecordButton(char* lpszWindowName)函数,插入数据记录。

使用标准函数操作WinCC报警趋势的实例 {//开始/停止

TlgTrendWindowPressStartStopButton(\ }

TlgTrendWindowPressStartStopButton函数参数: “TrendControl_01”是WinCC趋势控件的对象名。

15. BOOL TlgTableWindowPressLastButton(char* lpszWindowName)函数,显示表格窗口

36

中显示区域的最后一个数据记录。显示的数据记录数量由所组态的时间范围决定。 使用标准函数操作WinCC报警趋势的实例 {//开始/停止

TlgTrendWindowPressStartStopButton(\ }

TlgTrendWindowPressStartStopButton函数参数: “TrendControl_01”是WinCC趋势控件的对象名。

16. BOOL TlgTableWindowPressNextButton(char* lpszWindowName)函数,显示表格窗口中当前显示区域后面的数据记录。显示的数据记录数量由所组态的时间范围决定。 使用标准函数操作WinCC报警趋势的实例 {//开始/停止

TlgTrendWindowPressStartStopButton(\ }

TlgTrendWindowPressStartStopButton函数参数: “TrendControl_01”是WinCC趋势控件的对象名。

17. BOOL TlgTableWindowPressNextItemButton(char* lpszWindowName)函数,表格窗口的列将向左移动一列,最左边的列移到右边。 使用标准函数操作WinCC报警趋势的实例 {//开始/停止

TlgTrendWindowPressStartStopButton(\ }

TlgTrendWindowPressStartStopButton函数参数: “TrendControl_01”是WinCC趋势控件的对象名。

18. BOOL lgTableWindowPressOpenArchiveVariableSelectionDlgButton(char* lpszWindowName)函数,打开用来链接表格列与归档和变量的对话框。 使用标准函数操作WinCC报警趋势的实例 {//开始/停止

TlgTrendWindowPressStartStopButton(\ }

TlgTrendWindowPressStartStopButton函数参数: “TrendControl_01”是WinCC趋势控件的对象名。

19. BOOL TlgTableWindowPressOpenDlgButton(char* lpszWindowName)函数,打开用来在线组态表格窗口的对话框。

使用标准函数操作WinCC趋势控件的实例 {//打开属性对话框

TlgTrendWindowPressOpenDlgButton(\ }

TlgTrendWindowPressOpenDlgButton函数参数: “TrendControl_01”是WinCC趋势控件的对象名。

37

20. BOOL TlgTableWindowPressOpenItemSelectDlgButton(char* lpszWindowName)函数,打开用来选择表格窗口的可见列和第一列的对话框。 使用标准函数操作WinCC报警趋势的实例 {//开始/停止

TlgTrendWindowPressStartStopButton(\ }

TlgTrendWindowPressStartStopButton函数参数: “TrendControl_01”是WinCC趋势控件的对象名。

21. BOOL TlgTableWindowPressPrevButton(char* lpszWindowName)函数,显示表格窗口中当前显示区域前面的数据记录。显示的数据记录数量由所组态的时间范围决定。 使用标准函数操作WinCC报警趋势的实例 {//开始/停止

TlgTrendWindowPressStartStopButton(\ }

TlgTrendWindowPressStartStopButton函数参数: “TrendControl_01”是WinCC趋势控件的对象名。

22. BOOL TlgTableWindowPressPrevItemButton(char* lpszWindowName)函数,表格窗口的列将向右移动一列,最右边的列移到左边。 使用标准函数操作WinCC报警趋势的实例 {//开始/停止

TlgTrendWindowPressStartStopButton(\ }

TlgTrendWindowPressStartStopButton函数参数: “TrendControl_01”是WinCC趋势控件的对象名。

23. BOOL TlgTableWindowPressRemoveRecordButton(char* lpszWindowName)函数,删除数据记录。

使用标准函数操作WinCC报警趋势的实例 {//开始/停止

TlgTrendWindowPressStartStopButton(\ }

TlgTrendWindowPressStartStopButton函数参数: “TrendControl_01”是WinCC趋势控件的对象名。

24. BOOL TlgTableWindowPressStartStopButton(char* lpszWindowName)函数,打开或关闭表格窗口的更新(切换功能)。

使用标准函数操作WinCC报警趋势的实例 {//开始/停止

TlgTrendWindowPressStartStopButton(\ }

TlgTrendWindowPressStartStopButton函数参数: “TrendControl_01”是WinCC趋势控件的对象名。

38

25. BOOL TlgTrendWindowPressFirstButton(char* lpszWindowName)函数,显示趋势窗口中显示区域的首要数据记录。显示的数据记录数量由所组态的时间范围决定。 使用标准函数操作WinCC报警趋势的实例 {//开始/停止

TlgTrendWindowPressStartStopButton(\ }

TlgTrendWindowPressStartStopButton函数参数: “TrendControl_01”是WinCC趋势控件的对象名。

26. BOOL TlgTrendWindowPressHelpButton(char* lpszWindowName)函数,显示趋势窗口的在线帮助。

使用标准函数操作WinCC报警趋势的实例 {//开始/停止

TlgTrendWindowPressStartStopButton(\ }

TlgTrendWindowPressStartStopButton函数参数: “TrendControl_01”是WinCC趋势控件的对象名。

27. BOOL TlgTrendWindowPressLastButton(char* lpszWindowName)函数,显示趋势窗口中显示区域的最后一个数据记录。显示的数据记录数量由所组态的时间范围决定。 使用标准函数操作WinCC报警趋势的实例 {//开始/停止

TlgTrendWindowPressStartStopButton(\ }

TlgTrendWindowPressStartStopButton函数参数: “TrendControl_01”是WinCC趋势控件的对象名。

28. BOOL TlgTrendWindowPressLinealButton(char* lpszWindowName)函数,显示或隐藏趋势窗口标尺(切换功能)。使用“光标向左”和“光标向右”键可以移动标尺。 使用标准函数操作WinCC报警趋势的实例 {//开始/停止

TlgTrendWindowPressStartStopButton(\ }

TlgTrendWindowPressStartStopButton函数参数: “TrendControl_01”是WinCC趋势控件的对象名。

29. BOOL TlgTrendWindowPressNextButton(char* lpszWindowName)函数,显示趋势窗口中当前显示区域后面的数据记录。显示的数据记录数量由所组态的时间范围决定。 使用标准函数操作WinCC报警趋势的实例 {//开始/停止

TlgTrendWindowPressStartStopButton(\ }

TlgTrendWindowPressStartStopButton函数参数:

39

“TrendControl_01”是WinCC趋势控件的对象名。

30. BOOL TlgTrendWindowPressNextItemButton(char* lpszWindowName)函数,将趋势窗口中所有趋势向前移动一个层面。前面的那个趋势将被移到后面。 使用标准函数操作WinCC报警趋势的实例 {//开始/停止

TlgTrendWindowPressStartStopButton(\ }

TlgTrendWindowPressStartStopButton函数参数: “TrendControl_01”是WinCC趋势控件的对象名。

31. BOOL TlgTrendWindowPressOneToOneButton(char* lpszWindowName)函数,该趋势窗口被重新设置为激活缩放功能前的状态。缩放被取消激活。使用鼠标才可以选中待缩放的区域(参考TlgTrendWindowPressZoomInButton)。 使用标准函数操作WinCC报警趋势的实例 {

//开始/停止

TlgTrendWindowPressStartStopButton(\ }

TlgTrendWindowPressStartStopButton函数参数: “TrendControl_01”是WinCC趋势控件的对象名。

32. BOOL lgTrendWindowPressOpenArchiveVariableSelectionDlgButton(char* lpszWindowName)函数,打开链接趋势与归档和变量的对话框。 使用标准函数操作WinCC报警趋势的实例 {//开始/停止

TlgTrendWindowPressStartStopButton(\ }

TlgTrendWindowPressStartStopButton函数参数: “TrendControl_01”是WinCC趋势控件的对象名。

33. BOOL TlgTrendWindowPressOpenDlgButton(char* lpszWindowName)函数,打开趋势窗口的在线组态对话框。

使用标准函数操作WinCC报警趋势的实例 {//开始/停止

TlgTrendWindowPressStartStopButton(\ }

TlgTrendWindowPressStartStopButton函数参数: “TrendControl_01”是WinCC趋势控件的对象名。

34. BOOL TlgTrendWindowPressOpenItemSelectDlgButton(char* lpszWindowNumber)函数,打开用来选择可见趋势以及要在前景中显示的趋势的对话框。 使用标准函数操作WinCC报警趋势的实例

40

{//开始/停止

TlgTrendWindowPressStartStopButton(\ }

TlgTrendWindowPressStartStopButton函数参数: “TrendControl_01”是WinCC趋势控件的对象名。

35. BOOL TlgTrendWindowPressOpenTimeSelectDlgButton(char* lpszWindowNumber)函数,打开定义显示时间段的对话框。

使用标准函数操作WinCC报警趋势的实例 {//开始/停止

TlgTrendWindowPressStartStopButton(\ }

TlgTrendWindowPressStartStopButton函数参数: “TrendControl_01”是WinCC趋势控件的对象名。

36. BOOL TlgTrendWindowPressPrevButton(char* lpszWindowName)函数,在趋势窗口中显示当前显示区域前面的数据记录。显示的数据记录数量由所组态的时间范围决定。 使用标准函数操作WinCC报警趋势的实例 {//开始/停止

TlgTrendWindowPressStartStopButton(\ }

TlgTrendWindowPressStartStopButton函数参数: “TrendControl_01”是WinCC趋势控件的对象名。

37. BOOL TlgTrendWindowPressPrevItemButton(char* lpszWindowName)

函数,将趋势窗口中所有趋势向后移动一个层面。后面的那个趋势将被移到前面。 使用标准函数操作WinCC报警趋势的实例 {//开始/停止

TlgTrendWindowPressStartStopButton(\ }

TlgTrendWindowPressStartStopButton函数参数: “TrendControl_01”是WinCC趋势控件的对象名。

38. BOOL TlgTrendWindowPressStartStopButton(char* lpszWindowName)函数,打开或关闭趋势窗口的更新(切换功能)。

使用标准函数操作WinCC报警趋势的实例 {//开始/停止

TlgTrendWindowPressStartStopButton(\ }

TlgTrendWindowPressStartStopButton函数参数: “TrendControl_01”是WinCC趋势控件的对象名。

39. BOOL TlgTrendWindowPressZoomInButton(char* lpszWindowName)函数,将打开趋势窗口中的放大镜。 只能用鼠标选择比例缩放区域。

41

使用标准函数操作WinCC趋势控件的实例 {//放大

TlgTrendWindowPressZoomInButton(\ }

TlgTrendWindowPressZoomInButton函数参数: “TrendControl_01”是WinCC趋势控件的对象名。

40. BOOL TlgTrendWindowPressZoomOutButton(char* lpszWindowName)函数,恢复趋势窗口到缺省大小(1:1)。

使用标准函数操作WinCC报警趋势控件的实例 {// 缩小

TlgTrendWindowPressZoomOutButton(\ }

TlgTrendWindowPressZoomOutButton函数参数: “TrendControl_01”是WinCC趋势控件的对象名。

——————27、Windows

脚本——————

Windows组包含Execute Program函数。 该函数可用来执行任何功能。

1. unsigned int Execute(char* Program_Name)函数,用指定的名称启动该程序。 从WinCC启动程序的实例 {//启动程序calc.exe

执行程序 (\ }

指定带路径的文件为参数。

——————28、内部函数脚本——————

内部函数用来画图形对象和使归档动态化,并用于项目函数、标准函数和全局脚本动作中。 在整个项目中都识别内部函数。

既不能创建新的内部函数,也不能修改已存在的内部函数。 1. allocate保留和释放工作存储器空间的函数

void SysFree(void* lpFree)函数,通过SysMalloc函数释放保留的存储器区域。 参数lpFree,指向通过SysMalloc函数保留的存储器区域的指针。

2. void* SysMalloc(unsigned long int size)函数,为动作保留存储器空间。存储器区域被分配给该动作。已完成动作和已传送结果时,系统再次释放存储器。 SysFree函数可用来过早释放保留的存储器空间。 参数size,按字节计算的存储器区域的大小。

3. c_bib函数组c_bib包含来自C库的C函数

42

Graphics - 简短描述

使用Graphics组中的函数可以修改或调用WinCC对象的图形属性。

Axes - 简短描述

Axes组中的函数仅用于棒图对象。

该函数可用来修改或调用各种棒图对象属性。

1. BOOL GetAlignment(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,使用棒图对象时,它指明文本在棒图的左面还是右面。 读出棒图对象的布尔型属性的实例 {

BOOL bscaling;

//获得标尺状态 bscaling

= GetScaling(lpszPictureName,\

if (bscaling) {

// 自定义代码

// 棒图对象有一个附加的标尺 ... } else {

// 自定义代码

// 棒图对象没有附加的刻度 ... } }

GetScaling函数参数:

“lpszPictureName”是在其中组态该对象的画面的名称。 “Bar1”是该对象的名称。

1). 读出棒图刻度是否可见以及bscaling中的缓冲区。 2). 根据该函数的返回值执行自定义代码。

2. double GetAxisSection(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,使用棒图对象时,它指定两个邻近轴标签之间的数值差。

3. BOOL GetExponent(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,使用棒图对象时,它指定轴标签对应于小数或指数形式。 读出棒图对象的布尔型属性的实例 {BOOL bscaling;

43

//获得标尺状态 bscaling

= GetScaling(lpszPictureName,\

if (bscaling) {

// 自定义代码

// 棒图对象有一个附加的标尺 ... } else {

// 自定义代码

// 棒图对象没有附加的刻度 ... } }

GetScaling函数参数:

“lpszPictureName”是在其中组态该对象的画面的名称。 “Bar1”是该对象的名称。

1). 读出棒图刻度是否可见以及bscaling中的缓冲区。 2). 根据该函数的返回值执行自定义代码。

4. long int GetLeftComma(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,使用棒图对象时,它指定轴标签中的整数数量。 参数lpszPictureName 画面名lpszObjectName 对象名

返回值,轴标签中的整数数量

5. BOOL GetLongStrokesBold(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,使用棒图对象时,它指定以粗体还是常规形式显示标尺上的主要刻度线。 读出棒图对象的布尔型属性的实例 {

BOOL bscaling;

//获得标尺状态 bscaling

= GetScaling(lpszPictureName,\ if (bscaling) {

// 自定义代码

// 棒图对象有一个附加的标尺 ... } else {

44

// 自定义代码

// 棒图对象没有附加的刻度 ... } }

GetScaling函数参数:

“lpszPictureName”是在其中组态该对象的画面的名称。 “Bar1”是该对象的名称。

1). 读出棒图刻度是否可见以及bscaling中的缓冲区。 2). 根据该函数的返回值执行自定义代码。

6. long int GetLongStrokesSize(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,使用棒图对象时,它指定主要刻度线的长度。

7. long int GetLongStrokesTextEach(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,使用棒图对象时,它指定主要刻度线标签的间隔长度。

8. long int GetRightComma(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,使用棒图对象时,它指定坐标轴标签中的小数位数。

9. long int GetScaleTicks(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,使用棒图对象时,它将标尺单位定义为标尺分段的数量。一个标尺分段对应于两条主要刻度线之间的范围

10. BOOL GetScaling(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,使用棒图时,它指定激活还是取消激活标尺。 读出棒图对象的布尔型属性的实例 {

BOOL bscaling;

//获得标尺状态 bscaling

= GetScaling(lpszPictureName,\ if (bscaling) {

// 自定义代码

// 棒图对象有一个附加的标尺 ... } else {

// 自定义代码

// 棒图对象没有附加的刻度 ... } }

45

GetScaling函数参数:

“lpszPictureName”是在其中组态该对象的画面的名称。 “Bar1”是该对象的名称。

1). 读出棒图刻度是否可见以及bscaling中的缓冲区。 2). 根据该函数的返回值执行自定义代码。

11. long int GetScalingType(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,使用棒图对象时,它指定棒图标尺的类型。

Color - 简短描述

使用Color组中的函数可以修改或调用对象的颜色属性。

1. long int GetBackColor(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,指定对象的背景色为数字值。 读出颜色值的实例 {

long int bk_color; //

linkinfo.szLinkName是变量名。 // linkinfo.dwCycle是更新周期 // linkinfo.LinkType是该连接的类型 //自定义代码

//在那里用户可以使用返回值做某事 ... }

GetBackColor函数参数:

“lpszPictureName”是在其中组态该对象的画面的名称。 “Static Text1”是该对象的名称。

1). 读出当前背景色和bk_color中的缓冲区。 2). 执行处理返回值的自定义代码。

2. long int GetBackColor2(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,使用棒图对象时,它指定棒图的颜色为数字值。 读出颜色值的实例 {

long int bk_color; //

linkinfo.szLinkName是变量名。 // linkinfo.dwCycle是更新周期 // linkinfo.LinkType是该连接的类型 //自定义代码

//在那里用户可以使用返回值做某事 ... }

GetBackColor函数参数:

46

“lpszPictureName”是在其中组态该对象的画面的名称。 “Static Text1”是该对象的名称。

3. long int GetBackColor3(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,使用棒图对象时,它指定棒图的背景色为数字值。 读出颜色值的实例 {

long int bk_color; //

linkinfo.szLinkName是变量名。 // linkinfo.dwCycle是更新周期 // linkinfo.LinkType是该连接的类型 //自定义代码

//在那里用户可以使用返回值做某事 ... }

GetBackColor函数参数:

“lpszPictureName”是在其中组态该对象的画面的名称。 “Static Text1”是该对象的名称。

Fill - 简短描述

Fill组中的函数控制对象的动态填充。

1. BOOL GetFilling(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,指定是否激活背景色动态填充。

读出“动态填充”属性的实例 {

BOOL bfilling;

//获得动态填充的实际状态 bfilling

= GetFilling(lpszPictureName,\ if(bfilling) {

// 自定义代码

// 动态填充是否被激活 ... } else {

// 自定义代码

// 动态填充是否被取消激活 ... } }

GetFilling函数参数:

“lpszPictureName”是在其中组态该对象的画面的名称。

47

“Rectangle1”是该对象的名称。

1). 读出动态填充是否激活以及bfilling中的缓冲区。 2). 根据该函数的返回值执行自定义代码。

2.long int GetFillingIndex(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,指定当前填充量。

读出填充索引的实例 {

long int filling_index;

//获得该对象的实际填充索引 filling

_index = GetFillingIndex(lpszPictureName,\ //自定义代码

//在那里用户可以使用返回值做某事 ... }

GetFillingIndex函数参数:

“lpszPictureName”是在其中组态该对象的画面的名称。 “Rectangle1”是该对象的名称。

1). 读出该对象的当前填充索引以及filling_index中的缓冲区。 2). 执行处理返回值的自定义代码。

Flash - 简短描述

使用Flash组中的函数可以修改或调用各种闪烁属性。

1. long int GetBackFlashColorOff(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,指定取消激活状态的闪烁背景色 读出闪烁颜色的实例 {

long int flashcol_on; //获得背景闪烁颜色

flashcol_on = GetBackFlashColorOn(lpszPictureName,\ //自定义代码

//在那里用户可以使用返回值做某事 ... }

GetBackFlashColorOn函数参数:

“lpszPictureName”是在其中组态该对象的画面的名称。 “Group 1”是该对象的名称。

1). 读出该对象的开状态的当前背景闪烁颜色以及flashcol_on中的缓冲区。 2). 执行处理返回值的自定义代码。

2. long int GetBackFlashColorOn(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,指定激活状态的背景闪烁颜色。 读出闪烁颜色的实例 {

48

long int flashcol_on;

//获得背景闪烁颜色

flashcol_on = GetBackFlashColorOn(lpszPictureName,\ //自定义代码

//在那里用户可以使用返回值做某事 ... }

GetBackFlashColorOn函数参数:

“lpszPictureName”是在其中组态该对象的画面的名称。 “Group 1”是该对象的名称。

1). 读出该对象的开状态的当前背景闪烁颜色以及flashcol_on中的缓冲区。 2). 执行处理返回值的自定义代码。

3. long int GetBorderFlashColorOff(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,指定取消激活状态的边框或线闪烁颜色。 读出闪烁颜色的实例 {

long int flashcol_on;

//获得背景闪烁颜色

flashcol_on = GetBackFlashColorOn(lpszPictureName,\ //自定义代码

//在那里用户可以使用返回值做某事 ... }

GetBackFlashColorOn函数参数:

“lpszPictureName”是在其中组态该对象的画面的名称。 “Group 1”是该对象的名称。

4. long int GetBorderFlashColorOn(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,指定激活状态的边框或线闪烁颜色。 读出闪烁颜色的实例 {

long int flashcol_on;

//获得背景闪烁颜色

flashcol_on = GetBackFlashColorOn(lpszPictureName,\ //自定义代码

//在那里用户可以使用返回值做某事 ... }

GetBackFlashColorOn函数参数:

49

“lpszPictureName”是在其中组态该对象的画面的名称。 “Group 1”是该对象的名称。

5. BOOL GetFlashBackColor(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,指定是否激活背景闪烁。

读出“闪烁背景激活”属性的实例 {

BOOL bflash_col;

//了解闪烁是开还是关 bflash

_col = GetFlashBackColor(lpszPictureName,\ if(bflash_col) {

// 自定义代码 // 闪烁是否被激活 ... } else {

// 自定义代码

// 闪烁是否被取消激活 ... } }

GetFlashBackColor函数参数:

“lpszPictureName”是在其中组态该对象的画面的名称。 “Group 1”是该对象的名称。

1). 读出背景色闪烁是否被激活以及bflash_col中的缓冲区。 2). 根据该函数的返回值执行自定义代码。

Focus - 简短描述

使用Focus组中的函数,可以设置焦点或轮询哪个对象有焦点。 1. char* Get_Focus()函数,指定当前或最后聚焦的对象的名称。 要求当前在哪一个对象上设置焦点的实例 {

char* pszValue = NULL;

char szValue[_MAX_PATH+1]; //获得具有焦点的对象 pszValue = Get_Focus(); //复制字符串

if (pszValue != NULL) {

strncpy(szValue,pszValue,_MAX_PATH);

50

本文来源:https://www.bwwdw.com/article/i658.html

Top