使用lib60870 动态库 建立连接
2025/8/15大约 2 分钟
使用lib60870 动态库 建立连接
使用开源的C 实现的动态库 建立连接
下载:
IEC 60870-5-101/104 C Code Library IEC 104 | MZ Automation
编译动态库
- 下载最新版本源代码
- 按源代码中的README提示进行编译,在CMakeLists.txt路径下:
- 创建并进入构建目录:mkdir build; cd build
- 构建:cmake ..
构建成功:
- 编译:进入build,打开sln。菜单栏 build-》build solution
编译成功:
- dll路径在:\lib60870-2.3.2\lib60870-2.3.2\lib60870-C\build\src\Debug
使用动态库
- 在qt工程路径下添加一个路径(lib)作为dll存放路径,然后拷贝前面生成的dll到该路径下
- 再添加一个路径(includes)作为头文件存放路径,然后将以下两个头文件夹拷贝到includes下
- scr/inc/api
- scr/hal/inc
- 修改CMakeLists.txt,添加链接的库 和 使用的头文件路径
target_include_directories(appIEC60870_5_104_TestTool
PRIVATE ${PROJECT_SOURCE_DIR}/includes/inc/api
${PROJECT_SOURCE_DIR}/includes/hal/inc
)
target_link_libraries(appIEC60870_5_104_TestTool
PRIVATE Qt6::Quick
${PROJECT_SOURCE_DIR}/lib/lib60870.dll
)- 把examples/cs_104Client/simple_client.c 中的内容拷贝到main.cpp下
- 运行程序,输出以下信息:
Connecting to: localhost:2404
Failed to connect
Connect failed!
exit说明动态库调用正常
6. 在visual studio中运行server
1. 右键选中cs104_server,然后点击set as Startup Project,将其作为启动项目
2. 拷贝dll到 lib60870-C\build\examples\cs104_server\Debug下
如果没有拷贝会报错:
3. 运行项目:点击绿色启动按钮
- 启动client
输出以下信息:
Connecting to: localhost:2404
Connection established
Connected!
Received STARTDT_CON
RECVD ASDU type: M_ME_NB_1(11) elements: 1
RECVD ASDU type: M_ME_NB_1(11) elements: 1
RECVD ASDU type: M_ME_NB_1(11) elements: 1连接成功并接收到ASDU