CodeSys中调用C语言写的动态库

CodeSys中调用C语言写的动态库本文详细描述了如何在 CodeSys 环境中利用 C 语言动态库功能 包括前期准备 创建库工程 生成 m4 和 c 文件 搭建编译环境 编译动态库 so 以及如何导入和使用编译好的库 以实现第三方功能如 IO 板卡通信和图像处理等

大家好,欢迎来到IT知识分享网。

1.前言

2.前期准备

3.创建CodeSys库工程

3.1.函数名必须包含_cext

在这里插入图片描述

3.2.生成m4、c文件

4.搭建编译环境,编译出动态库*.so

4.1.将ExtensionSDK文件夹拷贝到板子的一个目录中。

在这里插入图片描述

然后我将其拷贝到板子的一个目录下:

在这里插入图片描述

4.2.创建工程目录,且将前面生成的m4、c文件拷贝到这个工程目录下

4.3.执行make

cd 到myPrj目录,然后执行

make -f ../ExtensionSDK/makefile newproject 

4.4.实现函数

4.5.执行编译

在对C文件进行实现后,便可以进行编译了。

make all 

5.将*.so文件导入到库工程中

6. 将库工程另存为编译库

在这里插入图片描述

7.安装并使用编译好的库

#include "CmpStd.h" #include "CmpErrors.h" #include "CmpItf.h" #include "FileTransferDep.h" #include <string> void CDECL CDECL_EXT myfunction_cext(myfunction_cext_struct *p) { 
    using namespace cv; memcpy(p->b, "", 7); memcpy(p->c, "", 7); std::string aStr = p->a; aStr += "Hello World and ZY"; p->MyFunction_cext.a = 17909; memcpy(p->MyFunction_cext.b, aStr.c_str(), aStr.length() + 1); p->MyFunction_cext.c = 1.23456; cv::Mat mat(480, 640, CV_8UC1); imwrite("abcd.bmp", mat); cv::Mat img = imread("1.png"); imwrite("1_saved.png", img); } 

可以看到,与预期效果一致。

在这里插入图片描述而且在我们的板子上,可以看到刚才包含进来的库文件已经被上传到板子的特定文件夹中了:
在这里插入图片描述

8.结语

有了这个接口,只要我们对OpenCV、相机驱动库等进行封装,然后提供对应的操作函数给接口,就可以实现PLC的视觉检测功能。完美。

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/135072.html

(0)
上一篇 2025-07-07 15:10
下一篇 2025-07-07 15:15

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信