原创 Linux下libevent的簡單使用

libevent是個高效的異步事件通知庫,本文主要講述在Linux下如何編譯及簡單使用該庫。 一 下載 本文寫作時使用的版本是2.1.11,下載地址是https://github.com/libevent/libevent/re

原创 學習open62541 --- [15] 使用建模工具UaModeler

UaModeler是一個OPC UA信息模型的建模工具,和UaExpert同出一個網站,可以去其網站下載(需要註冊一個賬號),也可以點擊這裏進行下載(本人下載後傳到百度雲上)。注意,這是個商業軟件,免費使用時可創建的Node數量有

原创 學習open62541 --- [16] 修改默認端口

這篇比較簡單。 一 問題 我們在使用open62541時,server啓動時默認端口都是4840,下面是典型的server啓動代碼 int main(void) { UA_Server *server = UA_Ser

原创 Linux下定時函數timerfd_xxx()的使用

Linux系統提供了timerfd系列的定時函數,其具體函數名如下, #include <sys/timerfd.h> int timerfd_create(int clockid, int flags); int timer

原创 學習open62541 --- [19] 使用Visual Studio編譯及使用open62541

本文主要講述在Windows下如何使用Visual Studio來編譯open62541,以及基於open62541去開發OPCUA程序。 一 Visual Studio版本選擇 本人使用的是VS2015,之前使用的是VS201

原创 學習open62541 --- [24] 定時執行任務

open62541提供定時執行任務功能,這個功能很實用,在前面的文章中,有時我們想定時的去修改一些變量節點的值,都是開一個線程去做的,相對來說有點小麻煩。使用open62541自帶的定時器就會簡單很多。 下面來看下如何使用open

原创 學習open62541 --- [14] 路徑搜索

本文主要講述open62541裏的路徑搜索,這功能具體是幹啥的呢?用過UaExpert的都看過如下這個界面,這是OPC UA Server的地址空間 可以看出OPC UA Server的地址空間是用層級目錄組織的,英文叫hier

原创 學習open62541 --- [21] 使用用戶名和密碼登錄

在之前的系列文章中,OPC UA Client和OPC UA Server之間的連接都是使用的匿名,並沒有使用用戶名和密碼,本文主要講述如何關閉匿名登錄,以及如何使用用戶名和密碼去連接Server。 一 默認行爲 首先看下OPC

原创 使用CMake交叉編譯Arm Linux程序

我們平常使用CMake時,主要是在x86或x86_64平臺上,其實CMake在2.6版本後就已經支持交叉編譯了,下面就來看下如何使用CMake進行Arm Linux程序的交叉編譯。 一 建立工程 按照如下結構體建立一個簡單工程

原创 學習open62541 --- [25] 使用建模工具SiOME

之前寫了一篇文章講述如何使用UaModeler,後來經一個讀者朋友提醒,才發現它是商業軟件,不交錢只能創建有限數量的節點… 後來本人去查找了一下相關的免費軟件,找到2款:一個是freeOPCUA下的opcua-modeler,網址

原创 Linux下計時函數clock_gettime()的時鐘選擇

Linux下計時函數有很多種,精度比較高的是clock_gettime(),其函數原型如下, #include <time.h> int clock_gettime(clockid_t clk_id, struct timespe

原创 學習open62541 --- [18] Server與Server間交互

在之前的文章中,講述的都是一個client和一個server,組合成一個C/S架構,但是在實際工程中,可能會出現多個OPC UA Server,如下圖,展示的是OPC UA在IIOT中的應用, 可以看出有的Server既充當Se

原创 通過虛函數表去理解C++多態

多態是C++的一個基本概念,簡單來說就是程序運行時使用基類指針或引用去調用派生類的方法,被調用的方法必須是基類裏定義過的虛函數。 本文從虛函數表去理解C++的多態。 一 類的虛指針vptr (virtual pointer) 只

原创 threejs簡單樣例

本人讀研時使用過一段時間threejs,畢業後就沒用過這個東西了,也沒有從事相關的工作,這裏重新拾起,以回憶當年的讀研時光。 運行環境 OS:win10 threejs版本:r112 瀏覽器:Chrome v80.0.3987

原创 學習open62541 --- [32] 正確獲取系統時間

client和server進行通信時,有時會要求獲取server的系統時間,如用來查看某一事件發生的具體時間。 在之前的系列文章中獲取系統時間一直用的是UA_DateTime_now(),這個API獲取的時間是UTC時間,即世界協