|  |  |  | 
|---|
|  |  |  | Object[] objs =  TcpSessionCache.getTcpProtocolNameVersion(rtuAddr) ; | 
|---|
|  |  |  | if(objs == null || objs.length == 0 || objs[0] == null){ | 
|---|
|  |  |  | //RTU未曾上线 | 
|---|
|  |  |  | /* 2024-11-02 增加了协议版本号,且一个协议可以有多个版本号,所以下面得到唯一协议驱动实现方式不可用了,因为确定不了版本号 | 
|---|
|  |  |  | int count = ProtocolCache.driverCount() ; | 
|---|
|  |  |  | if(count == 1){ | 
|---|
|  |  |  | //只有一个协议 | 
|---|
|  |  |  | dri = ProtocolCache.getFirstDriver() ; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | }else{ | 
|---|
|  |  |  | String protocolName = (String)objs[0]; | 
|---|
|  |  |  | com.protocolVersion = (Short)objs[1]; | 
|---|
|  |  |  | dri = ProtocolCache.getDriver(protocolName) ; | 
|---|
|  |  |  | if(dri == null){ | 
|---|
|  |  |  | log.error("严重错误,未能得到协议" + protocolName + "驱动类实例!"); | 
|---|
|  |  |  | }else{ | 
|---|
|  |  |  | MidResult[] actions = dri.createCommand(ServerProperties.isLowPower, com)  ; | 
|---|
|  |  |  | log.info("下发远程命令" + com.getCode() + "由协议驱动构造完成"); | 
|---|
|  |  |  | if(actions != null){ | 
|---|
|  |  |  | for(MidResult act : actions){ | 
|---|
|  |  |  | act.action(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | dri = ProtocolCache.getDriver(protocolName, com.protocolVersion) ; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if(dri == null){ | 
|---|
|  |  |  | log.error("严重错误,未能得到RTU(" + rtuAddr + ")驱动类实例!"); | 
|---|
|  |  |  | }else{ | 
|---|
|  |  |  | MidResult[] actions = dri.createCommand(ServerProperties.isLowPower, com)  ; | 
|---|
|  |  |  | log.info("下发远程命令" + com.getCode() + "由协议驱动构造完成"); | 
|---|
|  |  |  | if(actions != null){ | 
|---|
|  |  |  | for(MidResult act : actions){ | 
|---|
|  |  |  | act.action(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|