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

目录

一、准备工作

[1. Visual Studio 2022](#1. Visual Studio 2022)

[2. Npcap 1.79](#2. Npcap 1.79)

[3. SOEM源码](#3. SOEM源码)

二、静态库配置

[1. 修改SOEM源码配置](#1. 修改SOEM源码配置)

[2. 编译SOEM源码](#2. 编译SOEM源码)

[3. 测试](#3. 测试)

三、静态库部署

[1. 新建Visual Studio工程](#1. 新建Visual Studio工程)

[2. 创建文件夹](#2. 创建文件夹)

[3. 创建主函数](#3. 创建主函数)

[4. 复制静态库](#4. 复制静态库)

[5. 复制头文件](#5. 复制头文件)

[6. 配置头文件路径](#6. 配置头文件路径)

[7. 添加头文件](#7. 添加头文件)

[8. 配置静态库路径](#8. 配置静态库路径)

[9. 添加静态库](#9. 添加静态库)

[10. 添加宏](#10. 添加宏)

四、测试

[1. 网卡测试](#1. 网卡测试)

[2. 问题及解决办法](#2. 问题及解决办法)

[3. 运行结果](#3. 运行结果)

[4. 连接从站测试](#4. 连接从站测试)


一、准备工作

1. Visual Studio 2022

下载地址:略

安装步骤:略

2. Npcap 1.79

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

安装步骤:三个全选

3. SOEM源码

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

二、静态库配置

1. 修改SOEM源码配置

① 双击打开CMakeLists.txt

② 找到最后一行

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

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

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

2. 编译SOEM源码

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

② 切换到SOEM根目录

③ 创建build文件夹 mkdir build

④ 进入build文件夹 cd build

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

⑥ 编译:nmake

3. 测试

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

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

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

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

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

三、静态库部署

1. 新建Visual Studio工程

2. 创建文件夹

创建inc、src、lib文件夹

3. 创建主函数

在src文件夹中创建main.c

4. 复制静态库

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

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

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文件夹

6. 配置头文件路径

7. 添加头文件

8. 配置静态库路径

打开属性

9. 添加静态库

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

10. 添加宏

添加宏:_CRT_SECURE_NO_WARNINGS、WIN32

四、测试

1. 网卡测试

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

2. 问题及解决办法

① 找不到头文件

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

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

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

3. 运行结果

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;

    }

相关推荐
MessiGo2 天前
Visual Studio | 性能探测器
ide·visual studio
代码雕刻家4 天前
Visual Studio 2022中打开其他项目的步骤
ide·visual studio
1YaoWei04 天前
VSIX 加密存取数据的案例
visual studio
工藤新一OL4 天前
.netCore的winform程序如何调用webapi
c#·.net·.netcore·visual studio
yy_xzz6 天前
Visual Studio 2022静态库与动态库创建及使用完全指南
c++·visual studio
三体世界7 天前
C++ STL 序列式容器之(三)-- List
java·c语言·开发语言·c++·windows·list·visual studio
初级代码游戏7 天前
管理Visual Studio配置文件(使用Azure DevOps开发,免费GIT托管)
git·azure·devops·visual studio
珊瑚里的鱼7 天前
第三讲 | C/C++内存管理完全手册
c语言·c++·笔记·程序人生·visualstudio·visual studio
成功助力英语中国话8 天前
visual studion 2022如何使用PlaySound()
visual studio·win32·playsound
千谦阙听8 天前
数据结构篇:空间复杂度和时间复杂度
数据结构·学习·算法·visual studio