【EtherCAT】Windows+Visual Studio配置SOEM主站——静态库配置+部署

目录

一、准备工作

1. Visual Studio 2022

2. Npcap 1.79       

3. SOEM源码

二、静态库配置

1. 修改SOEM源码配置

2. 编译SOEM源码

3. 测试

三、静态库部署

1. 新建Visual Studio工程

2. 创建文件夹

3. 创建主函数

4. 复制静态库

5. 复制头文件

6. 配置头文件路径

7. 添加头文件

8. 配置静态库路径

9. 添加静态库

10. 添加宏

四、测试

1. 网卡测试

2. 问题及解决办法

3. 运行结果

4. 连接从站测试


一、准备工作

1. Visual Studio 2022

        下载地址:略

        安装步骤:略

2. Npcap 1.79       

        下载地址:Npcap: Windows Packet Capture Library & Driver

0764c6f72328418199a3e06308146f78.png

        安装步骤:三个全选

8a895d2f353a44e89e73a5c1b11601ff.png

3. SOEM源码

        下载地址:GitHub - OpenEtherCATsociety/SOEM: Simple Open Source EtherCAT Master

 

二、静态库配置

1. 修改SOEM源码配置

f7e6e9645af049cf8ea17fb1dd88fc32.png

        ① 双击打开CMakeLists.txt

        ② 找到最后一行

9a0b5351163f4b8b8faf31b98e09c1c4.png

        ③ 注释掉原来内容,添加:add_subdirectory(test/win32/slaveinfo)

ed8f5cd9e1ec4e0db7cc145eb66c55b8.png

        ④ 进入SOEM源代码的路径:\test\linux\slaveinfo

        ⑤ 复制CMakeLists.txt到路径:\test\win32\slaveinfo

583f88cef67b4b008058a3d672f6e758.png

2. 编译SOEM源码

        ① 开始菜单栏打开命令行。(二选一,如果后续测试遇到问题:无法解析外部符号,“x86”与“x64”冲突,换另外一个重新编译。这里使用x64编译,x86相同)

79bc6a897a7a46e982645163c2381de9.png

        ② 切换到SOEM根目录

d3b37adffec1475ea36d294a8351b24f.png

        ③ 创建build文件夹  mkdir build

0898792f092e4ccd9e64ae7b81a5dd91.png

        ④ 进入build文件夹  cd build

4dcc646d21f24a6f9f66ed78947495c4.png

        ⑤ 编译:cmake .. -G "NMake Makefiles"

54d36068f4c24f62af6d593ca9720ad2.png

        ⑥ 编译:nmake

989bcbcc212d457e97e2cf3689d99154.png

3. 测试

        ① 编译完成后,build文件夹下会多出一堆文件

ce6b30080451460492d6cc587ca839aa.png

        ② 查看路径:\build\test\win32\slaveinfo 中出现slaveinfo.exe,则编译成功

8b90ace2f4314e69adb1fdda5f3f5b8e.png

        ③ 进入路径:\build\test\win32\slaveinfo    cd ./test/win32/slaveinfo

456629a0c78e46d980de9816638c948f.png

        ④ 运行测试  slaveinfo.exe  (弹出框点是)

7c128cd8c0424ec8859ebc2794fe78bf.png

        ⑤ 连接从站测试  slaveinfo.exe \Device\NPF_{xxxx}  (弹出框点是)

fe131b2767354d42bb7cbca17ab15854.png

 

三、静态库部署

1. 新建Visual Studio工程

9861b4c7463a4962ba70c7553dc216a4.png

668271170c574d239dedd02973dd7d89.png

c482b8ac8a024e77b21fb339a8b58663.png

2. 创建文件夹

        创建inc、src、lib文件夹

975104429dd24c31aa98890221ef556d.png

3. 创建主函数

        在src文件夹中创建main.c

6329b13b8992422088c5da048da7df02.png

939a278fe92642008a511ea47bd6eae5.png

2726a81e8d394bea8b473f79ca13c98c.png

3c943a4675644da2856cadcee3577ead.png

4. 复制静态库

        ① 将SOEM源码路径:SOEM-master_x64\build中的soem.lib复制到第2步中创建的lib文件夹

        ② 将SOEM源码路径:SOEM-master_x64\oshw\win32\wpcap\Lib中的Packet.lib、wpcap.lib复制到第2步中创建的lib文件夹

