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           typeDefinition0   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           typeDefinitioni   j   关系 类型 BROWSE NAME      DISPLAY NAME     NODEID           typeDefinition0   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 | Closedx64\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没那么严格。


(这里是结束)

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据结构------二叉树经典习题1

博主主页: 码农派大星. 关注博主带你了解更多数据结构知识 1判断相同的树 OJ链接 这道题相对简单,运用我们常规的递归写法就能轻松写出 所以我们解题思路应该这样想: 1.如果p为空,q为空,那么就是两颗空树肯定相等 2.如果一个树为空另一棵树不为空那么…

ROS学习笔记(15)小车巡墙驾驶

0.前提 前一章我讲解了拉氏变换和PID,这一章我来讲解一下小车巡墙驾驶的理论和部分代码。 1.前情回顾 1.拉氏变换 拉普拉斯变换是要将时域问题转换成频域问题来处理。 2.PID控制器 转向角: 误差牺牲: 3.具体参看上一篇文章 2.巡墙驾驶…

游戏理解入门:Rust+Bracket开发一个小游戏

1. Game loop 使用game loop可以使得游戏运行更加流畅和顺滑,它可以: 初始化窗口、图形和其他资源;每当屏幕刷新他都会运行(通常是每秒30,60 );每次通过循环,他都会调用游戏的tick()函数。 大致的原理流程如下&…

STK中的光照计算模型

本文简要阐述STK中光照计算的模型。 在航天任务中,通常需要分析地面站、飞行器在一定时间内的光照情况,具体包括: 地面站处在光照区和阴影区的具体时间范围;考虑地形遮挡后,地面站的光照区和阴影区的变化情况&#x…

MYSQL-9.问题排查

问题排查的思路与方向 问题排查思路 分析问题:根据理论知识经验分析问题,判断问题可能出现的位置或可能引起问题的原因,将目标缩小到一定范围;排查问题:基于上一步的结果,从引发问题的“可疑性”角度出发…

低空经济:无人机竞赛详解

无人机竞赛市场近年来呈现出蓬勃发展的态势,其市场价值不仅体现在竞赛本身,还体现在推动无人机技术创新、拓展应用场景以及促进产业链发展等多个方面。 一、比赛项目介绍 无人机竞赛通常分为多个项目,包括竞速赛、技巧赛、航拍赛等。每个项目…

新手也能看懂的前端单元测试框架:Vitest

单元测试的概念及作用 1.什么是单元测试? 单元测试是测试中的一个重要环节,它针对软件中的最小可测试单元进行验证,通常是指对代码中的单个函数、方法或模块进行测试。 单元测试旨在确定特定部分代码的行为是否符合预期,通过针…

【谷粒商城】01-环境准备

1.下载和安装VirtualBox 地址:https://www.virtualbox.org/wiki/Downloads 傻瓜式安装VirtualBox 2.下载和安装Vagrant官方镜像 地址:https://app.vagrantup.com/boxes/search 傻瓜式安装 验证是否安装成功 打开CMD,输入vagrant命令,是否…

Linux的常用指令 和 基础知识穿插巩固(巩固知识必看)

目录 前言 ls ls 扩展知识 ls -l ls -a ls -al cd cd 目录名 cd .. cd ~ cd - pwd 扩展知识 路径 / cp [选项] “源文件名” “目标文件名” mv [选项] “源文件名” “目标文件名” rm 作用 用法 ./"可执行程序名" mkdir rmdir touch m…

单位个人怎样向报社的报纸投稿?

作为一名单位的信息宣传员,我肩负着每月定期在媒体上投稿发表文章的重任。然而,在投稿的道路上,我经历了不少波折和挫折。 一开始,我天真地以为只要将稿件发送到报社的投稿邮箱,就能轻松完成任务。然而,现实却远比我想象的复杂。邮箱投稿的竞争异常激烈,编辑们会在众多稿件中挑…

什么是直接内存(NIO)

直接内存不受 JVM 内存回收管理,是虚拟机的系统内存,常见于 NIO 操作时,用于数据 缓冲区,分配回收成本较高,但读写性能高,不受 JVM 内存回收管理。 举例 当上传一个较大文件(200M)…

【传知代码】VRT: 关于视频修复的模型(论文复现)

前言:随着数字媒体技术的普及,制作和传播视频内容变得日益普遍。但是,视频中由于多种因素,例如传输、存储和录制设备等,经常出现质量上的问题,如图像模糊、噪声干扰和低清晰度等。这类问题对用户的体验和观…

【Ubuntu20.04安装java-8-openjdk】

1 下载 官网下载链接: https://www.oracle.com/java/technologies/downloads/#java8 下载 最后一行 jdk-8u411-linux-x64.tar.gz,并解压: tar -zxvf jdk-8u411-linux-x64.tar.gz2 环境配置 1、打开~/.bashrc文件 sudo gedit ~/.bashrc2、…

【解决】:git clone项目报错fatal: fetch-pack: invalid index-pack output

象:之前一直使用gitee将个人学习和工作相关记录上传到个人gitee仓库,一直没出现过问题。直到有一天换电脑重新拉取代码发现出了问题,具体如下图: 原因分析: 经过查询发现主要原因是因为git clone的远程仓库的项目过大…

NVM安装及VUE创建项目的N种方式

VUE 参考官网:https://cli.vuejs.org/zh/guide/ 目录 NVM安装 1.卸载node.js 2.安装nvm ​编辑​ 3.配置 4.使用nvm安装node.js 5.nvm常用命令 创建VUE项目 1.使用vue init 创建vue2(不推荐) 2.使用vue create创建vue2和3&#xff…

Docker安装Mosquitto

在物联网项目中,我们经常用到MQTT协议,用MQTT协议做交互就需要部署一个MQTT服务,而mosquitto是一个常用的MQTT应用服务, Mosquitto是一个实现了消息推送协议MQTT v3.1的开源消息代理软件。MQTT(Message Queuing Teleme…

knife4j案例

1.导入 <dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-spring-boot-starter</artifactId> </dependency>2.在配置类中加入 knife4j 相关配置并设置静态资源映射&#xff08;否则接口文档页面无法访问&#xff…

大模型LLM 结合联网搜索增强isou

参考&#xff1a; https://github.com/yokingma/search_with_ai 在线使用网址&#xff1a; https://isou.chat/ 安装github下载&#xff0c;运行docker compose 如果一直报下面错误&#xff1a; 解决方法https://github.com/yokingma/search_with_ai/pull/7 默认打开&a…

【PG数据库】PostgreSQL 日志归档详细操作流程

1.1 日志归档的目的 pg数据库日志归档是将PostgreSQL数据库的日志文件进行归档的过程。 归档的主要目的是为了保留历史数据&#xff0c;确保数据的一致性和完整性&#xff0c;同时为数据恢复提供必要的支持。 pg数据库日志归档的目的包括&#xff1a; 1.数据恢复&#xff1…

[链表专题]力扣141, 142

1. 力扣141 : 环形链表 题 : 给你一个链表的头节点 head &#xff0c;判断链表中是否有环。 如果链表中有某个节点&#xff0c;可以通过连续跟踪 next 指针再次到达&#xff0c;则链表中存在环。 为了表示给定链表中的环&#xff0c;评测系统内部使用整数 pos 来表示链表尾…