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

    }

相关推荐
躺不平的理查德11 小时前
数据结构-链表【chapter1】【c语言版】
c语言·开发语言·数据结构·链表·visual studio
weixin_5375904515 小时前
《C++ Primer Plus》中文版第二章习题
开发语言·c++·visual studio
时光追逐者2 天前
Visual Studio 2022:一个功能全面且强大的IDE
ide·c#·.net·.netcore·visual studio
Ru1yi3 天前
【VS+QT】联合开发踩坑记录
开发语言·c++·ide·qt·visual studio
Hellc0073 天前
快速入门:Visual Studio 中的 Docker
docker·eureka·visual studio
yunteng5213 天前
VisualStudio远程编译调试linux_c++程序(二)
linux·c++·ssh·gdb·visual studio·remote
羊小猪~~5 天前
数据结构C语言描述1(图文结合)--顺序表讲解,实现,表达式求值应用,考研可看
java·c语言·数据结构·c++·链表·visual studio code·visual studio
诗和远方ya5 天前
c# 值类型
开发语言·c#·软件工程·visual studio
羊小猪~~5 天前
C/C++语言基础--C++模板与元编程系列三(变量模板、constexpr、萃取等…………)
java·c语言·开发语言·c++·visual studio code·visual studio
Eiceblue5 天前
用Python将PDF表格提取到文本、CSV和Excel文件中
开发语言·python·pdf·excel·visual studio