What’s New in QuickOPC 5.33: Difference between revisions
From OPC Labs Knowledge Base
Line 42: | Line 42: | ||
== Documentation and Help == | == Documentation and Help == | ||
* Documentation updated to reflect the new COM development support for OPC “Classic” specifications, resulting in shorter and cleaner text due. | * Documentation updated to reflect the new COM development support for OPC “Classic” specifications, resulting in shorter and cleaner text due. | ||
* There is now a single reference documentation, covering both the .NET and COM development. | * <span style="background:#F2E0CE">There is now a single reference documentation, covering both the .NET and COM development.</span> | ||
== Examples == | == Examples == | ||
* Examples for COM development updated. Added many new examples for COM development, especially in Object Pascal (Delphi). | * Examples for COM development updated. Added many new examples for COM development, especially in Object Pascal (Delphi). |
Revision as of 18:29, 28 July 2016
Key changes: New components for OPC Classic under COM platform
Targeting
- Removed support for Windows Vista.
Installation
- New visual style of the installation and uninstallation program.
- Reduced the number of wizard pages presented to the user.
Packaging
- For proper mixed-mode assembly loading under ASP.NET, some assemblies have been renamed with “App_Web_” prefix. Note that despite the presence of the word “Web” in their name, the same assemblies are needed outside of Web applications as well.
COM Development
- Completely reworked the COM development support for OPC “Classic” specifications. The COM objects for OPC “Classic” are now implemented by exposing the objects written in .NET to COM. This means that the very same code runs in the COM and .NET worlds, and the API (interfaces) are either identical, or very closely similar. The Procedural Coding Model for OPC “Classic”, including the User Interface objects, is exposed to COM, almost in full. The implementation strategy is now consistent with the COM support for OPC UA specifications.
- Due to the reimplementation, the CLSIDs and ProgIDs of COM objects for OPC “Classic” have changed. For example, instead of "OPCLabs.EasyDAClient.5.2", you will now use "OpcLabs.EasyOpc.DataAccess.EasyDAClient".
Components Core Improvements
- All OPC-related properties that are of DateTime type (and are consistently in UTC) now have corresponding properties with a “Local” postfix, which contain the same value but expressed in local time. For example, DAVtq.Timestamp contains a timestamp in UTC, whereas its DAVtq.TimestampLocal contains the same in local time.
- Added constants ArrayOfXXXX (e.g. ArrayOfI4) to the VarTypes static class. This allows your code to directly denote the array types without a need to perform a bitwise OR with the VarTypes.Array flag.
- Added StandardName property to AEEventType, DAAccessRight, VarType, DAPropertyId and DAQualityId types.
Components Core Refactoring
- EasyDAItemChangedEventArgs no longer directly contains the State, ServerDescriptor, ItemDescriptor and GroupParameters properties. Instead, EasyDAItemChangedEventArgs contains an Arguments property which in turns contains the information previously available directly.
- EasyAENotificationEventArgs no longer directly contains the State, ServerDescriptor and SubscriptionParameters properties. Instead, EasyAENotificationEventArgs contains an Arguments property which in turns contains the information previously available directly.
- Generic EventHandler<XXXXEventArgs> delegates have been renamed by non-generic delegates (XXXXEventHandler), a change necessary for the COM interop.
- The VarType class has been moved to the (new) OpcLabs.BaseLib.ComInterop namespace.
- Constants from the VarType type have been moved to a new VarTypes enumeration.
- Constants from the DAQuality type have been moved into a new DAQualities enumeration.
- Methods DAQuality.IsBad(), IsGood(), IsUncertain() have been turned to read-only properties.
- Method DAVtq.HasValue() has been turned to a read-only property.
- Constants from the DAPropertyId type have been moved to a new DAPropertyIds enumeration.
- The DAAccessRights type has been renamed to DAAccessRight. However, constants from this DAAccessRight type have been moved to a new DAAccessRights enumeration.
- The AEEventTypes type has been renamed to AEEventType. However, constants from this AEEventType type have been moved to a new AEEventTypes enumeration.
- The DANodeFilter type has been renamed to DABrowseParameters, the AENodeFilter type has been renamed to AEBrowseParameters.
- The constants from the VarType class that determine the internal values of pre-defined VARTYPE-s have been moved to the (new) static VarTypes class. You therefore need to write VarTypes.Empty instead of VarType.Empty, VarTypes.I4 instead of VarType.I4, etc.
- Renamed: AEEvent to AEEventData, EasyAENotificationEventArgs.Event to EventData, AEEventPayload to AEEventDataPayload, and AENotificationPayload.EventPayload to EventDataPayload.
- The AEEventTypes.NoEvent enumeration member has been renamed to None. The DAAccessRights.NoAccess enumeration member has been renamed to None.
- Widened integer types of certain properties and arguments (e.g. Int16 to Int32, and Int32 to Int64), so that they consistently hold the entire range of possible values. Affected types are DAPropertyId, DAQuality, AEEventDataPayload, DAVtqPayload.
- Type of AEAttributeDialog.AttributeIds and AECategoryDialog.CategoryIds changed from Collection<Int64> to Int64[].
- All properties named InternalValue are now of enumeration type; all properties named NumericalValue are of integer type (except in QuickOPC-UA)
User Interface
- The tree view in the browsing dialogs now displays the number of node sub-branches and sub-leaves (when known) in the parentheses next to the node name.
- The browsing dialogs now have an additional “traffic light” status indicator in the lower right corner, allowing for quick recognition of the status by the user.
- The hierarchical browsing dialogs now have Back and Forward buttons, allowing better navigation experience in some scenarios. The buttons behave similarly to those commonly found in Internet browsers.
Documentation and Help
- Documentation updated to reflect the new COM development support for OPC “Classic” specifications, resulting in shorter and cleaner text due.
- There is now a single reference documentation, covering both the .NET and COM development.
Examples
- Examples for COM development updated. Added many new examples for COM development, especially in Object Pascal (Delphi).
- Added VBA Excel examples UASubscribeToMultiple2.xls and UASubscribeToMultiple3.xls: Show how to allow sheet editing while being subscribed, using different approaches.
- Added simple C# example showing usage from a WPF application: WPF\WpfApplication1.
- Added C# example showing how to update WPF controls with dynamic OPC-UA data: WPF\UAWpfScreen.
Removed
- Removed IEasyDAClient.MultipleItemsChanged event, and the corresponding EasyDAMultipleItemsChangedEventArgs class.
- Removed IEasyAEClient.MultipleNotifications event, and the corresponding EasyAEMultipleNotificationsEventArgs class.
- In QuickOPC-COM, removed InvokeXXXX methods, and the OperationCompleted event (asynchronous API).
- Removed examples that worked “from inside” Microsoft SQL Server, with usage of COM components. This usage mode is no longer supported.
- Removed the Event Log Option utility (for old COM development model).
- Removed the EasyOPC Options utility (for old COM development model).
- Removed separate reference documentation for QuickOPC-COM (old development model). Interfaces for COM development are documented within the same help file as those for .NET development.