OPC-UA open62541 C++测试代码

初级代码游戏的专栏介绍与文章目录-CSDN博客

我的github:codetoys,所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。

这些代码大部分以Linux为目标但部分代码是纯C++的,可以在任何平台上使用。


        这是之前写的open62541测试代码(意思是我现在也不太看得懂,但是程序能正常运行)。

        环境为visual studio 2022,C++控制台项目。可移植到unix/linux。

目录

项目概况

程序概况

源代码

兼容性


项目概况

        上面方框里面是编译好的open62541,下面方框是main函数所在文件。

        附加的库:

程序概况

        程序自己写了一个server,又写了一个client,自己搞自己,输出如下(注意程序首先启动server,获得一部分输出,然后要敲一下回车才会启动client,输出信息然后程序自动结束):

Hello World!
[ 13940][2024-05-11 08:48:47.155 (UTC+0800)] warn/server        AccessControl: Unconfigured AccessControl. Users have all permissions.
[ 13940][2024-05-11 08:48:47.170 (UTC+0800)] info/server        AccessControl: Anonymous login is enabled
[ 13940][2024-05-11 08:48:47.170 (UTC+0800)] info/server        AccessControl: x509 certificate user authentication is enabled
[ 13940][2024-05-11 08:48:47.170 (UTC+0800)] warn/server        Username/Password Authentication configured, but no encrypting SecurityPolicy. This can leak credentials on the network.
[ 13940][2024-05-11 08:48:47.170 (UTC+0800)] warn/userland      AcceptAll Certificate Verification. Any remote certificate will be accepted.
ns: 1 S[the NodeId]
ns: 1 S[the NodeI]
ns: 0 N[50510]
ns: 0 N[50218]
ns: 0 N[50219]
[ 13940][2024-05-11 08:48:47.170 (UTC+0800)] info/network       TCP network layer listening on opc.tcp://mac-2023-11-09:5000/

[ 22336][2024-05-11 08:48:49.329 (UTC+0800)] warn/userland      AcceptAll Certificate Verification. Any remote certificate will be accepted.
[ 13940][2024-05-11 08:48:49.329 (UTC+0800)] info/network       Connection 512 | New connection over TCP from ::1
[ 13940][2024-05-11 08:48:49.329 (UTC+0800)] info/channel       Connection 512 | SecureChannel 1 | SecureChannel opened with SecurityPolicy http://opcfoundation.org/UA/SecurityPolicy#None and a revised lifetime of 600.00s
[ 22336][2024-05-11 08:48:49.344 (UTC+0800)] info/channel       Connection 496 | SecureChannel 1 | SecureChannel opened with SecurityPolicy http://opcfoundation.org/UA/SecurityPolicy#None and a revised lifetime of 600.00s
[ 22336][2024-05-11 08:48:49.344 (UTC+0800)] info/client        Client Status: ChannelState: Open, SessionState: Closed, ConnectStatus: Good
[ 22336][2024-05-11 08:48:49.344 (UTC+0800)] info/client        Selected endpoint 0 in URL opc.tcp://localhost:5000 with SecurityMode None and SecurityPolicy http://opcfoundation.org/UA/SecurityPolicy#None
[ 22336][2024-05-11 08:48:49.344 (UTC+0800)] info/client        Selected UserTokenPolicy open62541-anonymous-policy with UserTokenType Anonymous and SecurityPolicy http://opcfoundation.org/UA/SecurityPolicy#None
[ 13940][2024-05-11 08:48:49.344 (UTC+0800)] info/session       SecureChannel 1 | Session "" | Session created
[ 22336][2024-05-11 08:48:49.344 (UTC+0800)] info/client        Client Status: ChannelState: Open, SessionState: Created, ConnectStatus: Good
[ 13940][2024-05-11 08:48:49.344 (UTC+0800)] info/session       SecureChannel 1 | Session "" | ActivateSession: Session activated
[ 22336][2024-05-11 08:48:49.344 (UTC+0800)] info/client        Client Status: ChannelState: Open, SessionState: Activated, ConnectStatus: Good
连接成功
[ 22336][2024-05-11 08:48:49.344 (UTC+0800)] info/userland      date is: 11-5-2024 0:48:49.344

