您好,欢迎来到易妖游戏网。
搜索
您的当前位置:首页在WINCC组态软件编程中调用CALLBACK类函数的过程

在WINCC组态软件编程中调用CALLBACK类函数的过程

来源:易妖游戏网


在WINCC组态软件编程中调用CALLBACK类函数的过程

摘要:本文通过一个简单的例程,浅谈一点在wincc组态软件编程中调用CALLBACK类函数的过程,并通过对代码注释的方式,介绍一点CALLLBACK类函数的结构。

关 键 词:wincc;组态软件;CALLBACK函数

In WINCC configuration software programming in the process of function CALLBACK calls

Zhangwei

(Anhui BBCA Biochemical Co., Ltd.Bengbu Anhui China 233010)

Abstract: This article through a simple routine, discussed shallowly a spot transfers the CALLBACK class function in the wincc configuration software programming the process, and through to the code annotation’s way, introduces a CALLLBACK class function the structure.

Key Words:wincc; Configuration software;CALLBACK function

1概述

西门子公司的WinCC组态软件集成了SCADA、组态、脚本语言和OPC等先进技术。用户在其平台下进行组态、编程和数据管理,可便捷形成所需的监视、控制、报警画面和实时、历史曲线、打印报表等。WinCC组态软件的整体开放性,使它可以方便地与各种软件和用户程序组合在一起,建立友好的人机界面,满足实际需要。

本文通过一个仅具有选择用户登陆的wincc项目为例,介绍采用PWGEN_ENUM_USERS_CALLBACK功能函数枚举WINCC项目用户名的过程,浅谈一点CALLBACK类函数的调用过程。

图 1运行界面

Fig.1Operation interface

2项目函数

在项目函数中,用C脚本建立EnumUser()、MyPWGENEnumUsersCallBack()两个函数,其中MyPWGENEnumUsersCallBack()函数为CALLBCAK类型。

图 2C脚本界面

Fig.2C script interface

2.1 EnumUser()函数

EnumUser()函数由事件触发,在本例中打开页面时触发后,由其调用MyPWGENEnumUsersCallBack()函数,来完成对用户名的枚举,具体代码如下:

#pragmacode(“UseGen.DLL”)

#include”usegenap.h”

#pragmacode()

CMN_ERRORerr;

CMN_ERRORError;

LPCMN_ERRORerror;

DWORDcountname;

charusedata;

char*DSNNAME=NULL;

charproject[_MAX_PATH+1];

externBOOLMyPWGENEnumUsersCallBack(LPWGEN_USERINFOlpUserInfo,PVOIDlpUser); //CALLBACAK类型函数声明。

VOIDEnumUser() {

if(DMGetRuntimeProject(project,sizeof(project),&Error))

//运行项目路径及名称 {

DM_PROJECT_INFOProjectInfomation;

if(DMGetProjectInformation(project,&ProjectInfomation,&Error))

//运行项目的信息 {

DSNNAME=SysMalloc(strlen(ProjectInfomation.szDSNName)+1);

if(DSNNAME) {

strcpy(DSNNAME,ProjectInfomation.szDSNName);//数据管DSN信息

strcat(DSNNAME,”R”);

if(PWGENConnect(DSNNAME,&err))

//建立与数据库的连接 {

PWGENEnumUsers(&countname,MyPWGENEnumUsersCallBack,&usedata,error);

//调用CALLBACK类型的函数

SetTagSDWord(“NewTag”,countname); //项目中用户名个数

PWGENDisconnect(&err);

//断开与数据库的连接 } } } } }

2.2MyPWGENEnumUsersCallBack()函数

MyPWGENEnumUsersCallBack()函数有两个参数,其中LPWGEN_USERINFO类型的数据结构定义如下:

typedef struct {TCHAR login[MAX_LOGIN];//存储用户名。

TCHAR group[MAX_LOGIN];//用户名所属工作组的名称。int expiration_time;//自动注销时间。}PWGEN_USERINFO;

另一个PVOID指针类型的参数lpUser,提供提供回调功能,回调次数由项目中用户数量确定。

MyPWGENEnumUsersCallBack()函数的具体代码如下:

#pragmacode(“UseGen.DLL”)

#include”usegenap.h”

#pragmacode()

BOOLMyPWGENEnumUsersCallBack(LPWGEN_USERINFOlpUserInfo,PVOIDlpUser)

{

staticintn=0;

if(n==GetTagSDWord(“NewTag”))

//用以确定下拉框显示的用户名数量。 n=1; else

n=n+1;

switch(n) {

case9:SetTagChar(“username10”,lpUserInfo->login);

break;

case8:SetTagChar(“username9”,lpUserInfo->login);

break;

case7:SetTagChar(“username8”,lpUserInfo->login);

break;

case6:SetTagChar(“username7”,lpUserInfo->login);

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- vipyiyao.com 版权所有 湘ICP备2023022495号-8

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务