bff6f958ca2b463ab675387560fe98bb.png

5. 复制头文件

  • 将SOEM源码路径:SOEM-master_x64\osal中的osal.h复制到第2步中创建的inc文件夹
  • 将SOEM源码路径:SOEM-master_x64\osal\win32中的inttypes.h、osal_defs.h、osal_win32.h、stdint.h复制到第2步中创建的inc文件夹
  • 将SOEM源码路径:SOEM-master_x64\osal\win32中的inttypes.h、osal_defs.h、osal_win32.h、stdint.h复制到第2步中创建的inc文件夹
  • 将SOEM源码路径:SOEM-master_x64\oshw\win32中的nicdrv.h、oshw.h复制到第2步中创建的inc文件夹
  • 将SOEM源码路径:SOEM-master_x64\oshw\win32\wpcap\Include中的bittypes.h、ip6_misc.h、Packet32.h、pcap-bpf.h、pcap-namedb.h、pcap-stdinc.h、remote-ext.h、Win32-Extensions.h复制到第2步中创建的inc文件夹(不要复制pcap.h)
  • 将SOEM源码路径:SOEM-master_x64\oshw\win32\wpcap\Include\pcap中的bluetooth.h、bpf.h、namedb.h、pcap.h、sll.h、usb.h、vlan.h复制到第2步中创建的inc文件夹
  • 将SOEM源码路径:SOEM-master_x64\soem中的ethercat.h、ethercatbase.h、ethercatcoe.h、ethercatconfig.h、ethercatconfiglist.h、ethercatdc.h、ethercateoe.h、ethercatfoe.h、ethercatmain.h、ethercatprint.h、ethercatsoe.h、ethercattype.h复制到第2步中创建的inc文件夹

72cff87f7aec40bb99ad4e3f6a37de99.png

6. 配置头文件路径

125b0b7798574d06a41e6831d761170e.png

bed8a67b6a1b45c5a117e79f4c4452a3.png

eff633958456407795b89fd328bf7300.png

f59ecab04ad84f148c8f015b71e436dd.png

7100f88278ea47418c1459414b3248b4.png

7. 添加头文件

99c3a2db13764f4ebbd617ed266aaa48.png

8f1c3fb02e75425d95314732b2054628.png

ac89a8d3c1c843b898302ad274406a4c.png

743e0190ea5d49d795806d6be9ce5fe2.png

65130316ba7444619a950b86920c35ac.png

8. 配置静态库路径

        打开属性

3174c088e8b84e1a8e437125fa7a9b90.png

047cd82848c24fb0b5aee840ee76862d.png

660ad6c1d9104e0e96238a58a7fdd774.png

6bea57de926e4630954f26e6ec265654.png

9. 添加静态库

        添加静态库 soem.lib、Packet.lib、wpcap.lib、winmm.lib、ws2_32.lib

19280eea5f6b4815aea3b9fd5e04831e.png

db6317a3280c43eeba4a5942c7f6f40f.png

10. 添加宏

       添加宏:_CRT_SECURE_NO_WARNINGS、WIN32

55c5043de02d4cd08c62692342efd854.png

dc96273f216f44ff8ec65435ac82ba23.png

 

四、测试

1. 网卡测试

  • 打开SOEM源文件夹路径:SOEM-master\test\win32\slaveinfo
  • 打开slaveinfo.c,复制所有程序到主函数main.c中
  • 运行代码

f98875c0b0ac4848b68f7381ec516c50.png

2. 问题及解决办法

        ① 找不到头文件

2016aed6c4cd43c496e46754c35d38da.png

        解决办法:双击跳转到下图,修改为#include <bpf.h>

c13ebb3da2f94cefbbf16656f7d92310.png

6d2a2ed4745d4025adc0c95762476f07.png

        ② 无法解析的外部符号,“x86”与“x64冲突”

f842180c71094c90a9f1e9b49f2d5b8c.png

        解决办法:将SOEM源码路径:SOEM-master_x64\oshw\win32\wpcap\Lib\x64中的Packet.lib、wpcap.lib复制到lib文件夹

3. 运行结果

5aa146b3b42d4c068b91a64acc892d27.png

4. 连接从站测试

  • 找到自己的网卡,上一步成功运行可以查看自己的网卡名称为:\Device\NPF_{xxx}
  • 复制网卡名称
  • 修改主函数代码:(注:网卡名称中“\”,要用“\\”表示)
