类 SlaveListExt
java.lang.Object
com.darra.ethercat.sugar.SlaveListExt
从站列表的高级语法糖 — 提供数组、排序、聚合 helper.
MasterStreams 偏 "Stream + Optional + Map", 这里偏 "List/Array
操作 + 集合代数". 两者互补, 都不修改主线.
典型用法:
// 1. 拍快照成 Slave[] (跨线程传) Slave[] all = SlaveListExt.toArray(master); // 2. 按拓扑深度排序 (适合做树形 UI) List<Slave> ordered = SlaveListExt.sortedByConfigAddr(master); // 3. 统计: 多少个从站当前在 OP long opCount = SlaveListExt.countByState(master, EcState.OP); // 4. 二元布尔: 全网是否都进了 OP if (SlaveListExt.allInState(master, EcState.OP)) launch();
- 从以下版本开始:
- 2026-05
-
方法概要
修饰符和类型方法说明static booleanallInState(EtherCATMaster master, EcState state) 全网从站是否都进入了指定状态.static booleananyInState(EtherCATMaster master, EcState state) 是否存在任意从站处于指定状态.static longcountByState(EtherCATMaster master, EcState state) 处于指定状态的从站数.static longdcCapableCount(EtherCATMaster master) 支持 DC 的从站数.static booleanhasLostSlave(EtherCATMaster master) 是否存在丢失从站.static List<SlaveIdentity> identities(EtherCATMaster master) 一次性抓取全网身份快照.static longlostCount(EtherCATMaster master) 丢失从站数.sortedByConfigAddr(EtherCATMaster master) 按 ConfigAddr 升序排列, 适合按物理拓扑顺序枚举.sortedBySlaveNum(EtherCATMaster master) 按从站 1-based 序号排序的 List 副本 (主线已经按序号顺序, 这里 explicit 一次).按 VendorId 排序后再按序号排序 (混合多厂商场景, 同厂商排一起).static Slave[]toArray(EtherCATMaster master) 拍快照成Slave[](跨线程安全 — 主线 List 是 Collections.unmodifiableList).
-
方法详细资料
-
toArray
拍快照成Slave[](跨线程安全 — 主线 List 是 Collections.unmodifiableList). -
sortedBySlaveNum
按从站 1-based 序号排序的 List 副本 (主线已经按序号顺序, 这里 explicit 一次). -
sortedByConfigAddr
按 ConfigAddr 升序排列, 适合按物理拓扑顺序枚举. -
sortedByVendorThenIndex
按 VendorId 排序后再按序号排序 (混合多厂商场景, 同厂商排一起). -
countByState
处于指定状态的从站数. -
lostCount
丢失从站数. -
dcCapableCount
支持 DC 的从站数. -
allInState
全网从站是否都进入了指定状态. 网络无从站时返回 false (业务上"无从站"通常 不应视为 success). -
anyInState
是否存在任意从站处于指定状态. -
hasLostSlave
是否存在丢失从站. -
identities
一次性抓取全网身份快照. 适合跨线程做配置校验.- 返回:
- 不可变
List<SlaveIdentity>, 序号顺序
-