open62541 | Open source implementation of OPC UA
kandi X-RAY | open62541 Summary
kandi X-RAY | open62541 Summary
open62541 (is an open source and free implementation of OPC UA (OPC Unified Architecture) written in the common subset of the C99 and C++98 languages. The library is usable with all major compilers and provides the necessary tools to implement dedicated OPC UA clients and servers, or to integrate OPC UA-based communication into existing applications. open62541 library is platform independent. All platform-specific functionality is implemented via exchangeable plugins. Plugin implementations are provided for the major operating systems. open62541 is licensed under the Mozilla Public License v2.0 (MPLv2). This allows the open62541 library to be combined and distributed with any proprietary software. Only changes to the open62541 library itself need to be licensed under the MPLv2 when copied and distributed. The plugins, as well as the server and client examples are in the public domain (CC0 license). They can be reused under any license and changes do not have to be published. The library is available in standard source and binary form. In addition, the single-file source distribution merges the entire library into a single .c and .h file that can be easily added to existing projects. Example server and client implementations can be found in the /examples directory or further down on this page.
Support
Quality
Security
License
Reuse
Top functions reviewed by kandi - BETA
Currently covering the most popular Java, JavaScript and Python libraries. See a Sample of open62541
open62541 Key Features
open62541 Examples and Code Snippets
Community Discussions
Trending Discussions on open62541
QUESTION
On the library's website, the documentation provides options for functions for accessing historical data reading. There is also an example of using historical data reading in the repository. I've simplified this example from the repository a bit, but I still can't compile it.
...ANSWER
Answered 2021-Dec-08 at 14:10In order for the mechanism of reading historical data to work, it is necessary to enable the UA_ENABLE_HISTORIZING parameter WHEN BUILDING THE LIBRARY, which is not specified in the official documentation for the library.
QUESTION
I am trying to build the library on Windows with CMake. The whole process is new to me, so please excuse this basic question. I followed the instructions under 2.1.2 of the current open62541 manual (Release 1.2.0-rc2-45-gf4270ceb). After executing cmake.exe
, I got the following error:
ANSWER
Answered 2021-Oct-19 at 13:22To run Visual Studio on an .sln
file means to open it in VS, then click on Build
in the menu bar and then on Build solution
.
This was new for me, thanks everyone for hinting me in the right direction.
QUESTION
What is the best way to implement Global Discovery Server and Certificate Management? Does open62541 support these services or is there some better library that could be used (not necessarily open source)?
...ANSWER
Answered 2021-Sep-05 at 08:15There is a sample code for a GDS from the OPC Foundation here. But it is only community maintained and managing devices via Pull and Push can be quite cumbersome with the GDS Client application. But it was used for a while in IOP Workshops and for V1.04 operation with RSA certs should still work according to standards. There are some commercial GDS offerings in the pipeline by different vendors, given security is in the play I recommend use rather commercial ones. For implementing and testing the GDS Pull/Push services for a UA server the sample server should be sufficient.
QUESTION
I hope the question is not too trivial, but I am trying to convert a gcc command into a CMakeLists.txt. Unfortunately I am failing at understanding the basics and I hope you can help me. My main reason for wanting to do this is that I'm building the whole thing on a Raspberry and it has quite a few performance problems. So it takes a good 90min to build the whole thing. With cmake I hope that the build process is done faster when changes are made. Which should be theoretically possible.
Here is the my gcc command
...ANSWER
Answered 2021-Mar-08 at 18:40You can use SET()
to set the compiler flags. Check the CMake documentation
You can set the CMAKE_CXX_FLAGS
to the flags you want to pass to the compiler
QUESTION
I'm using an open62541 library who's functions are almost all static. I have to write some callback functions in the open62541's functions, the callback functions are binding to some non-static function.
so the problem is how do I make the:
static function of class A call a std::function, which is bind to non-static function of class B ?
to make the question simpler I make the example:
...ANSWER
Answered 2020-Sep-29 at 02:34#include
using namespace std;
class A
{
public:
void Knock_knock() {
std::cout<<"who's there?"<Knock_knock();
}
private:
static A *m_A;
};
A* B::m_A = nullptr;
int main()
{
A m_A;
m_A.Knock_knock();
B::setA( &m_A );
B::talkTheJoke();
return 0;
}
QUESTION
I am a student and currently trying to analyse the reference implementation for the OPC Ua protocol in C with cppcheck and frama-c. My goal is not to do very dedicated testing but more some general/basic tests to see if there are some obvious issues with the code.
The project can be found here
I am running a VM with Ubuntu 19.10 and Frama-C version 20.0 (Calcium).
The steps i performed are as follows:
...ANSWER
Answered 2020-Apr-21 at 15:38Do i need to do my analysis on all files separately or is it possible to throw in the whole project like with cppcheck?
Frama-C can actually analyze the entire project in one go provided multiple files do not define the same symbols. See http://blog.frama-c.com/index.php?post/2018/01/25/Analysis-scripts%3A-helping-automate-case-studies, paragraph "Setting sources and testing parsing":
The list of source files to be given to Frama-C can be obtained from the compile_commands.json file. However, it is often the case that the software under analysis contains several binaries, each requiring a different set of sources. The JSON compilation database does not map the sources used to produce each binary, so it is not always possible to entirely automate the process.
The key point in your case is that the compilation_commands.json
instructs Frama-C on how to parse each file, but you must still supply the files you want to see parsed yourself. With your current command-line, Frama-C tries to interpret /path/to/open62541/src/
as a file (and fails), and has no other file to parse. This is why you get the error User Error: cannot find entry point 'main'
.
Thus, you must specify the files you want to parse on the command-line. This can be done in two ways:
- manually, by extracting the files referenced in
compilation_commands.json
- automatically, using the
frama-c-script
helpers, described at http://blog.frama-c.com/index.php?post/2019/01/16/Setting-up-an-analysis-with-the-help-of-frama-c-script
I used the first approach, but I suggest you use the second, as frama-c-script
is very helpful to start a first analysis.
Once you have done this listing step, you will encounter at least three more problems:
- Frama-C will choke on
# include
, because this file is not present in the standard C library bundled with Frama-C. Either remove this include in the source files, or add an emptysys/param.h
somewhere - some
.c
files refer to generated headers that are not present in the git repo ofopen62541
. So you will need to compile the repo to get those headers before launching Frama-C. - Frama-C will also choke on the definition of the macro
UA_STATIC_ASSERT
inarchitecture_definitions.h
. I did not investigate whether one of the definitions was accepted, and I simply defined it to the empty macro.
After all this, you should be good to go.
QUESTION
first thanks to read this question
I have some problem about open62541 disconnect issue
I checked that the connection is lost every same cycle.
cycle time is 12min 40sec.
I checked connect status from this code
...ANSWER
Answered 2020-Feb-13 at 01:57I solve this problem myself
I tested other open62541 version.
It is work. Just changed open62541
Community Discussions, Code Snippets contain sources that include Stack Exchange Network
Vulnerabilities
No vulnerabilities reported
Install open62541
Recommended: Use any of the prepared packages attached to every release or in the package repository of your distro (if available). Please check the install guide for more info.
Download a .zip package of special pack/ branches. These pack branches are up-to-date with the corresponding base branches, but already have the submodules in-place and the version string set correctly. Here are some direct download links for the current pack branches: pack/master.zip pack/1.0.zip
Clone this repository and initialize all the submodules using git submodule update --init --recursive. Then either use make install or setup your CMake project correspondingly.
Support
Reuse Trending Solutions
Find, review, and download reusable Libraries, Code Snippets, Cloud APIs from over 650 million Knowledge Items
Find more librariesStay Updated
Subscribe to our newsletter for trending solutions and developer bootcamps
Share this Page