📄 hfopcclient.pas
字号:
unit HFOPCClient;
interface
uses
Windows;
const
OPC_NS_HIERARCHIAL: WORD = 1;
OPC_NS_FLAT: WORD = 2;
OPC_BROWSE_UP: WORD = 1;
OPC_BROWSE_DOWN: WORD = 2;
OPC_BROWSE_TO: WORD = 3;
OPC_BRANCH: WORD = 1;
OPC_LEAF: WORD = 2;
OPC_FLAT: WORD = 3;
OPC_READABLE: WORD = 1;
OPC_WRITEABLE: WORD = 2;
OPC_QUALITY_BAD: WORD = 0;
OPC_QUALITY_UNCERTAIN: WORD = $40;
OPC_QUALITY_GOOD: WORD = $C0;
const
OPCClient = 'OPCClient.dll';
type
SERVERINFORMATION = record
ftStartTime: TFileTime;
ftCurrentTime: TFileTime;
ftLastUpdateTime: TFileTime;
dwServerState: Integer;
dwGroupCount: DWORD;
dwBandWidth: DWORD;
wMajorVersion: Word;
wMinorVersion: Word;
wBuildNumber: Word;
wReserved: Word;
szVendorInfo: PChar;
BufSize: Integer;
end;
PSERVERINFORMATION = ^SERVERINFORMATION;
DATACHANGEPROC = procedure(hConnect, hGroup, hItem: THANDLE;
ItemValue: POleVariant; ItemTime: FILETIME; Quality: DWORD);
SHUTDOWNPROC = procedure(hConnect: THANDLE);
WRITEFINISHPROC = procedure(hConnect, hGroup, hItem: THANDLE; bOK: BOOL);
procedure SetShutDownProc(hConnect: THANDLE; lpCallback: SHUTDOWNPROC); stdcaLL; external OPCClient;
procedure SetDataChangeProc(hConnect: THANDLE; lpCallback: DATACHANGEPROC; WriteCallback: WRITEFINISHPROC = nil); stdcaLL; external OPCClient;
function ActiveCode(const UserName, Password: PChar): BOOL; stdcall; external OPCClient;
function Init: BOOL; stdcaLL; external OPCClient;
procedure Uninit; stdcall; external OPCClient;
function GetServerCount(MachineName: PChar; Version: SHORT = 2): Integer; stdcall; external OPCClient;
function GetServerName(Index: Integer; Buf: PChar; BufSize: Integer): BOOL; stdcall; external OPCClient;
function Connect(const MachineName, ServerName: PChar; Version: SHORT = 2): THANDLE; stdcall; external OPCClient;
procedure Disconnect(hConnect: THANDLE); stdcall; external OPCClient;
function GetServerStatus(hConnect: THANDLE; var SvrStatus: SERVERINFORMATION): BOOL; stdcall; external OPCClient;
function AddGroup(hConnect: THANDLE; Name: PChar; bActive: BOOL; dwRate: DWORD;
TimeBias: PLongint; DeadBand: PSingle; dwLCID: DWORD): THANDLE; stdcall; external OPCClient;
procedure RemoveGroup(hConnect, hGroup: THANDLE); stdcall; external OPCClient;
function SetGroupName(hConnect, hGroup: THANDLE; const Name: PChar): BOOL; stdcall; external OPCClient;
function SetGroupState(hConnect, hGroup: THANDLE; Rate: DWORD; bActive:BOOL;
TimeBias: DWORD; DeadBand: Single; dwLCID: DWORD): BOOL; stdcall; external OPCClient;
function GetGroupState(hConnect, hGroup: THANDLE; Name: PChar; BufSize: Integer;
var pRate: DWORD; var bActive: BOOL; var pTimeBias: DWORD;
var pDeadBand: Single; var pLCID: DWORD): BOOL; stdcall; external OPCClient;
function AddItem(hConnect, hGroup: THANDLE; ItemName: PChar): THANDLE; stdcall; external OPCClient;
procedure RemoveItem(hConnect, hGroup, hItem: THANDLE); stdcall; external OPCClient;
function ReadItem(hConnect, hGroup, hItem: THANDLE; var Value: OleVariant;
var pTimeStamp: FILETIME; var pQuality: DWORD): BOOL; stdcall; external OPCClient;
function WriteItem(hConnect, hGroup, hItem: THANDLE; pVar: POleVariant; DoAsync: BOOL = False): BOOL;
stdcall; external OPCClient;
function ActiveItem(hConnect, hGroup, hItem: THANDLE; bActive: BOOL): BOOL; stdcall; external OPCClient;
function ValidateItem(hConnect, hGroup: THANDLE; Name: PChar; var pType: TVarType;
var pAccessRights: DWORD): BOOL; stdcall; external OPCClient;
function NumberOfItemProperties(hConnect: THANDLE; ItemName: PChar): Integer; stdcall; external OPCClient;
function GetItemPropertyDescription(hConnect: THANDLE; PropertyIndex: Integer; var pPropertyID: DWORD;
var VT: TVarType; Buf: PChar; BufSize: Integer): BOOL; stdcall; external OPCClient;
function ReadPropertyValue(hConnect: THANDLE; ItemName: PChar; PropertyID: DWORD;
pValue: POleVariant): BOOL; stdcall; external OPCClient;
function GetNameSpace(hConnect: THANDLE; var Namespace: WORD): BOOL; stdcall; external OPCClient;
function SetBrowseFilters(hConnect: THANDLE; FilterString: PChar; DataType: TVarType;
AccessType: DWORD): BOOL; stdcall; external OPCClient;
function GetItemCount(hConnect: THANDLE): Integer; stdcall; external OPCClient;
function BrowseItems(hConnect: THANDLE; FilterType: WORD): Integer; stdcall; external OPCClient;
function GetItemName(hConnect: THANDLE; index: Integer; Buf: PChar; BufSize: Integer): BOOL; stdcall; external OPCClient;
function GetItemFullName(hConnect: THANDLE; index: Integer; Buf: PChar; BufSize: Integer): BOOL; stdcall; external OPCClient;
function ChangeBrowsePosition(hConnect: THANDLE; Direction: WORD;
NodeName: PChar): BOOL; stdcall; external OPCClient;
function BrowseToNode(hConnect: THANDLE; NodeName: PChar): BOOL; stdcall; external OPCClient;
implementation
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -