⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hfopcclient.pas

📁 DelphiOPCClien delphi 编写的opc客户端 源程序代码
💻 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 + -