quote:以下是引用dcount107在2009-08-20 10:48:38的发言:quote:以下是引用masscer在2009-08-20 10:06:38的发言:
有一次,我的WinCC需要读取一个科尔摩根伺服控制器中的数据,就是用VB调用科尔摩根提供的API函数写了一个控件,然后嵌入WinCC,万事大吉。但是我其实一直想直接在WinCC中调用科尔摩根API函数的,没有实现,哪位大侠提供点信息
在函数和动作中使用 DLL
WinCC 允许用户使用自己的 DLL(动态链接库)。
通过对各自的函数或动作进行必要补充,可以在函数和动作中启用现有 DLL 中的函数。
在函数或动作前添加下列代码:
#pragma code("
.dll")
(...);
(...);
.
.
.
(...);
#pragma code()
中的函数 ... 均已进行了声明,并可由各自的函数或动作进行调用。
实例:
#pragma code("kernel32.dll")
VOID GetLocalTime(LPSYSTEMTIME lpSystemTime);
#pragma code()
SYSTEMTIME st;
GetLocalTime(&st);
对于上述过程,也可以在“Apdefap.h”头文件中作必要补充。
在 WinCC 中使用自己的 DLL 时,必须使用发行版。 WinCC 是发行版,因而也使用系统 DLL 的发行版。 如果在调试版中生成自定义 DLL,则可能 DLL 的发行版和调试版二者都将装载,进而会增加需要的内存空间。
DLL 的结构必须使用 1 个字节对齐方式方式进行设置。
-----------------------------------------------------------------
不管采用什么方法,达到目的就行,没必要什么都用WinCC去实现。相反我认为还是使用嵌入控件的方式更加方便,毕竟WInCC的资源是有限的。