├── .gitattributes ├── .github └── ISSUE_TEMPLATE │ └── issue-template.md ├── .gitignore ├── CHANGELOG.md ├── LICENSE.md ├── OpcDaAeHdaClient.sln ├── README.md ├── VERSION ├── Win32 └── DemoServer │ ├── Aggregate Calculations.xls │ ├── Aggregate Data 1.csv │ ├── Aggregate Data 2.csv │ ├── OpcDaAeServer.exe │ ├── OpcHdaServer.config.xml │ ├── OpcHdaServer.exe │ ├── Ramp [15 min UTC].csv │ ├── Ramp [15 min].csv │ ├── Raw Data 1.csv │ ├── Readme OPC DAAE Sample Server.pdf │ ├── Sine [15 min UTC].csv │ ├── Sine [15 min].csv │ ├── Square [15 min UTC].csv │ └── Square [15 min].csv ├── WorkshopClientSamples.sln ├── doc └── client │ ├── Doxyfile │ ├── customdoxygen.css │ ├── deployment.txt │ ├── doxygen.sty │ ├── faq.txt │ ├── footer.html │ ├── header.html │ ├── header.png │ ├── images │ └── ClientCPPDevelopment.png │ ├── index.hhp.txt │ ├── index.txt │ ├── introduction.txt │ ├── latex │ ├── Makefile │ ├── doxygen.sty │ ├── make.bat │ └── refman.tex │ ├── license.txt │ ├── starting_with_ae.txt │ ├── starting_with_da.txt │ ├── starting_with_hda.txt │ └── trouble.txt ├── examples ├── c++ │ ├── AeSample │ │ ├── AeSample.sln │ │ ├── AeSample.vcxproj │ │ ├── AeSample.vcxproj.filters │ │ ├── ClassicAeSample.cpp │ │ ├── ClassicAeSample.h │ │ ├── ClassicAeSample.rc │ │ ├── ClassicAeSampleDoc.cpp │ │ ├── ClassicAeSampleDoc.h │ │ ├── ClassicAeSampleView.cpp │ │ ├── ClassicAeSampleView.h │ │ ├── MainFrm.cpp │ │ ├── MainFrm.h │ │ ├── SelectServerDlg.cpp │ │ ├── SelectServerDlg.h │ │ ├── matchpattern.cpp │ │ ├── matchpattern.h │ │ ├── res │ │ │ ├── ClassicAeSample.ico │ │ │ ├── ClassicAeSample.manifest │ │ │ ├── ClassicAeSample.rc2 │ │ │ └── Toolbar.bmp │ │ ├── resource.h │ │ ├── stdafx.cpp │ │ └── stdafx.h │ ├── DaBrowserConsole │ │ ├── DaBrowserConsole.cpp │ │ ├── DaBrowserConsole.sln │ │ ├── DaBrowserConsole.vcxproj │ │ └── DaBrowserConsole.vcxproj.filters │ ├── DaConsole │ │ ├── DaConsole.cpp │ │ ├── DaConsole.vcxproj │ │ ├── DaConsole.vcxproj.filters │ │ └── DaConsole.vs2017.vcxproj.user │ └── HdaConsole │ │ ├── HdaConsole.cpp │ │ ├── HdaConsole.sln │ │ ├── HdaConsole.vcxproj │ │ └── HdaConsole.vcxproj.filters └── doc │ └── client │ ├── CMakeLists.txt │ ├── DaBrowserConsole.cpp │ ├── DaConsole.cpp │ └── HdaConsole.cpp ├── include ├── Base │ ├── ASCIIEncoding.h │ ├── Alignment.h │ ├── Array.h │ ├── Ascii.h │ ├── AtomicCounter.h │ ├── AutoPtr.h │ ├── Base.h │ ├── Buffer.h │ ├── Bugcheck.h │ ├── ByteOrder.h │ ├── Config.h │ ├── DateTime.h │ ├── DateTimeFormat.h │ ├── DateTimeFormatter.h │ ├── DateTimeParser.h │ ├── Debugger.h │ ├── Exception.h │ ├── FPEnvironment.h │ ├── FPEnvironment_C99.h │ ├── FPEnvironment_DEC.h │ ├── FPEnvironment_DUMMY.h │ ├── FPEnvironment_SUN.h │ ├── FPEnvironment_WIN32.h │ ├── Handles.h │ ├── Hash.h │ ├── HashMap.h │ ├── HashSet.h │ ├── HashStatistic.h │ ├── Latin1Encoding.h │ ├── Latin2Encoding.h │ ├── Latin9Encoding.h │ ├── LinearHashTable.h │ ├── LocalDateTime.h │ ├── Logger.h │ ├── MemoryStream.h │ ├── Mutex.h │ ├── Mutex_POSIX.h │ ├── Mutex_VX.h │ ├── Mutex_WIN32.h │ ├── Mutex_WINCE.h │ ├── NumberFormatter.h │ ├── NumericString.h │ ├── Platform.h │ ├── Platform_POSIX.h │ ├── Platform_VMS.h │ ├── Platform_VX.h │ ├── Platform_WIN32.h │ ├── RWLock.h │ ├── RWLock_Android.h │ ├── RWLock_POSIX.h │ ├── RWLock_VX.h │ ├── RWLock_WIN32.h │ ├── RWLock_WINCE.h │ ├── ScopedLock.h │ ├── ScopedUnlock.h │ ├── ServerStates.h │ ├── SharedPtr.h │ ├── SingletonHolder.h │ ├── Status.h │ ├── StatusCodes.h │ ├── StreamUtil.h │ ├── String.h │ ├── TextConverter.h │ ├── TextEncoding.h │ ├── TextIterator.h │ ├── Timespan.h │ ├── Timestamp.h │ ├── Timezone.h │ ├── Types.h │ ├── UTF16Encoding.h │ ├── UTF32Encoding.h │ ├── UTF8Encoding.h │ ├── UTFString.h │ ├── UnWindows.h │ ├── UnicodeConverter.h │ ├── Windows1250Encoding.h │ ├── Windows1251Encoding.h │ └── Windows1252Encoding.h ├── Classic │ ├── classicopc.h │ ├── classicopc_i.c │ ├── inc32 │ │ ├── OpcBatchDef.h │ │ ├── OpcBatchError.h │ │ ├── OpcBatchProps.h │ │ ├── OpcCmd.h │ │ ├── OpcCmd.idl │ │ ├── OpcCmdError.h │ │ ├── OpcCmdPs.dll │ │ ├── OpcCmd_i.c │ │ ├── OpcDx.h │ │ ├── OpcDx.idl │ │ ├── OpcDxError.h │ │ ├── OpcDxPs.dll │ │ ├── OpcDx_i.c │ │ ├── OpcEnum.h │ │ ├── OpcEnum.idl │ │ ├── OpcEnum_i.c │ │ ├── OpcErrSec.h │ │ ├── OpcHda_Error.h │ │ ├── opcSec.h │ │ ├── opcSec.idl │ │ ├── opcSec_i.c │ │ ├── opc_ae.h │ │ ├── opc_ae.idl │ │ ├── opc_ae_i.c │ │ ├── opc_aeps.dll │ │ ├── opcae_er.h │ │ ├── opcaedef.h │ │ ├── opcauto10a_i.c │ │ ├── opcbc.h │ │ ├── opcbc.idl │ │ ├── opcbc_i.c │ │ ├── opcbc_ps.dll │ │ ├── opccomn.h │ │ ├── opccomn.idl │ │ ├── opccomn_i.c │ │ ├── opccomn_ps.dll │ │ ├── opcda.h │ │ ├── opcda.idl │ │ ├── opcda_i.c │ │ ├── opcerror.h │ │ ├── opchda.h │ │ ├── opchda.idl │ │ ├── opchda_i.c │ │ ├── opchda_ps.dll │ │ ├── opcproxy.dll │ │ └── opcsec_ps.dll │ └── inc64 │ │ ├── OpcCmd.h │ │ ├── OpcCmd.idl │ │ ├── OpcCmd_i.c │ │ ├── OpcDx.h │ │ ├── OpcDx.idl │ │ ├── OpcDx_i.c │ │ ├── OpcEnum.h │ │ ├── OpcEnum_i.c │ │ ├── OpcSec.h │ │ ├── OpcSec_i.c │ │ ├── opcSec.idl │ │ ├── opc_ae.h │ │ ├── opc_ae.idl │ │ ├── opc_ae_i.c │ │ ├── opcaedef.h │ │ ├── opcbc.h │ │ ├── opcbc.idl │ │ ├── opcbc_i.c │ │ ├── opccomn.h │ │ ├── opccomn.idl │ │ ├── opccomn_i.c │ │ ├── opcda.h │ │ ├── opcda.idl │ │ ├── opcda_i.c │ │ ├── opcerror.h │ │ ├── opchda.h │ │ ├── opchda.idl │ │ └── opchda_i.c └── DaAeHdaClient │ ├── Ae │ ├── AeEvent.h │ ├── AeServer.h │ ├── AeServerStatus.h │ └── AeSubscription.h │ ├── ClientBase.h │ ├── Da │ ├── DaBrowser.h │ ├── DaCommon.h │ ├── DaGroup.h │ ├── DaItem.h │ ├── DaItemProperty.h │ ├── DaServer.h │ └── DaServerStatus.h │ ├── Hda │ ├── HdaAggregate.h │ ├── HdaAggregateId.h │ ├── HdaItem.h │ ├── HdaItemAttribute.h │ ├── HdaItemAttributeId.h │ ├── HdaServer.h │ └── HdaServerStatus.h │ ├── OpcBase.h │ └── OpcClientSdk.h ├── licenses ├── GPLv3License.txt ├── MITLicense.txt └── Source_Code_License_Agreement.pdf └── src ├── CMakeLists.txt └── Technosoftware ├── Base ├── ASCIIEncoding.cpp ├── Ascii.cpp ├── AtomicCounter.cpp ├── Bugcheck.cpp ├── ByteOrder.cpp ├── DateTime.cpp ├── DateTimeFormat.cpp ├── DateTimeFormatter.cpp ├── DateTimeParser.cpp ├── Debugger.cpp ├── Exception.cpp ├── FPEnvironment.cpp ├── FPEnvironment_C99.cpp ├── FPEnvironment_DEC.cpp ├── FPEnvironment_DUMMY.cpp ├── FPEnvironment_SUN.cpp ├── FPEnvironment_WIN32.cpp ├── Hash.cpp ├── HashStatistic.cpp ├── Latin1Encoding.cpp ├── Latin2Encoding.cpp ├── Latin9Encoding.cpp ├── LocalDateTime.cpp ├── Logger.cpp ├── MemoryStream.cpp ├── Mutex.cpp ├── Mutex_POSIX.cpp ├── Mutex_VX.cpp ├── Mutex_WIN32.cpp ├── Mutex_WINCE.cpp ├── NumberFormatter.cpp ├── NumericString.cpp ├── RWLock.cpp ├── RWLock_Android.cpp ├── RWLock_POSIX.cpp ├── RWLock_VX.cpp ├── RWLock_WIN32.cpp ├── RWLock_WINCE.cpp ├── ServerStates.cpp ├── Status.cpp ├── StatusCodes.cpp ├── String.cpp ├── TextConverter.cpp ├── TextEncoding.cpp ├── TextIterator.cpp ├── Timespan.cpp ├── Timestamp.cpp ├── Timezone.cpp ├── Timezone_UNIX.cpp ├── Timezone_VX.cpp ├── Timezone_WIN32.cpp ├── Timezone_WINCE.cpp ├── UTF16Encoding.cpp ├── UTF32Encoding.cpp ├── UTF8Encoding.cpp ├── UnicodeConverter.cpp ├── Windows1250Encoding.cpp ├── Windows1251Encoding.cpp ├── Windows1252Encoding.cpp ├── bignum-dtoa.cc ├── bignum-dtoa.h ├── bignum.cc ├── bignum.h ├── cached-powers.cc ├── cached-powers.h ├── diy-fp.cc ├── diy-fp.h ├── double-conversion.cc ├── double-conversion.h ├── fast-dtoa.cc ├── fast-dtoa.h ├── fixed-dtoa.cc ├── fixed-dtoa.h ├── ieee.h ├── strtod.cc ├── strtod.h └── utils.h ├── CMakeLists.txt ├── DaAeHdaClient ├── Ae │ ├── AeEvent.cpp │ ├── AeEventSinkImpl.cpp │ ├── AeEventSinkImpl.h │ ├── AeServer.cpp │ ├── AeServerImpl.h │ ├── AeServerStatus.cpp │ ├── AeSubscription.cpp │ └── AeSubscriptionImpl.h ├── CMakeLists.txt ├── Da │ ├── DaBrowser.cpp │ ├── DaBrowserImpl.h │ ├── DaCommon.cpp │ ├── DaGroup.cpp │ ├── DaGroupImpl.h │ ├── DaItem.cpp │ ├── DaItemProperty.cpp │ ├── DaServer.cpp │ ├── DaServerImpl.h │ ├── DaServerStatus.cpp │ ├── MatchPattern.cpp │ └── MatchPattern.h ├── Hda │ ├── HdaAggregate.cpp │ ├── HdaItemAttribute.cpp │ ├── HdaServer.cpp │ ├── HdaServerImpl.h │ └── HdaServerStatus.cpp ├── OpcAccess.cpp ├── OpcBase.cpp ├── OpcDaAeHdaClient.vcxproj ├── OpcDaAeHdaClient.vcxproj.filters ├── OpcDefs.h ├── OpcInternal.h ├── OpcUti.cpp ├── OpcUti.h ├── OpcUtils.cpp ├── OpcUtils.h ├── Version.rc ├── dllmain.cpp ├── pch.cpp ├── pch.h ├── resource.h ├── system │ ├── ClientSdk.h │ ├── ClientSdk_i.c │ ├── OpcAccess.h │ ├── OpcErrors.h │ ├── inc32 │ │ ├── OpcBatchDef.h │ │ ├── OpcBatchError.h │ │ ├── OpcBatchProps.h │ │ ├── OpcCmd.h │ │ ├── OpcCmd.idl │ │ ├── OpcCmdError.h │ │ ├── OpcCmdPs.dll │ │ ├── OpcCmd_i.c │ │ ├── OpcDx.h │ │ ├── OpcDx.idl │ │ ├── OpcDxError.h │ │ ├── OpcDxPs.dll │ │ ├── OpcDx_i.c │ │ ├── OpcEnum.h │ │ ├── OpcEnum.idl │ │ ├── OpcEnum_i.c │ │ ├── OpcErrSec.h │ │ ├── OpcHda_Error.h │ │ ├── opcSec.h │ │ ├── opcSec.idl │ │ ├── opcSec_i.c │ │ ├── opc_ae.h │ │ ├── opc_ae.idl │ │ ├── opc_ae_i.c │ │ ├── opc_aeps.dll │ │ ├── opcae_er.h │ │ ├── opcaedef.h │ │ ├── opcbc.h │ │ ├── opcbc.idl │ │ ├── opcbc_i.c │ │ ├── opcbc_ps.dll │ │ ├── opccomn.h │ │ ├── opccomn.idl │ │ ├── opccomn_i.c │ │ ├── opccomn_ps.dll │ │ ├── opcda.h │ │ ├── opcda.idl │ │ ├── opcda_i.c │ │ ├── opcerror.h │ │ ├── opchda.h │ │ ├── opchda.idl │ │ ├── opchda_i.c │ │ ├── opchda_ps.dll │ │ ├── opcproxy.dll │ │ └── opcsec_ps.dll │ └── inc64 │ │ ├── OpcCmd.h │ │ ├── OpcCmd.idl │ │ ├── OpcCmd_i.c │ │ ├── OpcDx.h │ │ ├── OpcDx.idl │ │ ├── OpcDx_i.c │ │ ├── OpcSec.h │ │ ├── OpcSec_i.c │ │ ├── opcSec.idl │ │ ├── opc_ae.h │ │ ├── opc_ae.idl │ │ ├── opc_ae_i.c │ │ ├── opcbc.h │ │ ├── opcbc.idl │ │ ├── opcbc_i.c │ │ ├── opccomn.h │ │ ├── opccomn.idl │ │ ├── opccomn_i.c │ │ ├── opcda.h │ │ ├── opcda.idl │ │ ├── opcda_i.c │ │ ├── opchda.h │ │ ├── opchda.idl │ │ └── opchda_i.c └── targetver.h └── targetver.h /.gitattributes: -------------------------------------------------------------------------------- 1 | # Default behavior: if Git thinks a file is text (as opposed to binary), it 2 | # will normalize line endings to LF in the repository, but convert to your 3 | # platform's native line endings on checkout (e.g., CRLF for Windows). 4 | * text=auto 5 | 6 | # Explicitly declare text files you want to always be normalized and converted 7 | # to native line endings on checkout. E.g., 8 | # *.txt text 9 | 10 | # Declare files that will always have CRLF line endings on checkout. E.g., 11 | #*.sln text eol=crlf 12 | 13 | # Declare files that will always have LF line endings on checkout. E.g., 14 | *.sh text eol=lf 15 | *.json text eol=lf 16 | 17 | # Denote all files that should not have line endings normalized, should not be 18 | # merged, and should not show in a textual diff. 19 | *.docm binary 20 | *.docx binary 21 | *.ico binary 22 | *.lib binary 23 | *.png binary 24 | *.pptx binary 25 | *.snk binary 26 | *.vsdx binary 27 | *.xps binary 28 | 29 | # OPC UA 30 | *.uanodes binary 31 | 32 | bin/* linguist-vendored 33 | build/* linguist-vendored 34 | examples/* linguist-vendored=false 35 | documentation/* linguist-documentation 36 | license/* linguist-documentation 37 | Workshop/* linguist-documentation 38 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/issue-template.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Issue Template 3 | about: Create a report to help us improve 4 | title: '' 5 | labels: '' 6 | assignees: '' 7 | 8 | --- 9 | 10 | **Type of Issue** 11 | [ ] Issue [ ] Enhancement [ ] Compliance [ ] Question [ ] Help wanted 12 | 13 | # Expected Behavior 14 | 15 | Please describe the issue you are experience as detailed and consised as possible. 16 | 17 | ## Steps to Reproduce 18 | 19 | Please provide detailed steps for reproducing the issue. 20 | 21 | 1. step 1 22 | 2. step 2 23 | 3. you get it... 24 | 25 | **Expected behavior** 26 | A clear and concise description of what you expected to happen. 27 | 28 | **Screenshots** 29 | If applicable, add screenshots to help explain your issue. 30 | 31 | **Log output** 32 | If applicable, add log output to help explain your issue. 33 | 34 | **Code snippets** 35 | If applicable, add a code snippet to help explain your issue. 36 | 37 | **Environment (please complete the following information):** 38 | - OS: [e.g. Windows 10, Ubuntu, macOS] 39 | - Development environment: [e.g. Visual Studio 2019 16.7.2] 40 | - Runtime: [e.g. .NET 5.0, .NET Core 3.1] 41 | - NuGet Package Release Version [e.g. 1.2.0.8] 42 | - Component: [e.g. Technosoftware.DaAeHdaSolution.DaAeHdaClient] 43 | - Server: [e.g. OpcDaAeServer.exe] 44 | - Client: [e.g. DaConsole] 45 | 46 | **Additional context** 47 | Add any other context about the problem here. 48 | -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | # SOFTWARE LICENSE AGREEMENT 2 | 3 | TECHNOSOFTWARE (THE "LICENSOR") IS WILLING TO LICENSE THE ACCOMPANYING SOFTWARE AND ASSOCIATED DOCUMENTATION INCLUDING AUTHORIZED COPIES OF EACH (THE "SOFTWARE") TO YOU ("LICENSEE") ONLY ON THE CONDITION THAT LICENSEE ACCEPTS ALL OF THE TERMS IN THIS AGREEMENT. 4 | 5 | The licensed Software is protected by copyright laws and international copyright treaties, as well as other intellectual property laws and treaties. The licensed Software is licensed, not sold. Technosoftware shall own all right, title and interest including the intellectual property rights in and to the information on bug fixes or error corrections relating to the licensed Software that are submitted by Licensee to Technosoftware as well as any intellectual property rights to the correction of any errors, if any. 6 | 7 | PLEASE READ THE TERMS CAREFULLY BEFORE INSTALLING THE SOFTWARE. BY INSTALLING THE SOFTWARE, LICENSEE ACKNOWLEDGES THAT LICENSEE HAS READ AND UNDERSTANDS THIS AGREEMENT AND AGREES TO BE BOUND BY ITS TERMS AND CONDITIONS. THE EFFECTIVE DATE OF THIS AGREEMENT SHALL BE THE DATE UPON THE SOFTWARE WAS FIRST DELIVERED TO YOU OR FIRST DOWNLOADED BY YOU. 8 | 9 | IF LICENSEE DOES NOT ACCEPT THESE LICENSE TERMS, THEN TECHNOSOFTWARE DOES NOT GRANT ANY LICENSE TO THE SOFTWARE, AND LICENSEE MUST NOT DOWNLOAD OR INSTALL THE SOFTWARE. 10 | 11 | TECHNOSOFTWARE provides different licenses depending on the component and on the ownership of a purchased license of the user of the sources. A single ZIP file or a single repository can contain multiple components where the sources have different license models. The valid license is in the header of each source file. 12 | 13 | Following are basic rules on how TECHNOSOFTWARE licenses the different components: 14 | 15 | 1. OPC DA/AE/HDA and OPC UA core components follow a dual-license model: 16 | - Owner of a purchased license: [SCLA 1.0](licenses/Source_Code_License_Agreement.pdf) 17 | 18 | enables Owner of a purchased license to deploy their applications using the core component sources without being required to disclose the application code. 19 | 20 | - Users that are not Owner of a purchased license: [GPL 3.0](licenses/GPLv3License.txt) 21 | 22 | Based on the GPL 3.0 license terms these users must disclose their application code when using the core component sources. 23 | 24 | 2. Samples and Utilities: 25 | 26 | - All samples and most of the utilities are provided under the [MIT](licenses/MITLicense.txt) license for everyone. 27 | -------------------------------------------------------------------------------- /OpcDaAeHdaClient.sln: -------------------------------------------------------------------------------- 1 | 2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio Version 16 4 | VisualStudioVersion = 16.0.31229.75 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "OpcDaAeHdaClient", "src\Technosoftware\DaAeHdaClient\OpcDaAeHdaClient.vcxproj", "{2D0245FD-9B23-4213-92F9-5FA772AFEFDB}" 7 | EndProject 8 | Global 9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 10 | Debug|x64 = Debug|x64 11 | Debug|x86 = Debug|x86 12 | Release|x64 = Release|x64 13 | Release|x86 = Release|x86 14 | EndGlobalSection 15 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 16 | {2D0245FD-9B23-4213-92F9-5FA772AFEFDB}.Debug|x64.ActiveCfg = Debug|x64 17 | {2D0245FD-9B23-4213-92F9-5FA772AFEFDB}.Debug|x64.Build.0 = Debug|x64 18 | {2D0245FD-9B23-4213-92F9-5FA772AFEFDB}.Debug|x86.ActiveCfg = Debug|Win32 19 | {2D0245FD-9B23-4213-92F9-5FA772AFEFDB}.Debug|x86.Build.0 = Debug|Win32 20 | {2D0245FD-9B23-4213-92F9-5FA772AFEFDB}.Release|x64.ActiveCfg = Release|x64 21 | {2D0245FD-9B23-4213-92F9-5FA772AFEFDB}.Release|x64.Build.0 = Release|x64 22 | {2D0245FD-9B23-4213-92F9-5FA772AFEFDB}.Release|x86.ActiveCfg = Release|Win32 23 | {2D0245FD-9B23-4213-92F9-5FA772AFEFDB}.Release|x86.Build.0 = Release|Win32 24 | EndGlobalSection 25 | GlobalSection(SolutionProperties) = preSolution 26 | HideSolutionNode = FALSE 27 | EndGlobalSection 28 | GlobalSection(ExtensibilityGlobals) = postSolution 29 | SolutionGuid = {45699D22-E29A-42D4-B136-0A0AAE8E6915} 30 | EndGlobalSection 31 | EndGlobal 32 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Technosoftware GmbH OPC DA/AE/HDA Client Solution C++ 2 | 3 | ## OPC DA/AE/HDA Client Solution C++ 4 | The OPC DA/AE/HDA Client Solution C++ offers a fast and easy access to the OPC Client technology. Develop OPC DA/AE/HDA compliant Clients with C++ for Windows. 5 | Under Windows clients using the OPC DA/AE/HDA Client Solution C++ supports OPC DA, OPC AE and OPC HDA. 6 | 7 | The Technosoftware::Base namespace is mainly based on the POCO C++ Foundation Library 8 | (Copyright (c) 2005-2007, Applied Informatics Software Engineering GmbH and Contributors). 9 | Please see the license information for it at https://pocoproject.org/about.html#license 10 | 11 | ## Online Help 12 | 13 | We provide an online help for the current version: [OPC DA/AE/HDA Client Solution C++ Online Help](https://technosoftware.com/help/OPCDaAeHdaClientSolutionCpp/v20/) 14 | 15 | ## Getting started 16 | 17 | First you need to build the solution [OpcDaAeHdaClient.sln](/OpcDaAeHdaClient.sln) to get the needed libraries and DLLs build. 18 | 19 | Afterwards you find the examples in the solution [WorkshopClientSamples.sln](/WorkshopClientSamples.sln). 20 | 21 | ### Licenses 22 | TECHNOSOFTWARE provides different licenses depending on the component and on the ownership of a purchased license of the user of the sources. A single ZIP file or a single repository can contain multiple components where the sources have different license models. The valid license is in the header of each source file. 23 | 24 | See [LICENSE.md](LICENSE.md) for more details. 25 | 26 | ### Get Perpetual License without Support 27 | 28 | The OPC DA/AE/HDA Client Solution C++ One-time fee for lifetime SCLA 1.0 license is available at 29 | 30 | * [OPC DA/AE/HDA Client Solution C++](https://technosoftware.com/product/opc-daaehda-client-solution-cpp/) 31 | 32 | ### Get Support for the Solution under GPL 3.0 or SCLA 1.0 33 | 34 | Support for the Solution under the GPL 3.0 or SCLA 1.0 is available [here](https://github.com/technosoftware-gmbh/opcdaaehda-client-solution-cpp/issues). 35 | 36 | ### Contribution 37 | 38 | We strongly encourage community participation and contribution to this project. First, please fork the repository and commit your changes there. Once happy with your changes you can generate a 'pull request'. 39 | 40 | You must agree to the contributor license agreement before we can accept your changes. The CLA and "I AGREE" button is automatically displayed when you perform the pull request. You can preview CLA [here](https://cla-assistant.io/technosoftware-gmbh/opcdaaehda-client-solution-cpp). 41 | -------------------------------------------------------------------------------- /VERSION: -------------------------------------------------------------------------------- 1 | 2.0.0-preview (13-MAY-2021) 2 | -------------------------------------------------------------------------------- /Win32/DemoServer/Aggregate Calculations.xls: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cloud-rocket/opcdaaehda-client-solution-cpp/f4ea55b6d4f7e722d67d8f618ebb21fe93ec18c8/Win32/DemoServer/Aggregate Calculations.xls -------------------------------------------------------------------------------- /Win32/DemoServer/Aggregate Data 1.csv: -------------------------------------------------------------------------------- 1 | VAL, 2016-01-01T00:00:00Z,0,0x00200000 2 | VAL, 2016-01-01T00:00:10Z,10,0x000400C0 3 | VAL, 2016-01-01T00:00:20Z,20,0x000400C0 4 | VAL, 2016-01-01T00:00:30Z,30,0x000400C0 5 | VAL, 2016-01-01T00:00:40Z,40,0x00040000 6 | VAL, 2016-01-01T00:00:50Z,50,0x000400C0 7 | VAL, 2016-01-01T00:01:00Z,60,0x000400C0 8 | VAL, 2016-01-01T00:01:10Z,70,0x00040040 9 | VAL, 2016-01-01T00:01:20Z,80,0x000400C0 10 | VAL, 2016-01-01T00:01:30Z,90,0x000400C0 11 | ANN,2016-01-01T00:00:00Z,First archive entry; Point Created.,User,2016-02-01 00:00:00 12 | ANN,2016-01-01T00:00:40Z,Scan failed; Bad data entered.,User,2016-02-01 00:00:00 13 | ANN,2016-01-01T00:01:10Z,Value is flagged as questionable.,User,2016-02-01 00:00:00 14 | -------------------------------------------------------------------------------- /Win32/DemoServer/Aggregate Data 2.csv: -------------------------------------------------------------------------------- 1 | VAL, 2016-01-01T00:00:00Z,0, 0x00200000 2 | VAL, 2016-01-01T00:00:02Z,10,0x000400C0 3 | VAL, 2016-01-01T00:00:25Z,20,0x000400C0 4 | VAL, 2016-01-01T00:00:28Z,25,0x000400C0 5 | VAL, 2016-01-01T00:00:39Z,30,0x000400C0 6 | VAL, 2016-01-01T00:00:42Z,40,0x00040000 7 | VAL, 2016-01-01T00:00:48Z,40,0x000400C0 8 | VAL, 2016-01-01T00:00:52Z,50,0x000400C0 9 | VAL, 2016-01-01T00:01:12Z,60,0x000400C0 10 | VAL, 2016-01-01T00:01:17Z,70,0x00040040 11 | VAL, 2016-01-01T00:01:23Z,70,0x000400C0 12 | VAL, 2016-01-01T00:01:26Z,80,0x000400C0 13 | VAL, 2016-01-01T00:01:30Z,90,0x000400C0 14 | ANN,2016-01-01T00:00:00Z,First archive entry; Point Created.,User,2016-02-01 00:00:00 15 | ANN,2016-01-01T00:00:42Z,Scan failed; Bad data entered.,User,2016-02-01 00:00:00 16 | ANN,2016-01-01T00:00:48Z,Received good quality value.,User,2016-02-01 00:00:00 17 | ANN,2016-01-01T00:01:17Z,Value is flagged as questionable.,User,2016-02-01 00:00:00 18 | -------------------------------------------------------------------------------- /Win32/DemoServer/OpcDaAeServer.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cloud-rocket/opcdaaehda-client-solution-cpp/f4ea55b6d4f7e722d67d8f618ebb21fe93ec18c8/Win32/DemoServer/OpcDaAeServer.exe -------------------------------------------------------------------------------- /Win32/DemoServer/OpcHdaServer.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cloud-rocket/opcdaaehda-client-solution-cpp/f4ea55b6d4f7e722d67d8f618ebb21fe93ec18c8/Win32/DemoServer/OpcHdaServer.exe -------------------------------------------------------------------------------- /Win32/DemoServer/Raw Data 1.csv: -------------------------------------------------------------------------------- 1 | VAL,2016-01-01T00:00:00Z,0,0x000400C0 2 | VAL,2016-01-01T00:00:02Z,2,0x000400C0 3 | VAL,2016-01-01T00:00:03Z,3,0x000400C0 4 | VAL,2016-01-01T00:00:05Z,5,0x000400C0 5 | VAL,2016-01-01T00:00:06Z,6,0x000400C0 6 | ANN,2016-01-01T00:00:00Z,Point created.,User,2016-02-01 00:00:00 7 | ANN,2016-01-01T00:00:06Z,End of data.,User,2016-02-01 00:00:00 8 | 9 | 10 | -------------------------------------------------------------------------------- /Win32/DemoServer/Readme OPC DAAE Sample Server.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cloud-rocket/opcdaaehda-client-solution-cpp/f4ea55b6d4f7e722d67d8f618ebb21fe93ec18c8/Win32/DemoServer/Readme OPC DAAE Sample Server.pdf -------------------------------------------------------------------------------- /doc/client/customdoxygen.css: -------------------------------------------------------------------------------- 1 | /* Custom CSS for doxygen 1.8.3.1 */ 2 | 3 | body, table, div, p, dl { 4 | font-family: Lucida Grande, Verdana, Geneva, Arial, sans-serif; 5 | font-size: 13px; 6 | line-height: 1.3; 7 | } 8 | 9 | /* @group Heading Levels */ 10 | 11 | h1 { 12 | font-size: 150%; 13 | } 14 | 15 | h2 { 16 | font-size: 120%; 17 | } 18 | 19 | h2.groupheader { 20 | color: #003333; 21 | } 22 | 23 | h3 { 24 | font-size: 100%; 25 | } 26 | 27 | h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { 28 | text-shadow: 0 0 15px #003333; 29 | } 30 | 31 | a { 32 | color: #003333; 33 | font-weight: normal; 34 | text-decoration: none; 35 | } 36 | 37 | .contents a:visited { 38 | color: #758f57; 39 | } 40 | 41 | a.code, a.code:visited { 42 | color: #758f57; 43 | } 44 | 45 | a.codeRef, a.codeRef:visited { 46 | color: #758f57; 47 | } 48 | 49 | div.line.glow { 50 | background-color: #003333; 51 | box-shadow: 0 0 10px #003333; 52 | } 53 | 54 | .memberdecls td.glow, .fieldtable tr.glow { 55 | background-color: #003333; 56 | box-shadow: 0 0 15px #003333; 57 | } 58 | 59 | .memitem.glow { 60 | box-shadow: 0 0 15px #003333; 61 | } 62 | 63 | div.directory { 64 | border-top: 1px solid #B0D8A8; 65 | border-bottom: 1px solid #B0D8A8; 66 | } 67 | 68 | #projectname 69 | { 70 | color: white; 71 | } 72 | 73 | #titlearea 74 | { 75 | border-bottom: 1px solid #63795e; 76 | background-repeat:repeat-x; 77 | background-color: #63795e; 78 | } 79 | 80 | /* class for headings inside tables (features and profiles) */ 81 | 82 | td.intableheading { 83 | font-weight: bold; 84 | /* text-align: center; */ 85 | font-size: 110%; 86 | background-color:#B8D9A8; 87 | } 88 | /* indication of support level for features */ 89 | 90 | .legend { 91 | line-height: 1.8; 92 | } 93 | -------------------------------------------------------------------------------- /doc/client/deployment.txt: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2011-2018 Technosoftware GmbH. All rights reserved 3 | * Web: https://technosoftware.com 4 | * 5 | * Purpose: 6 | * OPC DA/AE/HDA Client Ssolution C++ Manual. 7 | * 8 | * The source code in this file is covered under a dual-license scenario: 9 | * - Owner of a purchased license: SCLA 1.0 10 | * - GPL V3: everybody else 11 | * 12 | * SCLA license terms accompanied with this source code. 13 | * See SCLA 1.0: https://technosoftware.com/license/Source_Code_License_Agreement.pdf 14 | * 15 | * GNU General Public License as published by the Free Software Foundation; 16 | * version 3 of the License are accompanied with this source code. 17 | * See https://technosoftware.com/license/GPLv3License.txt 18 | * 19 | * This source code is distributed in the hope that it will be useful, but 20 | * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 21 | * or FITNESS FOR A PARTICULAR PURPOSE. 22 | */ 23 | 24 | 25 | /*! \page deployment Deployment 26 | 27 | \addindex deployment 28 | \tableofcontents 29 | 30 |
There are 2 main issues you need to be aware of when deploying your application to end users:
31 |Please be sure that the required software components are installed. If they are not yet installed please install the software as follows:
33 |This setup application installs the OPC Core Components required by applications accessing Classic OPC DA, AE or HDA servers.
35 |The OPC DA/AE/HDA Client Ssolution C++ is delivered in form of DLLs. You need to deploy the following files in the same directory as your executable:
37 |