类 EsiManager

java.lang.Object
com.darra.ethercat.utils.EsiManager

public final class EsiManager extends Object
ESI 管理器 (静态门面) 对齐 C# EsiManager / DLL EcEsi_* 系列接口: 注: Java 端 ESI 解析使用本地 javax.xml.parsers (与 C# managed XML 一致), 调用 DLL EcEsi_LoadFile FFI 是可选的 (用于触发 DLL 缓存登记). 当前 DarraCore.java 已暴露 EcEsi_LoadFile / EcEsi_LoadDirectory / EcEsi_BindToSlave / EcEsi_ApplyAllSlaves / EcEsi_GetLoadedCount, 因此双轨保留: managed 缓存 + DLL 缓存.
  • 方法详细资料

    • defaultPath

      public static String defaultPath()
      默认 ESI 目录: <进程当前目录>/ESI
      返回:
      默认路径
    • addFile

      public static int addFile(String filePath)
      加载单个 ESI 文件 (managed 端 + DLL 端双缓存)
      参数:
      filePath - ESI XML 路径
      返回:
      该文件包含的 Device 数 (managed 端解析结果)
    • loadPath

      public static int loadPath(String dirPath)
      加载指定目录下所有 .xml / .ESI 文件
      参数:
      dirPath - 目录路径
      返回:
      累计加载的 Device 数
    • matchRevision

      public static boolean matchRevision(long actual, long expected, int strategy)
      ESI 版本号匹配 (对齐 C# ESI.MatchRevision)
      参数:
      actual - 实际版本
      expected - 期望版本 (ESI RevisionNo)
      strategy - 策略: 0=Eq, 1=EqOrG, 2=LwEq, 3=HwEq, 4=LwEqOrG, 5=HwEqOrG, -1=None
    • bindToSlave

      public static int bindToSlave(EtherCATMaster master, int slaveIndex, String filePath)
      给单个从站绑定 ESI 文件 (对齐 DLL EcEsi_BindToSlave)
      参数:
      master - 主站实例
      slaveIndex - 从站索引 (1-based)
      filePath - ESI 文件路径
      返回:
      >0 = 绑定成功的 Device 数, 0 = 失败
    • applyAllSlaves

      public static int applyAllSlaves(EtherCATMaster master)
      自动给主站下所有从站匹配 ESI 并绑定 (对齐 DLL EcEsi_ApplyAllSlaves)
      参数:
      master - 主站实例
      返回:
      成功匹配的从站数
    • getLoadedCount

      public static int getLoadedCount()
      已加载文件数 (优先采用 DLL 端报告值, 不可用时回退 managed 缓存)
    • getFiles

      public static Map<String,List<ESI.DeviceDescription>> getFiles()
      获取已加载的所有 ESI 文件 (managed 缓存视图)
    • clear

      public static void clear()
      清空 managed + DLL 缓存