📄 dasvrsdk.cpp
字号:
#include "stdafx.h"
#include "DASVRSDK.h"
HMODULE hLibrary;
CREATESERVER CreateServer;
FREESERVER FreeServer;
SETSERVERSTATE SetServerState;
SETVERSIONINFO SetVersionInfo;
ACTIVECODE ActiveCode;
SHUTDOWN ShutDown;
REGSERVER RegServer;
UNREGSERVER UnregServer;
REGSERVERASSERVICE RegServerAsService;
REGTAG RegTag;
REGTAGEX RegTagEx;
REGTAGWITHINDEX RegTagWithIndex;
UNREGTAG UnregTag;
SETTAGQUALIFIER SetTagQualifier;
ADDTAGPROPERTY AddTagProperty;
ADDTAGPROPERTYEX AddTagPropertyEx;
SETTAGPROPERTY SetTagProperty;
UPDATETAGWITHTIMESTAMP UpdateTagWithTimeStamp;
UPDATETAG UpdateTag;
SETWRITECALLBACK SetWriteCallback;
SETWRITECALLBACKEX SetWriteCallbackEx;
SETREADCALLBACK SetReadCallback;
SETREADCALLBACKEX SetReadCallbackEx;
SETWRITECALLBACKWITHINDEX SetWriteCallbackWithIndex;
SETREADCALLBACKWITHINDEX SetReadCallbackWithIndex;
SETSERVERNOTIFY SetServerNotify;
SETGROUPNOTIFY SetGroupNotify;
SETITEMNOTIFY SetItemNotify;
SETTAGNOTIFY SetTagNotify;
SETLOGNOTIFY SetLogNotify;
CWnd* m_WND;
TAG TagList[32];
long TagCount;
long ServerCount;
BOOL InitOPCDef()
{
hLibrary=LoadLibrary(TEXT("ASOPCDA.DLL"));
if(hLibrary)
{
CreateServer=(CREATESERVER)GetProcAddress(hLibrary,TEXT("CreateServer"));
FreeServer=(FREESERVER)GetProcAddress(hLibrary,"FreeServer");
SetServerState=(SETSERVERSTATE)GetProcAddress(hLibrary,"SetServerState");
SetVersionInfo=(SETVERSIONINFO)GetProcAddress(hLibrary,"SetVersionInfo");
ActiveCode=(ACTIVECODE)GetProcAddress(hLibrary,"ActiveCode");
ShutDown=(SHUTDOWN)GetProcAddress(hLibrary,"ShutDown");
RegServer=(REGSERVER)GetProcAddress(hLibrary,"RegServer");
UnregServer=(UNREGSERVER)GetProcAddress(hLibrary,"UnregServer");
RegServerAsService=(REGSERVERASSERVICE)GetProcAddress(hLibrary,"RegServerAsService");
RegTag=(REGTAG)GetProcAddress(hLibrary,"RegTag");
RegTagEx=(REGTAGEX)GetProcAddress(hLibrary,"RegTagEx");
UnregTag=(UNREGTAG)GetProcAddress(hLibrary,"UnregTag");
SetTagQualifier=(SETTAGQUALIFIER)GetProcAddress(hLibrary,"SetTagQualifier");
AddTagProperty=(ADDTAGPROPERTY)GetProcAddress(hLibrary,"AddTagProperty");
AddTagPropertyEx=(ADDTAGPROPERTYEX)GetProcAddress(hLibrary,"AddTagPropertyEx");
SetTagProperty=(SETTAGPROPERTY)GetProcAddress(hLibrary,"SetTagProperty");
UpdateTagWithTimeStamp=(UPDATETAGWITHTIMESTAMP )GetProcAddress(hLibrary,"UpdateTagWithTimeStamp");
UpdateTag=(UPDATETAG )GetProcAddress(hLibrary,"UpdateTag");
SetWriteCallback=(SETWRITECALLBACK)GetProcAddress(hLibrary,"SetWriteCallback");
SetWriteCallbackEx=(SETWRITECALLBACKEX)GetProcAddress(hLibrary,"SetWriteCallbackEx");
SetReadCallback=(SETREADCALLBACK)GetProcAddress(hLibrary,"SetReadCallback");
SetReadCallbackEx=(SETREADCALLBACKEX)GetProcAddress(hLibrary,"SetReadCallbackEx");
SetServerNotify=(SETSERVERNOTIFY)GetProcAddress(hLibrary,"SetServerNotify");
SetGroupNotify=(SETGROUPNOTIFY)GetProcAddress(hLibrary,"SetGroupNotify");
SetItemNotify=(SETITEMNOTIFY)GetProcAddress(hLibrary,"SetItemNotify");
SetTagNotify=(SETTAGNOTIFY)GetProcAddress(hLibrary,"SetTagNotify");
SetLogNotify=(SETLOGNOTIFY)GetProcAddress(hLibrary,"SetLogNotify");
RegTagWithIndex=(REGTAGWITHINDEX)GetProcAddress(hLibrary,"RegTagWithIndex");
SetWriteCallbackWithIndex=(SETWRITECALLBACKWITHINDEX)GetProcAddress(hLibrary,"SetWriteCallbackWithIndex");
SetReadCallbackWithIndex=(SETREADCALLBACKWITHINDEX)GetProcAddress(hLibrary,"SetReadCallbackWithIndex");
return true;
}
else return false;
}
BOOL FreeOPCDef()
{
if(hLibrary>0)
{
return FreeLibrary(hLibrary);
}
else return true;
}
void __stdcall WriteCallback(DWORD handle,VARIANT pNewValue,DWORD* pDeviceError)
{
long I;
FILETIME ft;
*pDeviceError=-1;
GetSystemTimeAsFileTime(&ft);
for(I=0;I<=TagCount;I++)
{
if(TagList[I].hHWND==handle)
{
TagList[I].vValue=pNewValue;
TagList[I].lQuality=192;
TagList[I].ft= ft;
UpdateTagWithTimeStamp(TagList[I].hHWND,TagList[I].vValue,TagList[I].lQuality,TagList[I].ft);
m_WND->SendMessage(1088);
*pDeviceError=0;
break;
}
}
}
void __stdcall ReadCallback(DWORD handle,VARIANT* pNewValue,WORD* Quality, FILETIME* ft, DWORD* pDeviceError)
{
long I;
*pDeviceError=-1;
for(I=0;I<=TagCount;I++)
{
if(TagList[I].hHWND==handle)
{
*pNewValue= TagList[I].vValue;
*Quality= TagList[I].lQuality;
*ft=TagList[I].ft;
*pDeviceError=0;
break;
}
}
}
void __stdcall ServerNotify(DWORD Handle, WORD wOperate)
{
if(wOperate==0)
{
ServerCount++;
} else ServerCount--;
if (ServerCount==0)
{
m_WND->CloseWindow();
m_WND->DestroyWindow();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -