描述: 在WinCC中,您希望使用用户自定义动态链接库,在此条目,我们演示了如何在WinCC中加载一个实例DLL。在带有VBS的WinCC运行模式下,使用VB创建的DLLs不能被加载。
关于DLLs更多的信息可以在WinCC在线帮助系统下“使用WinCC>用于创建函数和动作的ANSI-C>在函数和动作中使用DLL”
编号. |
过程 |
1 |
实例DLL: 使用下面的程序代码,利用C编译器创建动态链接库"T1_C.dll"。
在这里,您可以下载已经可以编译的DLL。 T1_C.zip ( 17 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 |
结果:
图. 01
|
重要信息! 示例中的脚本程序是免费软件。任何用户都可以免费使用、复制和传播该程序。该程序的作者和所有者对此软件的功能性和兼容性所引起的任何问题不负任何责任。对该软件的使用完全由用户自己承担所有风险。由于该软件是免费的,所以没有质量保证期,也没有任何错误更正和热线支持。
关键字: 函数调用,API |
文章评论(0条评论)
登录后参与讨论