类 SlaveIdentity
java.lang.Object
com.darra.ethercat.sugar.SlaveIdentity
不可变从站身份 (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(int slaveNum, long vendorId, long productId, long revisionId, long serialNumber, String name, String deviceName) -
方法概要
修饰符和类型方法说明booleanbooleanequalsExact(SlaveIdentity other) 严格匹配 (含 Serial), 用于"完全同一片硬件"判定.inthashCode()booleanmatchesIdentity(SlaveIdentity expected) 是否与另一身份的 (Vendor, Product, Revision) 三元组匹配.name()longlonglongintslaveNum()static SlaveIdentity从活的Slave抓取一次身份快照.toString()longvendorId()
-
构造器详细资料
-
SlaveIdentity
-
-
方法详细资料
-
snapshot
从活的Slave抓取一次身份快照. 抓取期间发生异常的字段填默认值. -
slaveNum
public int slaveNum() -
vendorId
public long vendorId() -
productId
public long productId() -
revisionId
public long revisionId() -
serialNumber
public long serialNumber() -
name
-
deviceName
-
matchesIdentity
是否与另一身份的 (Vendor, Product, Revision) 三元组匹配.Revision 用 ETG 标准的"向后兼容"语义: actual.revision >= expected.revision 视为匹配 (同 SDK 主线 v2 热插拔策略).
-
equalsExact
严格匹配 (含 Serial), 用于"完全同一片硬件"判定. -
equals
-
hashCode
public int hashCode() -
toString
-