OPC UA Java 開發筆記(三):open62541建立基礎服務器

前兩天一直在搞open62541,因爲milo庫的server sdk沒有辦法根據xml生成結點文件,於是準備用open62541來搭建服務器,milo結合Spring Boot來構件客戶端。

網絡上大多是建立一個open62541.h的頭文件,還有就是open62541.c的執行文件,但是新版好像並不是這樣的。
然後很多教程都是講的linux,但是初學者用linux的還是比較少,所我寫了這一篇幫助大家配置。

但是open62541的構件相當的麻煩,我試了一下午都沒搞明白,今天上午算是終於有點懂了。接下來,我一步一步來講。

爲什麼用open62541?

  1. 和商業庫一樣,可以根據uamodeler生成的xml文件直接生成相應的代碼,步驟簡單。
  2. 有完備的tutorial,適合新手,一步一步上手。
    3.國內有許多關於open62541的博客可供參考

瞭解了理由,我們就需要來實操,首先是最難的一步,也就是安裝

1.首先是下載

在這裏插入圖片描述
我們進入open62541的github官網open62541,選擇release版本。
這裏我用的是win64的版本。

下好解壓完成後得到如下文件,這個myserver.c是一會兒要建立的文件
在這裏插入圖片描述

2.建立工程

在VS2019中新建一個C++的 空工程
在這裏插入圖片描述
打開工程,並打開工程所在的文件夾 E:\Code_Library\TeachingOPC\TeachingOPC,注意是sln裏面的那個文件夾。複製我們下載的release文件夾中的這幾個文件到工程文件夾中。
在這裏插入圖片描述
位置如下
在這裏插入圖片描述
在這裏插入圖片描述
一個是open62541的x64庫文件,一個是open62541的頭文件
在VS中打開工程,然後對所有文件選擇 包括在項目中
在這裏插入圖片描述
這是包括完後
在這裏插入圖片描述
然後最玄學的地方來了,我到現在還是沒搞明白爲什麼的東西。這個時候我們需要VS2015,對又要打開2015
在這裏插入圖片描述
然後在附加包含目錄裏面加上這一句,$(ProjectDir),然後就可以了。

關於這點我也有疑問,這個操作我再VS2019上做就不行,然後在2015上做就可以,我猜測可能是因爲原來的文件是用的2015編譯的,但是這樣操作後2019上面也可以使用,就很奇怪。

接下來我們新建一個c或者cpp文件,輸入以下代碼,這個是源碼:

#include <open62541/plugin/log_stdout.h>
#include <open62541/server.h>
#include <open62541/server_config_default.h>
#include <signal.h>
#include <stdlib.h>

static volatile UA_Boolean running = true;

static void stopHandler(int sig) {
	UA_LOG_INFO(UA_Log_Stdout, UA_LOGCATEGORY_USERLAND, "received ctrl-c");
	running = false; 
}
int main(void) {
	signal(SIGINT, stopHandler);
	signal(SIGTERM, stopHandler);
	UA_Server *server = UA_Server_new();
	UA_ServerConfig_setDefault(UA_Server_getConfig(server));
	UA_StatusCode retval = UA_Server_run(server, &running);
	UA_Server_delete(server);
	return retval == UA_STATUSCODE_GOOD ? EXIT_SUCCESS : EXIT_FAILURE;
}

運行成功
在這裏插入圖片描述

PS:

  1. 如果Console裏面出現異常報錯的話,可能是端口被佔用了,參見解決端口占用
  2. 如果提示少了個dll文件的話,去網上搜這個文件,有教程怎麼下,具體什麼名字我忘了,很好解決的問題

這個就是windows端,建立opc server的方法

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章