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

    }

相关推荐
simple_whu2 天前
解决编译pcl时报错‘chrono_literals‘: is not a member of ‘std‘
c++·windows·visual studio
追逐时光者3 天前
2025 年全面且实用的 Visual Studio 插件推荐,开发效率提升利器!
visual studio
三体世界3 天前
Linux 管道理解
linux·c语言·开发语言·c++·git·vscode·visual studio
迷路的小灰仔4 天前
ESP32 搭建IDF+Vscode环境(详细教程)
c语言·arm开发·单片机·mcu·物联网·visual studio·iot
补三补四5 天前
蓝耘平台介绍:算力赋能AI创新的智算云平台
人工智能·嵌入式硬件·深度学习·机器学习·visual studio
yy_xzz5 天前
Visual Studio 2022 运行一个后台程序而不显示控制台窗口
ide·visual studio
vrlab1236 天前
C#+Visual Studio 2022为AutoCAD 2022开发插件并显示在Ribbon选项卡
ribbon·c#·visual studio
智者知已应修善业6 天前
2021-11-14 C++三七二十一数
c语言·c++·经验分享·笔记·算法·visual studio
妙为9 天前
visual studio 2022更改项目名称,灾难性故障(异常来自HRESULT)
ide·visual studio·更改项目名称·hresult·灾难性故障
残月只会敲键盘9 天前
Visual Studio C++引入第三方库
ide·visual studio