【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;
    

    }

相关推荐
XY.散人1 天前
VS2022中的调试
visual studio
疑惑的杰瑞1 天前
[乱码]确保命令行窗口与主流集成开发环境(IDE)统一采用UTF-8编码,以规避乱码问题
java·c++·vscode·python·eclipse·sublime text·visual studio
这是我582 天前
C++掉血迷宫
c++·游戏·visual studio·陷阱·迷宫·生命·
△曉風殘月〆2 天前
Visual Studio 2019/2022 IntelliCode(AI辅助IntelliSense)功能介绍
ide·visual studio·intellicode
Antonio9152 天前
【模板代码的组织结构与模板的显式实例化和声明】模板代码的组织结构与模板的显式实例化和声明
开发语言·c++·算法·visual studio
这是我582 天前
C++3D迷宫
c++·3d·visual studio·z·x·迷宫·y
Neo Wordsworth3 天前
通义灵码在Visual Studio上
windows·ai·visual studio
小女孩真可爱3 天前
Visual Studio配置opencv环境
ide·visual studio
tangjunjun-owen4 天前
windows系统visual studio编译器配置opencv库
ide·人工智能·windows·opencv·visual studio
Eiceblue4 天前
通过C# 裁剪PDF页面
开发语言·pdf·c#·visual studio