C/C++
文章平均质量分 71
爱就是恒久忍耐
纸上谈来终觉浅,绝知此事要躬行
展开
-
引入正确的limits.h
引入正确的limits.h原创 2023-07-04 22:02:41 · 542 阅读 · 0 评论 -
C语言结构体的简化声明
C语言结构体的简化声明原创 2022-05-29 16:53:36 · 325 阅读 · 3 评论 -
linenoise的使用
如何使用linenoise原创 2022-05-28 12:13:27 · 1054 阅读 · 0 评论 -
GDB调试signal的处理函数
使用GDB调试signal的处理函数原创 2022-04-18 20:31:13 · 953 阅读 · 0 评论 -
Linux定时函数timerfd的使用问题以及解决办法
使用阻塞式timerfd时遇到的问题以及解决办法原创 2021-12-09 22:38:08 · 3325 阅读 · 2 评论 -
GoogleTest入门使用(基于CMake)
本文讲述如何使用GoogleTest去测试程序原创 2021-10-02 20:41:23 · 2829 阅读 · 0 评论 -
解决C++类互相包含的一种写法
解决C++类互相包含的一种写法原创 2021-09-06 22:21:52 · 262 阅读 · 0 评论 -
学习open62541 --- [54] optional成员变量的实例化
对象类型中optional成员变量在实例化时创建出来原创 2021-08-01 12:30:45 · 1016 阅读 · 6 评论 -
C++拷贝构造函数的参数类型
C++拷贝构造函数的参数类型原创 2021-07-15 23:02:04 · 1003 阅读 · 0 评论 -
C++ 临时对象的销毁及避坑
C++ 临时对象的销毁及避坑原创 2021-07-15 22:42:27 · 1294 阅读 · 4 评论 -
C++ override关键字的避坑妙用
使用override来避坑原创 2021-06-03 22:39:58 · 2544 阅读 · 2 评论 -
学习open62541 --- [52] VisualStudio配置OpenSSL
主要讲述VisualStudio里如何使用OpenSSL原创 2021-05-31 23:10:50 · 2016 阅读 · 26 评论 -
学习open62541 --- [51] 树莓派上运行Server
编译程序并在树莓派上运行OPC UA Server原创 2021-05-30 12:59:03 · 1614 阅读 · 4 评论 -
C语言malloc分配内存的方便用法
malloc分配内存的方便用法原创 2021-05-09 18:48:09 · 1075 阅读 · 0 评论 -
学习open62541 --- [50] 自定义数据类型
自定义数据类型原创 2021-05-09 13:11:01 · 2208 阅读 · 18 评论 -
C语言操作SQLite3简明教程
C语言去操作SQLite3原创 2021-05-01 11:59:05 · 9157 阅读 · 5 评论 -
学习open62541 --- [49] 区分读写的请求者
区分读写操作的请求者原创 2021-05-01 09:54:18 · 1170 阅读 · 8 评论 -
学习open62541 --- [48] 历史数据的边界问题
探索历史数据的边界原创 2021-04-23 22:28:04 · 1069 阅读 · 1 评论 -
学习open62541 --- [47] 自定义日志
如何自定义open62541的日志输出原创 2021-04-10 14:12:49 · 1166 阅读 · 3 评论 -
学习open62541 --- [46] 集成到现有工程的办法
集成OPCUA Server到现有工程原创 2021-03-26 10:57:55 · 1562 阅读 · 4 评论 -
学习open62541 --- [45] Windows下生成证书和私匙
Windows下生成证书和私匙原创 2021-03-20 19:25:59 · 1828 阅读 · 5 评论 -
学习open62541 --- [43] 有代理(使用MQTT)的发布订阅
实现open62541向MQTT服务器发送消息原创 2021-01-22 22:19:30 · 3226 阅读 · 11 评论 -
学习open62541 --- [42] 无代理(Broker-less)的发布订阅
如何运行一个无代理的发布订阅demo原创 2021-01-17 13:05:19 · 4050 阅读 · 29 评论 -
Python解析C++头文件
使用Python解析C++头文件,robotpy-cppheaderparser原创 2020-12-25 14:05:12 · 7572 阅读 · 4 评论 -
学习open62541 --- [41] 给不同用户添加指定权限
给不同用户添加指定权限。原创 2020-12-23 21:21:12 · 2000 阅读 · 5 评论 -
学习open62541 --- [40] 源码阅读设置
open62541源码阅读设置原创 2020-12-12 15:15:43 · 1570 阅读 · 0 评论 -
Linux下Segmentation Fault的定位方法
本文主要讲述Linux下运行程序时发生Segmentation Fault的定位方法。一 准备工作首先需要做点准备工作,安装gcc和gdb打开终端,然后输入以下命令开启ulimit ulimit -c unlimited # 打开ulimit ulimit -c # 如果打开成功会返回unlimitedPS:以上开启ulimit的操作只会在当前终端下有效二 示例一个简单C程序如下,#include <stdio.h>int main(void){ int *原创 2020-12-08 21:21:08 · 4530 阅读 · 0 评论 -
学习open62541 --- [39] Client批量读写
Client批量读写多个节点原创 2020-11-23 22:23:32 · 6740 阅读 · 30 评论 -
C++11 UTF8的编解码
简单的讲,编码是指把有效信息按照指定格式变成字符串或者字节流,解码是指把字符串或字节流按照指定格式转成有效信息,要保证编解码时使用相同的格式,才能得到有效信息。也可以参考这篇文章。一 C++11提供的方法C++11 提供了std::wstring_convert和std::codecvt_utf8来编解码UTF8#include <locale>#include <codecvt>std::string utf8_encode(const std::wstring&am原创 2020-11-16 23:01:00 · 5389 阅读 · 4 评论 -
学习open62541 --- [37] 与KEPServerEX进行简单通信
主要讲述如何使用open62541的Client功能来和KEPServerEX进行简单通信。原创 2020-09-22 21:22:11 · 4121 阅读 · 10 评论 -
学习open62541 --- [36] Client异步执行method
讲述Client如何异步执行Server提供的方法原创 2020-08-23 23:12:18 · 2117 阅读 · 2 评论 -
学习open62541 --- [35] Server异步执行method
本文主要讲述Server端如何异步(async)执行method原创 2020-08-16 11:58:28 · 1889 阅读 · 3 评论 -
学习open62541 --- [34] 保持连接
如何实现Client在安全通道超时前自动重新创建安全通道,然后保持与Server的连接。原创 2020-08-13 21:29:13 · 4284 阅读 · 26 评论 -
C语言实现简单进度条
本文灵感来源于这篇文章,对其进行改进并改用C语言实现,运行环境是Debian10, Ubuntu也是一样的。代码实现#include <stdio.h>#include <string.h>#include <unistd.h>// ****************************** 配置 ***************************// 最后100%时的输出形式 const char * LastStr = "[--------原创 2020-08-12 11:00:02 · 5491 阅读 · 4 评论 -
学习open62541 --- [33] 加密(使用OpenSSL)
使用openssl进行加密原创 2020-07-12 15:33:52 · 9900 阅读 · 100 评论 -
Linux下libevent的简单使用
libevent是个高效的异步事件通知库,本文主要讲述在Linux下如何简单使用该库。一 下载本文写作时使用的版本是2.1.11,下载地址是https://github.com/libevent/libevent/releases/tag/release-2.1.11-stable本人下载的是zip文件。二 编译把第一步下载的压缩文件放到linux下。先解压,然后按照github上给的教程,在源码根目录下新建build目录,并cd进入,最后执行下面的2个命令进行编译(需要事先安装cmake原创 2020-07-01 22:53:57 · 1271 阅读 · 1 评论 -
学习open62541 --- [32] 正确获取系统时间
client和server进行通信时,有时会要求获取server的系统时间,如用来查看某一事件发生的具体时间。在之前的系列文章中获取系统时间一直用的是UA_DateTime_now(),这个API获取的时间是UTC时间,即世界协调时间,而我们身处中国,其具体时间为:中国大陆、中国香港、中国澳门、中国台湾、蒙古国、新加坡、马来西亚、菲律宾、西澳大利亚州的时间与UTC的时差均为+8,也就是UTC+8。PS:这个8是指8小时下面首先让我们看下UTC时间的打印表现,以及如何获取正确的系统时间。一 现原创 2020-06-13 12:02:18 · 1767 阅读 · 2 评论 -
学习open62541 --- [31] 正确显示中文字符
本文主要讲述在win10下如何正确的显示中文字符。原创 2020-06-08 21:18:40 · 2160 阅读 · 2 评论 -
CRC32计算方法
最近项目中要使用crc32来计算checksum,先是使用python3的zilib库进行计算,算出的值作为参考(使用zlib.crc32()方法)。然后使用网上拷贝的C代码来算,结果算出的crc32值与zlib.crc32()算出的不相等,于是又从网上找了各种计算crc32的C代码,发现都不相等…所以,本人决定从zlib源码下手去进行探索,下面是整个过程。一 Python3计算crc32使用以下代码生成crc32作为标准值,import zlibbytesData = b"\x01\x02\原创 2020-05-28 21:29:52 · 9214 阅读 · 2 评论 -
学习open62541 --- [30] StatusCode便捷查看
OPC UA提供了很多服务,当使用这些服务时,一般都会有个返回值,表示使用过程中是否发生错误,这个返回值就是StatusCode,在open62541里其类型是UA_StatusCodetypedef uint32_t UA_StatusCode;从定义可以看出其实际类型是一个32位无符号整型数,每一个StatusCode都有一个特定值。下面就看下在open62541里其实如何定义和查看的。open62541中的情况在编译open62541时,会通过tools\schema\StatusCod原创 2020-05-27 20:56:04 · 2045 阅读 · 7 评论