类 EtherCATMaster

java.lang.Object
com.darra.ethercat.master.EtherCATMaster
所有已实现的接口:
AutoCloseable, Iterable<Slave>

public class EtherCATMaster extends Object implements AutoCloseable, Iterable<Slave>
EtherCAT 主站 管理 EtherCAT 网络的生命周期: 初始化、状态转换、PDO 控制、资源释放

属性风格: PascalCase 方法名 (匹配 C# 命名), 不使用 get/set 前缀

不变值使用 public final 字段, 动态值使用无前缀方法

支持 try-with-resources 自动释放:

 try (EtherCATMaster master = EtherCATMaster.create()) {
     master.setNetwork("\\Device\\NPF_{...}", "");
     master.setStateSequence(EcState.OP, 10000);
     master.start();
     // ... PDO 操作 ...
 }
 
  • 字段详细资料

    • MasterIndex

      public final short MasterIndex
      主站编号 (构造后不变)
  • 方法详细资料

    • setInitProgressListener

      public void setInitProgressListener(EtherCATMaster.InitProgressListener listener)
      设置初始化进度监听 (对齐 C# OnInitProgress 事件)。
    • create

      public static EtherCATMaster create()
      创建并初始化主站 (自动分配编号)
    • create

      public static EtherCATMaster create(short masterIndex)
      创建并初始化指定编号的主站
    • createFromJson

      public static EtherCATMaster createFromJson(String jsonConfig)
      一步初始化: JSON 配置 -> 创建主站
    • createFromJsonFile

      public static EtherCATMaster createFromJsonFile(String jsonFilePath)
      一步初始化: 从 JSON 文件
    • MasterNumber

      public short MasterNumber()
      主站编号 (C# MasterNumber 对应)
    • State

      public EcState State()
      获取主站 EtherCAT 状态 (C# State 对应)
    • IsDisposed

      public boolean IsDisposed()
      获取是否已释放 (对齐 C# IsDisposed)
    • DCtime

      public long DCtime()
      DC 时间戳 (纳秒, 对齐 C# DCtime)
    • getMasterDCTime

      public long getMasterDCTime()
      主站最近一次 PDO 周期取回的 64-bit DC 系统时间 (纳秒, ETG 2000-01-01 纪元).
      Latest 64-bit DC system time (ns, ETG 2000-01-01 epoch) read via FRMW.
      返回:
      DC 时间 (纳秒) / DC time in nanoseconds; 0 表示 DC 未激活.
    • getReferenceClockSlaveIndex

      public int getReferenceClockSlaveIndex()
      当前参考时钟从站索引 (1-based).
      Reference-clock slave index (1-based). 0 = no DC-capable slave on bus.
    • ErrorCnt

      public int ErrorCnt()
      错误计数 (对齐 C# ErrorCnt)
    • ErrorCode

      public EtherCATTypes.EcALState ErrorCode()
      错误码 (AL Status Code, 对齐 C# ErrorCode)
    • WKC

      public short WKC()
      工作计数器 (对齐 C# WKC)
    • HasDC

      public boolean HasDC()
      是否支持 DC (对齐 C# HasDC, 读取 slave[0])
    • Obits

      public short Obits()
      输出位数 (对齐 C# Obits, 读取 slave[0] 汇总)
    • Obytes

      public int Obytes()
      输出字节数 (对齐 C# Obytes, 读取 slave[0] 汇总)
    • Ibits

      public short Ibits()
      输入位数 (对齐 C# Ibits, 读取 slave[0] 汇总)
    • Ibytes

      public int Ibytes()
      输入字节数 (对齐 C# Ibytes, 读取 slave[0] 汇总)
    • LinkState

      public EtherCATTypes.EcLinkState LinkState()
      链路状态枚举值 (对齐 C# LinkState)
    • Divider

      public byte Divider(byte group)
      获取组循环分频器 (对齐 C# SlaveGroupList.Divider)
    • Divider

      public void Divider(byte group, byte value)
      设置组循环分频器
    • GetSlaves

      public List<Slave> GetSlaves()
      获取从站列表 (可迭代, 对齐 C# GetSlaves)
    • iterator

      public Iterator<Slave> iterator()
      支持 for-each 迭代 (对齐 C# IEnumerable)
      指定者:
      iterator 在接口中 Iterable<Slave>
    • ActiveGroupCount

      public byte ActiveGroupCount()
      活跃组数量 (扫描从站集合计算, 对齐 C# ActiveGroupCount)
    • setStateChangedListener

      public void setStateChangedListener(EtherCATMaster.StateChangedListener listener)
      设置状态变化监听器 (对齐 C# StateChanged 事件)
    • EmergencyCleanup

      public static void EmergencyCleanup()
      紧急释放所有主站资源 (对齐 C# EmergencyCleanup) 崩溃/进程退出时使用, 直接关闭网卡句柄
    • IsStarted

      public boolean IsStarted()
      是否已启动 PDO
    • SlaveCount

      public int SlaveCount()
      获取从站数量
    • Slaves

      public List<Slave> Slaves()
      获取所有从站列表 (不可修改)
    • Config

      public MasterConfig Config()
      获取主站配置
    • Diagnostics

      public MasterDiagnosticsInfo Diagnostics()
      获取主站诊断信息
    • Events

      public MasterEvents Events()
      获取主站事件集合
    • AcknowledgeSlaveReplacement

      public boolean AcknowledgeSlaveReplacement(int slaveNum)
      用户确认从站替换 (v2 热插拔自修复)

      调用场景: 订阅 MasterEvents.addSlaveIdentityMismatchListener(com.darra.ethercat.master.MasterEvents.SlaveIdentityMismatchListener) 接收到身份不符报警后, 操作员检查/更换设备完毕, 调用本方法触发 ident FSM 重新探测。

      • 若身份已纠正 (换回正确设备 / 同型号升级 Revision) -> 自动恢复并触发 SlaveOnline
      • 若身份仍不匹配 -> 再次触发 SlaveIdentityMismatch, 回到 IDENT_REJECTED

      注意: 在收到 SlaveIdentityMismatch 事件之前调用无效 (返回 false)。

      参数:
      slaveNum - 从站编号 (1-based, 与配置中一致)
      返回:
      true=确认已接受并复位 FSM; false=参数无效或从站当前不在 IDENT_REJECTED/FAILED 状态
    • MasterOD

      public MasterObjectDictionary MasterOD()
      获取主站对象字典
    • MailboxGateway

      public MailboxGatewayService MailboxGateway()
      获取邮箱网关服务
    • SlaveTopology

      public SlaveTopology SlaveTopology()
      获取从站拓扑访问器
    • Logs

      public LogManager.LogView Logs()
      获取日志视图
    • LinkStatus

      public EtherCATTypes.EcLinkState LinkStatus()
      获取链路状态 (LinkState 别名)
    • ExpectedWKC

      public short ExpectedWKC()
      获取期望的工作计数器
    • ExpectedWKC

      public void ExpectedWKC(short expectedWkc)
      设置期望的工作计数器
    • PrimaryNicName

      public String PrimaryNicName()
      获取主网卡名称
    • RedundantNicName

      public String RedundantNicName()
      获取冗余网卡名称
    • SetNetwork

      public EtherCATMaster SetNetwork(String primary, String secondary)
      设置网络适配器 (C# SetNetwork 对应)
      参数:
      primary - 主网卡名称
      secondary - 冗余网卡名称, 空串或 null 表示无冗余
      返回:
      当前实例, 支持链式调用
    • SetNetwork

      public EtherCATMaster SetNetwork(String primary)
      设置网络适配器 (无冗余, C# SetNetwork 对应)
    • setNetwork

      public int setNetwork(String adapter, String redundantAdapter)
      设置网络适配器
    • setNetwork

      public int setNetwork(String adapter)
      设置网络适配器 (无冗余)
    • SetState

      public void SetState(EcState targetState)
      设置主站状态 (C# SetState 对应)
      参数:
      targetState - 目标状态
    • Start

      public void Start()
      启动 PDO 循环 (C# Start 对应)
    • Stop

      public void Stop()
      停止 PDO 循环 (C# Stop 对应)
    • setState

      public boolean setState(EcState state)
      切换 EtherCAT 主站状态. 唯一公开状态机 API.

      内部自动:

      • 链式转换 (Init→PreOp→SafeOp→OP, 跨多级一次到位)
      • 每步执行 Before/After Transition 启动参数
      • SafeOp/OP 进入后启动 PDO 线程
      • 默认每步 5s 超时
      参数:
      state - 目标状态 (EcState.INIT/PRE_OP/SAFE_OP/OP)
      返回:
      true 切换成功, false 失败
    • setStateAsync

      public CompletableFuture<Boolean> setStateAsync(EcState state)
      异步版 setState, 不阻塞调用线程.

      [2026-06-11 异步隔离层] 改为经本主站串行闸 (AsyncGate) 排队执行 — 与本主站其它 async 操作 (build/setState/SDO) 严格串行, 绝不并发打总线; 阻塞 native 调用在闸的单线程后台跑, 调用方拿 future 不堵。原 supplyAsync(commonPool) 版本无串行/无守门, 已替换。语义/返回值对外不变。

      参数:
      state - 目标状态
      返回:
      CompletableFuture<Boolean> 成功返回 true
    • setStateAsync

      public CompletableFuture<Boolean> setStateAsync(EcState state, Consumer<String> progress)
      异步版 setState (带进度回调), 不阻塞调用线程, 经主站串行闸排队隔离。

      对齐 C# SetStateAsync(state, progress, ct)

      参数:
      state - 目标状态
      progress - 进度回调 (可选, null 则不回调)。在异步 executor 线程触发, 调用方需自己 marshal 回 UI 线程 (Swing/JavaFX)。与 setInitProgressListener(com.darra.ethercat.master.EtherCATMaster.InitProgressListener) 并行上报。
      返回:
      CompletableFuture<Boolean> 成功返回 true; 取消返回的 future (cancel(true)) 会调 native AbortNetwork 让阻塞中的状态机切换返回。
    • buildAsync

      build() 的异步变体: 把整条 验证→加载 ENI→扫描→自动配置 同步流程 放本主站串行闸的后台单线程跑, 调用方拿 future 不堵。与本主站其它 async 操作串行。

      对齐 C# BuildAsync(progress, ct)。原同步 build() 不拆解/不乱序, 顺序由它自身保证。

      典型用法:

       master.SetNetwork(nic).setENI("config.xml")
             .buildAsync(msg -> System.out.println(msg))
             .thenAccept(r -> System.out.println("ok=" + r.success));
       
      参数:
      progress - 进度回调 (可选)。异步 executor 线程触发, 调用方自己 marshal。
      返回:
      CompletableFuture<BuildResult> — 同同步 build (成功含 master, 失败含 null + 消息)。 取消返回的 future (cancel(true)) 会调 native AbortNetwork。
    • buildAsync

    • setNetworkAsync

      public CompletableFuture<Integer> setNetworkAsync(String primary, String secondary)
      异步设置网卡 (经主站串行闸排队隔离)。setNetwork 本身是同步快速操作, 异步化 主要是为了与后续 buildAsync/setStateAsync 在同一把闸上串行链式组合, 不与其它 EtherCAT 操作并发。
      参数:
      primary - 主网卡名称
      secondary - 冗余网卡名称 (null/空串表示无冗余)
      返回:
      CompletableFuture<Integer> — 扫描到的从站数 (<0 失败); 取消会调 native AbortNetwork。
    • scanAsync

      public static CompletableFuture<Integer> scanAsync(String adapterName, String secondaryAdapter)
      scanSlaveCount(String) 的异步变体: 把扫描放后台线程跑, 调用方拿 future 不堵。

      静态扫描没有 master 实例闸可挂; 用 AsyncGate 的进程级静态扫描闸串行化所有 并发扫描请求 (共享同一份 native 扫描缓存, 不能并发扫)。对齐 C# ScanAsync

      参数:
      adapterName - 主网络适配器名称 (不能为 null/空)
      secondaryAdapter - 冗余网络适配器名称 (null = 单口扫描)
      返回:
      CompletableFuture<Integer> — 扫描到的从站数; 取消会调 native AbortScan (扫描专用 flag)。
    • scanAsync

      public static CompletableFuture<Integer> scanAsync(String adapterName)
      scanAsync(String, String) 单口扫描版 (无冗余)。
    • start

      public void start()
      启动 PDO 循环线程和状态监控线程
    • stop

      public void stop()
      停止 PDO 循环线程
    • getSlave

      public Slave getSlave(int slaveIndex)
      获取从站实例 (1-based)
    • loadConfigJson

      public int loadConfigJson(String jsonStr)
      从 JSON 字符串加载配置
    • autoConfigureSM

      public int autoConfigureSM(short slaveIndex)
      自动配置 SM
    • clearAllStartupParameters

      public int clearAllStartupParameters()
      清除所有从站的启动参数
    • applyStartupParametersAll

      public int applyStartupParametersAll(byte transition, byte timing)
      对所有从站执行启动参数
    • setMasterDCCycleTime

      public void setMasterDCCycleTime(int timeNs)
      设置主站 DC 循环时间 (纳秒)
    • configureDCAll

      public int configureDCAll(int sync0Ns, int sync1Ns)
      为所有 DC 从站配置 DC 同步
    • autoCalculateDCShift

      public int autoCalculateDCShift()
      自动计算 DC 偏移
    • enableDriftCompensation

      public void enableDriftCompensation(boolean enable, int thresholdNs, int gain)
      启用/禁用漂移补偿
    • setDCAutoShiftEnabled

      public void setDCAutoShiftEnabled(boolean enable)
      设置 DC 自动偏移启用
    • getDCAutoShiftEnabled

      public boolean getDCAutoShiftEnabled()
      获取 DC 自动偏移状态
    • MaxPropagationDelay

      public int MaxPropagationDelay()
      获取最大传播延迟 (纳秒)
    • setSyncWindowThreshold

      public void setSyncWindowThreshold(int thresholdNs)
      设置同步窗口阈值 (纳秒)
    • SyncWindowThreshold

      public int SyncWindowThreshold()
      获取同步窗口阈值
    • MaxSyncDifference

      public int MaxSyncDifference()
      获取最大同步偏差 (纳秒)
    • isAllSlavesInSync

      public boolean isAllSlavesInSync()
      检查所有从站是否同步
    • updatePropagationDelays

      public int updatePropagationDelays()
      更新传播延迟
    • enableContinuousMeasurement

      public void enableContinuousMeasurement(boolean enable, int intervalSec)
      启用/禁用连续测量
    • lockIOmap

      public void lockIOmap()
      锁定 IOmap
    • unlockIOmap

      public void unlockIOmap()
      解锁 IOmap
    • setMutexProtection

      public void setMutexProtection(boolean enable)
      设置 Mutex 保护
    • MutexProtection

      public boolean MutexProtection()
      获取 Mutex 保护状态
    • setRedProcessdata

      public void setRedProcessdata(int mode)
      设置冗余处理模式
    • RedProcessdata

      public int RedProcessdata()
      获取冗余处理模式
    • enableRedundancy

      public boolean enableRedundancy(boolean enable)
      启用/禁用冗余
    • RedundancyStatus

      public com.sun.jna.Pointer RedundancyStatus()
      获取冗余状态指针
    • forceRedundancyFailover

      public boolean forceRedundancyFailover()
      强制冗余故障切换
    • checkRedundancyHealth

      public boolean checkRedundancyHealth()
      检查冗余健康状态
    • RingMode

      public int RingMode()
      获取环拓扑冗余模式
    • SecondaryLinkStatus

      public boolean SecondaryLinkStatus()
      获取冗余链路状态
    • setCycleTime

      public void setCycleTime(int timeNs)
      设置 PDO 循环时间 (纳秒)
    • setCpuAffinity

      public boolean setCpuAffinity(int cpuCore)
      设置主站 CPU 亲和性
    • setAllSlaveWatchdog

      public int setAllSlaveWatchdog(int timeoutMs)
      为所有从站设置统一看门狗超时
    • setAllSlavePdiWatchdog

      public int setAllSlavePdiWatchdog(int timeoutMs)
      为所有从站设置统一PDI看门狗超时
    • DetailedDiagnostics

      public com.sun.jna.Pointer DetailedDiagnostics()
      获取详细诊断信息指针
    • resetDiagnostics

      public void resetDiagnostics()
      重置诊断信息
    • setDiagnosticsEnabled

      public void setDiagnosticsEnabled(boolean enable)
      启用/禁用诊断功能
    • DiagnosticsEnabled

      public boolean DiagnosticsEnabled()
      获取诊断功能启用状态
    • CommunicationStats

      public com.sun.jna.Pointer CommunicationStats()
      获取通信统计信息指针
    • resetCommunicationStats

      public void resetCommunicationStats()
      重置通信统计
    • getPDOFrameLossStats

      public void getPDOFrameLossStats(byte group, com.sun.jna.ptr.IntByReference totalLost, com.sun.jna.ptr.IntByReference consecutiveLost, com.sun.jna.ptr.IntByReference maxConsecutiveLost)
      获取 PDO 丢帧统计 (out 参数风格 — 旧 API).
    • getPdoFrameLossStats

      public EtherCATMaster.PDOFrameLossStats getPdoFrameLossStats(byte group)
      获取 PDO 丢帧统计 (返回值风格 — 推荐, 与其他 SDK 对齐).
      参数:
      group - 组号 (0-7)
      返回:
      PDOFrameLossStats 数据对象 (字段为 unsigned 32-bit, 用 long 承载防止溢出)
    • getPdoFrameLossStats

      public EtherCATMaster.PDOFrameLossStats getPdoFrameLossStats()
      获取 PDO 丢帧统计 (默认 group=0).
    • resetPDOFrameLossStats

      public void resetPDOFrameLossStats()
      重置 PDO 丢帧统计 (所有组)
    • getBreakPoints

      public int getBreakPoints(short[] outSlaves, byte[] outPorts, byte[] outTypes, short maxResults)
      获取断点信息
    • SlaveLinkQuality

      public short SlaveLinkQuality(short slaveIndex)
      获取从站链路质量 (0-100%)
    • recordPDOCycleStart

      public void recordPDOCycleStart()
      记录 PDO 周期开始
    • recordWKC

      public void recordWKC(short wkc)
      记录工作计数器
    • updateDiagnosticsSnapshot

      public void updateDiagnosticsSnapshot()
      更新诊断快照
    • resetSlavePortErrorCounters

      public boolean resetSlavePortErrorCounters(short slaveIndex)
      重置从站端口错误计数器
    • DiagnosticsPointer

      public com.sun.jna.Pointer DiagnosticsPointer()
      获取诊断指针 (零拷贝)
    • SummaryPointer

      public com.sun.jna.Pointer SummaryPointer()
      获取摘要指针 (零拷贝)
    • readSlavePortErrorCounters

      public boolean readSlavePortErrorCounters(short slaveIndex, byte[] rxError, byte[] invalidFrame, byte[] lostLink)
      读取从站端口错误计数器
    • readAllSlavePortErrorCounters

      public int readAllSlavePortErrorCounters()
      读取所有从站端口错误计数器
    • SlavePortErrorStats

      public com.sun.jna.Pointer SlavePortErrorStats(short slaveIndex)
      获取从站端口错误统计指针
    • updateDiagnosticsWithESCErrors

      public void updateDiagnosticsWithESCErrors()
      使用 ESC 错误更新诊断数据
    • PDOStats

      public com.sun.jna.Pointer PDOStats(short slaveIndex)
      获取 PDO 统计信息指针
    • resetPDOStats

      public void resetPDOStats(short slaveIndex)
      重置 PDO 统计
    • pdoReadDirect

      public boolean pdoReadDirect(short slaveIndex, short pdoIndex, com.sun.jna.Pointer dataBuffer, int bufferSize, com.sun.jna.ptr.IntByReference bytesRead)
      PDO 直接读取 (native 返回 C boolean=uint8, 上层 != 0 判真)
    • pdoWriteDirect

      public boolean pdoWriteDirect(short slaveIndex, short pdoIndex, com.sun.jna.Pointer dataBuffer, int dataSize)
      PDO 直接写入 (native 返回 C boolean=uint8, 上层 != 0 判真)
    • pdoBatchRead

      public int pdoBatchRead(short[] slaveIndices, int slaveCount, com.sun.jna.Pointer[] dataBuffers, int[] bufferSizes, int[] bytesRead)
      PDO 批量读取
    • pdoBatchWrite

      public int pdoBatchWrite(short[] slaveIndices, int slaveCount, com.sun.jna.Pointer[] dataBuffers, int[] dataSizes)
      PDO 批量写入
    • getPDOMapping

      public boolean getPDOMapping(short slaveIndex, short pdoType, com.sun.jna.Pointer mappingBuffer, int bufferSize, com.sun.jna.ptr.IntByReference mappingCount)
      获取 PDO 映射 (native 返回 C boolean=uint8, 上层 != 0 判真)
    • verifyAllSlaveIdentities

      public boolean verifyAllSlaveIdentities(DarraCore.SlaveIdentity[] expectedIdentities, int slaveCount, boolean checkRevision, boolean checkSerial, long[] mismatchMask)
      批量验证所有从站身份
    • setUdpMode

      public boolean setUdpMode(boolean enable)
      设置 UDP 模式
    • UdpMode

      public boolean UdpMode()
      获取 UDP 模式
    • isUdpAvailable

      public boolean isUdpAvailable()
      检查 UDP 是否可用
    • abortScan

      public static void abortScan()
    • resetScanAbort

      public static void resetScanAbort()
    • emergencyCloseNics

      public static void emergencyCloseNics()
    • exportPerfCsv

      public int exportPerfCsv(String filepath)
    • scanSlaveCount

      public static int scanSlaveCount(String adapterName)
      扫描指定网卡上的从站数量 (完整扫描).

      [审计修复] 原 ScanSlaveCount 在 DLL 已删除; 改用 ScanSlaveInfo 单端口模式 (secondary=null).

    • scanSlaveCountRedundant

      public static int scanSlaveCountRedundant(String primary, String secondary)
      扫描冗余网卡对上的从站数量 (完整扫描, 环形拓扑).

      [审计修复 roundSDKSAN2] 原 ScanSlaveCountRedundant 在 DLL 已删除; 改用 ScanSlaveInfo 传主+副网卡 (与 C# DLL.ScanSlaveInfo 一致).

    • quickSlaveCountRedundant

      public static int quickSlaveCountRedundant(String primary, String secondary)
      快速检测冗余网卡对上的从站数量.

      [审计修复 roundSDKSAN2] 原 QuickSlaveCountRedundant 在 DLL 已删除; 用 quickFindRedundantPairBatch 批量探测取总数 (返回数组 [slaveCount,...]).

    • readSlaveInfo

      public static int readSlaveInfo(String adapterName)
    • getScannedSlaveCount

      public static int getScannedSlaveCount()
    • getScannedSlaveInfo

      public static boolean getScannedSlaveInfo(int index, com.sun.jna.ptr.IntByReference vendorId, com.sun.jna.ptr.IntByReference productCode, com.sun.jna.ptr.IntByReference revision, com.sun.jna.ptr.IntByReference serial, byte[] name, int nameSize, com.sun.jna.ptr.ShortByReference configAddr, com.sun.jna.ptr.ShortByReference aliasAddr, com.sun.jna.ptr.ShortByReference parent, com.sun.jna.ptr.ByteByReference topology, com.sun.jna.ptr.ByteByReference activePorts, com.sun.jna.ptr.ByteByReference entryPort, com.sun.jna.ptr.ByteByReference parentPort, com.sun.jna.ptr.ByteByReference ptype)
    • quickFindRedundantPairBatch

      public static int[] quickFindRedundantPairBatch(String[] adapterNames)
      批量探测冗余配对
    • getRingSlaveCount

      public static int getRingSlaveCount()
    • setPDOLogging

      public static void setPDOLogging(boolean enable)
    • setMailboxLogging

      public static void setMailboxLogging(boolean enable)
    • setDebugLogging

      public static void setDebugLogging(boolean enable)
    • enablePDOLogging

      public static void enablePDOLogging(boolean enable)
    • enableMailboxLogging

      public static void enableMailboxLogging(boolean enable)
    • enableDebugLogging

      public static void enableDebugLogging(boolean enable)
    • setLogCallback

      public void setLogCallback(DarraCore.LogCallback callback)
    • setCrashCallback

      public void setCrashCallback(DarraCore.CrashNotifyCallback callback)
    • registerPdoCyclicCallbackSync

      public void registerPdoCyclicCallbackSync(DarraCore.ProcessDataCyclicCallback callback)
    • registerStateChangeCallbackSync

      public void registerStateChangeCallbackSync(DarraCore.SlaveStateChangeCallback callback)
    • registerStateChangeCallbackAsync

      public void registerStateChangeCallbackAsync(DarraCore.SlaveStateChangeCallback callback)
    • registerEmergencyEventCallback

      public void registerEmergencyEventCallback(DarraCore.EmergencyEventCallback callback)
    • registerDiscoveryCallbackSync

      public void registerDiscoveryCallbackSync(DarraCore.SlaveDiscoveryCallback callback)
    • registerDiscoveryCallbackAsync

      public void registerDiscoveryCallbackAsync(DarraCore.SlaveDiscoveryCallback callback)
    • registerRedundancyModeChangedCallback

      public void registerRedundancyModeChangedCallback(DarraCore.RedundancyModeChangedCallback callback)
    • registerPDOFrameLossCallback

      public void registerPDOFrameLossCallback(DarraCore.PDOFrameLossCallback callback)
    • registerSlavePreOpReconfigCallback

      public void registerSlavePreOpReconfigCallback(DarraCore.SlavePreOpReconfigCallback callback)
    • setDCSyncLostCallback

      public void setDCSyncLostCallback(DarraCore.DCSyncLostCallback callback)
    • setFoEProgressHook

      public boolean setFoEProgressHook(DarraCore.FoEProgressCallback callback)
    • clearFoEProgressHook

      public boolean clearFoEProgressHook()
    • verifyLicense

      public boolean verifyLicense()
    • invalidateLicense

      public void invalidateLicense()
    • isLicenseValid

      public boolean isLicenseValid()
    • getSerialNumber

      public static String getSerialNumber()
    • getDeviceName

      public static String getDeviceName()
    • getUserEmail

      public static String getUserEmail()
    • getWindowsProductKey

      public static String getWindowsProductKey()
    • getDriverList

      public static String getDriverList()
    • getDllVersion

      public static String getDllVersion()
    • getAvailableCpuCores

      public static int getAvailableCpuCores()
    • getMaxMasterInstances

      public static int getMaxMasterInstances()
    • Topology

      public List<DarraCore.TopologyNode> Topology()
      获取网络拓扑节点列表
    • TopologyChildren

      public List<Integer> TopologyChildren(int parent)
      获取指定从站的子节点编号列表
    • TopologyRoots

      public List<Integer> TopologyRoots()
      获取拓扑根节点编号列表
    • rebuildTopology

      public void rebuildTopology()
      重建拓扑结构
    • resetAllSyncWindowStats

      public void resetAllSyncWindowStats()
      重置所有从站的同步窗口统计
    • getActiveInstanceCount

      public static int getActiveInstanceCount()
    • getMaxInstanceCount

      public static int getMaxInstanceCount()
    • isAdapterAvailable

      public static boolean isAdapterAvailable(String adapterName)
    • enablePDOMonitoring

      public static void enablePDOMonitoring(boolean enable)
      启用/禁用 PDO 监控.

      [审计修复 roundSDKSAN2] EnablePDOMonitoring 已由运行库导出, 原"未导出死声明"注释为陈旧错误信息. native 形参为 C boolean(uint8), Java 经 byte 传递 (1=启用, 0=禁用) 锁 1 字节宽度.

      参数:
      enable - true=启用, false=禁用
    • isPDOMonitoringEnabled

      public static boolean isPDOMonitoringEnabled()
      获取 PDO 监控是否已启用.

      [审计修复 roundSDKSAN2] IsPDOMonitoringEnabled 已由运行库导出. native 返回 C boolean(uint8), Java 经 byte 取回, != 0 判真.

      返回:
      是否已启用, DLL 未加载返回 false
    • GetMasterIdentity

      public DarraCore.MasterIdentity GetMasterIdentity()
      获取主站身份信息 (ETG.1510 对象 0x1018)
      返回:
      主站身份信息, 失败返回 null
    • GetMasterDiagData

      public DarraCore.MasterDiagData GetMasterDiagData()
      获取主站诊断数据 (ETG.1510 对象 0xF120)
      返回:
      主站诊断数据, 失败返回 null
    • close

      public void close()
      指定者:
      close 在接口中 AutoCloseable
    • Deconstruct

      public EtherCATMaster.BuildResult Deconstruct()
      解构赋值 (对应 C# Deconstruct)
      返回:
      BuildResult 包含主站构建状态
    • Validate

      验证配置是否完整, 不执行 Build 在调用 build() 前可先调用此方法预检查配置
      返回:
      ValidationResult 包含验证结果和错误信息
    • setENI

      public EtherCATMaster setENI(String path)
      设置 ENI/DENI 配置文件路径 (延迟配置, Build 时生效) 对应 C# SetENI()
      参数:
      path - ENI/DENI 配置文件路径
      返回:
      当前实例, 支持链式调用
    • setEsiFile

      public EtherCATMaster setEsiFile(String path)
      设置单个 ESI 文件路径 (延迟配置, Build 时生效) 可多次调用添加多个 ESI 文件 对应 C# SetEsiFile()
      参数:
      path - ESI 文件路径
      返回:
      当前实例, 支持链式调用
    • setEsiFiles

      public EtherCATMaster setEsiFiles(String path)
      设置 ESI 文件目录路径 (延迟配置, Build 时生效) 加载目录下所有 ESI 文件。可多次调用添加多个路径。 对应 C# SetEsiFiles()
      参数:
      path - ESI 文件目录路径或单个文件路径
      返回:
      当前实例, 支持链式调用
    • enableAutoStartup

      public EtherCATMaster enableAutoStartup()
      启用自动启动配置 (Build 时执行) 已有启动参数的从站 (ENI/DENI 已配置) 会被跳过, 仅对未配置的从站生效。 对应 C# EnableAutoStartup()
      返回:
      当前实例, 支持链式调用
    • build

      构建并初始化主站 (终结方法) 对应 C# Build()

      执行流程: 验证配置 → 加载 ENI → 设置网口 → 扫描从站 → 自动配置

      推荐用法:

       EtherCATMaster master = EtherCATMaster.create();
       BuildResult result = master
           .SetNetwork("\\Device\\NPF_{...}")
           .setENI("config.xml")
           .enableAutoStartup()
           .build();
       if (result.success) { ... }
       
      返回:
      BuildResult 包含主站实例、从站数量和状态消息
    • PdoLostFrames

      public int PdoLostFrames()
      获取 PDO 总丢帧数 (对应 C# PdoLostFrames)
    • PdoConsecutiveLost

      public int PdoConsecutiveLost()
      获取当前连续丢帧数 (对应 C# PdoConsecutiveLost)
    • PdoMaxConsecutiveLost

      public int PdoMaxConsecutiveLost()
      获取历史最大连续丢帧数 (对应 C# PdoMaxConsecutiveLost)
    • toString

      public String toString()
      覆盖:
      toString 在类中 Object