类 SlaveIdentity

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

public final class SlaveIdentity extends Object
不可变从站身份 (Java 14+ record 等价物).

主线 Slave 是带状态的"活"对象, 引用持有会被 SDK 生命周期影响. 在跨线程传递、缓存、序列化、做 key/value 时, 通常只需要"快照"的纯数据. SlaveIdentity 抓取一次即不可变 — 等价 record SlaveIdentity(...).

Java 11 还没有 record 关键字, 这里手写等价模式 (final 类 + final 字段 + accessor + equals/hashCode/toString). 升级到 Java 14+ 后可平滑替换为 public record SlaveIdentity(...) {}, 调用代码不变.

典型用法:

 // 1. 从活的 Slave 抓快照
 SlaveIdentity id = SlaveIdentity.snapshot(master.getSlave(3));

 // 2. 跨线程传递, 不再锁定 master 生命周期
 executor.submit(() -> report(id));

 // 3. 作为 HashMap key
 Map<SlaveIdentity, Long> lastSeen = new HashMap<>();
 lastSeen.put(id, System.currentTimeMillis());

 // 4. 与配置期望值比较 (热插拔验证)
 SlaveIdentity expected = new SlaveIdentity(3, 0x00000002, 0x044C2C52, 0x00100000, 0, "EL2008", "");
 if (!actual.matchesIdentity(expected)) raiseAlarm();
 

32 位无符号字段 (vendor/product/revision/serial) 在 Java 用 long 承载 (避免负值), 字符串字段 null 安全 (永不返 null).

从以下版本开始:
2026-05
  • 构造器详细资料

    • SlaveIdentity

      public SlaveIdentity(int slaveNum, long vendorId, long productId, long revisionId, long serialNumber, String name, String deviceName)
  • 方法详细资料

    • snapshot

      public static SlaveIdentity snapshot(Slave slave)
      从活的 Slave 抓取一次身份快照. 抓取期间发生异常的字段填默认值.
    • slaveNum

      public int slaveNum()
    • vendorId

      public long vendorId()
    • productId

      public long productId()
    • revisionId

      public long revisionId()
    • serialNumber

      public long serialNumber()
    • name

      public String name()
    • deviceName

      public String deviceName()
    • matchesIdentity

      public boolean matchesIdentity(SlaveIdentity expected)
      是否与另一身份的 (Vendor, Product, Revision) 三元组匹配.

      Revision 用 ETG 标准的"向后兼容"语义: actual.revision >= expected.revision 视为匹配 (同 SDK 主线 v2 热插拔策略).

    • equalsExact

      public boolean equalsExact(SlaveIdentity other)
      严格匹配 (含 Serial), 用于"完全同一片硬件"判定.
    • equals

      public boolean equals(Object o)
      覆盖:
      equals 在类中 Object
    • hashCode

      public int hashCode()
      覆盖:
      hashCode 在类中 Object
    • toString

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