类 MasterBuilder

java.lang.Object
com.darra.ethercat.sugar.MasterBuilder

public final class MasterBuilder extends Object
EtherCATMaster 流式构造器 (Builder pattern).

主线 SDK 已经有链式构造方法 (setENI / setEsiFile / SetNetwork), 但 这些方法分布在 EtherCATMaster 上, 需要先 create() 再链式 — 顺序 没那么自然. MasterBuilderbuild() 前不创建任何原生资源, 失败 不留遗物, 测试更友好.

典型用法:

 EtherCATMaster m = MasterBuilder.create()
     .network("\\Device\\NPF_{xxx}")
     .redundant("\\Device\\NPF_{yyy}")
     .esiFolder("C:/Esi")
     .eni("C:/cfg/ec.deni")
     .targetState(EcState.OP)
     .startPdoAfterOp()
     .build();
 

失败模式:

  • build()IllegalStateException, 内部不留半初始化的 master
  • 已经创建到一半的 master (例如 ENI 加载失败), 自动 close() 释放

本类不替代主线 API — 主线 API 完全保留. Builder 只是把分散的 setNetwork/setENI/setState 串成一句, 适合"声明式"代码.

从以下版本开始:
2026-05
  • 方法详细资料

    • create

      public static MasterBuilder create()
      工厂入口 — 不引用主线静态方法名, 防止 IDE 自动补全冲突.
    • network

      public MasterBuilder network(String primaryNic)
      主网卡设备路径 (\\Device\\NPF_{...} 或 Linux eth0).
    • redundant

      public MasterBuilder redundant(String secondaryNic)
      冗余备用网卡 (可选).
    • eni

      public MasterBuilder eni(String path)
      ENI / DENI 配置文件路径.
    • esiFile

      public MasterBuilder esiFile(String path)
      单个 ESI 文件路径, 可重复调用.
    • esiFolder

      public MasterBuilder esiFolder(String path)
      ESI 目录 (加载目录下所有 *.xml).
    • autoStartup

      public MasterBuilder autoStartup()
      启用启动参数自动应用.
    • targetState

      public MasterBuilder targetState(EcState state)
      目标 EtherCAT 状态. build() 内部会 setStateSequence 切到此状态. 默认不切换 (留给调用方手动控制).
    • startPdoAfterOp

      public MasterBuilder startPdoAfterOp()
      进入 OP 后自动启动 PDO 周期线程. 仅当 targetState 设为 OP 或 SAFE_OP 时生效.
    • masterNumber

      public MasterBuilder masterNumber(short index)
      指定主站编号 (默认自动分配).
    • build

      public EtherCATMaster build()
      执行构造. 内部调用主线 EtherCATMaster.build(), 失败抛 IllegalStateException, 不留半初始化资源.