Secure Order Form
Developer Kits
Server Kit
Client Kit

User Manuals

OPC Server Toolkit
Change History

  • November, 2006
    Added error notification callback to inform application of dcom errors which may occur in the OnDataChange Notification to connected client.

  • April, 2006
    Miscellaneous changes to support latest edition of OPC Compliancy test. Added default EventAreaBrowser to allow ICONICS OPC DataSpy to work with WtOPCsvr based A&E Servers.

  • Sept 25, 2005
    Added support for DA 3.0 SyncIO2::ReadMaxAge & ::WriteVQT Interfaces.

  • March 22, 2004
    Corrected problem with user access security checking for the Data Access 3.0 ItemIO::Read and ::WriteVQT Interfaces.

  • January 14, 2004
    Corrected ClassFactory operation that would result in intermittant start-up problems if server initiated by the client.

  • October 1, 2003
    Added support for OPC Data Access 3.0.

  • August 1, 2003
    Minor changes associated with supplying correct error return values for inappropriate client behavior as expected by the OPC Compliancy test.

  • Dec 22, 2002
    Misc changes submitted by users. Initialized various floating pointers to NULL and wrapped COPCServer::ProcessAsyncIORequests() in structured exception handling. Put a check in CWTOPCsvrApp::CreateOPCCustomServer() to assure that the object was actually created. Added SetCaseSensitivity export to allow the server to ignore case when comparing tag names. Added logic to automatically refresh a group when it is made active via ::SetState. Added callback for A&E AckCondition.

  • August 5, 2002
    Corrected CreateTag operation for IsWriteable flag. Additions of July 22 were creating all tags as writeable if Security option disabled.

  • July 22, 2002
    Released security additions that allow user access checking for each tag.

  • April 23, 2002
    Corrected the IOCItemProperties::QueryAvailableProperties return value for ppvtDataTypes. Corrected BSTR DataChange operations for OPC 1.0 Interfaces.

  • February 15, 2002
    Added an application callback to allow a client to read the value of a tag using OPC_DS_DEVICE.

  • February 6, 2002
    Changed Write Notification callback to allow the server application to perform an actual write to device, (with error checking), whenever a client writes an OPC tag. Also removed all exported functions from WtOPCsvr.dll that accepted CStrings as arguments and renamed those functions accepting LPCSTR for simplicity. WtOPCsvr.dll is not binary compatible with previous releases of the toolkit. Existing server applications must be recompiled with the new header file to access the new exported function list.

  • July 16, 2001
    Corrected compliancy test issues--default timebias for AddGroup, returned error code for OPC_E_BADRIGHTS.

  • June 14, 2001
    Corrected logic to release the HANDLE to server thread when a client disconnects.

  • May 4, 2001
    Corrected Server update timer operation when running on Windows 95/98. Modified WriteItem callback logic to remove internal locks prior to making callback. Corrected Server shutdown logic.

  • March 27, 2001
    Added C++ Callback Object definition for support of extended A&E Interfaces.

  • January 31, 2001
    Added extra delay during shutdown to allow single-threaded server applications to close normally. Minor corrections to CIOPCGroupStateMgt::SetState Interface.

  • December 5, 2000
    Corrected resolution of timestamp for data updates. A&E corrections to UpdateTagToList & SendAlarmMessagesFromList. Corrected redundant database locking calls. Added an extra API call that allows the dll to be initialized in the single-threaded COM model.

  • October 12, 2000
    Corrected AddLocalServiceKeysToRegistry function. Check for VARIANT Type VT_NULL prior to attempting to change data written by client to the native type. (Client could not write an item unless the variant type was set by the server.)

  • September 25, 2000
    Added API function for UserAEMessageEx to allow the application more control over event messages. Added an option to the OPC Write notification callback to prevent the dll from converting item data to it's native type prior to the callback.

  • September 12, 2000
    Corrected problem with Alarms & Events Server operation during disconnect.

  • August 25, 2000
    Corrected error in DataCallback procedure for OPC 1.0 connections.

  • August 22, 2000
    Minor changes to correct error responses as expected by latest version of OPC Compliancy test.

  • August 15, 2000
    Released version 4.0 containing options for more efficent updates of server tags. Optional support provided for string hashing and updating multiple tags at once. Added new example application to demonstrate optimizations for servers containing a large number of tags.

  • July 31, 2000
    Corrected error return values from various Interface functions to conform to those expected by OPC Foundation Compliancy test. Corrected GPFault exception conditions in GroupEnumerator.Next() and CloneGroup() functions. Added String Enumeration for Group Names. Corrected logic error in QueryInterface functions for all ConnectionPoint Interfaces. Modified design to allow simultaneous OPC 1.0 & OPC 2.0 connections to the same group.

  • July 20, 2000
    Modified design to create seperate client thread for each connection. Corrected Item List locking logic to keep from locking database during callback notification to a client. Added SuspendItemUpdate() API to allow a server application to use dynamically created tags while maintaining the automatic item browsing feature of the dll.

  • June 22, 2000
    Added API function to WtOPCSvr DLL to UninitWTOPCsvr(). This function calls CoUninitialize() to cleanup DCOM initialization. CoUninitialize() was previously being called in the destructor of the DLL and was generating an exception if the server was closed with open client connections.

  • June 13, 2000
    Reversed change of May 30 that automatically added the AppId\...\LocalService Key to the Windows Registry. Added a separate function (AddLocalServiceKeysToRegistry) to be used for registering NT Services.

  • June 10, 2000
    Corrected Server call to ShutdownRequest, (IOPCShutdown interface). Was passing a NULL pointer-- should have been a pointer to a NULL.

  • May 30, 2000
    Added callback function to notify application when last client disconnects. Also modified registry functions to update AppID\LocalService key.

  • April 27, 2000
    Replaced SetItemPropertiesA() function with a more generic SetItemProperties() that allows the server to configure custom properties for each OPC Item.

  • April 25, 2000
    Added a Description and Engineering Units to Item Properties. Corrected error in CIOPCItemProperties::GetItemProperties Interface. Modified VB Server example for Write Callback Notification.

  • April 21, 2000
    Re-Enabled debug event messages from the server, (They had been inadvertantly removed in a prior release).

  • April 6, 2000
    Added Visual Basic example application to OPC Server toolkit.

  • April 4, 2000
    Corrected return value from AddItems if not all requested items could be added. Now returns S_FALSE. Previously returned E_FAIL.

  • March 19, 2000
    Added support for OPC Alarms & Events.

  • March 1, 2000
    Added logic to WtOPCSvr.DLL that allows a server application to dynamically add and remove tags as requested by clients. (Special Thanks to A.J. Johnson of Telepro Inc.)

  • Dec 26, 1999
    WtOPCSvr.DLL modified to simplify critical-section access to OPC Item and Tag data. This prevents possible deadlock condition on writes from connected clients.

  • Dec 17, 1999
    WtOPCSvr.DLL corrected problem with memory allocation/deallocation of String Tags. Was not calling VariantCopy in all cases and the same string memory was being used in multiple places.

  • Nov 14. 1999
    WtOPCsvr.DLL corrected ValidateItem() interface. Was previously returning default values for AccessCode and DataType.

  • Nov 5, 1999
    Changed timer operation in WTOPVsvr.dll to create a separate thread for triggering updates to clients. Previous design was not triggering the timer if The calling thread, (that which called InitOPCsvr()), did not contain a Windows Message Processing loop.

  • Oct 22, 1999
    WTOPCsvr.dll modified to provide additional function for Updating the Timestamp of a tag.

  • Oct 5, 1999
    WTOPCSvr dll modified to handle Cstring arguments differently. It is not a recommended Microsoft practice to pass Cstrings as arguments. They get the reference counts messed up. Code was changed to convert the Cstrings to byte strings and then back to Cstrings for internal use by the dll. This seems to correct the exception message generated by debug versions of the application when closing.

  • Oct 4, 1999
    WTOPCSvr initialization changed to allow failures in the DCOM initialization call. If the control App initializes COM first, (AfxOLEInit()), prior to calling initWtOPCSvr(), then the dll initialization may fail because itís trying to initialize DCOM as Free-Threaded after the App has already set it to Apartment-Threaded.

  • Oct 1, 1999
    WTOPCSvr modified to support strings for OPC 1.0 connections.

  • Sept 30, 1999
    WTOPCSvr logic corrected for Async Write notification to return Client Handle rather than Server Handle. (Works with GraphWorx)

  • July 21, 1999
    WtOPCSvr.DLL corrected AddItems() method. Was previously returning wrong item handle if multiple items were added with single command.

    OPC Client Toolkit
    Change History

  • March 2, 2005
    Changed ReadItemFromDevice to return HRESULT rather than BOOL.

  • March 28, 2004
    Added api export to change an item's active state, (ChangeOPCItemState).

  • March 22, 2004
    Added api exports to utilize Data Access 3.0 ItemIO::Read and ::WriteVQT functions.

  • January 20, 2004
    Added an extended data change callback to include the Connection Handle which allows more efficient operation for multi-threaded applications.

  • January 14, 2004
    Corrected logic race condition if multiple threads called DisconnectOPC at the same time.

  • March 11, 2003
    Corrected memory leak in ReadOPCItemFromDevice function.

  • Feb 5, 2003
    Corrected problem with trying to release memory from a failed call to SetClientHandles and SetActiveState.

  • Oct 15, 2002
    Corrected memory leak on Write failure, (Needed to free memory for pErrList if ->Write returns S_FALSE)

  • Oct 4, 2002
    Additional exports added to call raw A&E Interfaces.

  • July l7, 2002
    Corrected browsing errors associated with wide character additions of June 20.

  • June 20, 2002
    Corrected some memory leaks associated with ItemProperties. Added code to accomidate wide character tag names.

  • March 22, 2002
    Added extended export for BrowseOPCItemIDs.

  • March 5, 2002
    Added extended exports for ChangeBrowsePosition and SyncIOWrite.

  • Feb 14, 2002
    Corrected error return value for QualifyItemName export. Corrected Browsing operation for Tags that end with '.'

  • Feb 8, 2002
    Added callback for Asynchronous write operations. Changes return value for WriteOPCItem to reflect error condition returned from server.

  • Dec 4, 2001
    Added API function to export functionality of GetItemID to allow client to obtain the fully qualified node name from the connected server.

  • May 22, 2001
    Added API function to allow the application to read an item directly from the server using the SyncIO Interface, (ReadOPCItemFromDevice(...)).

  • May 17, 2001
    Corrected internal buffering, (ReadOPCItem), operation to work with user defined update tags, (SetItemUpdateHandle).

  • January 31, 2001
    Added API call to allow application to change the group active/inactive state.

  • November 6, 2000
    Corrected expanded A&E function prototypes to include WINAPI macro to match VB mangled name convention. Corrected DA browsing operation to reset node to "Root" before executing GetItemList function. Modified browsing logic to try both Unqualified and Qualified node names for BrowseDown operations.

  • October 6, 2000
    Added API functions for calling the raw interfaces of an A&E Server to RequestRefresh(), AckCondition(), EnableConditionByArea(), EnableConditionBySource(), DisableConditionByArea(), DisableConditionBySource(), GetFilter(), and SetFilter().

  • September 24, 2000
    Added ability to connect to InProc Servers

  • September 14, 2000
    Added new exported function to ConvertFileTimeToVBDate(). This allows Visual Basic applications to use the OPC FILETIME timestamp returned by ReadOPCItem().

  • August 22, 2000
    Added support for basic Alarms & Events operation.

  • August 15, 2000
    Added additional API calls to provide better control over browsing operations, including setting filters. Provided support for reading OPC Item properties and setting the Client Handle for an OPC item. Generated a new example MFC application to demonstrate new features.

  • July 26, 2000
    Corrected CLSID lookup logic for remote servers.

  • June 26, 2000
    Added RefreshOPCGroup() API to allow the client application to request a refresh from the server.

  • June 13, 2000
    Added "Handle to Connection" for application callback for Server requested shutdown.

  • June 10, 2000
    Added support for the IOPCShutdown Interface with callback to application whenever a connected server requests to disocnnect. Also increased error checking for valid interface pointers prior to use.

  • May 30, 2000
    Added exported API function to AddOPCItemWithPath(). Also provided callback for error display rather than using MessageBox within DLL.

  • May 19, 2000
    Added exported API function to GetOPCItemNameFromHandle().

  • May 7, 2000
    Removed DCOM initialization from DLLMain and created seperate API function. This eliminates potential problems with DLL load order and allows the client application flexibility to initialize NT security as required

  • April 8, 2000
    Corrected uninitialized pointer which would result in an Exception if CoCreateInstance() failed, (i.e. Server could not be started).

  • April 4, 2000
    Corrected logic to check for individual error return values for each item returned from AddItems function.

  • March 19, 2000
    Added an extra function to WTClient.DLL to call OPC_Common SetClientName(). Also revised OPC 2.0 DataCallBack to exclude item data if server supplied *pError is not S_OK.

  • March 2, 2000
    Added an extra function to WTClient.DLL to force a connection to operate as an OPC 1.0a IAdvise connection.

  • Feb 29, 2000
    Corrected problem with interface to Iconics Server, whereby only one item in a group would be updated.

  • Jan 17, 2000
    NumberOfOPCServers() function was not clearing the ServerList Array upon entry, resulting in multiple entries for each installed server if called recursively.

  • Jan 12, 2000
    Fixed memory leak in WriteOPCItem function.

  • Dec 27, 1999
    The Visual Basic example application supplied with the WTClient toolkit contained errors in the function prototype declarations in module1.bas. All Integer arguments in module1.bas should have been Long. Visual Basic Integer types are only 16-bits wide and all values passed into WTClient.dll should be 32-bit integers.

  • Dec 17, 1999
    The WTClient.DLL was modified to correct a problem with Visual Basic 6.0 generating an error on CoUninitialize() whenever the dll was unloaded.

  • Nov 6, 1999
    Wtclient.DLL modified to add an API function to GetItemType().

  • Oct 1. 1999
    WTClient.DLL modified to enhance browsing operations. Corrected logic to prevent exception if the Browse Down function fails. Also modified code to try the BrowseDown function using the node name and if that fails, try the fully qualified name.

  • Sept 27, 1999
    Modified Wtclient toolkit to allow multiple asynchronous connections.

    Last Updated: April 30, 2006
    Copyright © 1999, WinTECH Software Design
    Return to WinTECH Automation Apps..