在WinCC中如何加载用户自定义DLLs?

1.实例DLL

使用下面的程序代码,利用C编译器创建动态链接库"T1_C.dll"。
在这里,您可以下载已经可以编译的DLL。

在WinCC中如何加载用户自定义DLLs?Registrierung notwendig T1_C_DLL (17,2 KB)

extern "C" __declspec (dllexport) int aufruf1 (int a);

#include <stdio.h>
#include <windows.h>
FILE *h_test;
FILE *h_trace;
extern "C" __declspec (dllexport) int aufruf1(int a)
{
h_test= fopen ("C:/temp/test_dll.txt","a");
if (h_test)
{
fprintf(h_test, "Function 'aufruf1' was called!n");
fclose (h_test );
}
a+=100;
return a;
};

N.B.

  • 必须在无出错信息后,创建动态链接库。
  • 所有在WinCC中使用的DLL功能都必须使用相应的语法在DLL的开始部分进行指定(在实例动态链接库"T1_C.dll"的第一行)。
  • 为了能够使用DLL功能,在WinCC中的动作或者函数中调用DLL,必须使用"#pragma code"语法。

2. 在WinCC中的C脚本加载"T1_C.dll"动态链接库并且执行"aufruf1"功能
使用下列的WinCC变量:

  • var1 (signed 32-bit value)
  • result (signed 32-bit value)

在一个按钮的事件的“鼠标单击”C动作中输入下面的C脚本:

#include "apdefap.h"
void OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)
{
#pragma code ("c:/temp/T1_C.dll")
int aufruf1(int a);
#pragma code ()

int value;
value = GetTagDouble("var1"); //Return-Type: double
SetTagDouble("result",aufruf1(value)); //Return-Type: BOOL
}3.结果
在WinCC中如何加载用户自定义DLLs?
图. 01

关键字
函数调用,API

原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc336060.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2020年11月5日 下午12:03
下一篇 2021年4月12日 上午12:00

相关推荐

发表回复

登录后才能评论