大家帮忙分析一下此脚本的作用 点击:1010 | 回复:9



千山独步

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:159帖 | 3098回
  • 年度积分:4
  • 历史总积分:21261
  • 注册:2007年2月02日
发表于:2008-03-15 09:28:00
楼主
如题:
#include "apdefap.h"

int gscAction( void )
{
 // WINCC:TAGNAME_SECTION_START
// syntax: #define TagNameInAction "DMTagName"
// next TagID : 1
#define TAG_0 "@NewConnection@AlternateConnectionAddress"
#define TAG_1 "@NewConnection@ConnectionEstablishMode"
#define TAG_2 "@NewConnection@ConnectionState"
#define TAG_3 "@NewConnection@ForceConnectionAddress"
// WINCC:TAGNAME_SECTION_END

// WINCC:PICNAME_SECTION_START
// syntax: #define PicNameInAction "PictureName"
// next PicID : 1
// WINCC:PICNAME_SECTION_END


#pragma code("msrtcli.dll") 
#include "msrtapi.h" 
#pragma code() 

#pragma code( "kernel32.dll" ) 
VOID GetLocalTime(LPSYSTEMTIME lpSystemTime); 
#pragma code() 


static int Mld_Main = 0; 
static int Mld_Res = 0; 
 
DWORD ServiceID = 0; 
static BOOL InitFirst = TRUE; 

static MSG_RTCREATE_STRUCT  MsgCreate; 
CMN_ERROR Error; 



if ( InitFirst == TRUE ) 

memset( &MsgCreate, 0, sizeof (MSG_RTCREATE_STRUCT) ); 
MsgCreate.dwMsgState = MSG_STATE_COME; 
MsgCreate.wTextValueUsed = 1; 
sprintf( MsgCreate.mtTextValue[0].szText, "NewConnection" ); 
SetTagChar( TAG_0, " " ); 
  InitFirst = FALSE; 


if (  GetTagDWordWait( TAG_1 ) == 0  )

Mld_Main = 0; 
Mld_Res = 0; 
return 0; 

else 

GetLocalTime( &MsgCreate.stMsgTime ); 
MSRTStartMsgService ( &ServiceID, NULL, NULL, MSG_NOTIFY_MASK_ARCHIV, NULL, &Error ); 
 
if (  GetTagDWordWait( TAG_2 ) == 0  )

       if (  GetTagDWordWait( TAG_3 ) == 0  ) 

if ( Mld_Main == 0 ) 

MsgCreate.dwMsgNr = 1012222; 
MSRTCreateMsg( ServiceID, &MsgCreate, &Error ); 
Mld_Main = 1; 

  } 
else 

if ( Mld_Res == 0 ) 

MsgCreate.dwMsgNr = 1012224; 
MSRTCreateMsg( ServiceID, &MsgCreate, &Error ); 
Mld_Res = 1; 



   if (  GetTagDWordWait( TAG_2 ) == 0  ) 

if (  GetTagDWordWait( TAG_3 ) == 0  ) 

   SetTagDWord( TAG_3, 1 ); 

else 

SetTagDWord( TAG_3, 0 ); 



else 

if (  ( Mld_Main != 0 )  ||  ( Mld_Res != 0 )  ) 

Mld_Main = 0; 
Mld_Res = 0; 

if (  GetTagDWordWait( TAG_3 ) == 0  ) 


楼主最近还看过



ranranplay

  • 精华:1帖
  • 求助:0帖
  • 帖子:18帖 | 382回
  • 年度积分:0
  • 历史总积分:773
  • 注册:2005年9月27日
发表于:2008-03-23 10:23:00
1楼
代码不是很全,有写地方不明。大体是通过报警记录的信息,来判断当前wincc的通讯状态。

ranranplay

  • 精华:1帖
  • 求助:0帖
  • 帖子:18帖 | 382回
  • 年度积分:0
  • 历史总积分:773
  • 注册:2005年9月27日
发表于:2008-03-23 10:24:00
2楼
楼主的代码是从哪里弄的?是个高手写的,对wincc相当了解。

千山独步

  • 精华:0帖
  • 求助:0帖
  • 帖子:159帖 | 3098回
  • 年度积分:4
  • 历史总积分:21261
  • 注册:2007年2月02日
发表于:2008-03-23 20:52:00
3楼
这是我们这的项目中所写的全局脚本,楼上的能简单分析一下吗.

ranranplay

  • 精华:1帖
  • 求助:0帖
  • 帖子:18帖 | 382回
  • 年度积分:0
  • 历史总积分:773
  • 注册:2005年9月27日
发表于:2008-03-25 11:29:00
4楼
#define TAG_0 "@NewConnection@AlternateConnectionAddress"
#define TAG_1 "@NewConnection@ConnectionEstablishMode"
#define TAG_2 "@NewConnection@ConnectionState"
#define TAG_3 "@NewConnection@ForceConnectionAddress
这4个变量找不到是做什么用的?
好像通过这4个变量去判断通讯状态的。

wingwf2000

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 455回
  • 年度积分:0
  • 历史总积分:1000
  • 注册:2008年1月09日
发表于:2011-06-09 15:01:05
5楼

wingwf2000

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 455回
  • 年度积分:0
  • 历史总积分:1000
  • 注册:2008年1月09日
发表于:2011-06-09 15:01:07
6楼

SW374184627

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 1回
  • 年度积分:0
  • 历史总积分:11
  • 注册:2012年1月05日
发表于:2012-01-09 15:59:05
7楼

有高手的,帮忙解释一下啊

 

wingwf2000

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 455回
  • 年度积分:0
  • 历史总积分:1000
  • 注册:2008年1月09日
发表于:2012-01-19 14:21:30
8楼
好像是wincc的冗余系统的代码,应是wincc自带的

wstkwy

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 19回
  • 年度积分:0
  • 历史总积分:86
  • 注册:2012年1月30日
发表于:2012-02-04 12:06:27
9楼
职称决定薪水,论文把握人生----为发表论文者解忧

现在很多朋友都在为毕业论文,考研论文,评职称发表论文难而烦恼!我们组稿中心与多家著名期刊(省级、国家级、学报、核心)合作!代理毕业、职称、学术、企业等各行各业的论文写作与发表,所发表期刊均为具有双刊号的正式公开发行期刊。能为您快捷的解决论文写作难、发表难的问题。
编辑:小郭 联系电话:13479894956 0792-4827209 投稿邮箱:lunwen5180@sina.com
工作QQ:809460389 http://www.888lunwen.com
(如有工作繁忙的朋友,我们提供专业的论文代写业务,具体情况请与我们联系。)

热门招聘
相关主题

官方公众号

智造工程师