char ifbuf[1024] = "\\Device\\NPF_(xxxxxxxxxxx)";int main(int argc, char* argv[])
{ec_adaptert* adapter = NULL;printf("S0EM (Simple Open EtherCAT Master)\nSlaveinfo\n");/* start slaveinfo */slaveinfo(ifbuf);printf("End program\n");return 0;
}

890165a085bf4bb185deee7c8f620781.png

f92c4c5776d14363a805c5a29fafd614.png

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/390924.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

链接、装载和库——1 简介

前言 关于个人的读书笔记 第一章 温故而知新 1.1 从hello&#xff0c;world说起 ​计算机在执行hello&#xff0c;world的时候发生了什么&#xff1f; 1.2 万变不离其宗 ​在计算机多如牛毛的硬件设备中。有三个部件最为关键&#xff0c;它们分别是 CPU、内存和 I/O 控制芯…

一次多波束和浅地层处理的经历—信标机出问题?

最近处理多波束和浅地层时&#xff0c;一个从来没有过的问题出现了。 多波束数据(.pds)是由PDS2000采集的&#xff0c;使用设备型号为T50P。浅地层数据(.raw)是有SESWIN采集的&#xff0c;使用设备型号为SES2000 Standard。 1、多波束处理 多波束数据采用CARIS11.3处理的。船…

开源LivePortrait,快速实现表情包自定义

最近可灵AI很火&#xff0c;看到网上生成的效果也很赞啊&#xff0c;之前发现快手可灵开源了LivePortrait&#xff0c;今天去玩了一下&#xff0c;很有意思。 比如下图官方展示效果&#xff1a; 这些图片开始自带表情了&#xff0c;主要就是通过LivePortrait来实现。 LivePor…

[E二叉树] lc572. 另一棵树的子树(dfs+前中序判断+树哈希+树上KMP+好题)

文章目录 1. 题目来源2. 题目解析 1. 题目来源 链接&#xff1a;572. 另一棵树的子树 2. 题目解析 看到这个题目就感觉不简单&#xff0c;因为写了写 dfs 版本的&#xff0c;发现好像不太会… 还是简单粗暴一点&#xff0c;直接搞一个 前序中序&#xff0c;进行判断即可。我…

【PyTorch】神经风格迁移项目

神经风格迁移中&#xff0c;取一个内容图像和一个风格图像&#xff0c;综合内容图像的内容和风格图像的艺术风格生成新的图像。 目录 准备数据 处理数据 神经风格迁移模型 加载预训练模型 定义损失函数 定义优化器 运行模型 准备数据 创建data文件夹&#xff0c;放入…

数据恢复软件:电脑丢失文件,及时使用数据恢复软件恢复!

数据恢复软件什么时候会用到&#xff1f; 答&#xff1a;如果真的不小心删除文件&#xff0c;清空回收站&#xff0c;电脑重装系统等情况发生&#xff0c;我们要懂的及时停止使用电子设备&#xff0c;使用可靠的数据恢复软件&#xff0c;帮助我们恢复这些电子设备的数据&#…

二进制搭建 Kubernetes v1.20(上)

目录 一、操作系统初始化配置 二、升级Liunx内核 三、部署docker引擎 四、部署etcd集群 五、部署Master组件 六、部署Worker Node组件 hostnameip需要部署k8s集群master0120.0.0.100kube-apiserver kube-controller-manager kube-scheduler etcdk8s集群master0220.0.0.1…

CookieMaker工作室合作开发C++项目十一:拟态病毒

&#xff08;注&#xff1a;本文章使用了“无标题技术”&#xff09; 一天&#xff0c;我和几个同事&#xff0c;平台出了点BUG&#xff0c;居然给我刷出了千年杀&#xff0c;同事看得瑕疵欲裂&#xff0c;发誓要将我挫骨扬灰—— &#xff08;游戏入口&#xff1a;和平精英31.…

【数据脱敏】数据交换平台数据脱敏建设方案

1 概述 1.1 数据脱敏定义 1.2 数据脱敏原则 1.2.1基本原则 1.2.2技术原则 1.2.3管理原则 1.3 数据脱敏常用方法 3.1.1泛化技术 3.1.2抑制技术 3.1.3扰乱技术 3.1.4有损技术 1.4 数据脱敏全生命周期 2 制定数据脱敏规程 3 发现敏感数据 4 定义脱敏规则 5 执…