[ 22336][2024-05-11 08:48:49.344 (UTC+0800)] info/userland      Variable Value is: 27

[ 22336][2024-05-11 08:48:49.344 (UTC+0800)] info/userland      New Variable Value is: 100

[ 22336][2024-05-11 08:48:49.344 (UTC+0800)] info/userland      未能获取 the NodeId2

[ 22336][2024-05-11 08:48:49.344 (UTC+0800)] info/userland      readVariable 出错

[ 22336][2024-05-11 08:48:49.344 (UTC+0800)] info/userland      未能获取 the NodeId3

[ 22336][2024-05-11 08:48:49.344 (UTC+0800)] info/userland      readVariable 出错(符合预期)


i   j   关系 类型 BROWSE NAME      DISPLAY NAME     NODEID           typeDefinition
  0   1 组织 对象 Server           Server           ns: 0 N[2253]    ns: 0 N[2004]    : 不是变量
      0   1 属性 变量 Auditing         Auditing         ns: 0 N[2994]    ns: 0 N[68]      : ns: 0 N[1] [0]
      0   2 属性 变量 ServiceLevel     ServiceLevel     ns: 0 N[2267]    ns: 0 N[68]      : ns: 0 N[3] [255]
      0   3 属性 变量 NamespaceArray   NamespaceArray   ns: 0 N[2255]    ns: 0 N[68]      : ns: 0 N[12]数组2 [http://opcfoundation.org/UA/]
      0   4 属性 变量 ServerArray      ServerArray      ns: 0 N[2254]    ns: 0 N[68]      : ns: 0 N[12]数组1 [urn:open62541.server.application]
      0   5 成员 对象 ServerRedundancy ServerRedundancy ns: 0 N[2296]    ns: 0 N[2034]    : 不是变量
          0   1 属性 变量 RedundancySupport RedundancySupport ns: 0 N[3709]    ns: 0 N[68]      : ns: 0 N[6] [0]
      0   6 成员 对象 VendorServerInfo VendorServerInfo ns: 0 N[2295]    ns: 0 N[2033]    : 不是变量
      0   7 成员 对象 ServerDiagnostics ServerDiagnostics ns: 0 N[2274]    ns: 0 N[2020]    : 不是变量
          0   1 属性 变量 EnabledFlag      EnabledFlag      ns: 0 N[2294]    ns: 0 N[68]      : ns: 0 N[1] [0]
      0   8 成员 对象 ServerCapabilities ServerCapabilities ns: 0 N[2268]    ns: 0 N[2013]    : 不是变量
          0   1 属性 变量 SoftwareCertificates SoftwareCertificates ns: 0 N[3704]    ns: 0 N[68]      : ns: 0 N[22]多维1数组1 [未获取 UA_TYPES_EXTENSIONOBJECT]
          0   2 属性 变量 MaxHistoryContinuationPoints MaxHistoryContinuationPoints ns: 0 N[2737]    ns: 0 N[68]      : ns: 0 N[5] [0]
          0   3 属性 变量 MaxQueryContinuationPoints MaxQueryContinuationPoints ns: 0 N[2736]    ns: 0 N[68]      : ns: 0 N[5] [0]
          0   4 属性 变量 MaxBrowseContinuationPoints MaxBrowseContinuationPoints ns: 0 N[2735]    ns: 0 N[68]      : ns: 0 N[5] [5]
          0   5 属性 变量 MinSupportedSampleRate MinSupportedSampleRate ns: 0 N[2272]    ns: 0 N[68]      : ns: 0 N[11] [50.000000]
          0   6 属性 变量 LocaleIdArray    LocaleIdArray    ns: 0 N[2271]    ns: 0 N[68]      : ns: 0 N[12]数组1 [en]
          0   7 属性 变量 ServerProfileArray ServerProfileArray ns: 0 N[2269]    ns: 0 N[68]      : ns: 0 N[12]数组3 [http://opcfoundation.org/UA-Profile/Server/MicroEmbeddedDevice]
          0   8 成员 对象 AggregateFunctions AggregateFunctions ns: 0 N[2997]    ns: 0 N[61]      : 不是变量
          0   9 成员 对象 ModellingRules   ModellingRules   ns: 0 N[2996]    ns: 0 N[61]      : 不是变量
              0   1 成员 对象 ExposesItsArray  ExposesItsArray  ns: 0 N[83]      ns: 0 N[77]      : 不是变量
                  0   1 属性 变量 NamingRule       NamingRule       ns: 0 N[114]     ns: 0 N[68]      : ns: 0 N[6] [3]
              0   2 成员 对象 Mandatory        Mandatory        ns: 0 N[78]      ns: 0 N[77]      : 不是变量
                  0   1 属性 变量 NamingRule       NamingRule       ns: 0 N[112]     ns: 0 N[68]      : ns: 0 N[6] [1]
              0   3 成员 对象 MandatoryPlaceholder MandatoryPlaceholder ns: 0 N[11510]   ns: 0 N[77]      : 不是变量
                  0   1 属性 变量 NamingRule       NamingRule       ns: 0 N[11511]   ns: 0 N[68]      : ns: 0 N[6] [1]
              0   4 成员 对象 Optional         Optional         ns: 0 N[80]      ns: 0 N[77]      : 不是变量
                  0   1 属性 变量 NamingRule       NamingRule       ns: 0 N[113]     ns: 0 N[68]      : ns: 0 N[6] [2]
              0   5 成员 对象 OptionalPlaceholder OptionalPlaceholder ns: 0 N[11508]   ns: 0 N[77]      : 不是变量
                  0   1 属性 变量 NamingRule       NamingRule       ns: 0 N[11509]   ns: 0 N[68]      : ns: 0 N[6] [2]
          0  10 成员 对象 OperationLimits  OperationLimits  ns: 0 N[11704]   ns: 0 N[11564]   : 不是变量
              0   1 属性 变量 MaxMonitoredItemsPerCall MaxMonitoredItemsPerCall ns: 0 N[11714]   ns: 0 N[68]      : ns: 0 N[7] [0]
              0   2 属性 变量 MaxNodesPerNodeManagement MaxNodesPerNodeManagement ns: 0 N[11713]   ns: 0 N[68]      : ns: 0 N[7] [0]
              0   3 属性 变量 MaxNodesPerTranslateBrowsePathsToNodeIds MaxNodesPerTranslateBrowsePathsToNodeIds ns: 0 N[11712]   ns: 0 N[68]      : ns: 0 N[7] [0]
              0   4 属性 变量 MaxNodesPerRegisterNodes MaxNodesPerRegisterNodes ns: 0 N[11711]   ns: 0 N[68]      : ns: 0 N[7] [0]
              0   5 属性 变量 MaxNodesPerBrowse MaxNodesPerBrowse ns: 0 N[11710]   ns: 0 N[68]      : ns: 0 N[7] [0]
              0   6 属性 变量 MaxNodesPerMethodCall MaxNodesPerMethodCall ns: 0 N[11709]   ns: 0 N[68]      : ns: 0 N[7] [0]
              0   7 属性 变量 MaxNodesPerWrite MaxNodesPerWrite ns: 0 N[11707]   ns: 0 N[68]      : ns: 0 N[7] [0]
              0   8 属性 变量 MaxNodesPerRead  MaxNodesPerRead  ns: 0 N[11705]   ns: 0 N[68]      : ns: 0 N[7] [0]
      0   9 成员 变量 ServerStatus     ServerStatus     ns: 0 N[2256]    ns: 0 N[2138]    : ns: 0 N[862]*******************************未识别的值类型 []
          0   1 成员 变量 ShutdownReason   ShutdownReason   ns: 0 N[2993]    ns: 0 N[63]      : ns: 0 N[21] [未获取 UA_TYPES_LOCALIZEDTEXT]
          0   2 成员 变量 SecondsTillShutdown SecondsTillShutdown ns: 0 N[2992]    ns: 0 N[63]      : ns: 0 N[7] [0]
          0   3 成员 变量 BuildInfo        BuildInfo        ns: 0 N[2260]    ns: 0 N[3051]    : ns: 0 N[338]*******************************未识别的值类型 []
              0   1 成员 变量 BuildDate        BuildDate        ns: 0 N[2266]    ns: 0 N[63]      : ns: 0 N[13] [2024年5月11日 0:48:47]
              0   2 成员 变量 BuildNumber      BuildNumber      ns: 0 N[2265]    ns: 0 N[63]      : ns: 0 N[12] [May  9 2024 15:23:14]
              0   3 成员 变量 SoftwareVersion  SoftwareVersion  ns: 0 N[2264]    ns: 0 N[63]      : ns: 0 N[12] [1.2.2-unknown]
              0   4 成员 变量 ManufacturerName ManufacturerName ns: 0 N[2263]    ns: 0 N[63]      : ns: 0 N[12] [open62541]
              0   5 成员 变量 ProductUri       ProductUri       ns: 0 N[2262]    ns: 0 N[63]      : ns: 0 N[12] [http://open62541.org]
              0   6 成员 变量 ProductName      ProductName      ns: 0 N[2261]    ns: 0 N[63]      : ns: 0 N[12] [open62541 OPC UA Server]
          0   4 成员 变量 State            State            ns: 0 N[2259]    ns: 0 N[63]      : ns: 0 N[6] [0]
          0   5 成员 变量 CurrentTime      CurrentTime      ns: 0 N[2258]    ns: 0 N[63]      : ns: 0 N[13] [2024年5月11日 0:48:49]
          0   6 成员 变量 StartTime        StartTime        ns: 0 N[2257]    ns: 0 N[63]      : ns: 0 N[13] [2024年5月11日 0:48:47]
      0  10 成员 方法 GetMonitoredItems GetMonitoredItems ns: 0 N[11492]   ns: 0 N[0]       : 不是变量
          0   0 属性 变量 OutputArguments  OutputArguments  ns: 0 N[11494]   ns: 0 N[68]      : ns: 0 N[22]数组2 [未获取 UA_TYPES_EXTENSIONOBJECT]
          0   1 属性 变量 InputArguments   InputArguments   ns: 0 N[11493]   ns: 0 N[68]      : ns: 0 N[22]数组1 [未获取 UA_TYPES_EXTENSIONOBJECT]
  0   2 组织 变量 browseName       displayName      ns: 1 S[the NodeId] ns: 0 N[63]      : ns: 0 N[6] [100]
  0   3 组织 对象 browseName       displayName      ns: 1 S[the NodeI] ns: 0 N[58]      : 不是变量
      0   1 组织 变量 a                displayName      ns: 0 N[50510]   ns: 0 N[63]      : ns: 0 N[6] [99]
      0   2 组织 对象 obj              displayName      ns: 0 N[50218]   ns: 0 N[58]      : 不是变量
          0   1 成员 变量 b                displayName      ns: 0 N[50219]   ns: 0 N[63]      : ns: 0 N[6] [29]
  0   4 组织 对象 Student (Manual) Student (Manual) ns: 0 N[50220]   ns: 0 N[58]      : 不是变量
      0   1 成员 变量 StudentName      Name             ns: 0 N[50221]   ns: 0 N[63]      : ns: 0 N[12] [Xiao Ming]
      0   2 成员 变量 Gender           Gender           ns: 0 N[50222]   ns: 0 N[63]      : ns: 0 N[12] [Male]
      0   3 成员 变量 Age              Age              ns: 0 N[50223]   ns: 0 N[63]      : ns: 0 N[3] [16]
      0   4 成员 变量 Height (cm)      Height (cm)      ns: 0 N[50224]   ns: 0 N[63]      : ns: 0 N[5] [170]
      0   5 成员 变量 Weight (kg)      Weight (kg)      ns: 0 N[50225]   ns: 0 N[63]      : ns: 0 N[5] [60]

i   j   关系 类型 BROWSE NAME      DISPLAY NAME     NODEID           typeDefinition

i   j   关系 类型 BROWSE NAME      DISPLAY NAME     NODEID           typeDefinition
  0   1 组织 变量 a                displayName      ns: 0 N[50510]   ns: 0 N[63]      : ns: 0 N[6] [99]
  0   2 组织 对象 obj              displayName      ns: 0 N[50218]   ns: 0 N[58]      : 不是变量
      0   1 成员 变量 b                displayName      ns: 0 N[50219]   ns: 0 N[63]      : ns: 0 N[6] [29]
[ 13940][2024-05-11 08:48:49.422 (UTC+0800)] info/session       SecureChannel 1 | Session "" | Closing the Session
[ 22336][2024-05-11 08:48:49.422 (UTC+0800)] info/client        Client Status: ChannelState: Closed, SessionState: Closed, ConnectStatus: Good
[ 13940][2024-05-11 08:48:49.422 (UTC+0800)] info/channel       Connection 512 | SecureChannel 1 | CloseSecureChannel
[ 13940][2024-05-11 08:48:49.422 (UTC+0800)] info/network       Connection 512 | Closed

x64\Debug\CppOPCDemo.exe (进程 5096)已退出,代码为 0。
按任意键关闭此窗口. . .

源代码

        打个包算了:

【免费】OPC-UAopen62541C++测试代码资源-CSDN文库

        注意里面没有sln文件,直接打开项目文件即可。里面还有个小小的readme.txt:

Open62541是开源OPC UA库
可以使用编译好的lib,也可以使用.c文件
.c文件修改了日志输出

服务端默认端口号4840,如果启动报错,一般是端口号被占用

         我应该是也用OPC-UA测试工具测试过的。毕竟自己搞自己有点不放心。

兼容性

        这些代码我也移植到ubuntu上了,除了头文件位置之外,主要是char *和char const*的不兼容,visual studio没那么严格。


(这里是结束)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/630503.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

机器人计算力矩控制

反馈线性化: 反馈线性化是一种控制系统设计方法,其目标是通过状态空间的坐标变换和控制变换,使得非线性系统的输入-状态映射或输入-输出映射反馈等价于线性系统。这样,就可以应用线性系统的控制理论来实现非线性系统的控制。在机…

【Redis】数据类型

Redis数据类型(5 3 1) 五种基本数据类型 String字符串 特点 二进制安全,可以包含任何数据,如数字,字符串,jpg图片或者序列化的对象 应用场景 缓存: redis作为缓存层,mysql做持…

Java项目:基于ssm框架实现的房屋租售网站管理系统(房屋租赁和房屋出售一体)(B/S架构+源码+数据库+毕业论文+开题+任务书)

一、项目简介 本项目是一套基于ssm框架实现的房屋租售网站管理系统 包含:项目源码、数据库脚本等,该项目附带全部源码可作为毕设使用。 项目都经过严格调试,eclipse或者idea 确保可以运行! 该系统功能完善、界面美观、操作简单、…

2024年5月16日 十二生肖 今日运势

小运播报:2024年5月16日,星期四,农历四月初九 (甲辰年己巳月庚辰日),法定工作日。 红榜生肖:猴、鼠、鸡 需要注意:牛、兔、狗 喜神方位:西北方 财神方位:…

Py深度学习基础|关于Batch Normalization

1. 为什么需要Batch Normalization 通常我们会在输入层进行数据的标准化处理,这是为了让模型学习到更好的特征。同样,在模型的中间层我们也可以进行normalize。在神经网络中, 数据分布对训练会产生影响。 比如我们使用tanh作为激活函数,当输入…

财富增长新途径:副业赚钱方法全攻略

探寻财富之路:多元化赚钱途径解析 在追求财富的道路上,每个人都在以自己的方式前行。然而,正如古人所云:“君子爱财,取之有道。”今天,我将为您揭示一些新颖且实用的赚钱途径,希望能为您的财富积累之路注入新的活力。 1、视频内容的创作与分享 在这个视频内容为王的时…

ROS 2边学边练(48)-- 将URDF与robot_state_publisher一起使用

前言 本篇将完成一个行走的机器人,并以tf2消息的方式实时发布机器人状态,以便我们在Rviz中同步查看。 首先,我们创建描述机器人装配的URDF模型。接下来,我们编写一个节点,用于模拟运动并发布JointState和位姿变换。然后…

暴力数据结构之二叉树(堆的相关知识)

1. 堆的基本了解 堆(heap)是计算机科学中一种特殊的数据结构,通常被视为一个完全二叉树,并且可以用数组来存储。堆的主要应用是在一组变化频繁(增删查改的频率较高)的数据集中查找最值。堆分为大根堆和小根…

Pathlib,一个不怕迷路的 Python 向导

大家好!我是爱摸鱼的小鸿,关注我,收看每期的编程干货。 一个简单的库,也许能够开启我们的智慧之门, 一个普通的方法,也许能在危急时刻挽救我们于水深火热, 一个新颖的思维方式,也许能…

vs2019 c++里用 typeid() . name () 与 typeid() . raw_name () 测试数据类型的区别

(1) 都知道,在 vs2019 里用 typeid 打印的类型不大准,会主动去掉一些修饰符, const 和引用 修饰符会被去掉。但也可以给咱们验证学到的代码知识提供一些参考。那么今天发现其还有 raw_name 成员函数,这个函…

pandas 读取Excel中有行名、列名的数据中的每个元素

读取Excel中有行名、列名的数据中的每个元素,使用pandas,Excel中的内容示例如下: 读取代码如下: def read_xlsx(file ):""" Excel矩阵数据读取 """try:df pd.read_excel(file)# 使用iterrows()方法迭代行for index, ro…

gitlab webhook触发jenkins任务

配置jenkins 安装gitlab插件 配置jenkins job 选择gitlab webhook触发 在高级中生成token 代码仓设置 新增webhook 配置webhook 测试连接 缺点,不能带gitLab事件的参数!!!

如何向全国各大新闻网站投稿?

在信息爆炸的时代,新闻媒体的投稿工作对于单位的信息宣传员来说,既是一项重要的职责,也是一项充满挑战的任务。作为一名信息宣传员,我负责着单位的对外信息宣传投稿工作,每个月都需要在各大媒体上发表文章,以展示单位的成果和风采。 然而,刚开始的投稿之路并不顺畅。我习惯性地…

聊聊数据库索引

一、索引类型介绍 索引是对数据库表中一列或多列的值进行排序的一种结构。 一个非常恰当的比喻就是书的目录页与书的正文内容之间的关系,为了方便查找书中的内容,通过对内容建立索引是对数据库表中一列或多列的值进行排序的一种结构。 索引形成目录。索…

基于Springboot的学生心理压力咨询评判(有报告)。Javaee项目,springboot项目。

演示视频: 基于Springboot的学生心理压力咨询评判(有报告)。Javaee项目,springboot项目。 项目介绍: 采用M(model)V(view)C(controller)三层体系…

Retrying,一个神奇优雅的 Python 库

大家好!我是爱摸鱼的小鸿,关注我,收看每期的编程干货。 一个简单的库,也许能够开启我们的智慧之门, 一个普通的方法,也许能在危急时刻挽救我们于水深火热, 一个新颖的思维方式,也许能…

【ARMv8/v9 系统寄存器 6 -- EL 异常等级判定寄存器 CurrentEL 使用详细将介绍】

文章目录 ARMv8/v9 EL 等级获取EL 等级获取函数实现EL 等级获取测试 ARMv8/v9 EL 等级获取 下面这个宏定义是用于ARMv8/v9架构下,通过汇编语言检查当前执行在哪个异常级别(Exception Level,EL)并据此跳转到不同的标签。 异常级别…

分布式系统的一致性与共识算法(三)

顺序一致性(Sequential Consistency) ZooKeeper 一种说法是ZooKeeper是最终一致性,因为由于多副本、以及保证大多数成功的ZAB协议,当一个客户端进程写入一个新值,另外一个客户端进程不能保证马上就能读到这个值,但是能保证最终能…

Ardupilot Rpanion iperf网络性能测试

Ardupilot Rpanion iperf网络性能测试 1. 源由2. 分析3. 安装4. 测试4.1 第一次测试4.1.1 iperf测试参数A4.1.1.1 测试链路14.1.1.2 测试链路24.1.1.3 测试链路3 4.1.2 iperf测试参数B - 测试链路34.1.2.1 测试数据4.1.2.2 数据简单分析4.1.2.3 数据深入分析4.1.2.4 模拟测试网…

AI作画算法详解:原理、应用与未来发展

随着人工智能技术的不断发展,AI作画逐渐成为了一个热门话题。AI作画,即利用人工智能算法生成绘画作品,不仅仅是技术的展示,更是艺术与科技结合的创新体现。本文将深入探讨AI作画的核心算法原理,并通过实例帮助读者更好…