|
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..
|