[Unity] ShaderGraph实现DeBuff污染 溶解叠加效果

本篇是在之前的基础上&#xff0c;继续做的功能衍生。 [Unity] ShaderGraph实现Sprite消散及受击变色 完整连连看如下所示&#xff1a;

TypeError: ‘float’ object is not iterable 深度解析

TypeError: ‘float’ object is not iterable 深度解析与实战指南 在Python编程中&#xff0c;TypeError: float object is not iterable是一个常见的错误&#xff0c;通常发生在尝试对浮点数&#xff08;float&#xff09;进行迭代操作时。这个错误表明代码中存在类型使用不…

C基础项目(学生成绩管理系统)

目录 一、项目要求 二、完整代码实例 三、分文件编写代码实例 一、项目要求 1.系统运行&#xff0c;打开如下界面。列出系统帮助菜单&#xff08;即命令菜单&#xff09;&#xff0c;提示输入命令 2.开始时还没有录入成绩&#xff0c;所以输入命令 L 也无法列出成绩。应提…

嵌入式Linux系统中pinictrl框架基本实现

1. 回顾Pinctrl的三大作用 记住pinctrl的三大作用,有助于理解所涉及的数据结构: * 引脚枚举与命名(Enumerating and naming) * 单个引脚 * 各组引脚 * 引脚复用(Multiplexing):比如用作GPIO、I2C或其他功能 * 引脚配置(Configuration):比如上拉、下拉、open drain、驱…

从零入门 AI for Science(AI+药物) 笔记 #Datawhale AI 夏令营

&#x1f496;使用平台 我的Notebook 魔搭社区 https://modelscope.cn/my/mynotebook/preset . 魔搭高峰期打不开Task3又换回飞桨了 吧torch 架构换成了 飞桨的paddle 飞桨AI Studio星河社区-人工智能学习与实训社区 https://aistudio.baidu.com/projectdetail/8191835?cont…

Python数据分析案例58——热门游戏数据分析及其可视化

案例背景 有哪个男生不喜欢玩游戏呢&#xff1f;就算上了班儿也要研究一下游戏以及热门的游戏。正好这里有个热门的游戏数据集&#xff0c;全球热门游戏数据集来做一下一些可视化的分析。 数据介绍 该文件包含一个数据集&#xff0c;详细说明了多个平台上的各种流行游戏。每个…

基于ThinkPHP开发的校园跑腿社区小程序系统源码,包含前后端代码

基于ThinkPHP开发的校园跑腿社区小程序系统源码&#xff0c;包含前后端代码 最新独立版校园跑腿校园社区小程序系统源码 | 附教程 测试环境&#xff1a;NginxPHP7.2MySQL5.6 多校版本&#xff0c;多模块&#xff0c;适合跑腿&#xff0c;外卖&#xff0c;表白&#xff0c;二…

Java中的5种线程池类型

Java中的5种线程池类型 1. CachedThreadPool &#xff08;有缓冲的线程池&#xff09;2. FixedThreadPool &#xff08;固定大小的线程池&#xff09;3. ScheduledThreadPool&#xff08;计划线程池&#xff09;4. SingleThreadExecutor &#xff08;单线程线程池&#xff09;…

使用 Streamlit 和 Python 构建 Web 应用程序

一.介绍 在本文中&#xff0c;我们将探讨如何使用 Streamlit 构建一个简单的 Web 应用程序。Streamlit 是一个功能强大的 Python 库&#xff0c;允许开发人员快速轻松地创建交互式 Web 应用程序。Streamlit 旨在让 Python 开发人员尽可能轻松地创建 Web 应用程序。以下是一些主…

萱仔大模型学习记录5-langchain实战

前面我的bertlora微调已经跑出了不错的结果&#xff0c;我也学会了如何在bert上使用Lora进行微调&#xff0c;我后续会补充一个医疗意图识别的项目于这个系列&#xff0c;现在这个医疗意图识别代码还暂时不准备公开。我就继续按照我的计划学习一番LangChain。 LangChain是一个用…

【软件测试】--接口测试

1. 接口用例设计 接口测试的测试点 功能测试 单接口功能&#xff1a; 手工测试中的单个业务模块&#xff0c;一般对应一个接口 登陆业务 --> 登陆接口加入购物车业务 --> 加入购物车接口订单业务 --> 订单接口支付业务 --> 支付接口 借助工具、代码。绕开前端界面…