1、协议版本号增加到协议解析与命令构造中;
2、增加RTU状态记录功能,为RTU远程升级做准备。
9个文件已添加
9个文件已删除
260个文件已修改
1 文件已重命名
| | |
| | | * @param reportOrResponse_trueOrFalse 上报是true,命令响应是false |
| | | */ |
| | | void callback(Boolean reportOrResponse_trueOrFalse) ; |
| | | |
| | | |
| | | /** |
| | | * 只有协议解析器才知道RTU真实的状态,所认提供此接口,向外通知设备的一些状态 |
| | | * @param infos |
| | | */ |
| | | void notify(NotifyInfo ...infos) ; |
| | | |
| | | } |
| | |
| | | * 本条命令的ID |
| | | * 一般是命令在数据库中存储记录ID的字符串形式 |
| | | */ |
| | | public String id; |
| | | |
| | | public String id; |
| | | |
| | | /** |
| | | * RTU协议名称,这个可以为空,因为RTU上行数据解析出协议名称,然后系统把协议名称保存在RTU数据记录中,从此协议名称就不再空了 |
| | | */ |
| | | public String protocol; |
| | | |
| | | |
| | | /** |
| | | * RTU协议名称,这个可以为空 |
| | | */ |
| | | public Short protocolVersion; |
| | | |
| | | /** |
| | | * RTU 地址 |
| | | */ |
| | |
| | | public String toString(){ |
| | | String s = "命令id=" + id + "\n" ; |
| | | s += (protocol == null ? "" : ("协议=" + protocol + "\n")); |
| | | s += (protocolVersion == null ? "" : ("协议版本号=" + protocolVersion + "\n")); |
| | | s += (rtuAddr == null ? "" : ("Rtu地址=" + rtuAddr + "\n")); |
| | | s += "命令类型=" + (type.equals(CommandType.innerCommand)?"内部命令":"RTU命令") + "\n" ; |
| | | s += (code == null ? "" : ("功能码=" + code + "\n")) ; |
| | |
| | | protected HashMap<String, Class<CodeParse>> downCode2Class = new HashMap<>() ; |
| | | protected HashMap<String, CodeParse> downCode2ClassInstance = new HashMap<>() ; |
| | | |
| | | protected Notify notify ; |
| | | |
| | | /** |
| | | * 清空自己 |
| | | */ |
| | | public abstract void clear() ; |
| | | |
| | | /** |
| | | * 设置RTU信息通知器 |
| | | * @param notify 通知 |
| | | */ |
| | | public void setNotify(Notify notify){ |
| | | this.notify = notify ; |
| | | } |
| | | |
| | | /** |
| | | * 单线程单例Driver模式下运行 |
| | | * 扫描识别功能码注解类 |
| | |
| | | |
| | | public String rtuResultSendWebUrl ;//rtu返回命令结果 发向目的地web URL |
| | | public String protocolName ;//协议名称 |
| | | public Short protocolVersion ;//协议版本号 |
| | | public String rtuAddr ;//Rtu地址 |
| | | public String upCode ;//上行数据中的功能码 |
| | | public String upHex ;//上行数据十六进制形式 |
| | |
| | | |
| | | public String rtuResultSendWebUrl ;//rtu返回命令结果 发向目的地web URL |
| | | public String protocolName ;//协议名称 |
| | | public Short protocolVersion ;//协议版本号 |
| | | public String rtuAddr ;//Rtu地址 |
| | | public String commandId ;//命令ID,发起命令的客户端(web端)生成,以匹配命令结果 |
| | | public String downCode ;//下行命令功能码; |
| New file |
| | |
| | | package com.dy.common.mw.protocol; |
| | | |
| | | /** |
| | | * @Author: liurunyu |
| | | * @Date: 2024/11/3 13:12 |
| | | * @Description 只有驱动+协议解析器才知道RTU真实的状态,所认提供此接口,向外通知设备的一些状态 |
| | | */ |
| | | public interface Notify { |
| | | /** |
| | | * RTU信息通知 |
| | | * @param rtuAddr |
| | | * @param protocolName |
| | | * @param protocolVersion |
| | | * @param info |
| | | */ |
| | | public void notify(String rtuAddr, |
| | | String protocolName, |
| | | Short protocolVersion, |
| | | NotifyInfo ...info) ; |
| | | } |
| New file |
| | |
| | | package com.dy.common.mw.protocol; |
| | | |
| | | /** |
| | | * @Author: liurunyu |
| | | * @Date: 2024/11/3 13:12 |
| | | * @Description |
| | | */ |
| | | public interface NotifyInfo { |
| | | } |
| | |
| | | class OnLineResult{ |
| | | public int result ;//分析结果 |
| | | public String protocolName ;//协议名称 |
| | | public Short protocolVersion ;//协议版本号 |
| | | public String rtuAddr ;//Rtu地址 |
| | | public byte[] remoteData;//需要向Rtu回写的数据 |
| | | public OnLineResult(){ |
| | |
| | | Driver dri = ProtocolCache.getDriver(protocolName) ; |
| | | if(dri != null){ |
| | | dri.scanAnnotationCode(); |
| | | dri.setNotify(adapter.getSingleRtuInfoNotify(protocolName)); |
| | | } |
| | | } |
| | | if(adapter.getConfig().showStartInfo){ |
| | |
| | | * @return ProtocolConfigVo |
| | | */ |
| | | ProtocolConfigVo getConfig() ; |
| | | |
| | | /** |
| | | * 单线程环境中运行,得到单个RTU信息通知器 |
| | | * @param protocolName 协议名称 |
| | | * @return MidResultAction |
| | | */ |
| | | Notify getSingleRtuInfoNotify(String protocolName) ; |
| | | /** |
| | | * 单线程环境中运行,得到单个处理RTU下行数据的action执行对象 |
| | | * @param protocolName 协议名称 |
| | |
| | | upData.setSubData(dV1) ; |
| | | |
| | | this.upCpParams.setValue(ProtocolConstantV206V1.protocolName, |
| | | ProtocolConstantV206V1.protocolVer, |
| | | rtuAddr, |
| | | upCode, |
| | | upHex, |
| | |
| | | public void callback(Boolean flag) { |
| | | reportOrResponse_trueOrFalse = flag ; |
| | | rtuAddrInData = dV1.getRtuAddr() ; |
| | | } |
| | | @Override |
| | | public void notify(NotifyInfo ...infos) { |
| | | } |
| | | }); |
| | | } |
| | |
| | | this.downCpParams.setValue( |
| | | RtuResultSendWebUrl, |
| | | ProtocolConstantV206V1.protocolName, |
| | | command.protocolVersion==null?ProtocolConstantV206V1.protocolVer:command.protocolVersion, |
| | | rtuAddr, |
| | | command.getId(), |
| | | commandCode, |
| | |
| | | olr.result = OnLine.OnLineAction_success ; |
| | | olr.rtuAddr = cp.parseRtuAddr(upBuf) ; |
| | | olr.protocolName = ProtocolConstantV206V1.protocolName ; |
| | | olr.protocolVersion = ProtocolConstantV206V1.protocolVer ; |
| | | } |
| | | return olr; |
| | | } |
| | |
| | | |
| | | public String rtuResultSendWebUrl ;//rtu返回命令结果 发向目的地web URL |
| | | public String protocolName ; |
| | | public Short protocolVersion ; |
| | | public String rtuAddr ;//控制器地址 |
| | | public String commandId ; |
| | | public String commandCode ; |
| | |
| | | |
| | | public void clear(){ |
| | | this.protocolName = null ; |
| | | this.rtuAddr = null ; |
| | | this.protocolVersion = null ; |
| | | this.rtuAddr = null ; |
| | | this.commandId = null ; |
| | | this.commandCode = null ; |
| | | this.param = null ; |
| | |
| | | public void setValue( |
| | | String rtuResultSendWebUrl, |
| | | String protocolName, |
| | | Short protocolVersion, |
| | | String rtuAddr, |
| | | String commandId, |
| | | String commandCode, |
| | |
| | | Object attachment ){ |
| | | this.rtuResultSendWebUrl = rtuResultSendWebUrl ; |
| | | this.protocolName = protocolName ; |
| | | this.protocolVersion = protocolVersion ; |
| | | this.rtuAddr = rtuAddr ; |
| | | this.commandId = commandId ; |
| | | this.commandCode = commandCode ; |
| | |
| | | public class ParseParamsForUpV1 implements CodeParseParams{ |
| | | |
| | | public String protocolName ;//协议名称 |
| | | public Short protocolVersion ; |
| | | public String rtuAddr ;//控制器址 |
| | | public String upCode ;//上行报文数据中的功能码 |
| | | public String upHex ;//行报文数据十六进制形式 |
| | |
| | | |
| | | public void clear(){ |
| | | this.protocolName = null ; |
| | | this.rtuAddr = null ; |
| | | this.protocolVersion = null ; |
| | | this.rtuAddr = null ; |
| | | this.upCode = null ; |
| | | this.upHex = null ; |
| | | this.upBuffer = null ; |
| | |
| | | } |
| | | |
| | | public void setValue(String protocolName, |
| | | String rtuAddr, |
| | | Short protocolVersion, |
| | | String rtuAddr, |
| | | String upCode, |
| | | String upHex, |
| | | byte[] upBuffer, |
| | | Data data){ |
| | | this.protocolName = protocolName ; |
| | | this.rtuAddr = rtuAddr ; |
| | | this.protocolVersion = protocolVersion ; |
| | | this.rtuAddr = rtuAddr ; |
| | | this.upCode = upCode ; |
| | | this.upHex = upHex ; |
| | | this.upBuffer = upBuffer ; |
| | |
| | | |
| | | MidResultToRtu midRs = new MidResultToRtu() ; |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion; //协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.commandId = para.commandId ;//命令ID,发起命令的客户端(web端)生成,以匹配命令结果 |
| | | midRs.downCode = para.commandCode ;//下行命令功能码; |
| | |
| | | |
| | | MidResultFromRtu midRs = new MidResultFromRtu() ; |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion; //协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.upCode = para.upCode ;//上行数据中的功能码 |
| | | midRs.upHex = para.upHex ;//上行数据十六进制形式 |
| | |
| | | downCpParams.setValue( |
| | | null, |
| | | ProtocolConstantV206V1.protocolName, |
| | | para.protocolVersion, |
| | | para.rtuAddr, |
| | | Command.defaultId, |
| | | confirmComCode, |
| | |
| | | |
| | | MidResultToRtu confirmCommand = new MidResultToRtu() ; |
| | | confirmCommand.protocolName = para.protocolName ;//协议名称 |
| | | confirmCommand.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | confirmCommand.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | confirmCommand.commandId = Command.defaultId ;//命令ID,发起命令的客户端(web端)生成,以匹配命令结果 |
| | | confirmCommand.downCode = confirmComCode ;//下行命令功能码; |
| | |
| | | MidResultToRtu midRs = new MidResultToRtu() ; |
| | | midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ;//rtu返回命令结果 发向目的地web URL |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion; //协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.commandId = para.commandId ;//命令ID,发起命令的客户端(web端)生成,以匹配命令结果 |
| | | midRs.downCode = para.commandCode ;//下行命令功能码; |
| | |
| | | |
| | | MidResultFromRtu midRs = new MidResultFromRtu() ; |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion; //协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.upCode = para.upCode ;//上行数据中的功能码 |
| | | midRs.upHex = para.upHex ;//上行数据十六进制形式 |
| | |
| | | MidResultToRtu midRs = new MidResultToRtu() ; |
| | | midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ;//rtu返回命令结果 发向目的地web URL |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion; //协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.commandId = para.commandId ;//命令ID,发起命令的客户端(web端)生成,以匹配命令结果 |
| | | midRs.downCode = para.commandCode ;//下行命令功能码; |
| | |
| | | |
| | | MidResultFromRtu midRs = new MidResultFromRtu() ; |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion; //协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.upCode = para.upCode ;//上行数据中的功能码 |
| | | midRs.upHex = para.upHex ;//上行数据十六进制形式 |
| | |
| | | MidResultToRtu midRs = new MidResultToRtu() ; |
| | | midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ;//rtu返回命令结果 发向目的地web URL |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion; //协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.commandId = para.commandId ;//命令ID,发起命令的客户端(web端)生成,以匹配命令结果 |
| | | midRs.downCode = para.commandCode ;//下行命令功能码; |
| | |
| | | |
| | | MidResultFromRtu midRs = new MidResultFromRtu() ; |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion; //协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.upCode = para.upCode ;//上行数据中的功能码 |
| | | midRs.upHex = para.upHex ;//上行数据十六进制形式 |
| | |
| | | MidResultToRtu midRs = new MidResultToRtu() ; |
| | | midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ;//rtu返回命令结果 发向目的地web URL |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion; //协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.commandId = para.commandId ;//命令ID,发起命令的客户端(web端)生成,以匹配命令结果 |
| | | midRs.downCode = para.commandCode ;//下行命令功能码; |
| | |
| | | |
| | | MidResultFromRtu midRs = new MidResultFromRtu() ; |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion; //协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.upCode = para.upCode ;//上行数据中的功能码 |
| | | midRs.upHex = para.upHex ;//上行数据十六进制形式 |
| | |
| | | MidResultToRtu midRs = new MidResultToRtu() ; |
| | | midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ;//rtu返回命令结果 发向目的地web URL |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion; //协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.commandId = para.commandId ;//命令ID,发起命令的客户端(web端)生成,以匹配命令结果 |
| | | midRs.downCode = para.commandCode ;//下行命令功能码; |
| | |
| | | |
| | | MidResultFromRtu midRs = new MidResultFromRtu() ; |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion; //协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.upCode = para.upCode ;//上行数据中的功能码 |
| | | midRs.upHex = para.upHex ;//上行数据十六进制形式 |
| | |
| | | MidResultToRtu midRs = new MidResultToRtu() ; |
| | | midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ;//rtu返回命令结果 发向目的地web URL |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion; //协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.commandId = para.commandId ;//命令ID,发起命令的客户端(web端)生成,以匹配命令结果 |
| | | midRs.downCode = para.commandCode ;//下行命令功能码; |
| | |
| | | |
| | | MidResultFromRtu midRs = new MidResultFromRtu() ; |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion; //协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.upCode = para.upCode ;//上行数据中的功能码 |
| | | midRs.upHex = para.upHex ;//上行数据十六进制形式 |
| | |
| | | MidResultToRtu midRs = new MidResultToRtu() ; |
| | | midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ;//rtu返回命令结果 发向目的地web URL |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion; //协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.commandId = para.commandId ;//命令ID,发起命令的客户端(web端)生成,以匹配命令结果 |
| | | midRs.downCode = para.commandCode ;//下行命令功能码; |
| | |
| | | |
| | | MidResultFromRtu midRs = new MidResultFromRtu() ; |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion; //协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.upCode = para.upCode ;//上行数据中的功能码 |
| | | midRs.upHex = para.upHex ;//上行数据十六进制形式 |
| | |
| | | MidResultToRtu midRs = new MidResultToRtu() ; |
| | | midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ;//rtu返回命令结果 发向目的地web URL |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion; //协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.commandId = para.commandId ;//命令ID,发起命令的客户端(web端)生成,以匹配命令结果 |
| | | midRs.downCode = para.commandCode ;//下行命令功能码; |
| | |
| | | |
| | | MidResultFromRtu midRs = new MidResultFromRtu() ; |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion; //协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.upCode = para.upCode ;//上行数据中的功能码 |
| | | midRs.upHex = para.upHex ;//上行数据十六进制形式 |
| | |
| | | MidResultToRtu midRs = new MidResultToRtu() ; |
| | | midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ;//rtu返回命令结果 发向目的地web URL |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion; //协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.commandId = para.commandId ;//命令ID,发起命令的客户端(web端)生成,以匹配命令结果 |
| | | midRs.downCode = para.commandCode ;//下行命令功能码; |
| | |
| | | |
| | | MidResultFromRtu midRs = new MidResultFromRtu() ; |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion; //协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.upCode = para.upCode ;//上行数据中的功能码 |
| | | midRs.upHex = para.upHex ;//上行数据十六进制形式 |
| | |
| | | MidResultToRtu midRs = new MidResultToRtu() ; |
| | | midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ;//rtu返回命令结果 发向目的地web URL |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion; //协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.commandId = para.commandId ;//命令ID,发起命令的客户端(web端)生成,以匹配命令结果 |
| | | midRs.downCode = para.commandCode ;//下行命令功能码; |
| | |
| | | |
| | | MidResultFromRtu midRs = new MidResultFromRtu() ; |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion; //协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.upCode = para.upCode ;//上行数据中的功能码 |
| | | midRs.upHex = para.upHex ;//上行数据十六进制形式 |
| | |
| | | MidResultToRtu midRs = new MidResultToRtu() ; |
| | | midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ;//rtu返回命令结果 发向目的地web URL |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion; //协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.commandId = para.commandId ;//命令ID,发起命令的客户端(web端)生成,以匹配命令结果 |
| | | midRs.downCode = para.commandCode ;//下行命令功能码; |
| | |
| | | |
| | | MidResultFromRtu midRs = new MidResultFromRtu() ; |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion; //协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.upCode = para.upCode ;//上行数据中的功能码 |
| | | midRs.upHex = para.upHex ;//上行数据十六进制形式 |
| | |
| | | MidResultToRtu midRs = new MidResultToRtu() ; |
| | | midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ;//rtu返回命令结果 发向目的地web URL |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion; //协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.commandId = para.commandId ;//命令ID,发起命令的客户端(web端)生成,以匹配命令结果 |
| | | midRs.downCode = para.commandCode ;//下行命令功能码; |
| | |
| | | |
| | | MidResultFromRtu midRs = new MidResultFromRtu() ; |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion; //协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.upCode = para.upCode ;//上行数据中的功能码 |
| | | midRs.upHex = para.upHex ;//上行数据十六进制形式 |
| | |
| | | MidResultToRtu midRs = new MidResultToRtu() ; |
| | | midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ;//rtu返回命令结果 发向目的地web URL |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion; //协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.commandId = para.commandId ;//命令ID,发起命令的客户端(web端)生成,以匹配命令结果 |
| | | midRs.downCode = para.commandCode ;//下行命令功能码; |
| | |
| | | |
| | | MidResultFromRtu midRs = new MidResultFromRtu() ; |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion; //协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.upCode = para.upCode ;//上行数据中的功能码 |
| | | midRs.upHex = para.upHex ;//上行数据十六进制形式 |
| | |
| | | MidResultToRtu midRs = new MidResultToRtu() ; |
| | | midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ;//rtu返回命令结果 发向目的地web URL |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion; //协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.commandId = para.commandId ;//命令ID,发起命令的客户端(web端)生成,以匹配命令结果 |
| | | midRs.downCode = para.commandCode ;//下行命令功能码; |
| | |
| | | |
| | | MidResultFromRtu midRs = new MidResultFromRtu() ; |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion; //协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.upCode = para.upCode ;//上行数据中的功能码 |
| | | midRs.upHex = para.upHex ;//上行数据十六进制形式 |
| | |
| | | MidResultToRtu midRs = new MidResultToRtu() ; |
| | | midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ;//rtu返回命令结果 发向目的地web URL |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion; //协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.commandId = para.commandId ;//命令ID,发起命令的客户端(web端)生成,以匹配命令结果 |
| | | midRs.downCode = para.commandCode ;//下行命令功能码; |
| | |
| | | |
| | | MidResultFromRtu midRs = new MidResultFromRtu() ; |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion; //协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.upCode = para.upCode ;//上行数据中的功能码 |
| | | midRs.upHex = para.upHex ;//上行数据十六进制形式 |
| | |
| | | MidResultToRtu midRs = new MidResultToRtu() ; |
| | | midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ;//rtu返回命令结果 发向目的地web URL |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion; //协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.commandId = para.commandId ;//命令ID,发起命令的客户端(web端)生成,以匹配命令结果 |
| | | midRs.downCode = para.commandCode ;//下行命令功能码; |
| | |
| | | |
| | | MidResultFromRtu midRs = new MidResultFromRtu() ; |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion; //协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.upCode = para.upCode ;//上行数据中的功能码 |
| | | midRs.upHex = para.upHex ;//上行数据十六进制形式 |
| | |
| | | MidResultToRtu midRs = new MidResultToRtu() ; |
| | | midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ;//rtu返回命令结果 发向目的地web URL |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion; //协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.commandId = para.commandId ;//命令ID,发起命令的客户端(web端)生成,以匹配命令结果 |
| | | midRs.downCode = para.commandCode ;//下行命令功能码; |
| | |
| | | |
| | | MidResultFromRtu midRs = new MidResultFromRtu() ; |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion; //协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.upCode = para.upCode ;//上行数据中的功能码 |
| | | midRs.upHex = para.upHex ;//上行数据十六进制形式 |
| | |
| | | MidResultToRtu midRs = new MidResultToRtu() ; |
| | | midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ;//rtu返回命令结果 发向目的地web URL |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion; //协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.commandId = para.commandId ;//命令ID,发起命令的客户端(web端)生成,以匹配命令结果 |
| | | midRs.downCode = para.commandCode ;//下行命令功能码; |
| | |
| | | |
| | | MidResultFromRtu midRs = new MidResultFromRtu() ; |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion; //协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.upCode = para.upCode ;//上行数据中的功能码 |
| | | midRs.upHex = para.upHex ;//上行数据十六进制形式 |
| | |
| | | MidResultToRtu midRs = new MidResultToRtu() ; |
| | | midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ;//rtu返回命令结果 发向目的地web URL |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion; //协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.commandId = para.commandId ;//命令ID,发起命令的客户端(web端)生成,以匹配命令结果 |
| | | midRs.downCode = para.commandCode ;//下行命令功能码; |
| | |
| | | |
| | | MidResultFromRtu midRs = new MidResultFromRtu() ; |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion; //协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.upCode = para.upCode ;//上行数据中的功能码 |
| | | midRs.upHex = para.upHex ;//上行数据十六进制形式 |
| | |
| | | MidResultToRtu midRs = new MidResultToRtu() ; |
| | | midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ;//rtu返回命令结果 发向目的地web URL |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion; //协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.commandId = para.commandId ;//命令ID,发起命令的客户端(web端)生成,以匹配命令结果 |
| | | midRs.downCode = para.commandCode ;//下行命令功能码; |
| | |
| | | |
| | | MidResultFromRtu midRs = new MidResultFromRtu() ; |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion; //协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.upCode = para.upCode ;//上行数据中的功能码 |
| | | midRs.upHex = para.upHex ;//上行数据十六进制形式 |
| | |
| | | MidResultToRtu midRs = new MidResultToRtu() ; |
| | | midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ;//rtu返回命令结果 发向目的地web URL |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion; //协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.commandId = para.commandId ;//命令ID,发起命令的客户端(web端)生成,以匹配命令结果 |
| | | midRs.downCode = para.commandCode ;//下行命令功能码; |
| | |
| | | |
| | | MidResultFromRtu midRs = new MidResultFromRtu() ; |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion; //协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.upCode = para.upCode ;//上行数据中的功能码 |
| | | midRs.upHex = para.upHex ;//上行数据十六进制形式 |
| | |
| | | MidResultToRtu midRs = new MidResultToRtu() ; |
| | | midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ;//rtu返回命令结果 发向目的地web URL |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion; //协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.commandId = para.commandId ;//命令ID,发起命令的客户端(web端)生成,以匹配命令结果 |
| | | midRs.downCode = para.commandCode ;//下行命令功能码; |
| | |
| | | import com.dy.common.mw.protocol.p206V1.*; |
| | | import com.dy.common.mw.protocol.p206V1.parse.global.GlParse; |
| | | import com.dy.common.mw.protocol.p206V1.upVos.DataCd81Vo; |
| | | import com.dy.common.mw.protocol.rtuState.ValveStateInfo; |
| | | import com.dy.common.util.ByteUtil; |
| | | import org.apache.logging.log4j.LogManager; |
| | | import org.apache.logging.log4j.Logger; |
| | |
| | | |
| | | MidResultFromRtu midRs = new MidResultFromRtu() ; |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion; //协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.upCode = para.upCode ;//上行数据中的功能码 |
| | | midRs.upHex = para.upHex ;//上行数据十六进制形式 |
| | |
| | | downCpParams.setValue( |
| | | null, |
| | | ProtocolConstantV206V1.protocolName, |
| | | para.protocolVersion, |
| | | para.rtuAddr, |
| | | Command.defaultId, |
| | | confirmComCode, |
| | |
| | | |
| | | MidResultToRtu confirmCommand = new MidResultToRtu() ; |
| | | confirmCommand.protocolName = para.protocolName ;//协议名称 |
| | | confirmCommand.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | confirmCommand.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | confirmCommand.commandId = Command.defaultId ;//命令ID,发起命令的客户端(web端)生成,以匹配命令结果 |
| | | confirmCommand.downCode = confirmComCode ;//下行命令功能码; |
| | |
| | | } |
| | | |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | if(para.data != null && para.data.getSubData() != null){ |
| | | DataCd81Vo cdData = (DataCd81Vo)para.data.getSubData() ; |
| | | if(cdData.stateVo != null && cdData.stateVo.valveState != null){ |
| | | callback.notify(new ValveStateInfo(cdData.stateVo.valveState.byteValue()== 1?false:true)); |
| | | } |
| | | } |
| | | |
| | | return new MidResult[]{midRs, confirmCommand} ; |
| | | } |
| | | /** |
| | |
| | | MidResultToRtu midRs = new MidResultToRtu() ; |
| | | midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ;//rtu返回命令结果 发向目的地web URL |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion; //协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.commandId = para.commandId ;//命令ID,发起命令的客户端(web端)生成,以匹配命令结果 |
| | | midRs.downCode = para.commandCode ;//下行命令功能码; |
| | |
| | | import com.dy.common.mw.protocol.*; |
| | | import com.dy.common.mw.protocol.p206V1.*; |
| | | import com.dy.common.mw.protocol.p206V1.parse.global.GlParse; |
| | | import com.dy.common.mw.protocol.p206V1.upVos.DataCd81Vo; |
| | | import com.dy.common.mw.protocol.p206V1.upVos.DataCd83CloseVo; |
| | | import com.dy.common.mw.protocol.p206V1.upVos.DataCd83OpenVo; |
| | | import com.dy.common.mw.protocol.rtuState.ValveStateInfo; |
| | | import com.dy.common.util.ByteUtil; |
| | | import org.apache.logging.log4j.LogManager; |
| | | import org.apache.logging.log4j.Logger; |
| | |
| | | |
| | | MidResultFromRtu midRs = new MidResultFromRtu() ; |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion; //协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.upCode = para.upCode ;//上行数据中的功能码 |
| | | midRs.upHex = para.upHex ;//上行数据十六进制形式 |
| | |
| | | downCpParams.setValue( |
| | | null, |
| | | ProtocolConstantV206V1.protocolName, |
| | | para.protocolVersion, |
| | | para.rtuAddr, |
| | | Command.defaultId, |
| | | confirmComCode, |
| | |
| | | |
| | | MidResultToRtu confirmCommand = new MidResultToRtu() ; |
| | | confirmCommand.protocolName = para.protocolName ;//协议名称 |
| | | confirmCommand.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | confirmCommand.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | confirmCommand.commandId = Command.defaultId ;//命令ID,发起命令的客户端(web端)生成,以匹配命令结果 |
| | | confirmCommand.downCode = confirmComCode ;//下行命令功能码; |
| | |
| | | //低功耗时,尽快发送 |
| | | confirmCommand.isQuickSend = true ; |
| | | } |
| | | if(para.data != null && para.data.getSubData() != null){ |
| | | Object subData = para.data.getSubData() ; |
| | | if(subData instanceof DataCd83OpenVo){ |
| | | callback.notify(new ValveStateInfo(true)); |
| | | }else if(subData instanceof DataCd83CloseVo){ |
| | | callback.notify(new ValveStateInfo(false)); |
| | | } |
| | | } |
| | | |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | return new MidResult[]{midRs, confirmCommand} ; |
| | |
| | | MidResultToRtu midRs = new MidResultToRtu() ; |
| | | midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ;//rtu返回命令结果 发向目的地web URL |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion; //协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.commandId = para.commandId ;//命令ID,发起命令的客户端(web端)生成,以匹配命令结果 |
| | | midRs.downCode = para.commandCode ;//下行命令功能码; |
| | |
| | | import com.dy.common.mw.protocol.p206V1.*; |
| | | import com.dy.common.mw.protocol.p206V1.parse.global.GlParse; |
| | | import com.dy.common.mw.protocol.p206V1.upVos.DataCd84Vo; |
| | | import com.dy.common.mw.protocol.rtuState.ValveStateInfo; |
| | | import com.dy.common.util.ByteUtil; |
| | | import org.apache.logging.log4j.LogManager; |
| | | import org.apache.logging.log4j.Logger; |
| | |
| | | |
| | | MidResultFromRtu midRs = new MidResultFromRtu() ; |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion; //协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.upCode = para.upCode ;//上行数据中的功能码 |
| | | midRs.upHex = para.upHex ;//上行数据十六进制形式 |
| | |
| | | downCpParams.setValue( |
| | | null, |
| | | ProtocolConstantV206V1.protocolName, |
| | | para.protocolVersion, |
| | | para.rtuAddr, |
| | | Command.defaultId, |
| | | confirmComCode, |
| | |
| | | |
| | | MidResultToRtu confirmCommand = new MidResultToRtu() ; |
| | | confirmCommand.protocolName = para.protocolName ;//协议名称 |
| | | confirmCommand.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | confirmCommand.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | confirmCommand.commandId = Command.defaultId ;//命令ID,发起命令的客户端(web端)生成,以匹配命令结果 |
| | | confirmCommand.downCode = confirmComCode ;//下行命令功能码; |
| | |
| | | } |
| | | |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | if(para.data != null && para.data.getSubData() != null){ |
| | | DataCd84Vo cdData = (DataCd84Vo)para.data.getSubData() ; |
| | | if(CommonV1.isCloseValveType(cdData.opType)){ |
| | | callback.notify(new ValveStateInfo(false)) ; |
| | | }else{ |
| | | callback.notify(new ValveStateInfo(true)) ; |
| | | } |
| | | /* 以下判断阀门开启动与关闭态不可取,因为在阀打开过程中,工作报中的阀状态不正确,例如在开启过程中阀门状态是关闭态 |
| | | if(cdData.stateVo != null && cdData.stateVo.valveState != null){ |
| | | callback.notify(new ValveStateInfo(cdData.stateVo.valveState.byteValue()== 1?false:true)); |
| | | } |
| | | */ |
| | | } |
| | | |
| | | return new MidResult[]{midRs, confirmCommand} ; |
| | | } |
| | | /** |
| | |
| | | MidResultToRtu midRs = new MidResultToRtu() ; |
| | | midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ;//rtu返回命令结果 发向目的地web URL |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion; //协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.commandId = para.commandId ;//命令ID,发起命令的客户端(web端)生成,以匹配命令结果 |
| | | midRs.downCode = para.commandCode ;//下行命令功能码; |
| | |
| | | |
| | | MidResultFromRtu midRs = new MidResultFromRtu() ; |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion; //协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.upCode = para.upCode ;//上行数据中的功能码 |
| | | midRs.upHex = para.upHex ;//上行数据十六进制形式 |
| | |
| | | MidResultToRtu midRs = new MidResultToRtu() ; |
| | | midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ;//rtu返回命令结果 发向目的地web URL |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion; //协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.commandId = para.commandId ;//命令ID,发起命令的客户端(web端)生成,以匹配命令结果 |
| | | midRs.downCode = para.commandCode ;//下行命令功能码; |
| | |
| | | |
| | | import com.dy.common.mw.protocol.*; |
| | | import com.dy.common.mw.protocol.p206V1.*; |
| | | import com.dy.common.mw.protocol.p206V1.upVos.DataCd83CloseVo; |
| | | import com.dy.common.mw.protocol.p206V1.upVos.DataCd83OpenVo; |
| | | import com.dy.common.mw.protocol.p206V1.upVos.DataCd92Vo; |
| | | import com.dy.common.mw.protocol.rtuState.ValveStateInfo; |
| | | import com.dy.common.util.ByteUtil; |
| | | import org.apache.logging.log4j.LogManager; |
| | | import org.apache.logging.log4j.Logger; |
| | |
| | | |
| | | MidResultFromRtu midRs = new MidResultFromRtu() ; |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion; //协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.upCode = para.upCode ;//上行数据中的功能码 |
| | | midRs.upHex = para.upHex ;//上行数据十六进制形式 |
| | |
| | | midRs.reportOrResponse_trueOrFalse = false ;//主动上报 |
| | | |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | if(para.data != null && para.data.getSubData() != null){ |
| | | DataCd92Vo subData = (DataCd92Vo)para.data.getSubData() ; |
| | | callback.notify(new ValveStateInfo(subData.success)); |
| | | } |
| | | return new MidResult[]{midRs} ; |
| | | } |
| | | /** |
| | |
| | | MidResultToRtu midRs = new MidResultToRtu() ; |
| | | midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ;//rtu返回命令结果 发向目的地web URL |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion; //协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.commandId = para.commandId ;//命令ID,发起命令的客户端(web端)生成,以匹配命令结果 |
| | | midRs.downCode = para.commandCode ;//下行命令功能码; |
| | |
| | | |
| | | import com.dy.common.mw.protocol.*; |
| | | import com.dy.common.mw.protocol.p206V1.*; |
| | | import com.dy.common.mw.protocol.p206V1.upVos.DataCd92Vo; |
| | | import com.dy.common.mw.protocol.p206V1.upVos.DataCd93Vo; |
| | | import com.dy.common.mw.protocol.rtuState.ValveStateInfo; |
| | | import com.dy.common.util.ByteUtil; |
| | | import org.apache.logging.log4j.LogManager; |
| | | import org.apache.logging.log4j.Logger; |
| | |
| | | |
| | | MidResultFromRtu midRs = new MidResultFromRtu() ; |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion; //协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.upCode = para.upCode ;//上行数据中的功能码 |
| | | midRs.upHex = para.upHex ;//上行数据十六进制形式 |
| | |
| | | midRs.reportOrResponse_trueOrFalse = false ;//主动上报 |
| | | |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | if(para.data != null && para.data.getSubData() != null){ |
| | | DataCd93Vo subData = (DataCd93Vo)para.data.getSubData() ; |
| | | callback.notify(new ValveStateInfo(!subData.success)); |
| | | } |
| | | |
| | | return new MidResult[]{midRs} ; |
| | | } |
| | | /** |
| | |
| | | |
| | | midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ;//rtu返回命令结果 发向目的地web URL |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion; //协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.commandId = para.commandId ;//命令ID,发起命令的客户端(web端)生成,以匹配命令结果 |
| | | midRs.downCode = para.commandCode ;//下行命令功能码; |
| | |
| | | import com.dy.common.mw.protocol.*; |
| | | import com.dy.common.mw.protocol.p206V1.*; |
| | | import com.dy.common.mw.protocol.p206V1.parse.global.GlParse; |
| | | import com.dy.common.mw.protocol.p206V1.upVos.DataCd92Vo; |
| | | import com.dy.common.mw.protocol.p206V1.upVos.DataCd97Vo; |
| | | import com.dy.common.mw.protocol.rtuState.ValveStateInfo; |
| | | import org.apache.logging.log4j.LogManager; |
| | | import org.apache.logging.log4j.Logger; |
| | | |
| | |
| | | |
| | | MidResultFromRtu midRs = new MidResultFromRtu() ; |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion; //协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.upCode = para.upCode ;//上行数据中的功能码 |
| | | midRs.upHex = para.upHex ;//上行数据十六进制形式 |
| | |
| | | midRs.reportOrResponse_trueOrFalse = false ;//主动上报 |
| | | |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | if(para.data != null && para.data.getSubData() != null){ |
| | | DataCd97Vo subData = (DataCd97Vo)para.data.getSubData() ; |
| | | callback.notify(new ValveStateInfo(subData.success)); |
| | | } |
| | | return new MidResult[]{midRs} ; |
| | | } |
| | | /** |
| | |
| | | |
| | | midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ;//rtu返回命令结果 发向目的地web URL |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion; //协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.commandId = para.commandId ;//命令ID,发起命令的客户端(web端)生成,以匹配命令结果 |
| | | midRs.downCode = para.commandCode ;//下行命令功能码; |
| | |
| | | import com.dy.common.mw.protocol.*; |
| | | import com.dy.common.mw.protocol.p206V1.*; |
| | | import com.dy.common.mw.protocol.p206V1.parse.global.GlParse; |
| | | import com.dy.common.mw.protocol.p206V1.upVos.DataCd97Vo; |
| | | import com.dy.common.mw.protocol.p206V1.upVos.DataCd98Vo; |
| | | import com.dy.common.mw.protocol.rtuState.ValveStateInfo; |
| | | import org.apache.logging.log4j.LogManager; |
| | | import org.apache.logging.log4j.Logger; |
| | | |
| | |
| | | |
| | | MidResultFromRtu midRs = new MidResultFromRtu() ; |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion; //协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.upCode = para.upCode ;//上行数据中的功能码 |
| | | midRs.upHex = para.upHex ;//上行数据十六进制形式 |
| | |
| | | midRs.reportOrResponse_trueOrFalse = false ;//主动上报 |
| | | |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | if(para.data != null && para.data.getSubData() != null){ |
| | | DataCd98Vo subData = (DataCd98Vo)para.data.getSubData() ; |
| | | callback.notify(new ValveStateInfo(!subData.success)); |
| | | } |
| | | return new MidResult[]{midRs} ; |
| | | } |
| | | /** |
| | |
| | | |
| | | midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ;//rtu返回命令结果 发向目的地web URL |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion; //协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.commandId = para.commandId ;//命令ID,发起命令的客户端(web端)生成,以匹配命令结果 |
| | | midRs.downCode = para.commandCode ;//下行命令功能码; |
| | |
| | | import com.dy.common.mw.protocol.*; |
| | | import com.dy.common.mw.protocol.p206V1.*; |
| | | import com.dy.common.mw.protocol.p206V1.parse.global.GlParse; |
| | | import com.dy.common.mw.protocol.p206V1.upVos.DataCd98Vo; |
| | | import com.dy.common.mw.protocol.p206V1.upVos.DataCd99Vo; |
| | | import com.dy.common.mw.protocol.rtuState.ValveStateInfo; |
| | | import org.apache.logging.log4j.LogManager; |
| | | import org.apache.logging.log4j.Logger; |
| | | |
| | |
| | | |
| | | MidResultFromRtu midRs = new MidResultFromRtu() ; |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion; //协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.upCode = para.upCode ;//上行数据中的功能码 |
| | | midRs.upHex = para.upHex ;//上行数据十六进制形式 |
| | |
| | | midRs.reportOrResponse_trueOrFalse = false ;//主动上报 |
| | | |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | if(para.data != null && para.data.getSubData() != null){ |
| | | DataCd99Vo subData = (DataCd99Vo)para.data.getSubData() ; |
| | | callback.notify(new ValveStateInfo(subData.success)); |
| | | } |
| | | return new MidResult[]{midRs} ; |
| | | } |
| | | /** |
| | |
| | | |
| | | midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ;//rtu返回命令结果 发向目的地web URL |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion; //协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.commandId = para.commandId ;//命令ID,发起命令的客户端(web端)生成,以匹配命令结果 |
| | | midRs.downCode = para.commandCode ;//下行命令功能码; |
| | |
| | | import com.dy.common.mw.protocol.*; |
| | | import com.dy.common.mw.protocol.p206V1.*; |
| | | import com.dy.common.mw.protocol.p206V1.parse.global.GlParse; |
| | | import com.dy.common.mw.protocol.p206V1.upVos.DataCd99Vo; |
| | | import com.dy.common.mw.protocol.p206V1.upVos.DataCdA0Vo; |
| | | import com.dy.common.mw.protocol.rtuState.ValveStateInfo; |
| | | import org.apache.logging.log4j.LogManager; |
| | | import org.apache.logging.log4j.Logger; |
| | | |
| | |
| | | |
| | | MidResultFromRtu midRs = new MidResultFromRtu() ; |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion; //协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.upCode = para.upCode ;//上行数据中的功能码 |
| | | midRs.upHex = para.upHex ;//上行数据十六进制形式 |
| | |
| | | midRs.reportOrResponse_trueOrFalse = false ;//主动上报 |
| | | |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | if(para.data != null && para.data.getSubData() != null){ |
| | | DataCdA0Vo subData = (DataCdA0Vo)para.data.getSubData() ; |
| | | callback.notify(new ValveStateInfo(subData.success)); |
| | | } |
| | | return new MidResult[]{midRs} ; |
| | | } |
| | | /** |
| | |
| | | |
| | | midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ;//rtu返回命令结果 发向目的地web URL |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion; //协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.commandId = para.commandId ;//命令ID,发起命令的客户端(web端)生成,以匹配命令结果 |
| | | midRs.downCode = para.commandCode ;//下行命令功能码; |
| | |
| | | |
| | | MidResultFromRtu midRs = new MidResultFromRtu() ; |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion; //协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.upCode = para.upCode ;//上行数据中的功能码 |
| | | midRs.upHex = para.upHex ;//上行数据十六进制形式 |
| | |
| | | |
| | | midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ;//rtu返回命令结果 发向目的地web URL |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion; //协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.commandId = para.commandId ;//命令ID,发起命令的客户端(web端)生成,以匹配命令结果 |
| | | midRs.downCode = para.commandCode ;//下行命令功能码; |
| | |
| | | |
| | | MidResultFromRtu midRs = new MidResultFromRtu() ; |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion; //协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.upCode = para.upCode ;//上行数据中的功能码 |
| | | midRs.upHex = para.upHex ;//上行数据十六进制形式 |
| | |
| | | MidResultToRtu midRs = new MidResultToRtu() ; |
| | | midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ;//rtu返回命令结果 发向目的地web URL |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion; //协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.commandId = para.commandId ;//命令ID,发起命令的客户端(web端)生成,以匹配命令结果 |
| | | midRs.downCode = para.commandCode ;//下行命令功能码; |
| | |
| | | MidResultToRtu midRs = new MidResultToRtu() ; |
| | | midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ;//rtu返回命令结果 发向目的地web URL |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion; //协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.commandId = para.commandId ;//命令ID,发起命令的客户端(web端)生成,以匹配命令结果 |
| | | midRs.downCode = para.commandCode ;//下行命令功能码; |
| | |
| | | import com.dy.common.mw.protocol.p206V1.*; |
| | | import com.dy.common.mw.protocol.p206V1.parse.global.GlParse; |
| | | import com.dy.common.mw.protocol.p206V1.upVos.DataCdC0Vo; |
| | | import com.dy.common.mw.protocol.rtuState.ValveStateInfo; |
| | | import com.dy.common.util.ByteUtil; |
| | | import org.apache.logging.log4j.LogManager; |
| | | import org.apache.logging.log4j.Logger; |
| | |
| | | |
| | | MidResultFromRtu midRs = new MidResultFromRtu() ; |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion; //协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.upCode = para.upCode ;//上行数据中的功能码 |
| | | midRs.upHex = para.upHex ;//上行数据十六进制形式 |
| | |
| | | downCpParams.setValue( |
| | | null, |
| | | ProtocolConstantV206V1.protocolName, |
| | | para.protocolVersion, |
| | | para.rtuAddr, |
| | | Command.defaultId, |
| | | confirmComCode, |
| | |
| | | |
| | | MidResultToRtu confirmCommand = new MidResultToRtu() ; |
| | | confirmCommand.protocolName = para.protocolName ;//协议名称 |
| | | confirmCommand.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | confirmCommand.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | confirmCommand.commandId = Command.defaultId ;//命令ID,发起命令的客户端(web端)生成,以匹配命令结果 |
| | | confirmCommand.downCode = confirmComCode ;//下行命令功能码; |
| | |
| | | } |
| | | |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | if(para.data != null && para.data.getSubData() != null){ |
| | | DataCdC0Vo cdData = (DataCdC0Vo)para.data.getSubData() ; |
| | | if(cdData.stateVo != null && cdData.stateVo.valveState != null){ |
| | | callback.notify(new ValveStateInfo(cdData.stateVo.valveState.byteValue()== 1?false:true)); |
| | | } |
| | | } |
| | | |
| | | return new MidResult[]{midRs, confirmCommand} ; |
| | | } |
| | | /** |
| | |
| | | this.clear(); |
| | | boolean isFail = false ; |
| | | String upCode = null ; |
| | | Short protocolVersion = null ; |
| | | try{ |
| | | CommonV2 cp = new CommonV2() ; |
| | | cp.checkHead(upBuffer) ; |
| | |
| | | return new MidResult[]{(new MidResultError(ProtocolConstantV206V2.protocolName, rtuAddr, "严重错误,上行数据CRC检查失败," + crcStr, null))} ; |
| | | } |
| | | rtuAddr = cp.parseRtuAddr(upBuffer) ; |
| | | protocolVersion = cp.parseVersion(upBuffer) ; |
| | | upCode = cp.parseCode(upBuffer) ; |
| | | if(upCode == null){ |
| | | return new MidResult[]{(new MidResultError(ProtocolConstantV206V2.protocolName, rtuAddr, "严重错误,未能从上行数据中解析出功能码!", null))} ; |
| | |
| | | Data upData = new Data() ; |
| | | upData.setRtuAddr(rtuAddr) ; |
| | | upData.setProtocol(ProtocolConstantV206V2.protocolName); |
| | | upData.setProtocolVer(ProtocolConstantV206V2.protocolVer); |
| | | upData.setProtocolVer(protocolVersion); |
| | | upData.setCode(upCode) ; |
| | | upData.setHex(upHex) ; |
| | | |
| | | |
| | | DataV2 dV2 = new DataV2() ; |
| | | //dV2.version = cp.parseVersion(upBuffer) ; |
| | | dV2.rtuAddr = rtuAddr ; |
| | | dV2.dt = DateTime.yyyy_MM_dd_HH_mm_ss() ; |
| | | |
| | | upData.setSubData(dV2) ; |
| | | |
| | | this.upCpParams.setValue(ProtocolConstantV206V2.protocolName, |
| | | protocolVersion, |
| | | rtuAddr, |
| | | upCode, |
| | | upHex, |
| | |
| | | public void callback(Boolean flag) { |
| | | reportOrResponse_trueOrFalse = flag ; |
| | | rtuAddrInData = dV2.getRtuAddr() ; |
| | | } |
| | | @Override |
| | | public void notify(NotifyInfo ...infos) { |
| | | } |
| | | }); |
| | | } |
| | |
| | | this.downCpParams.setValue( |
| | | RtuResultSendWebUrl, |
| | | ProtocolConstantV206V2.protocolName, |
| | | command.protocolVersion==null?ProtocolConstantV206V2.protocolVer:command.protocolVersion , |
| | | rtuAddr, |
| | | command.getId(), |
| | | commandCode, |
| | |
| | | |
| | | import com.dy.common.mw.protocol.AnnotationOnLine; |
| | | import com.dy.common.mw.protocol.OnLine; |
| | | import com.dy.common.mw.protocol.p206V1.ProtocolConstantV206V1; |
| | | |
| | | @AnnotationOnLine( |
| | | enable = true, |
| | |
| | | olr.result = OnLine.OnLineAction_success ; |
| | | olr.rtuAddr = cp.parseRtuAddr(upBuf) ; |
| | | olr.protocolName = ProtocolConstantV206V2.protocolName ; |
| | | olr.protocolVersion = cp.parseVersion(upBuf) ; |
| | | } |
| | | return olr; |
| | | } |
| | |
| | | |
| | | public String rtuResultSendWebUrl ;//rtu返回命令结果 发向目的地web URL |
| | | public String protocolName ; |
| | | public Short protocolVersion ; |
| | | public String rtuAddr ;//控制器地址 |
| | | public String commandId ; |
| | | public String commandCode ; |
| | |
| | | |
| | | public void clear(){ |
| | | this.protocolName = null ; |
| | | this.rtuAddr = null ; |
| | | this.protocolVersion = null ; |
| | | this.rtuAddr = null ; |
| | | this.commandId = null ; |
| | | this.commandCode = null ; |
| | | this.param = null ; |
| | |
| | | public void setValue( |
| | | String rtuResultSendWebUrl, |
| | | String protocolName, |
| | | Short protocolVersion, |
| | | String rtuAddr, |
| | | String commandId, |
| | | String commandCode, |
| | |
| | | Object attachment ){ |
| | | this.rtuResultSendWebUrl = rtuResultSendWebUrl ; |
| | | this.protocolName = protocolName ; |
| | | this.protocolVersion = protocolVersion ; |
| | | this.rtuAddr = rtuAddr ; |
| | | this.commandId = commandId ; |
| | | this.commandCode = commandCode ; |
| | |
| | | public class ParseParamsForUpV2 implements CodeParseParams{ |
| | | |
| | | public String protocolName ;//协议名称 |
| | | public Short protocolVersion ;//协议版本号 |
| | | public String rtuAddr ;//控制器址 |
| | | public String upCode ;//上行报文数据中的功能码 |
| | | public String upHex ;//行报文数据十六进制形式 |
| | |
| | | |
| | | public void clear(){ |
| | | this.protocolName = null ; |
| | | this.rtuAddr = null ; |
| | | this.protocolVersion = null ; |
| | | this.rtuAddr = null ; |
| | | this.upCode = null ; |
| | | this.upHex = null ; |
| | | this.upBuffer = null ; |
| | | this.data = null ; |
| | | } |
| | | |
| | | public void setValue(String protocolName, |
| | | String rtuAddr, |
| | | String upCode, |
| | | String upHex, |
| | | byte[] upBuffer, |
| | | Data data){ |
| | | public void setValue(String protocolName, |
| | | Short protocolVersion, |
| | | String rtuAddr, |
| | | String upCode, |
| | | String upHex, |
| | | byte[] upBuffer, |
| | | Data data){ |
| | | this.protocolName = protocolName ; |
| | | this.rtuAddr = rtuAddr ; |
| | | this.protocolVersion = protocolVersion ; |
| | | this.rtuAddr = rtuAddr ; |
| | | this.upCode = upCode ; |
| | | this.upHex = upHex ; |
| | | this.upBuffer = upBuffer ; |
| | |
| | | |
| | | MidResultToRtu midRs = new MidResultToRtu() ; |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.commandId = para.commandId ;//命令ID,发起命令的客户端(web端)生成,以匹配命令结果 |
| | | midRs.downCode = para.commandCode ;//下行命令功能码; |
| | |
| | | CommonV2 commonV_1 = new CommonV2() ; |
| | | byte[] bytes ; |
| | | byte[] bsHead = new byte[ProtocolConstantV206V2.lenHead2Code] ; |
| | | byte index = GlCreate.createHead(bsHead); |
| | | byte index = GlCreate.createHead(para.protocolVersion, bsHead); |
| | | |
| | | index++ ; |
| | | bsHead[index] = commonV_1.createCtrl((byte)0, (byte)0) ; |
| | |
| | | |
| | | |
| | | import com.dy.common.mw.protocol.*; |
| | | import com.dy.common.mw.protocol.p206V1.upVos.DataCdC0Vo; |
| | | import com.dy.common.mw.protocol.p206V2.*; |
| | | import com.dy.common.mw.protocol.p206V2.parse.global.GlParse; |
| | | import com.dy.common.mw.protocol.p206V2.upVos.DataCd02Vo; |
| | | import com.dy.common.mw.protocol.rtuState.ValveStateInfo; |
| | | import com.dy.common.util.ByteUtil; |
| | | import org.apache.logging.log4j.LogManager; |
| | | import org.apache.logging.log4j.Logger; |
| | |
| | | |
| | | MidResultFromRtu midRs = new MidResultFromRtu() ; |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.upCode = para.upCode ;//上行数据中的功能码 |
| | | midRs.upHex = para.upHex ;//上行数据十六进制形式 |
| | |
| | | downCpParams.setValue( |
| | | null, |
| | | ProtocolConstantV206V2.protocolName, |
| | | para.protocolVersion, |
| | | para.rtuAddr, |
| | | Command.defaultId, |
| | | confirmComCode, |
| | |
| | | |
| | | MidResultToRtu confirmCommand = new MidResultToRtu() ; |
| | | confirmCommand.protocolName = para.protocolName ;//协议名称 |
| | | confirmCommand.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | confirmCommand.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | confirmCommand.commandId = Command.defaultId ;//命令ID,发起命令的客户端(web端)生成,以匹配命令结果 |
| | | confirmCommand.downCode = confirmComCode ;//下行命令功能码; |
| | |
| | | //低功耗时,尽快发送 |
| | | confirmCommand.isQuickSend = true ; |
| | | } |
| | | |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | if(para.data != null && para.data.getSubData() != null){ |
| | | DataCd02Vo cdData = (DataCd02Vo)para.data.getSubData() ; |
| | | if(cdData.stateVo != null && cdData.stateVo.valveState != null){ |
| | | callback.notify(new ValveStateInfo(cdData.stateVo.valveState.byteValue()== 1?false:true)); |
| | | } |
| | | } |
| | | |
| | | return new MidResult[]{midRs, confirmCommand} ; |
| | | } |
| | | /** |
| | |
| | | MidResultToRtu midRs = new MidResultToRtu() ; |
| | | midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ;//rtu返回命令结果 发向目的地web URL |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.commandId = para.commandId ;//命令ID,发起命令的客户端(web端)生成,以匹配命令结果 |
| | | midRs.downCode = para.commandCode ;//下行命令功能码; |
| | |
| | | CommonV2 commonV_1 = new CommonV2(); |
| | | byte[] bytes; |
| | | byte[] bsHead = new byte[ProtocolConstantV206V2.lenHead2Code]; |
| | | byte index = GlCreate.createHead(bsHead); |
| | | byte index = GlCreate.createHead(para.protocolVersion, bsHead); |
| | | |
| | | index++; |
| | | bsHead[index] = commonV_1.createCtrl((byte) 0, (byte) 0); |
| | |
| | | |
| | | MidResultFromRtu midRs = new MidResultFromRtu() ; |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.upCode = para.upCode ;//上行数据中的功能码 |
| | | midRs.upHex = para.upHex ;//上行数据十六进制形式 |
| | |
| | | MidResultToRtu midRs = new MidResultToRtu() ; |
| | | midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ;//rtu返回命令结果 发向目的地web URL |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.commandId = para.commandId ;//命令ID,发起命令的客户端(web端)生成,以匹配命令结果 |
| | | midRs.downCode = para.commandCode ;//下行命令功能码; |
| | |
| | | CommonV2 commonV_1 = new CommonV2() ; |
| | | byte[] bytes ; |
| | | byte[] bsHead = new byte[ProtocolConstantV206V2.lenHead2Code] ; |
| | | byte index = GlCreate.createHead(bsHead); |
| | | byte index = GlCreate.createHead(para.protocolVersion, bsHead); |
| | | |
| | | index++ ; |
| | | bsHead[index] = commonV_1.createCtrl((byte)0, (byte)0) ; |
| | |
| | | |
| | | MidResultFromRtu midRs = new MidResultFromRtu() ; |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.upCode = para.upCode ;//上行数据中的功能码 |
| | | midRs.upHex = para.upHex ;//上行数据十六进制形式 |
| | |
| | | MidResultToRtu midRs = new MidResultToRtu() ; |
| | | midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ;//rtu返回命令结果 发向目的地web URL |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.commandId = para.commandId ;//命令ID,发起命令的客户端(web端)生成,以匹配命令结果 |
| | | midRs.downCode = para.commandCode ;//下行命令功能码; |
| | |
| | | CommonV2 commonV_1 = new CommonV2() ; |
| | | byte[] bytes ; |
| | | byte[] bsHead = new byte[ProtocolConstantV206V2.lenHead2Code] ; |
| | | byte index = GlCreate.createHead(bsHead); |
| | | byte index = GlCreate.createHead(para.protocolVersion, bsHead); |
| | | |
| | | index++ ; |
| | | bsHead[index] = commonV_1.createCtrl((byte)0, (byte)0) ; |
| | |
| | | |
| | | MidResultFromRtu midRs = new MidResultFromRtu() ; |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.upCode = para.upCode ;//上行数据中的功能码 |
| | | midRs.upHex = para.upHex ;//上行数据十六进制形式 |
| | |
| | | MidResultToRtu midRs = new MidResultToRtu() ; |
| | | midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ;//rtu返回命令结果 发向目的地web URL |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.commandId = para.commandId ;//命令ID,发起命令的客户端(web端)生成,以匹配命令结果 |
| | | midRs.downCode = para.commandCode ;//下行命令功能码; |
| | |
| | | CommonV2 commonV_1 = new CommonV2() ; |
| | | byte[] bytes ; |
| | | byte[] bsHead = new byte[ProtocolConstantV206V2.lenHead2Code] ; |
| | | byte index = GlCreate.createHead(bsHead); |
| | | byte index = GlCreate.createHead(para.protocolVersion, bsHead); |
| | | |
| | | index++ ; |
| | | bsHead[index] = commonV_1.createCtrl((byte)0, (byte)0) ; |
| | |
| | | |
| | | MidResultFromRtu midRs = new MidResultFromRtu() ; |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.upCode = para.upCode ;//上行数据中的功能码 |
| | | midRs.upHex = para.upHex ;//上行数据十六进制形式 |
| | |
| | | MidResultToRtu midRs = new MidResultToRtu() ; |
| | | midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ;//rtu返回命令结果 发向目的地web URL |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.commandId = para.commandId ;//命令ID,发起命令的客户端(web端)生成,以匹配命令结果 |
| | | midRs.downCode = para.commandCode ;//下行命令功能码; |
| | |
| | | CommonV2 commonV_1 = new CommonV2(); |
| | | byte[] bytes; |
| | | byte[] bsHead = new byte[ProtocolConstantV206V2.lenHead2Code]; |
| | | byte index = GlCreate.createHead(bsHead); |
| | | byte index = GlCreate.createHead(para.protocolVersion, bsHead); |
| | | |
| | | index++; |
| | | bsHead[index] = commonV_1.createCtrl((byte) 0, (byte) 0); |
| | |
| | | |
| | | MidResultFromRtu midRs = new MidResultFromRtu() ; |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.upCode = para.upCode ;//上行数据中的功能码 |
| | | midRs.upHex = para.upHex ;//上行数据十六进制形式 |
| | |
| | | MidResultToRtu midRs = new MidResultToRtu() ; |
| | | midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ;//rtu返回命令结果 发向目的地web URL |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.commandId = para.commandId ;//命令ID,发起命令的客户端(web端)生成,以匹配命令结果 |
| | | midRs.downCode = para.commandCode ;//下行命令功能码; |
| | |
| | | CommonV2 commonV_1 = new CommonV2(); |
| | | byte[] bytes; |
| | | byte[] bsHead = new byte[ProtocolConstantV206V2.lenHead2Code]; |
| | | byte index = GlCreate.createHead(bsHead); |
| | | byte index = GlCreate.createHead(para.protocolVersion, bsHead); |
| | | |
| | | index++; |
| | | bsHead[index] = commonV_1.createCtrl((byte) 0, (byte) 0); |
| | |
| | | |
| | | MidResultFromRtu midRs = new MidResultFromRtu() ; |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.upCode = para.upCode ;//上行数据中的功能码 |
| | | midRs.upHex = para.upHex ;//上行数据十六进制形式 |
| | |
| | | MidResultToRtu midRs = new MidResultToRtu() ; |
| | | midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ;//rtu返回命令结果 发向目的地web URL |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.commandId = para.commandId ;//命令ID,发起命令的客户端(web端)生成,以匹配命令结果 |
| | | midRs.downCode = para.commandCode ;//下行命令功能码; |
| | |
| | | CommonV2 commonV_1 = new CommonV2(); |
| | | byte[] bytes; |
| | | byte[] bsHead = new byte[ProtocolConstantV206V2.lenHead2Code]; |
| | | byte index = GlCreate.createHead(bsHead); |
| | | byte index = GlCreate.createHead(para.protocolVersion, bsHead); |
| | | |
| | | index++; |
| | | bsHead[index] = commonV_1.createCtrl((byte) 0, (byte) 0); |
| | |
| | | |
| | | MidResultFromRtu midRs = new MidResultFromRtu() ; |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.upCode = para.upCode ;//上行数据中的功能码 |
| | | midRs.upHex = para.upHex ;//上行数据十六进制形式 |
| | |
| | | MidResultToRtu midRs = new MidResultToRtu() ; |
| | | midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ;//rtu返回命令结果 发向目的地web URL |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.commandId = para.commandId ;//命令ID,发起命令的客户端(web端)生成,以匹配命令结果 |
| | | midRs.downCode = para.commandCode ;//下行命令功能码; |
| | |
| | | CommonV2 commonV_1 = new CommonV2(); |
| | | byte[] bytes; |
| | | byte[] bsHead = new byte[ProtocolConstantV206V2.lenHead2Code]; |
| | | byte index = GlCreate.createHead(bsHead); |
| | | byte index = GlCreate.createHead(para.protocolVersion, bsHead); |
| | | |
| | | index++; |
| | | bsHead[index] = commonV_1.createCtrl((byte) 0, (byte) 0); |
| | |
| | | |
| | | MidResultFromRtu midRs = new MidResultFromRtu() ; |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.upCode = para.upCode ;//上行数据中的功能码 |
| | | midRs.upHex = para.upHex ;//上行数据十六进制形式 |
| | |
| | | MidResultToRtu midRs = new MidResultToRtu() ; |
| | | midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ;//rtu返回命令结果 发向目的地web URL |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.commandId = para.commandId ;//命令ID,发起命令的客户端(web端)生成,以匹配命令结果 |
| | | midRs.downCode = para.commandCode ;//下行命令功能码; |
| | |
| | | CommonV2 commonV_1 = new CommonV2(); |
| | | byte[] bytes; |
| | | byte[] bsHead = new byte[ProtocolConstantV206V2.lenHead2Code]; |
| | | byte index = GlCreate.createHead(bsHead); |
| | | byte index = GlCreate.createHead(para.protocolVersion, bsHead); |
| | | |
| | | index++; |
| | | bsHead[index] = commonV_1.createCtrl((byte) 0, (byte) 0); |
| | |
| | | |
| | | MidResultFromRtu midRs = new MidResultFromRtu() ; |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.upCode = para.upCode ;//上行数据中的功能码 |
| | | midRs.upHex = para.upHex ;//上行数据十六进制形式 |
| | |
| | | MidResultToRtu midRs = new MidResultToRtu() ; |
| | | midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ;//rtu返回命令结果 发向目的地web URL |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.commandId = para.commandId ;//命令ID,发起命令的客户端(web端)生成,以匹配命令结果 |
| | | midRs.downCode = para.commandCode ;//下行命令功能码; |
| | |
| | | CommonV2 commonV_1 = new CommonV2(); |
| | | byte[] bytes; |
| | | byte[] bsHead = new byte[ProtocolConstantV206V2.lenHead2Code]; |
| | | byte index = GlCreate.createHead(bsHead); |
| | | byte index = GlCreate.createHead(para.protocolVersion, bsHead); |
| | | |
| | | index++; |
| | | bsHead[index] = commonV_1.createCtrl((byte) 0, (byte) 0); |
| | |
| | | |
| | | MidResultFromRtu midRs = new MidResultFromRtu() ; |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.upCode = para.upCode ;//上行数据中的功能码 |
| | | midRs.upHex = para.upHex ;//上行数据十六进制形式 |
| | |
| | | MidResultToRtu midRs = new MidResultToRtu() ; |
| | | midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ;//rtu返回命令结果 发向目的地web URL |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.commandId = para.commandId ;//命令ID,发起命令的客户端(web端)生成,以匹配命令结果 |
| | | midRs.downCode = para.commandCode ;//下行命令功能码; |
| | |
| | | CommonV2 commonV_1 = new CommonV2() ; |
| | | byte[] bytes ; |
| | | byte[] bsHead = new byte[ProtocolConstantV206V2.lenHead2Code] ; |
| | | byte index = GlCreate.createHead(bsHead); |
| | | byte index = GlCreate.createHead(para.protocolVersion, bsHead); |
| | | |
| | | index++ ; |
| | | bsHead[index] = commonV_1.createCtrl((byte)0, (byte)0) ; |
| | |
| | | |
| | | MidResultFromRtu midRs = new MidResultFromRtu() ; |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.upCode = para.upCode ;//上行数据中的功能码 |
| | | midRs.upHex = para.upHex ;//上行数据十六进制形式 |
| | |
| | | MidResultToRtu midRs = new MidResultToRtu() ; |
| | | midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ;//rtu返回命令结果 发向目的地web URL |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.commandId = para.commandId ;//命令ID,发起命令的客户端(web端)生成,以匹配命令结果 |
| | | midRs.downCode = para.commandCode ;//下行命令功能码; |
| | |
| | | CommonV2 commonV_1 = new CommonV2() ; |
| | | byte[] bytes ; |
| | | byte[] bsHead = new byte[ProtocolConstantV206V2.lenHead2Code] ; |
| | | byte index = GlCreate.createHead(bsHead); |
| | | byte index = GlCreate.createHead(para.protocolVersion, bsHead); |
| | | |
| | | index++ ; |
| | | bsHead[index] = commonV_1.createCtrl((byte)0, (byte)0) ; |
| | |
| | | |
| | | MidResultFromRtu midRs = new MidResultFromRtu() ; |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.upCode = para.upCode ;//上行数据中的功能码 |
| | | midRs.upHex = para.upHex ;//上行数据十六进制形式 |
| | |
| | | MidResultToRtu midRs = new MidResultToRtu() ; |
| | | midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ;//rtu返回命令结果 发向目的地web URL |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.commandId = para.commandId ;//命令ID,发起命令的客户端(web端)生成,以匹配命令结果 |
| | | midRs.downCode = para.commandCode ;//下行命令功能码; |
| | |
| | | CommonV2 commonV_1 = new CommonV2() ; |
| | | byte[] bytes ; |
| | | byte[] bsHead = new byte[ProtocolConstantV206V2.lenHead2Code] ; |
| | | byte index = GlCreate.createHead(bsHead); |
| | | byte index = GlCreate.createHead(para.protocolVersion, bsHead); |
| | | |
| | | index++ ; |
| | | bsHead[index] = commonV_1.createCtrl((byte)0, (byte)0) ; |
| | |
| | | |
| | | MidResultFromRtu midRs = new MidResultFromRtu() ; |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.upCode = para.upCode ;//上行数据中的功能码 |
| | | midRs.upHex = para.upHex ;//上行数据十六进制形式 |
| | |
| | | MidResultToRtu midRs = new MidResultToRtu() ; |
| | | midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ;//rtu返回命令结果 发向目的地web URL |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.commandId = para.commandId ;//命令ID,发起命令的客户端(web端)生成,以匹配命令结果 |
| | | midRs.downCode = para.commandCode ;//下行命令功能码; |
| | |
| | | CommonV2 commonV_1 = new CommonV2() ; |
| | | byte[] bytes ; |
| | | byte[] bsHead = new byte[ProtocolConstantV206V2.lenHead2Code] ; |
| | | byte index = GlCreate.createHead(bsHead); |
| | | byte index = GlCreate.createHead(para.protocolVersion, bsHead); |
| | | |
| | | index++ ; |
| | | bsHead[index] = commonV_1.createCtrl((byte)0, (byte)0) ; |
| | |
| | | |
| | | MidResultFromRtu midRs = new MidResultFromRtu() ; |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.upCode = para.upCode ;//上行数据中的功能码 |
| | | midRs.upHex = para.upHex ;//上行数据十六进制形式 |
| | |
| | | MidResultToRtu midRs = new MidResultToRtu() ; |
| | | midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ;//rtu返回命令结果 发向目的地web URL |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.commandId = para.commandId ;//命令ID,发起命令的客户端(web端)生成,以匹配命令结果 |
| | | midRs.downCode = para.commandCode ;//下行命令功能码; |
| | |
| | | CommonV2 commonV_1 = new CommonV2() ; |
| | | byte[] bytes ; |
| | | byte[] bsHead = new byte[ProtocolConstantV206V2.lenHead2Code] ; |
| | | byte index = GlCreate.createHead(bsHead); |
| | | byte index = GlCreate.createHead(para.protocolVersion, bsHead); |
| | | |
| | | index++ ; |
| | | bsHead[index] = commonV_1.createCtrl((byte)0, (byte)0) ; |
| | |
| | | |
| | | MidResultFromRtu midRs = new MidResultFromRtu() ; |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.upCode = para.upCode ;//上行数据中的功能码 |
| | | midRs.upHex = para.upHex ;//上行数据十六进制形式 |
| | |
| | | MidResultToRtu midRs = new MidResultToRtu() ; |
| | | midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ;//rtu返回命令结果 发向目的地web URL |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.commandId = para.commandId ;//命令ID,发起命令的客户端(web端)生成,以匹配命令结果 |
| | | midRs.downCode = para.commandCode ;//下行命令功能码; |
| | |
| | | CommonV2 commonV_1 = new CommonV2() ; |
| | | byte[] bytes ; |
| | | byte[] bsHead = new byte[ProtocolConstantV206V2.lenHead2Code] ; |
| | | byte index = GlCreate.createHead(bsHead); |
| | | byte index = GlCreate.createHead(para.protocolVersion, bsHead); |
| | | |
| | | index++ ; |
| | | bsHead[index] = commonV_1.createCtrl((byte)0, (byte)0) ; |
| | |
| | | |
| | | MidResultFromRtu midRs = new MidResultFromRtu() ; |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.upCode = para.upCode ;//上行数据中的功能码 |
| | | midRs.upHex = para.upHex ;//上行数据十六进制形式 |
| | |
| | | MidResultToRtu midRs = new MidResultToRtu() ; |
| | | midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ;//rtu返回命令结果 发向目的地web URL |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.commandId = para.commandId ;//命令ID,发起命令的客户端(web端)生成,以匹配命令结果 |
| | | midRs.downCode = para.commandCode ;//下行命令功能码; |
| | |
| | | CommonV2 commonV_1 = new CommonV2() ; |
| | | byte[] bytes ; |
| | | byte[] bsHead = new byte[ProtocolConstantV206V2.lenHead2Code] ; |
| | | byte index = GlCreate.createHead(bsHead); |
| | | byte index = GlCreate.createHead(para.protocolVersion, bsHead); |
| | | |
| | | index++ ; |
| | | bsHead[index] = commonV_1.createCtrl((byte)0, (byte)0) ; |
| | |
| | | |
| | | MidResultFromRtu midRs = new MidResultFromRtu() ; |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.upCode = para.upCode ;//上行数据中的功能码 |
| | | midRs.upHex = para.upHex ;//上行数据十六进制形式 |
| | |
| | | MidResultToRtu midRs = new MidResultToRtu() ; |
| | | midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ;//rtu返回命令结果 发向目的地web URL |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.commandId = para.commandId ;//命令ID,发起命令的客户端(web端)生成,以匹配命令结果 |
| | | midRs.downCode = para.commandCode ;//下行命令功能码; |
| | |
| | | CommonV2 commonV_1 = new CommonV2() ; |
| | | byte[] bytes ; |
| | | byte[] bsHead = new byte[ProtocolConstantV206V2.lenHead2Code] ; |
| | | byte index = GlCreate.createHead(bsHead); |
| | | byte index = GlCreate.createHead(para.protocolVersion, bsHead); |
| | | |
| | | index++ ; |
| | | bsHead[index] = commonV_1.createCtrl((byte)0, (byte)0) ; |
| | |
| | | |
| | | MidResultFromRtu midRs = new MidResultFromRtu() ; |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.upCode = para.upCode ;//上行数据中的功能码 |
| | | midRs.upHex = para.upHex ;//上行数据十六进制形式 |
| | |
| | | MidResultToRtu midRs = new MidResultToRtu() ; |
| | | midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ;//rtu返回命令结果 发向目的地web URL |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.commandId = para.commandId ;//命令ID,发起命令的客户端(web端)生成,以匹配命令结果 |
| | | midRs.downCode = para.commandCode ;//下行命令功能码; |
| | |
| | | CommonV2 commonV_1 = new CommonV2() ; |
| | | byte[] bytes ; |
| | | byte[] bsHead = new byte[ProtocolConstantV206V2.lenHead2Code] ; |
| | | byte index = GlCreate.createHead(bsHead); |
| | | byte index = GlCreate.createHead(para.protocolVersion, bsHead); |
| | | |
| | | index++ ; |
| | | bsHead[index] = commonV_1.createCtrl((byte)0, (byte)0) ; |
| | |
| | | |
| | | MidResultFromRtu midRs = new MidResultFromRtu() ; |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.upCode = para.upCode ;//上行数据中的功能码 |
| | | midRs.upHex = para.upHex ;//上行数据十六进制形式 |
| | |
| | | MidResultToRtu midRs = new MidResultToRtu() ; |
| | | midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ;//rtu返回命令结果 发向目的地web URL |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.commandId = para.commandId ;//命令ID,发起命令的客户端(web端)生成,以匹配命令结果 |
| | | midRs.downCode = para.commandCode ;//下行命令功能码; |
| | |
| | | CommonV2 commonV_1 = new CommonV2() ; |
| | | byte[] bytes ; |
| | | byte[] bsHead = new byte[ProtocolConstantV206V2.lenHead2Code] ; |
| | | byte index = GlCreate.createHead(bsHead); |
| | | byte index = GlCreate.createHead(para.protocolVersion, bsHead); |
| | | |
| | | index++ ; |
| | | bsHead[index] = commonV_1.createCtrl((byte)0, (byte)0) ; |
| | |
| | | |
| | | MidResultFromRtu midRs = new MidResultFromRtu() ; |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.upCode = para.upCode ;//上行数据中的功能码 |
| | | midRs.upHex = para.upHex ;//上行数据十六进制形式 |
| | |
| | | MidResultToRtu midRs = new MidResultToRtu() ; |
| | | midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ;//rtu返回命令结果 发向目的地web URL |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.commandId = para.commandId ;//命令ID,发起命令的客户端(web端)生成,以匹配命令结果 |
| | | midRs.downCode = para.commandCode ;//下行命令功能码; |
| | |
| | | CommonV2 commonV_1 = new CommonV2() ; |
| | | byte[] bytes ; |
| | | byte[] bsHead = new byte[ProtocolConstantV206V2.lenHead2Code] ; |
| | | byte index = GlCreate.createHead(bsHead); |
| | | byte index = GlCreate.createHead(para.protocolVersion, bsHead); |
| | | |
| | | index++ ; |
| | | bsHead[index] = commonV_1.createCtrl((byte)0, (byte)0) ; |
| | |
| | | |
| | | MidResultFromRtu midRs = new MidResultFromRtu() ; |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.upCode = para.upCode ;//上行数据中的功能码 |
| | | midRs.upHex = para.upHex ;//上行数据十六进制形式 |
| | |
| | | MidResultToRtu midRs = new MidResultToRtu() ; |
| | | midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ;//rtu返回命令结果 发向目的地web URL |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.commandId = para.commandId ;//命令ID,发起命令的客户端(web端)生成,以匹配命令结果 |
| | | midRs.downCode = para.commandCode ;//下行命令功能码; |
| | |
| | | CommonV2 commonV_1 = new CommonV2() ; |
| | | byte[] bytes ; |
| | | byte[] bsHead = new byte[ProtocolConstantV206V2.lenHead2Code] ; |
| | | byte index = GlCreate.createHead(bsHead); |
| | | byte index = GlCreate.createHead(para.protocolVersion, bsHead); |
| | | |
| | | index++ ; |
| | | bsHead[index] = commonV_1.createCtrl((byte)0, (byte)0) ; |
| | |
| | | import com.dy.common.mw.protocol.p206V2.*; |
| | | import com.dy.common.mw.protocol.p206V2.parse.global.GlParse; |
| | | import com.dy.common.mw.protocol.p206V2.upVos.DataCd81Vo; |
| | | import com.dy.common.mw.protocol.rtuState.ValveStateInfo; |
| | | import com.dy.common.util.ByteUtil; |
| | | import org.apache.logging.log4j.LogManager; |
| | | import org.apache.logging.log4j.Logger; |
| | |
| | | |
| | | MidResultFromRtu midRs = new MidResultFromRtu() ; |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.upCode = para.upCode ;//上行数据中的功能码 |
| | | midRs.upHex = para.upHex ;//上行数据十六进制形式 |
| | |
| | | downCpParams.setValue( |
| | | null, |
| | | ProtocolConstantV206V2.protocolName, |
| | | para.protocolVersion, |
| | | para.rtuAddr, |
| | | Command.defaultId, |
| | | confirmComCode, |
| | |
| | | |
| | | MidResultToRtu confirmCommand = new MidResultToRtu() ; |
| | | confirmCommand.protocolName = para.protocolName ;//协议名称 |
| | | confirmCommand.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | confirmCommand.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | confirmCommand.commandId = Command.defaultId ;//命令ID,发起命令的客户端(web端)生成,以匹配命令结果 |
| | | confirmCommand.downCode = confirmComCode ;//下行命令功能码; |
| | |
| | | } |
| | | |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | if(para.data != null && para.data.getSubData() != null){ |
| | | DataCd81Vo cdData = (DataCd81Vo)para.data.getSubData() ; |
| | | if(cdData.stateVo != null && cdData.stateVo.valveState != null){ |
| | | callback.notify(new ValveStateInfo(cdData.stateVo.valveState.byteValue()== 1?false:true)); |
| | | } |
| | | } |
| | | return new MidResult[]{midRs, confirmCommand} ; |
| | | } |
| | | /** |
| | |
| | | MidResultToRtu midRs = new MidResultToRtu() ; |
| | | midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ;//rtu返回命令结果 发向目的地web URL |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.commandId = para.commandId ;//命令ID,发起命令的客户端(web端)生成,以匹配命令结果 |
| | | midRs.downCode = para.commandCode ;//下行命令功能码; |
| | |
| | | CommonV2 commonV_1 = new CommonV2() ; |
| | | byte[] bytes ; |
| | | byte[] bsHead = new byte[ProtocolConstantV206V2.lenHead2Code] ; |
| | | byte index = GlCreate.createHead(bsHead); |
| | | byte index = GlCreate.createHead(para.protocolVersion, bsHead); |
| | | |
| | | index++ ; |
| | | bsHead[index] = commonV_1.createCtrl((byte)0, (byte)0) ; |
| | |
| | | import com.dy.common.mw.protocol.p206V2.parse.global.GlParse; |
| | | import com.dy.common.mw.protocol.p206V2.upVos.DataCd83CloseVo; |
| | | import com.dy.common.mw.protocol.p206V2.upVos.DataCd83OpenVo; |
| | | import com.dy.common.mw.protocol.rtuState.ValveStateInfo; |
| | | import com.dy.common.util.ByteUtil; |
| | | import org.apache.logging.log4j.LogManager; |
| | | import org.apache.logging.log4j.Logger; |
| | |
| | | |
| | | MidResultFromRtu midRs = new MidResultFromRtu() ; |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.upCode = para.upCode ;//上行数据中的功能码 |
| | | midRs.upHex = para.upHex ;//上行数据十六进制形式 |
| | |
| | | downCpParams.setValue( |
| | | null, |
| | | ProtocolConstantV206V2.protocolName, |
| | | para.protocolVersion, |
| | | para.rtuAddr, |
| | | Command.defaultId, |
| | | confirmComCode, |
| | |
| | | |
| | | MidResultToRtu confirmCommand = new MidResultToRtu() ; |
| | | confirmCommand.protocolName = para.protocolName ;//协议名称 |
| | | confirmCommand.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | confirmCommand.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | confirmCommand.commandId = Command.defaultId ;//命令ID,发起命令的客户端(web端)生成,以匹配命令结果 |
| | | confirmCommand.downCode = confirmComCode ;//下行命令功能码; |
| | |
| | | } |
| | | |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | if(para.data != null && para.data.getSubData() != null){ |
| | | Object subData = para.data.getSubData() ; |
| | | if(subData instanceof DataCd83OpenVo){ |
| | | callback.notify(new ValveStateInfo(true)); |
| | | }else if(subData instanceof DataCd83CloseVo){ |
| | | callback.notify(new ValveStateInfo(false)); |
| | | } |
| | | } |
| | | return new MidResult[]{midRs, confirmCommand} ; |
| | | } |
| | | /** |
| | |
| | | MidResultToRtu midRs = new MidResultToRtu() ; |
| | | midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ;//rtu返回命令结果 发向目的地web URL |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.commandId = para.commandId ;//命令ID,发起命令的客户端(web端)生成,以匹配命令结果 |
| | | midRs.downCode = para.commandCode ;//下行命令功能码; |
| | |
| | | CommonV2 commonV_1 = new CommonV2() ; |
| | | byte[] bytes ; |
| | | byte[] bsHead = new byte[ProtocolConstantV206V2.lenHead2Code] ; |
| | | byte index = GlCreate.createHead(bsHead); |
| | | byte index = GlCreate.createHead(para.protocolVersion, bsHead); |
| | | |
| | | index++ ; |
| | | bsHead[index] = commonV_1.createCtrl((byte)0, (byte)0) ; |
| | |
| | | package com.dy.common.mw.protocol.p206V2.parse; |
| | | |
| | | import com.dy.common.mw.protocol.*; |
| | | import com.dy.common.mw.protocol.p206V1.CommonV1; |
| | | import com.dy.common.mw.protocol.p206V2.*; |
| | | import com.dy.common.mw.protocol.p206V2.parse.global.GlParse; |
| | | import com.dy.common.mw.protocol.p206V2.upVos.DataCd84Vo; |
| | | import com.dy.common.mw.protocol.rtuState.ValveStateInfo; |
| | | import com.dy.common.util.ByteUtil; |
| | | import org.apache.logging.log4j.LogManager; |
| | | import org.apache.logging.log4j.Logger; |
| | |
| | | |
| | | MidResultFromRtu midRs = new MidResultFromRtu() ; |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.upCode = para.upCode ;//上行数据中的功能码 |
| | | midRs.upHex = para.upHex ;//上行数据十六进制形式 |
| | |
| | | downCpParams.setValue( |
| | | null, |
| | | ProtocolConstantV206V2.protocolName, |
| | | para.protocolVersion, |
| | | para.rtuAddr, |
| | | Command.defaultId, |
| | | confirmComCode, |
| | |
| | | |
| | | MidResultToRtu confirmCommand = new MidResultToRtu() ; |
| | | confirmCommand.protocolName = para.protocolName ;//协议名称 |
| | | confirmCommand.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | confirmCommand.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | confirmCommand.commandId = Command.defaultId ;//命令ID,发起命令的客户端(web端)生成,以匹配命令结果 |
| | | confirmCommand.downCode = confirmComCode ;//下行命令功能码; |
| | |
| | | } |
| | | |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | if(para.data != null && para.data.getSubData() != null){ |
| | | DataCd84Vo cdData = (DataCd84Vo)para.data.getSubData() ; |
| | | if(CommonV1.isCloseValveType(cdData.opType)){ |
| | | callback.notify(new ValveStateInfo(false)) ; |
| | | }else{ |
| | | callback.notify(new ValveStateInfo(true)) ; |
| | | } |
| | | /* 以下判断阀门开启动与关闭态不可取,因为在阀打开过程中,工作报中的阀状态不正确,例如在开启过程中阀门状态是关闭态 |
| | | if(cdData.stateVo != null && cdData.stateVo.valveState != null){ |
| | | callback.notify(new ValveStateInfo(cdData.stateVo.valveState.byteValue()== 1?false:true)); |
| | | } |
| | | */ |
| | | } |
| | | |
| | | return new MidResult[]{midRs, confirmCommand} ; |
| | | } |
| | | /** |
| | |
| | | MidResultToRtu midRs = new MidResultToRtu() ; |
| | | midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ;//rtu返回命令结果 发向目的地web URL |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.commandId = para.commandId ;//命令ID,发起命令的客户端(web端)生成,以匹配命令结果 |
| | | midRs.downCode = para.commandCode ;//下行命令功能码; |
| | |
| | | CommonV2 commonV_1 = new CommonV2() ; |
| | | byte[] bytes ; |
| | | byte[] bsHead = new byte[ProtocolConstantV206V2.lenHead2Code] ; |
| | | byte index = GlCreate.createHead(bsHead); |
| | | byte index = GlCreate.createHead(para.protocolVersion, bsHead); |
| | | |
| | | index++ ; |
| | | bsHead[index] = commonV_1.createCtrl((byte)0, (byte)0) ; |
| | |
| | | |
| | | MidResultFromRtu midRs = new MidResultFromRtu() ; |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.upCode = para.upCode ;//上行数据中的功能码 |
| | | midRs.upHex = para.upHex ;//上行数据十六进制形式 |
| | |
| | | MidResultToRtu midRs = new MidResultToRtu() ; |
| | | midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ;//rtu返回命令结果 发向目的地web URL |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.commandId = para.commandId ;//命令ID,发起命令的客户端(web端)生成,以匹配命令结果 |
| | | midRs.downCode = para.commandCode ;//下行命令功能码; |
| | |
| | | CommonV2 commonV_1 = new CommonV2() ; |
| | | byte[] bytes ; |
| | | byte[] bsHead = new byte[ProtocolConstantV206V2.lenHead2Code] ; |
| | | byte index = GlCreate.createHead(bsHead); |
| | | byte index = GlCreate.createHead(para.protocolVersion, bsHead); |
| | | |
| | | index++ ; |
| | | bsHead[index] = commonV_1.createCtrl((byte)0, (byte)0) ; |
| | |
| | | import com.dy.common.mw.protocol.*; |
| | | import com.dy.common.mw.protocol.p206V2.*; |
| | | import com.dy.common.mw.protocol.p206V2.upVos.DataCd92Vo; |
| | | import com.dy.common.mw.protocol.rtuState.ValveStateInfo; |
| | | import com.dy.common.util.ByteUtil; |
| | | import org.apache.logging.log4j.LogManager; |
| | | import org.apache.logging.log4j.Logger; |
| | |
| | | |
| | | MidResultFromRtu midRs = new MidResultFromRtu() ; |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.upCode = para.upCode ;//上行数据中的功能码 |
| | | midRs.upHex = para.upHex ;//上行数据十六进制形式 |
| | |
| | | midRs.reportOrResponse_trueOrFalse = false ;//主动上报 |
| | | |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | if(para.data != null && para.data.getSubData() != null){ |
| | | DataCd92Vo subData = (DataCd92Vo)para.data.getSubData() ; |
| | | callback.notify(new ValveStateInfo(subData.success)); |
| | | } |
| | | return new MidResult[]{midRs} ; |
| | | } |
| | | /** |
| | |
| | | MidResultToRtu midRs = new MidResultToRtu() ; |
| | | midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ;//rtu返回命令结果 发向目的地web URL |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.commandId = para.commandId ;//命令ID,发起命令的客户端(web端)生成,以匹配命令结果 |
| | | midRs.downCode = para.commandCode ;//下行命令功能码; |
| | |
| | | CommonV2 commonV_1 = new CommonV2() ; |
| | | byte[] bytes ; |
| | | byte[] bsHead = new byte[ProtocolConstantV206V2.lenHead2Code] ; |
| | | byte index = GlCreate.createHead(bsHead); |
| | | byte index = GlCreate.createHead(para.protocolVersion, bsHead); |
| | | |
| | | index++ ; |
| | | bsHead[index] = commonV_1.createCtrl((byte)0, (byte)0) ; |
| | |
| | | import com.dy.common.mw.protocol.*; |
| | | import com.dy.common.mw.protocol.p206V2.*; |
| | | import com.dy.common.mw.protocol.p206V2.upVos.DataCd93Vo; |
| | | import com.dy.common.mw.protocol.rtuState.ValveStateInfo; |
| | | import com.dy.common.util.ByteUtil; |
| | | import org.apache.logging.log4j.LogManager; |
| | | import org.apache.logging.log4j.Logger; |
| | |
| | | |
| | | MidResultFromRtu midRs = new MidResultFromRtu() ; |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.upCode = para.upCode ;//上行数据中的功能码 |
| | | midRs.upHex = para.upHex ;//上行数据十六进制形式 |
| | |
| | | midRs.reportOrResponse_trueOrFalse = false ;//主动上报 |
| | | |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | if(para.data != null && para.data.getSubData() != null){ |
| | | DataCd93Vo subData = (DataCd93Vo)para.data.getSubData() ; |
| | | callback.notify(new ValveStateInfo(!subData.success)); |
| | | } |
| | | |
| | | return new MidResult[]{midRs} ; |
| | | } |
| | | /** |
| | |
| | | |
| | | midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ;//rtu返回命令结果 发向目的地web URL |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.commandId = para.commandId ;//命令ID,发起命令的客户端(web端)生成,以匹配命令结果 |
| | | midRs.downCode = para.commandCode ;//下行命令功能码; |
| | |
| | | CommonV2 commonV_1 = new CommonV2() ; |
| | | byte[] bytes ; |
| | | byte[] bsHead = new byte[ProtocolConstantV206V2.lenHead2Code] ; |
| | | byte index = GlCreate.createHead(bsHead); |
| | | byte index = GlCreate.createHead(para.protocolVersion, bsHead); |
| | | |
| | | index++ ; |
| | | bsHead[index] = commonV_1.createCtrl((byte)0, (byte)0) ; |
| | |
| | | import com.dy.common.mw.protocol.p206V2.*; |
| | | import com.dy.common.mw.protocol.p206V2.parse.global.GlParse; |
| | | import com.dy.common.mw.protocol.p206V2.upVos.DataCd97Vo; |
| | | import com.dy.common.mw.protocol.rtuState.ValveStateInfo; |
| | | import org.apache.logging.log4j.LogManager; |
| | | import org.apache.logging.log4j.Logger; |
| | | |
| | |
| | | |
| | | MidResultFromRtu midRs = new MidResultFromRtu() ; |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.upCode = para.upCode ;//上行数据中的功能码 |
| | | midRs.upHex = para.upHex ;//上行数据十六进制形式 |
| | |
| | | midRs.reportOrResponse_trueOrFalse = false ;//主动上报 |
| | | |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | if(para.data != null && para.data.getSubData() != null){ |
| | | DataCd97Vo subData = (DataCd97Vo)para.data.getSubData() ; |
| | | callback.notify(new ValveStateInfo(subData.success)); |
| | | } |
| | | return new MidResult[]{midRs} ; |
| | | } |
| | | /** |
| | |
| | | |
| | | midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ;//rtu返回命令结果 发向目的地web URL |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.commandId = para.commandId ;//命令ID,发起命令的客户端(web端)生成,以匹配命令结果 |
| | | midRs.downCode = para.commandCode ;//下行命令功能码; |
| | |
| | | CommonV2 commonV_1 = new CommonV2() ; |
| | | byte[] bytes ; |
| | | byte[] bsHead = new byte[ProtocolConstantV206V2.lenHead2Code] ; |
| | | byte index = GlCreate.createHead(bsHead); |
| | | byte index = GlCreate.createHead(para.protocolVersion, bsHead); |
| | | |
| | | index++ ; |
| | | bsHead[index] = commonV_1.createCtrl((byte)0, (byte)0) ; |
| | |
| | | import com.dy.common.mw.protocol.p206V2.*; |
| | | import com.dy.common.mw.protocol.p206V2.parse.global.GlParse; |
| | | import com.dy.common.mw.protocol.p206V2.upVos.DataCd98Vo; |
| | | import com.dy.common.mw.protocol.rtuState.ValveStateInfo; |
| | | import org.apache.logging.log4j.LogManager; |
| | | import org.apache.logging.log4j.Logger; |
| | | |
| | |
| | | |
| | | MidResultFromRtu midRs = new MidResultFromRtu() ; |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.upCode = para.upCode ;//上行数据中的功能码 |
| | | midRs.upHex = para.upHex ;//上行数据十六进制形式 |
| | |
| | | midRs.reportOrResponse_trueOrFalse = false ;//主动上报 |
| | | |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | if(para.data != null && para.data.getSubData() != null){ |
| | | DataCd98Vo subData = (DataCd98Vo)para.data.getSubData() ; |
| | | callback.notify(new ValveStateInfo(!subData.success)); |
| | | } |
| | | return new MidResult[]{midRs} ; |
| | | } |
| | | /** |
| | |
| | | |
| | | midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ;//rtu返回命令结果 发向目的地web URL |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.commandId = para.commandId ;//命令ID,发起命令的客户端(web端)生成,以匹配命令结果 |
| | | midRs.downCode = para.commandCode ;//下行命令功能码; |
| | |
| | | CommonV2 commonV_1 = new CommonV2() ; |
| | | byte[] bytes ; |
| | | byte[] bsHead = new byte[ProtocolConstantV206V2.lenHead2Code] ; |
| | | byte index = GlCreate.createHead(bsHead); |
| | | byte index = GlCreate.createHead(para.protocolVersion, bsHead); |
| | | |
| | | index++ ; |
| | | bsHead[index] = commonV_1.createCtrl((byte)0, (byte)0) ; |
| | |
| | | import com.dy.common.mw.protocol.p206V2.*; |
| | | import com.dy.common.mw.protocol.p206V2.parse.global.GlParse; |
| | | import com.dy.common.mw.protocol.p206V2.upVos.DataCd99Vo; |
| | | import com.dy.common.mw.protocol.rtuState.ValveStateInfo; |
| | | import org.apache.logging.log4j.LogManager; |
| | | import org.apache.logging.log4j.Logger; |
| | | |
| | |
| | | |
| | | MidResultFromRtu midRs = new MidResultFromRtu() ; |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.upCode = para.upCode ;//上行数据中的功能码 |
| | | midRs.upHex = para.upHex ;//上行数据十六进制形式 |
| | |
| | | midRs.reportOrResponse_trueOrFalse = false ;//主动上报 |
| | | |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | if(para.data != null && para.data.getSubData() != null){ |
| | | DataCd99Vo subData = (DataCd99Vo)para.data.getSubData() ; |
| | | callback.notify(new ValveStateInfo(subData.success)); |
| | | } |
| | | return new MidResult[]{midRs} ; |
| | | } |
| | | /** |
| | |
| | | |
| | | midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ;//rtu返回命令结果 发向目的地web URL |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.commandId = para.commandId ;//命令ID,发起命令的客户端(web端)生成,以匹配命令结果 |
| | | midRs.downCode = para.commandCode ;//下行命令功能码; |
| | |
| | | CommonV2 commonV_1 = new CommonV2() ; |
| | | byte[] bytes ; |
| | | byte[] bsHead = new byte[ProtocolConstantV206V2.lenHead2Code] ; |
| | | byte index = GlCreate.createHead(bsHead); |
| | | byte index = GlCreate.createHead(para.protocolVersion, bsHead); |
| | | |
| | | index++ ; |
| | | bsHead[index] = commonV_1.createCtrl((byte)0, (byte)0) ; |
| | |
| | | import com.dy.common.mw.protocol.p206V2.*; |
| | | import com.dy.common.mw.protocol.p206V2.parse.global.GlParse; |
| | | import com.dy.common.mw.protocol.p206V2.upVos.DataCdA0Vo; |
| | | import com.dy.common.mw.protocol.rtuState.ValveStateInfo; |
| | | import org.apache.logging.log4j.LogManager; |
| | | import org.apache.logging.log4j.Logger; |
| | | |
| | |
| | | |
| | | MidResultFromRtu midRs = new MidResultFromRtu() ; |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.upCode = para.upCode ;//上行数据中的功能码 |
| | | midRs.upHex = para.upHex ;//上行数据十六进制形式 |
| | |
| | | midRs.reportOrResponse_trueOrFalse = false ;//主动上报 |
| | | |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | if(para.data != null && para.data.getSubData() != null){ |
| | | DataCdA0Vo subData = (DataCdA0Vo)para.data.getSubData() ; |
| | | callback.notify(new ValveStateInfo(subData.success)); |
| | | } |
| | | return new MidResult[]{midRs} ; |
| | | } |
| | | /** |
| | |
| | | |
| | | midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ;//rtu返回命令结果 发向目的地web URL |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.commandId = para.commandId ;//命令ID,发起命令的客户端(web端)生成,以匹配命令结果 |
| | | midRs.downCode = para.commandCode ;//下行命令功能码; |
| | |
| | | CommonV2 commonV_1 = new CommonV2() ; |
| | | byte[] bytes ; |
| | | byte[] bsHead = new byte[ProtocolConstantV206V2.lenHead2Code] ; |
| | | byte index = GlCreate.createHead(bsHead); |
| | | byte index = GlCreate.createHead(para.protocolVersion, bsHead); |
| | | |
| | | index++ ; |
| | | bsHead[index] = commonV_1.createCtrl((byte)0, (byte)0) ; |
| | |
| | | |
| | | MidResultFromRtu midRs = new MidResultFromRtu() ; |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.upCode = para.upCode ;//上行数据中的功能码 |
| | | midRs.upHex = para.upHex ;//上行数据十六进制形式 |
| | |
| | | |
| | | midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ;//rtu返回命令结果 发向目的地web URL |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.commandId = para.commandId ;//命令ID,发起命令的客户端(web端)生成,以匹配命令结果 |
| | | midRs.downCode = para.commandCode ;//下行命令功能码; |
| | |
| | | CommonV2 commonV_1 = new CommonV2() ; |
| | | byte[] bytes ; |
| | | byte[] bsHead = new byte[ProtocolConstantV206V2.lenHead2Code] ; |
| | | byte index = GlCreate.createHead(bsHead); |
| | | byte index = GlCreate.createHead(para.protocolVersion, bsHead); |
| | | |
| | | index++ ; |
| | | bsHead[index] = commonV_1.createCtrl((byte)0, (byte)0) ; |
| | |
| | | |
| | | MidResultFromRtu midRs = new MidResultFromRtu() ; |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.upCode = para.upCode ;//上行数据中的功能码 |
| | | midRs.upHex = para.upHex ;//上行数据十六进制形式 |
| | |
| | | MidResultToRtu midRs = new MidResultToRtu() ; |
| | | midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ;//rtu返回命令结果 发向目的地web URL |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.commandId = para.commandId ;//命令ID,发起命令的客户端(web端)生成,以匹配命令结果 |
| | | midRs.downCode = para.commandCode ;//下行命令功能码; |
| | |
| | | CommonV2 commonV_1 = new CommonV2() ; |
| | | byte[] bytes ; |
| | | byte[] bsHead = new byte[ProtocolConstantV206V2.lenHead2Code] ; |
| | | byte index = GlCreate.createHead(bsHead); |
| | | byte index = GlCreate.createHead(para.protocolVersion, bsHead); |
| | | |
| | | index++ ; |
| | | bsHead[index] = commonV_1.createCtrl((byte)0, (byte)0) ; |
| | |
| | | MidResultToRtu midRs = new MidResultToRtu() ; |
| | | midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ;//rtu返回命令结果 发向目的地web URL |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.commandId = para.commandId ;//命令ID,发起命令的客户端(web端)生成,以匹配命令结果 |
| | | midRs.downCode = para.commandCode ;//下行命令功能码; |
| | |
| | | CommonV2 commonV_1 = new CommonV2() ; |
| | | byte[] bytes ; |
| | | byte[] bsHead = new byte[ProtocolConstantV206V2.lenHead2Code] ; |
| | | byte index = GlCreate.createHead(bsHead); |
| | | byte index = GlCreate.createHead(para.protocolVersion, bsHead); |
| | | |
| | | index++ ; |
| | | bsHead[index] = commonV_1.createCtrl((byte)0, (byte)0) ; |
| | |
| | | package com.dy.common.mw.protocol.p206V2.parse; |
| | | |
| | | import com.dy.common.mw.protocol.*; |
| | | import com.dy.common.mw.protocol.p206V1.CommonV1; |
| | | import com.dy.common.mw.protocol.p206V2.*; |
| | | import com.dy.common.mw.protocol.p206V2.parse.global.GlParse; |
| | | import com.dy.common.mw.protocol.p206V2.upVos.DataCd81Vo; |
| | | import com.dy.common.mw.protocol.p206V2.upVos.DataCd84Vo; |
| | | import com.dy.common.mw.protocol.p206V2.upVos.DataCdC0Vo; |
| | | import com.dy.common.mw.protocol.rtuState.ValveStateInfo; |
| | | import com.dy.common.util.ByteUtil; |
| | | import org.apache.logging.log4j.LogManager; |
| | | import org.apache.logging.log4j.Logger; |
| | |
| | | |
| | | MidResultFromRtu midRs = new MidResultFromRtu() ; |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.upCode = para.upCode ;//上行数据中的功能码 |
| | | midRs.upHex = para.upHex ;//上行数据十六进制形式 |
| | |
| | | downCpParams.setValue( |
| | | null, |
| | | ProtocolConstantV206V2.protocolName, |
| | | para.protocolVersion, |
| | | para.rtuAddr, |
| | | Command.defaultId, |
| | | confirmComCode, |
| | |
| | | |
| | | MidResultToRtu confirmCommand = new MidResultToRtu() ; |
| | | confirmCommand.protocolName = para.protocolName ;//协议名称 |
| | | confirmCommand.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | confirmCommand.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | confirmCommand.commandId = Command.defaultId ;//命令ID,发起命令的客户端(web端)生成,以匹配命令结果 |
| | | confirmCommand.downCode = confirmComCode ;//下行命令功能码; |
| | |
| | | } |
| | | |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | if(para.data != null && para.data.getSubData() != null){ |
| | | DataCdC0Vo cdData = (DataCdC0Vo)para.data.getSubData() ; |
| | | if(cdData.stateVo != null && cdData.stateVo.valveState != null){ |
| | | callback.notify(new ValveStateInfo(cdData.stateVo.valveState.byteValue()== 1?false:true)); |
| | | } |
| | | } |
| | | |
| | | return new MidResult[]{midRs, confirmCommand} ; |
| | | } |
| | | /** |
| | |
| | | |
| | | public class GlCreate { |
| | | |
| | | public static byte createHead(byte[] bsHead) throws Exception { |
| | | public static byte createHead(Short protocolVersion, byte[] bsHead) throws Exception { |
| | | byte index = 0; |
| | | bsHead[index++] = ProtocolConstantV206V2.P_Head_Byte; |
| | | bsHead[index++] = 0;//帧长度 |
| | | bsHead[index++] = ProtocolConstantV206V2.protocolVer.byteValue(); |
| | | bsHead[index++] = protocolVersion.byteValue(); |
| | | bsHead[index] = ProtocolConstantV206V2.P_Head_Byte; |
| | | return index ; |
| | | } |
| | |
| | | private ParseParamsForDownV202404 downCpParams ; |
| | | |
| | | private Boolean reportOrResponse_trueOrFalse = null ; |
| | | private String rtuAddrInData = null ; |
| | | |
| | | public DriverV202404(){ |
| | | upCpParams = new ParseParamsForUpV202404() ; |
| | |
| | | this.downCpParams.clear(); |
| | | } |
| | | this.reportOrResponse_trueOrFalse = null ; |
| | | this.rtuAddrInData = null ; |
| | | } |
| | | |
| | | /** |
| | |
| | | upData.setSubData(dV201) ; |
| | | |
| | | this.upCpParams.setValue(ProtocolConstantV206V202404.protocolName, |
| | | ProtocolConstantV206V202404.protocolVer, |
| | | rtuAddr, |
| | | upCode, |
| | | upHex, |
| | |
| | | @Override |
| | | public void callback(Boolean flag) { |
| | | reportOrResponse_trueOrFalse = flag ; |
| | | rtuAddrInData = dV201.getRtuAddr() ; |
| | | //rtuAddrInData = dV201.getRtuAddr() ; |
| | | } |
| | | @Override |
| | | public void notify(NotifyInfo ...infos) { |
| | | } |
| | | }); |
| | | } |
| | |
| | | |
| | | this.downCpParams.setValue( |
| | | RtuResultSendWebUrl, |
| | | ProtocolConstantV206V202404.protocolName, |
| | | ProtocolConstantV206V202404.protocolName, |
| | | command.protocolVersion==null?ProtocolConstantV206V202404.protocolVer:command.protocolVersion, |
| | | rtuAddr, |
| | | command.getId(), |
| | | commandCode, |
| | |
| | | |
| | | public String rtuResultSendWebUrl ;//rtu返回命令结果 发向目的地web URL |
| | | public String protocolName ; |
| | | public Short protocolVersion ; |
| | | public String rtuAddr ;//控制器地址 |
| | | public String commandId ; |
| | | public String commandCode ; |
| | |
| | | |
| | | public void clear(){ |
| | | this.protocolName = null ; |
| | | this.rtuAddr = null ; |
| | | this.protocolVersion = null ; |
| | | this.rtuAddr = null ; |
| | | this.commandId = null ; |
| | | this.commandCode = null ; |
| | | this.param = null ; |
| | |
| | | public void setValue( |
| | | String rtuResultSendWebUrl, |
| | | String protocolName, |
| | | Short protocolVersion, |
| | | String rtuAddr, |
| | | String commandId, |
| | | String commandCode, |
| | |
| | | Object attachment ){ |
| | | this.rtuResultSendWebUrl = rtuResultSendWebUrl ; |
| | | this.protocolName = protocolName ; |
| | | this.protocolVersion = protocolVersion ; |
| | | this.rtuAddr = rtuAddr ; |
| | | this.commandId = commandId ; |
| | | this.commandCode = commandCode ; |
| | |
| | | public class ParseParamsForUpV202404 implements CodeParseParams{ |
| | | |
| | | public String protocolName ;//协议名称 |
| | | public Short protocolVersion ;//协议版本号 |
| | | public String rtuAddr ;//控制器址 |
| | | public String upCode ;//上行报文数据中的功能码 |
| | | public String upHex ;//行报文数据十六进制形式 |
| | |
| | | |
| | | public void clear(){ |
| | | this.protocolName = null ; |
| | | this.rtuAddr = null ; |
| | | this.protocolVersion = null ; |
| | | this.rtuAddr = null ; |
| | | this.upCode = null ; |
| | | this.upHex = null ; |
| | | this.upBuffer = null ; |
| | | this.data = null ; |
| | | } |
| | | |
| | | public void setValue(String protocolName, |
| | | String rtuAddr, |
| | | public void setValue(String protocolName, |
| | | Short protocolVersion, |
| | | String rtuAddr, |
| | | String upCode, |
| | | String upHex, |
| | | byte[] upBuffer, |
| | | Data data){ |
| | | this.protocolName = protocolName ; |
| | | this.rtuAddr = rtuAddr ; |
| | | this.protocolVersion = protocolVersion ; |
| | | this.rtuAddr = rtuAddr ; |
| | | this.upCode = upCode ; |
| | | this.upHex = upHex ; |
| | | this.upBuffer = upBuffer ; |
| | |
| | | |
| | | MidResultToRtu midRs = new MidResultToRtu() ; |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ; |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.commandId = para.commandId ;//命令ID,发起命令的客户端(web端)生成,以匹配命令结果 |
| | |
| | | |
| | | MidResultFromRtu midRs = new MidResultFromRtu() ; |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.upCode = para.upCode ;//上行数据中的功能码 |
| | | midRs.upHex = para.upHex ;//上行数据十六进制形式 |
| | |
| | | downCpParams.setValue( |
| | | null, |
| | | ProtocolConstantV206V202404.protocolName, |
| | | para.protocolVersion, |
| | | para.rtuAddr, |
| | | Command.defaultId, |
| | | confirmComCode, |
| | |
| | | |
| | | MidResultToRtu confirmCommand = new MidResultToRtu() ; |
| | | confirmCommand.protocolName = para.protocolName ;//协议名称 |
| | | confirmCommand.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | confirmCommand.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | confirmCommand.commandId = Command.defaultId ;//命令ID,发起命令的客户端(web端)生成,以匹配命令结果 |
| | | confirmCommand.downCode = confirmComCode ;//下行命令功能码; |
| | |
| | | |
| | | MidResultToRtu midRs = new MidResultToRtu() ; |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ; |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.commandId = para.commandId ;//命令ID,发起命令的客户端(web端)生成,以匹配命令结果 |
| | |
| | | |
| | | MidResultFromRtu midRs = new MidResultFromRtu() ; |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.upCode = para.upCode ;//上行数据中的功能码 |
| | | midRs.upHex = para.upHex ;//上行数据十六进制形式 |
| | |
| | | |
| | | MidResultToRtu midRs = new MidResultToRtu() ; |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ; |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.commandId = para.commandId ;//命令ID,发起命令的客户端(web端)生成,以匹配命令结果 |
| | |
| | | |
| | | MidResultFromRtu midRs = new MidResultFromRtu() ; |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.upCode = para.upCode ;//上行数据中的功能码 |
| | | midRs.upHex = para.upHex ;//上行数据十六进制形式 |
| | |
| | | |
| | | MidResultToRtu midRs = new MidResultToRtu() ; |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ; |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.commandId = para.commandId ;//命令ID,发起命令的客户端(web端)生成,以匹配命令结果 |
| | |
| | | |
| | | MidResultFromRtu midRs = new MidResultFromRtu() ; |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.upCode = para.upCode ;//上行数据中的功能码 |
| | | midRs.upHex = para.upHex ;//上行数据十六进制形式 |
| | |
| | | |
| | | MidResultToRtu midRs = new MidResultToRtu() ; |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ; |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.commandId = para.commandId ;//命令ID,发起命令的客户端(web端)生成,以匹配命令结果 |
| | |
| | | |
| | | MidResultFromRtu midRs = new MidResultFromRtu() ; |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.upCode = para.upCode ;//上行数据中的功能码 |
| | | midRs.upHex = para.upHex ;//上行数据十六进制形式 |
| | |
| | | |
| | | MidResultToRtu midRs = new MidResultToRtu() ; |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ; |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.commandId = para.commandId ;//命令ID,发起命令的客户端(web端)生成,以匹配命令结果 |
| | |
| | | |
| | | MidResultFromRtu midRs = new MidResultFromRtu() ; |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.upCode = para.upCode ;//上行数据中的功能码 |
| | | midRs.upHex = para.upHex ;//上行数据十六进制形式 |
| | |
| | | |
| | | MidResultToRtu midRs = new MidResultToRtu() ; |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ; |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.commandId = para.commandId ;//命令ID,发起命令的客户端(web端)生成,以匹配命令结果 |
| | |
| | | |
| | | MidResultFromRtu midRs = new MidResultFromRtu() ; |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.upCode = para.upCode ;//上行数据中的功能码 |
| | | midRs.upHex = para.upHex ;//上行数据十六进制形式 |
| | |
| | | |
| | | MidResultToRtu midRs = new MidResultToRtu() ; |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ; |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.commandId = para.commandId ;//命令ID,发起命令的客户端(web端)生成,以匹配命令结果 |
| | |
| | | |
| | | MidResultFromRtu midRs = new MidResultFromRtu() ; |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.upCode = para.upCode ;//上行数据中的功能码 |
| | | midRs.upHex = para.upHex ;//上行数据十六进制形式 |
| | |
| | | |
| | | MidResultToRtu midRs = new MidResultToRtu() ; |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ; |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.commandId = para.commandId ;//命令ID,发起命令的客户端(web端)生成,以匹配命令结果 |
| | |
| | | |
| | | MidResultFromRtu midRs = new MidResultFromRtu() ; |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.upCode = para.upCode ;//上行数据中的功能码 |
| | | midRs.upHex = para.upHex ;//上行数据十六进制形式 |
| | |
| | | |
| | | MidResultToRtu midRs = new MidResultToRtu() ; |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ; |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.commandId = para.commandId ;//命令ID,发起命令的客户端(web端)生成,以匹配命令结果 |
| | |
| | | |
| | | MidResultFromRtu midRs = new MidResultFromRtu() ; |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.upCode = para.upCode ;//上行数据中的功能码 |
| | | midRs.upHex = para.upHex ;//上行数据十六进制形式 |
| | |
| | | |
| | | MidResultToRtu midRs = new MidResultToRtu() ; |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ; |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.commandId = para.commandId ;//命令ID,发起命令的客户端(web端)生成,以匹配命令结果 |
| | |
| | | |
| | | MidResultFromRtu midRs = new MidResultFromRtu() ; |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.upCode = para.upCode ;//上行数据中的功能码 |
| | | midRs.upHex = para.upHex ;//上行数据十六进制形式 |
| | |
| | | |
| | | MidResultToRtu midRs = new MidResultToRtu() ; |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ; |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.commandId = para.commandId ;//命令ID,发起命令的客户端(web端)生成,以匹配命令结果 |
| | |
| | | |
| | | MidResultFromRtu midRs = new MidResultFromRtu() ; |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.upCode = para.upCode ;//上行数据中的功能码 |
| | | midRs.upHex = para.upHex ;//上行数据十六进制形式 |
| | |
| | | |
| | | MidResultToRtu midRs = new MidResultToRtu() ; |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ; |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.commandId = para.commandId ;//命令ID,发起命令的客户端(web端)生成,以匹配命令结果 |
| | |
| | | |
| | | MidResultFromRtu midRs = new MidResultFromRtu() ; |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.upCode = para.upCode ;//上行数据中的功能码 |
| | | midRs.upHex = para.upHex ;//上行数据十六进制形式 |
| | |
| | | |
| | | MidResultToRtu midRs = new MidResultToRtu() ; |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ; |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.commandId = para.commandId ;//命令ID,发起命令的客户端(web端)生成,以匹配命令结果 |
| | |
| | | |
| | | MidResultFromRtu midRs = new MidResultFromRtu() ; |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.upCode = para.upCode ;//上行数据中的功能码 |
| | | midRs.upHex = para.upHex ;//上行数据十六进制形式 |
| | |
| | | |
| | | MidResultToRtu midRs = new MidResultToRtu() ; |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ; |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.commandId = para.commandId ;//命令ID,发起命令的客户端(web端)生成,以匹配命令结果 |
| | |
| | | |
| | | MidResultFromRtu midRs = new MidResultFromRtu() ; |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.upCode = para.upCode ;//上行数据中的功能码 |
| | | midRs.upHex = para.upHex ;//上行数据十六进制形式 |
| | |
| | | |
| | | MidResultToRtu midRs = new MidResultToRtu() ; |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ; |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.commandId = para.commandId ;//命令ID,发起命令的客户端(web端)生成,以匹配命令结果 |
| | |
| | | |
| | | MidResultFromRtu midRs = new MidResultFromRtu() ; |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.upCode = para.upCode ;//上行数据中的功能码 |
| | | midRs.upHex = para.upHex ;//上行数据十六进制形式 |
| | |
| | | |
| | | MidResultToRtu midRs = new MidResultToRtu() ; |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ; |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.commandId = para.commandId ;//命令ID,发起命令的客户端(web端)生成,以匹配命令结果 |
| | |
| | | |
| | | MidResultFromRtu midRs = new MidResultFromRtu() ; |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.upCode = para.upCode ;//上行数据中的功能码 |
| | | midRs.upHex = para.upHex ;//上行数据十六进制形式 |
| | |
| | | |
| | | MidResultToRtu midRs = new MidResultToRtu() ; |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ; |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.commandId = para.commandId ;//命令ID,发起命令的客户端(web端)生成,以匹配命令结果 |
| | |
| | | |
| | | MidResultFromRtu midRs = new MidResultFromRtu() ; |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.upCode = para.upCode ;//上行数据中的功能码 |
| | | midRs.upHex = para.upHex ;//上行数据十六进制形式 |
| | |
| | | |
| | | MidResultToRtu midRs = new MidResultToRtu() ; |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ; |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.commandId = para.commandId ;//命令ID,发起命令的客户端(web端)生成,以匹配命令结果 |
| | |
| | | |
| | | MidResultFromRtu midRs = new MidResultFromRtu() ; |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.upCode = para.upCode ;//上行数据中的功能码 |
| | | midRs.upHex = para.upHex ;//上行数据十六进制形式 |
| | |
| | | |
| | | MidResultToRtu midRs = new MidResultToRtu() ; |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ; |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.commandId = para.commandId ;//命令ID,发起命令的客户端(web端)生成,以匹配命令结果 |
| | |
| | | |
| | | |
| | | import com.dy.common.mw.protocol.*; |
| | | import com.dy.common.mw.protocol.p206V1.CommonV1; |
| | | import com.dy.common.mw.protocol.p206V202404.*; |
| | | import com.dy.common.mw.protocol.p206V202404.parse.global.GlParse; |
| | | import com.dy.common.mw.protocol.p206V202404.upVos.DataCd80_5BVo; |
| | | import com.dy.common.mw.protocol.rtuState.ValveStateInfo; |
| | | import com.dy.common.util.ByteUtil; |
| | | import org.apache.logging.log4j.LogManager; |
| | | import org.apache.logging.log4j.Logger; |
| | |
| | | |
| | | MidResultFromRtu midRs = new MidResultFromRtu() ; |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.upCode = para.upCode ;//上行数据中的功能码 |
| | | midRs.upHex = para.upHex ;//上行数据十六进制形式 |
| | |
| | | downCpParams.setValue( |
| | | null, |
| | | ProtocolConstantV206V202404.protocolName, |
| | | para.protocolVersion, |
| | | para.rtuAddr, |
| | | Command.defaultId, |
| | | confirmComCode, |
| | |
| | | |
| | | MidResultToRtu confirmCommand = new MidResultToRtu() ; |
| | | confirmCommand.protocolName = para.protocolName ;//协议名称 |
| | | confirmCommand.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | confirmCommand.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | confirmCommand.commandId = Command.defaultId ;//命令ID,发起命令的客户端(web端)生成,以匹配命令结果 |
| | | confirmCommand.downCode = confirmComCode ;//下行命令功能码; |
| | |
| | | confirmCommand.isQuickSend = true ; |
| | | } |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | if(para.data != null && para.data.getSubData() != null){ |
| | | callback.notify(new ValveStateInfo(true)) ; |
| | | } |
| | | |
| | | return new MidResult[]{midRs, confirmCommand} ; |
| | | } |
| | | /** |
| | |
| | | |
| | | MidResultToRtu midRs = new MidResultToRtu() ; |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ; |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.commandId = para.commandId ;//命令ID,发起命令的客户端(web端)生成,以匹配命令结果 |
| | |
| | | import com.dy.common.mw.protocol.p206V202404.*; |
| | | import com.dy.common.mw.protocol.p206V202404.parse.global.GlParse; |
| | | import com.dy.common.mw.protocol.p206V202404.upVos.DataCd81Vo; |
| | | import com.dy.common.mw.protocol.rtuState.ValveStateInfo; |
| | | import com.dy.common.util.ByteUtil; |
| | | import org.apache.logging.log4j.LogManager; |
| | | import org.apache.logging.log4j.Logger; |
| | |
| | | |
| | | MidResultFromRtu midRs = new MidResultFromRtu() ; |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.upCode = para.upCode ;//上行数据中的功能码 |
| | | midRs.upHex = para.upHex ;//上行数据十六进制形式 |
| | |
| | | downCpParams.setValue( |
| | | null, |
| | | ProtocolConstantV206V202404.protocolName, |
| | | para.protocolVersion, |
| | | para.rtuAddr, |
| | | Command.defaultId, |
| | | confirmComCode, |
| | |
| | | |
| | | MidResultToRtu confirmCommand = new MidResultToRtu() ; |
| | | confirmCommand.protocolName = para.protocolName ;//协议名称 |
| | | confirmCommand.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | confirmCommand.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | confirmCommand.commandId = Command.defaultId ;//命令ID,发起命令的客户端(web端)生成,以匹配命令结果 |
| | | confirmCommand.downCode = confirmComCode ;//下行命令功能码; |
| | |
| | | confirmCommand.isQuickSend = true ; |
| | | } |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | if(para.data != null && para.data.getSubData() != null){ |
| | | DataCd81Vo cdData = (DataCd81Vo)para.data.getSubData() ; |
| | | if(cdData.statePump != null){ |
| | | //泵/阀状态 (1:开泵/阀;0:关泵/阀) |
| | | callback.notify(new ValveStateInfo(cdData.statePump.byteValue()== 1?true:false)); |
| | | } |
| | | } |
| | | return new MidResult[]{midRs, confirmCommand} ; |
| | | } |
| | | /** |
| | |
| | | |
| | | MidResultToRtu midRs = new MidResultToRtu() ; |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ; |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.commandId = para.commandId ;//命令ID,发起命令的客户端(web端)生成,以匹配命令结果 |
| | |
| | | import com.dy.common.mw.protocol.*; |
| | | import com.dy.common.mw.protocol.p206V202404.*; |
| | | import com.dy.common.mw.protocol.p206V202404.upVos.DataCd83Vo; |
| | | import com.dy.common.mw.protocol.rtuState.ValveStateInfo; |
| | | import com.dy.common.util.ByteUtil; |
| | | import com.dy.common.util.DateTime; |
| | | import org.apache.logging.log4j.LogManager; |
| | |
| | | |
| | | MidResultFromRtu midRs = new MidResultFromRtu() ; |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.upCode = para.upCode ;//上行数据中的功能码 |
| | | midRs.upHex = para.upHex ;//上行数据十六进制形式 |
| | |
| | | downCpParams.setValue( |
| | | null, |
| | | ProtocolConstantV206V202404.protocolName, |
| | | para.protocolVersion, |
| | | para.rtuAddr, |
| | | Command.defaultId, |
| | | confirmComCode, |
| | |
| | | |
| | | MidResultToRtu confirmCommand = new MidResultToRtu() ; |
| | | confirmCommand.protocolName = para.protocolName ;//协议名称 |
| | | confirmCommand.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | confirmCommand.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | confirmCommand.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | confirmCommand.commandId = Command.defaultId ;//命令ID,发起命令的客户端(web端)生成,以匹配命令结果 |
| | | confirmCommand.downCode = confirmComCode ;//下行命令功能码; |
| | |
| | | confirmCommand.isQuickSend = true ; |
| | | } |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | |
| | | return new MidResult[]{midRs, confirmCommand} ; |
| | | } |
| | | /** |
| | |
| | | |
| | | MidResultToRtu midRs = new MidResultToRtu() ; |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ; |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.commandId = para.commandId ;//命令ID,发起命令的客户端(web端)生成,以匹配命令结果 |
| | |
| | | import com.dy.common.mw.protocol.p206V202404.*; |
| | | import com.dy.common.mw.protocol.p206V202404.parse.global.GlParse; |
| | | import com.dy.common.mw.protocol.p206V202404.upVos.DataCd84Vo; |
| | | import com.dy.common.mw.protocol.rtuState.ValveStateInfo; |
| | | import com.dy.common.util.ByteUtil; |
| | | import org.apache.logging.log4j.LogManager; |
| | | import org.apache.logging.log4j.Logger; |
| | |
| | | |
| | | MidResultFromRtu midRs = new MidResultFromRtu() ; |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.upCode = para.upCode ;//上行数据中的功能码 |
| | | midRs.upHex = para.upHex ;//上行数据十六进制形式 |
| | |
| | | downCpParams.setValue( |
| | | null, |
| | | ProtocolConstantV206V202404.protocolName, |
| | | para.protocolVersion, |
| | | para.rtuAddr, |
| | | Command.defaultId, |
| | | confirmComCode, |
| | |
| | | |
| | | MidResultToRtu confirmCommand = new MidResultToRtu() ; |
| | | confirmCommand.protocolName = para.protocolName ;//协议名称 |
| | | confirmCommand.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | confirmCommand.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | confirmCommand.commandId = Command.defaultId ;//命令ID,发起命令的客户端(web端)生成,以匹配命令结果 |
| | | confirmCommand.downCode = confirmComCode ;//下行命令功能码; |
| | |
| | | confirmCommand.isQuickSend = true ; |
| | | } |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | if(para.data != null && para.data.getSubData() != null){ |
| | | callback.notify(new ValveStateInfo(true)); |
| | | } |
| | | |
| | | return new MidResult[]{midRs, confirmCommand} ; |
| | | } |
| | | /** |
| | |
| | | |
| | | MidResultToRtu midRs = new MidResultToRtu() ; |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ; |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.commandId = para.commandId ;//命令ID,发起命令的客户端(web端)生成,以匹配命令结果 |
| | |
| | | import com.dy.common.mw.protocol.p206V202404.*; |
| | | import com.dy.common.mw.protocol.p206V202404.parse.global.GlParse; |
| | | import com.dy.common.mw.protocol.p206V202404.upVos.DataCd85Vo; |
| | | import com.dy.common.mw.protocol.rtuState.ValveStateInfo; |
| | | import com.dy.common.util.ByteUtil; |
| | | import org.apache.logging.log4j.LogManager; |
| | | import org.apache.logging.log4j.Logger; |
| | |
| | | |
| | | MidResultFromRtu midRs = new MidResultFromRtu() ; |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.upCode = para.upCode ;//上行数据中的功能码 |
| | | midRs.upHex = para.upHex ;//上行数据十六进制形式 |
| | |
| | | downCpParams.setValue( |
| | | null, |
| | | ProtocolConstantV206V202404.protocolName, |
| | | para.protocolVersion, |
| | | para.rtuAddr, |
| | | Command.defaultId, |
| | | confirmComCode, |
| | |
| | | |
| | | MidResultToRtu confirmCommand = new MidResultToRtu() ; |
| | | confirmCommand.protocolName = para.protocolName ;//协议名称 |
| | | confirmCommand.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | confirmCommand.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | confirmCommand.commandId = Command.defaultId ;//命令ID,发起命令的客户端(web端)生成,以匹配命令结果 |
| | | confirmCommand.downCode = confirmComCode ;//下行命令功能码; |
| | |
| | | confirmCommand.isQuickSend = true ; |
| | | } |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | if(para.data != null && para.data.getSubData() != null){ |
| | | callback.notify(new ValveStateInfo(false)); |
| | | } |
| | | |
| | | return new MidResult[]{midRs, confirmCommand} ; |
| | | } |
| | | /** |
| | |
| | | |
| | | MidResultToRtu midRs = new MidResultToRtu() ; |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ; |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.commandId = para.commandId ;//命令ID,发起命令的客户端(web端)生成,以匹配命令结果 |
| | |
| | | |
| | | MidResultFromRtu midRs = new MidResultFromRtu() ; |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.upCode = para.upCode ;//上行数据中的功能码 |
| | | midRs.upHex = para.upHex ;//上行数据十六进制形式 |
| | |
| | | |
| | | MidResultToRtu midRs = new MidResultToRtu() ; |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ; |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.commandId = para.commandId ;//命令ID,发起命令的客户端(web端)生成,以匹配命令结果 |
| | |
| | | |
| | | MidResultFromRtu midRs = new MidResultFromRtu() ; |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.upCode = para.upCode ;//上行数据中的功能码 |
| | | midRs.upHex = para.upHex ;//上行数据十六进制形式 |
| | |
| | | |
| | | MidResultToRtu midRs = new MidResultToRtu() ; |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ; |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.commandId = para.commandId ;//命令ID,发起命令的客户端(web端)生成,以匹配命令结果 |
| | |
| | | |
| | | MidResultFromRtu midRs = new MidResultFromRtu() ; |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.upCode = para.upCode ;//上行数据中的功能码 |
| | | midRs.upHex = para.upHex ;//上行数据十六进制形式 |
| | |
| | | |
| | | MidResultToRtu midRs = new MidResultToRtu() ; |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ; |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.commandId = para.commandId ;//命令ID,发起命令的客户端(web端)生成,以匹配命令结果 |
| | |
| | | |
| | | MidResultFromRtu midRs = new MidResultFromRtu() ; |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.upCode = para.upCode ;//上行数据中的功能码 |
| | | midRs.upHex = para.upHex ;//上行数据十六进制形式 |
| | |
| | | downCpParams.setValue( |
| | | null, |
| | | ProtocolConstantV206V202404.protocolName, |
| | | para.protocolVersion, |
| | | para.rtuAddr, |
| | | Command.defaultId, |
| | | confirmComCode, |
| | |
| | | |
| | | MidResultToRtu confirmCommand = new MidResultToRtu() ; |
| | | confirmCommand.protocolName = para.protocolName ;//协议名称 |
| | | confirmCommand.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | confirmCommand.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | confirmCommand.commandId = Command.defaultId ;//命令ID,发起命令的客户端(web端)生成,以匹配命令结果 |
| | | confirmCommand.downCode = confirmComCode ;//下行命令功能码; |
| | |
| | | |
| | | MidResultToRtu midRs = new MidResultToRtu() ; |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ; |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.commandId = para.commandId ;//命令ID,发起命令的客户端(web端)生成,以匹配命令结果 |
| | |
| | | import com.dy.common.mw.protocol.p206V202404.*; |
| | | import com.dy.common.mw.protocol.p206V202404.parse.global.GlParse; |
| | | import com.dy.common.mw.protocol.p206V202404.upVos.DataCd92_A2Vo; |
| | | import com.dy.common.mw.protocol.rtuState.ValveStateInfo; |
| | | import com.dy.common.util.ByteUtil; |
| | | import org.apache.logging.log4j.LogManager; |
| | | import org.apache.logging.log4j.Logger; |
| | |
| | | |
| | | MidResultFromRtu midRs = new MidResultFromRtu() ; |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.upCode = para.upCode ;//上行数据中的功能码 |
| | | midRs.upHex = para.upHex ;//上行数据十六进制形式 |
| | |
| | | midRs.reportOrResponse_trueOrFalse = false ; |
| | | |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | if(para.data != null && para.data.getSubData() != null){ |
| | | DataCd92_A2Vo subData = (DataCd92_A2Vo)para.data.getSubData() ; |
| | | //opResult ;//开启泵/阀结果: 0x00:成功 0x81:失败 |
| | | callback.notify(new ValveStateInfo(subData.opResult.byteValue() == 0 ? true:false)); |
| | | } |
| | | return new MidResult[]{midRs} ; |
| | | } |
| | | /** |
| | |
| | | |
| | | MidResultToRtu midRs = new MidResultToRtu() ; |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ; |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.commandId = para.commandId ;//命令ID,发起命令的客户端(web端)生成,以匹配命令结果 |
| | |
| | | |
| | | |
| | | import com.dy.common.mw.protocol.*; |
| | | import com.dy.common.mw.protocol.p206V2.upVos.DataCd93Vo; |
| | | import com.dy.common.mw.protocol.p206V202404.*; |
| | | import com.dy.common.mw.protocol.p206V202404.parse.global.GlParse; |
| | | import com.dy.common.mw.protocol.p206V202404.upVos.DataCd93_A3Vo; |
| | | import com.dy.common.mw.protocol.rtuState.ValveStateInfo; |
| | | import org.apache.logging.log4j.LogManager; |
| | | import org.apache.logging.log4j.Logger; |
| | | |
| | |
| | | |
| | | MidResultFromRtu midRs = new MidResultFromRtu() ; |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.upCode = para.upCode ;//上行数据中的功能码 |
| | | midRs.upHex = para.upHex ;//上行数据十六进制形式 |
| | |
| | | midRs.reportOrResponse_trueOrFalse = false ; |
| | | |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | if(para.data != null && para.data.getSubData() != null){ |
| | | DataCd93_A3Vo subData = (DataCd93_A3Vo)para.data.getSubData() ; |
| | | //opResult ;//关泵/阀结果: 0x00:成功 0x81:失败 |
| | | callback.notify(new ValveStateInfo(subData.opResult.byteValue()==0?false:true)); |
| | | } |
| | | |
| | | return new MidResult[]{midRs} ; |
| | | } |
| | | /** |
| | |
| | | |
| | | MidResultToRtu midRs = new MidResultToRtu() ; |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ; |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.commandId = para.commandId ;//命令ID,发起命令的客户端(web端)生成,以匹配命令结果 |
| | |
| | | |
| | | MidResultFromRtu midRs = new MidResultFromRtu() ; |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.upCode = para.upCode ;//上行数据中的功能码 |
| | | midRs.upHex = para.upHex ;//上行数据十六进制形式 |
| | |
| | | |
| | | MidResultToRtu midRs = new MidResultToRtu() ; |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ; |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.commandId = para.commandId ;//命令ID,发起命令的客户端(web端)生成,以匹配命令结果 |
| | |
| | | |
| | | MidResultFromRtu midRs = new MidResultFromRtu() ; |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.upCode = para.upCode ;//上行数据中的功能码 |
| | | midRs.upHex = para.upHex ;//上行数据十六进制形式 |
| | |
| | | |
| | | MidResultToRtu midRs = new MidResultToRtu() ; |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ; |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.commandId = para.commandId ;//命令ID,发起命令的客户端(web端)生成,以匹配命令结果 |
| | |
| | | |
| | | MidResultFromRtu midRs = new MidResultFromRtu() ; |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.upCode = para.upCode ;//上行数据中的功能码 |
| | | midRs.upHex = para.upHex ;//上行数据十六进制形式 |
| | |
| | | |
| | | MidResultToRtu midRs = new MidResultToRtu() ; |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ; |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.commandId = para.commandId ;//命令ID,发起命令的客户端(web端)生成,以匹配命令结果 |
| | |
| | | |
| | | MidResultFromRtu midRs = new MidResultFromRtu() ; |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.upCode = para.upCode ;//上行数据中的功能码 |
| | | midRs.upHex = para.upHex ;//上行数据十六进制形式 |
| | |
| | | |
| | | MidResultToRtu midRs = new MidResultToRtu() ; |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ; |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.commandId = para.commandId ;//命令ID,发起命令的客户端(web端)生成,以匹配命令结果 |
| | |
| | | |
| | | MidResultFromRtu midRs = new MidResultFromRtu() ; |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.upCode = para.upCode ;//上行数据中的功能码 |
| | | midRs.upHex = para.upHex ;//上行数据十六进制形式 |
| | |
| | | |
| | | MidResultToRtu midRs = new MidResultToRtu() ; |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ; |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.commandId = para.commandId ;//命令ID,发起命令的客户端(web端)生成,以匹配命令结果 |
| | |
| | | |
| | | |
| | | import com.dy.common.mw.protocol.*; |
| | | import com.dy.common.mw.protocol.p206V2.upVos.DataCd83CloseVo; |
| | | import com.dy.common.mw.protocol.p206V2.upVos.DataCd83OpenVo; |
| | | import com.dy.common.mw.protocol.p206V202404.*; |
| | | import com.dy.common.mw.protocol.p206V202404.parse.global.GlParse; |
| | | import com.dy.common.mw.protocol.p206V202404.upVos.DataCdC2Vo; |
| | | import com.dy.common.mw.protocol.rtuState.ValveStateInfo; |
| | | import com.dy.common.util.ByteUtil; |
| | | import org.apache.logging.log4j.LogManager; |
| | | import org.apache.logging.log4j.Logger; |
| | |
| | | |
| | | MidResultFromRtu midRs = new MidResultFromRtu() ; |
| | | midRs.protocolName = para.protocolName ;//协议名称 |
| | | midRs.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | midRs.upCode = para.upCode ;//上行数据中的功能码 |
| | | midRs.upHex = para.upHex ;//上行数据十六进制形式 |
| | |
| | | downCpParams.setValue( |
| | | null, |
| | | ProtocolConstantV206V202404.protocolName, |
| | | para.protocolVersion, |
| | | para.rtuAddr, |
| | | Command.defaultId, |
| | | confirmComCode, |
| | |
| | | |
| | | MidResultToRtu confirmCommand = new MidResultToRtu() ; |
| | | confirmCommand.protocolName = para.protocolName ;//协议名称 |
| | | confirmCommand.protocolVersion = para.protocolVersion ;//协议版本号 |
| | | confirmCommand.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | confirmCommand.commandId = Command.defaultId ;//命令ID,发起命令的客户端(web端)生成,以匹配命令结果 |
| | | confirmCommand.downCode = confirmComCode ;//下行命令功能码; |
| | |
| | | confirmCommand.isQuickSend = true ; |
| | | } |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | if(para.data != null && para.data.getSubData() != null){ |
| | | DataCdC2Vo subData = (DataCdC2Vo)para.data.getSubData() ; |
| | | // public Byte opType2 ;//开启关闭:0: 开启 -1:关闭 |
| | | // public Boolean success ;//执行结果(true成功, false失败) |
| | | if(subData.opType2.byteValue() == 0 && subData.success){ |
| | | callback.notify(new ValveStateInfo(true)); |
| | | }else if(subData.opType2.byteValue() == 1 && subData.success){ |
| | | callback.notify(new ValveStateInfo(false)); |
| | | } |
| | | } |
| | | |
| | | return new MidResult[]{midRs, confirmCommand} ; |
| | | } |
| | | /** |
| | |
| | | public class DataCd55Vo { |
| | | |
| | | public String controllerType;//控制器类型 01(0x01):测控一体阀;57(0x57):井电控制器 |
| | | public Integer projectNo ;//控制器类型 0x01:测控一体阀;0x57:井电控制器 |
| | | public Integer projectNo ;//项目编号 |
| | | public String icCardAddr ;//IC卡地址(8位数字或字母) |
| | | public String icCardNo ;//用户卡序列号(16位数字)(6字节BCD,2字节HEX) |
| | | public Double chargeMoney ;//单位:元 2位小数点(最大值 99999999.99) |
| | |
| | | public class DataCd56Vo { |
| | | |
| | | public String controllerType;//控制器类型 01(0x01):测控一体阀;57(0x57):井电控制器 |
| | | public Integer projectNo ;//控制器类型 0x01:测控一体阀;0x57:井电控制器 |
| | | public Integer projectNo ;//项目编号 |
| | | public Integer waterAlarm ;//剩余水量报警值,单位:m3。整数,取值范围0~65535 |
| | | public Integer moneyAlarm ;//剩余金额报警值,单位:元。整数,取值范围0~65535 |
| | | |
| | |
| | | public class DataCd5CVo { |
| | | |
| | | public String controllerType;//控制器类型 01(0x01):测控一体阀;57(0x57):井电控制器 |
| | | public Integer projectNo ;//控制器类型 0x01:测控一体阀;0x57:井电控制器 |
| | | public Integer projectNo ;//项目编号 |
| | | public String dt ;//观察时间(yyyy-mm-dd HH) |
| | | public Double meterAmountDay ;//当日水表净流量,2个小数点 |
| | | public Double farmerAmountDay ;//当日用户用水量,2个小数点 |
| | |
| | | public class DataCd68Vo { |
| | | |
| | | public String controllerType;//控制器类型 01(0x01):测控一体阀;57(0x57):井电控制器 |
| | | public Integer projectNo ;//控制器类型 0x01:测控一体阀;0x57:井电控制器 |
| | | public Integer projectNo ;//项目编号 |
| | | public Integer maxAmountYear ;//机井年最大用水量 单位:m3 整数,取值范围0~99999999 |
| | | public Double limitLevel ;//水位下限 单位:m 取值范围:0~9999.99 |
| | | |
| | |
| | | public class DataCd83Vo { |
| | | |
| | | public String controllerType;//控制器类型 01(0x01):测控一体阀;57(0x57):井电控制器 |
| | | public Integer projectNo ;//控制器类型 0x01:测控一体阀;0x57:井电控制器 |
| | | public Integer projectNo ;//项目编号 |
| | | public Double waterTotalAmountYear ;//本年累计流量 |
| | | public Double waterTotalAmountMeter ;//水表累计流量 |
| | | public Double eleTotalAmountYear ;//本年累计电量 |
| | |
| | | public class DataCd84Vo extends AlarmVo { |
| | | |
| | | public String controllerType;//控制器类型 01(0x01):测控一体阀;57(0x57):井电控制器 |
| | | public Integer projectNo ;//控制器类型 0x01:测控一体阀;0x57:井电控制器 |
| | | public Integer projectNo ;//项目编号 |
| | | public String openDt;//开泵/阀时间(yyyy-mm-dd HH:MM:SS) |
| | | public String icCardAddr ;//IC卡地址(远程关闭时为0) |
| | | public String icCardNo ;//IC卡编号(17位数字) |
| | |
| | | public class DataCd85Vo extends AlarmVo { |
| | | |
| | | public String controllerType;//控制器类型 01(0x01):测控一体阀;57(0x57):井电控制器 |
| | | public Integer projectNo ;//控制器类型 0x01:测控一体阀;0x57:井电控制器 |
| | | public Integer projectNo ;//项目编号 |
| | | public Byte opType ;//关泵/阀方式: 0x00:刷卡闭 0x01:平台关 0x02:APP关 0x03:非法卡关 0x04:水表异常关 0x05:电表异常关 0x06:剩余水量不足关 0x07:剩余金额不足关 0x08:开泵/阀后管道没有流量关 0x09:掉电再上电。 |
| | | public String icCardAddr ;//IC卡地址(远程关闭时为0) |
| | | public String icCardNo ;//IC卡编号(17位数字) |
| | |
| | | public class DataCd92_A2Vo { |
| | | |
| | | public String controllerType;//控制器类型 01(0x01):测控一体阀;57(0x57):井电控制器 |
| | | public Integer projectNo ;//控制器类型 0x01:测控一体阀;0x57:井电控制器 |
| | | public Integer projectNo ;//项目编号 |
| | | public String icCardNo ;//IC卡编号(17位数字) |
| | | public String orderNo ;//订单号(16位数字) |
| | | public String opDt ;//开泵/阀时间(yyyy-mm-dd HH:MM:SS) |
| | |
| | | public class DataCd93_A3Vo extends AlarmVo { |
| | | |
| | | public String controllerType;//控制器类型 01(0x01):测控一体阀;57(0x57):井电控制器 |
| | | public Integer projectNo ;//控制器类型 0x01:测控一体阀;0x57:井电控制器 |
| | | public Integer projectNo ;//项目编号 |
| | | public Byte opResult ;//关泵/阀结果: 0x00:成功 0x81:失败 |
| | | public Byte opType ;//关泵/阀方式: 0x00:刷卡闭 0x01:平台关 0x02:APP关 0x03:非法卡关 0x04:水表异常关 0x05:电表异常关 0x06:剩余水量不足关 0x07:剩余金额不足关 0x08:开泵/阀后管道没有流量关 0x09:掉电再上电。 |
| | | public String icCardAddr ;//IC卡地址(远程关闭时为0) |
| | |
| | | public class DataCd9AVo { |
| | | |
| | | public String controllerType;//控制器类型 01(0x01):测控一体阀;57(0x57):井电控制器 |
| | | public Integer projectNo ;//控制器类型 0x01:测控一体阀;0x57:井电控制器 |
| | | public Integer projectNo ;//项目编号 |
| | | public Integer maxAmountYear ;//设备终端年用水量 单位:m3 整数,取值范围0~99999999 |
| | | |
| | | public String comName ;//命令名称 |
| New file |
| | |
| | | package com.dy.common.mw.protocol.rtuState; |
| | | |
| | | import com.dy.common.mw.protocol.NotifyInfo; |
| | | |
| | | /** |
| | | * @Author: liurunyu |
| | | * @Date: 2024/11/3 13:44 |
| | | * @Description |
| | | */ |
| | | public class ValveStateInfo implements NotifyInfo { |
| | | /** |
| | | * 阀门状态,true表示开启态,false表示关闭 |
| | | * 说明: |
| | | * 开启态指的是阀门已经打开或即正在打开过程中, |
| | | * 当前控制器逻辑是:当收到开阀命令,在开阀门过程中控制器上报数据中阀门状态仍时关闭态,但我们程序认为这时阀门是开启态; |
| | | * 这样设计的目的是为升级服务,当阀门是开启态时不能进行远程升级 |
| | | */ |
| | | public Boolean openTrueCloseFalse ; |
| | | public ValveStateInfo(boolean openTrueCloseFalse){ |
| | | this.openTrueCloseFalse = openTrueCloseFalse ; |
| | | } |
| | | } |
| New file |
| | |
| | | package com.dy.common.softUpgrade.parse; |
| | | |
| | | import cn.hutool.core.util.HexUtil; |
| | | import com.dy.common.util.ByteUtil; |
| | | |
| | | import java.io.*; |
| | | import java.util.List; |
| | | import java.util.stream.Stream; |
| | | |
| | | /** |
| | | * @Author: liurunyu |
| | | * @Date: 2024/11/2 8:51 |
| | | * @Description |
| | | */ |
| | | public class HexFileParse { |
| | | |
| | | private static final int hexFileMinLine = 4 ; |
| | | private static final int lineHeadEndIndex = 9 ; |
| | | private static final int bytesSplitUnit = 512 ; |
| | | |
| | | public static void main(String[] args) throws Exception{ |
| | | boolean fromBytes = true ; |
| | | HexFileParse obj = new HexFileParse() ; |
| | | if(!fromBytes){ |
| | | String filePath = "D:\\hexFile\\YuanMu_edit241007_01.hex"; |
| | | //File file = new File(filePath) ; |
| | | HexFileVo vo = obj.doParse(filePath) ; |
| | | System.out.println(vo.toString()); |
| | | }else{ |
| | | String filePath = "D:\\hexFile\\YuanMu_edit241007_01.hex"; |
| | | File file = new File(filePath) ; |
| | | byte[] fileContent = new byte[(int)file.length()] ; |
| | | FileInputStream fileInputStream = new FileInputStream(file) ; |
| | | fileInputStream.read(fileContent) ; |
| | | HexFileVo vo = obj.doParse(fileContent) ; |
| | | System.out.println(vo.toString()); |
| | | } |
| | | } |
| | | /** |
| | | * 解析Hex文件 |
| | | * @param path |
| | | * @return |
| | | * @throws Exception |
| | | */ |
| | | public HexFileVo doParse(String path) throws Exception { |
| | | File file = new File(path) ; |
| | | return this.doParse(file) ; |
| | | } |
| | | |
| | | /** |
| | | * 解析Hex文件 |
| | | * @param file |
| | | * @return |
| | | * @throws Exception |
| | | */ |
| | | public HexFileVo doParse(File file) throws Exception{ |
| | | if(file == null){ |
| | | throw new Exception("Hex文件对象为null") ; |
| | | } |
| | | if(!file.exists()){ |
| | | throw new Exception("Hex文件不存在") ; |
| | | } |
| | | Stream<String> linesStream = new BufferedReader(new FileReader(file)).lines() ; |
| | | List<String> lineList = linesStream.toList() ; |
| | | HexFileVo vo = new HexFileVo() ; |
| | | this.checkAndCalculate(vo, lineList); |
| | | this.parse(vo, lineList); |
| | | this.split(vo); |
| | | return vo ; |
| | | } |
| | | |
| | | /** |
| | | * 解析Hex文件 |
| | | * @param fileContent |
| | | * @return |
| | | * @throws Exception |
| | | */ |
| | | public HexFileVo doParse(byte[] fileContent) throws Exception{ |
| | | if(fileContent == null || fileContent.length == 0){ |
| | | throw new Exception("Hex文件对象为null") ; |
| | | } |
| | | ByteArrayInputStream byteInputStream = new ByteArrayInputStream(fileContent); |
| | | Stream<String> linesStream = new BufferedReader(new InputStreamReader(byteInputStream)).lines() ; |
| | | List<String> lineList = linesStream.toList() ; |
| | | HexFileVo vo = new HexFileVo() ; |
| | | this.checkAndCalculate(vo, lineList); |
| | | this.parse(vo, lineList); |
| | | this.split(vo); |
| | | return vo ; |
| | | } |
| | | |
| | | /** |
| | | * 合法性检查,并计算数据包数 |
| | | * @param vo |
| | | * @param lineList |
| | | * @throws Exception |
| | | */ |
| | | private void checkAndCalculate(HexFileVo vo, List<String> lineList) throws Exception{ |
| | | if(lineList == null){ |
| | | throw new Exception("Hex文件内容为空") ; |
| | | } |
| | | vo.totalLines = lineList.size() ; |
| | | if(vo.totalLines <= 0){ |
| | | throw new Exception("Hex文件内容为空") ; |
| | | } |
| | | if(vo.totalLines < hexFileMinLine){ |
| | | throw new Exception("Hex文件内容行数" + vo.totalLines + "不正确(最小行数" + hexFileMinLine +")") ; |
| | | } |
| | | vo.calculateBytes = ((vo.totalLines - 4) * 32) / 1024 * 512 ; |
| | | } |
| | | |
| | | /** |
| | | * 解析Hex文件内容,组合成一个大数据包 |
| | | * @param vo |
| | | * @param lineList |
| | | * @throws Exception |
| | | */ |
| | | private void parse(HexFileVo vo, List<String> lineList) throws Exception{ |
| | | int counter = 0 ; |
| | | for(String line : lineList){ |
| | | if(counter == 0){ |
| | | // 文件头 |
| | | }else if(counter == vo.totalLines - 2){ |
| | | // 文件尾倒数第2行 |
| | | }else if(counter == vo.totalLines - 1){ |
| | | // 文件尾倒数第1行 |
| | | }else{ |
| | | // 文件内容 |
| | | if(line == null){ |
| | | vo.errors.add("第" + counter + "行内容为空") ; |
| | | }else{ |
| | | line = line.trim() ; |
| | | if(line.length() == 0){ |
| | | vo.errors.add("第" + counter + "行内容为空") ; |
| | | }else{ |
| | | if(!line.startsWith(":")){ |
| | | vo.errors.add("第" + counter + "行内容不是以:开头") ; |
| | | }else{ |
| | | line = line.substring(lineHeadEndIndex, line.length() - 2) ; |
| | | if(vo.bytes.length == 0){ |
| | | vo.bytes = HexUtil.decodeHex(line) ; |
| | | }else{ |
| | | byte[] bytes = HexUtil.decodeHex(line) ; |
| | | vo.bytes = ByteUtil.bytesMerge(vo.bytes, bytes) ; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | counter ++ ; |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 以512为单位分割数据包 |
| | | * @param vo |
| | | */ |
| | | private void split(HexFileVo vo){ |
| | | if(vo.bytes != null && vo.bytes.length > 0){ |
| | | vo.realBytes += vo.bytes.length ; |
| | | int index = 0 ; |
| | | while (true){ |
| | | if(index < vo.bytes.length){ |
| | | byte[] bytes = ByteUtil.bytesSplit(vo.bytes, index, bytesSplitUnit) ; |
| | | vo.listByte512.add(bytes) ; |
| | | vo.totalBytes512 += bytes.length ; |
| | | }else{ |
| | | break ; |
| | | } |
| | | index += bytesSplitUnit ; |
| | | } |
| | | } |
| | | } |
| | | |
| | | } |
| New file |
| | |
| | | package com.dy.common.softUpgrade.parse; |
| | | |
| | | import cn.hutool.core.util.HexUtil; |
| | | import lombok.Data; |
| | | |
| | | import java.util.ArrayList; |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * @Author: liurunyu |
| | | * @Date: 2024/11/2 8:54 |
| | | * @Description |
| | | */ |
| | | @Data |
| | | public class HexFileVo { |
| | | public long totalLines ; |
| | | public long calculateBytes; |
| | | public long realBytes; |
| | | public byte[] bytes ; |
| | | public List<byte[]> listByte512 ; |
| | | public long totalBytes512 ; |
| | | public List<String> errors ; |
| | | |
| | | public HexFileVo() { |
| | | totalLines = 0 ; |
| | | calculateBytes = 0 ; |
| | | bytes = new byte[0] ; |
| | | listByte512 = new ArrayList<>() ; |
| | | totalBytes512 = 0 ; |
| | | errors = new ArrayList<>() ; |
| | | } |
| | | |
| | | public String toString(){ |
| | | String s = "totalLines:" + totalLines |
| | | + "\ncalculateBytes:" + calculateBytes |
| | | + "\nrealBytes:" + realBytes |
| | | + "\ntotalBytes512:" + totalBytes512 |
| | | + "\nerrors:" + errors ; |
| | | if(listByte512.size() > 0){ |
| | | int counter = 0 ; |
| | | for(byte[] bytes : listByte512){ |
| | | s += "\n" + counter++ + ": " + HexUtil.encodeHexStr(bytes) ; |
| | | } |
| | | } |
| | | return s ; |
| | | } |
| | | } |
| | |
| | | |
| | | |
| | | public class ByteUtil { |
| | | |
| | | |
| | | /** |
| | | * 将字节数组分割 |
| | | * @param bytes 被分割数组 |
| | | * @param fromIndex 分割起始位置 |
| | | * @param len 分割长度 |
| | | * @return 返回 分割出来的数组 |
| | | */ |
| | | public static byte[] bytesSplit(byte[] bytes, int fromIndex, int len){ |
| | | if(bytes == null){ |
| | | return null ; |
| | | }else{ |
| | | byte[] bs = new byte[len] ; |
| | | if(fromIndex + len > bytes.length){ |
| | | System.arraycopy(bytes, fromIndex, bs, 0, bytes.length - fromIndex) ; |
| | | }else{ |
| | | System.arraycopy(bytes, fromIndex, bs, 0, len) ; |
| | | } |
| | | return bs ; |
| | | } |
| | | } |
| | | /** |
| | | * 将字节数组分割 |
| | | * @param bytes 被分割数组 |
| | | * @param fromIndex 分割起始位置 |
| | | * @param len 分割长度 |
| | | * @return 返回 分割出来的数组 |
| | | */ |
| | | public static Object[] bytesSplit_(byte[] bytes, int fromIndex, int len){ |
| | | if(bytes == null){ |
| | | return null ; |
| | | }else{ |
| | | int realLen = len ; |
| | | byte[] bs = new byte[len] ; |
| | | if(fromIndex + len > bytes.length){ |
| | | System.arraycopy(bytes, fromIndex, bs, 0, bytes.length - fromIndex) ; |
| | | realLen = bytes.length - fromIndex ; |
| | | }else{ |
| | | System.arraycopy(bytes, fromIndex, bs, 0, len) ; |
| | | } |
| | | return new Object[]{bs, realLen} ; |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 将字节数组合并到字节数组上 |
| | | * @param bGroup1 被合并数组 |
| | |
| | | |
| | | public static final String onLineStatistics = "LCD0003" ;//查询所有RTU状态情况 |
| | | |
| | | public static final String allRtuStates = "LCD0010" ;//查询所有RTU状态 |
| | | |
| | | public static final String partRtuStates = "LCD0011" ;//查询部分RTU状态 |
| | | |
| | | public static final String allProtocols = "LCD0100" ;//查询所有协议配置 |
| | | |
| | | public static final String stopTcpSv = "LCD0110" ;//停止TCP服务,不再接入新的TCP连接,已经TCP连接的全部断连接 |
| | |
| | | import com.dy.common.mw.support.SupportUnit; |
| | | import com.dy.common.mw.support.SupportUnitConfigVo; |
| | | import com.dy.rtuMw.server.tasks.SendMsConstantTask; |
| | | import com.dy.rtuMw.server.tasks.ToRtuConstantTask; |
| | | import com.dy.rtuMw.server.tasks.RtuDownConstantTask; |
| | | import com.dy.rtuMw.resource.ResourceUnit; |
| | | import com.dy.rtuMw.resource.ResourceUnitConfigVo; |
| | | import com.dy.common.springUtil.SpringContextUtil; |
| | |
| | | coreAdap.setConfig(coreConfVo); |
| | | CoreUnit coreUnit = CoreUnit.getInstance(); |
| | | coreUnit.setAdapter(coreAdap); |
| | | CoreUnit.addConstantTask(new ToRtuConstantTask()); |
| | | CoreUnit.addConstantTask(new RtuDownConstantTask()); |
| | | CoreUnit.addConstantTask(new FromRtuDataConstantTask()); |
| | | CoreUnit.addConstantTask(new FromRtuComResultConstantTask()); |
| | | CoreUnit.addConstantTask(new SendMsConstantTask()); |
| | |
| | | package com.dy.rtuMw.server; |
| | | |
| | | import com.dy.common.mw.protocol.MidResultAction; |
| | | import com.dy.common.mw.protocol.Notify; |
| | | import com.dy.common.mw.protocol.ProtocolConfigVo; |
| | | import com.dy.common.mw.protocol.ProtocolUnitAdapter; |
| | | import com.dy.rtuMw.server.forTcp.MidResultActionError; |
| | | import com.dy.rtuMw.server.forTcp.MidResultActionFromRtu; |
| | | import com.dy.rtuMw.server.forTcp.MidResultActionToRtu; |
| | | import com.dy.rtuMw.server.protocolDriver.RtuInfoNotify; |
| | | |
| | | public class AdapterImp_ProtocolUnit implements ProtocolUnitAdapter { |
| | | |
| | | private static final MidResultAction toRtu = new MidResultActionToRtu() ; |
| | | private static final MidResultAction fromRtu = new MidResultActionFromRtu() ; |
| | | private static final MidResultAction error = new MidResultActionError() ; |
| | | |
| | | private static final RtuInfoNotify notify = new RtuInfoNotify() ; |
| | | |
| | | private ProtocolConfigVo configVo = null ; |
| | | |
| | |
| | | public void setConfig(ProtocolConfigVo configVo) { |
| | | this.configVo = configVo; |
| | | } |
| | | /** |
| | | * 单线程环境中运行,得到单个RTU信息通知器 |
| | | * @param protocolName 协议名称 |
| | | * @return Notify |
| | | */ |
| | | @Override |
| | | public Notify getSingleRtuInfoNotify(String protocolName) { |
| | | return notify ; |
| | | } |
| | | |
| | | /** |
| | | * 单线程环境中运行,得到单个 处理RTU下行数据的MidResultAction执行对象 |
| New file |
| | |
| | | package com.dy.rtuMw.server.forTcp; |
| | | |
| | | import com.dy.common.util.DateTime; |
| | | import lombok.Data; |
| | | |
| | | @Data |
| | | public class RtuStatus { |
| | | |
| | | public String rtuAddr ;//rtu地址 |
| | | public String ip ;//RTU端IP |
| | | public Integer port ;//RTU端端口 |
| | | public String onLineDt ;//最近上线时刻 |
| | | public String offLineDt ;//最近离线时刻 |
| | | |
| | | public String protocolName ;//协议名称 |
| | | public Short protocolVersion ;//协议版本号 |
| | | |
| | | public Boolean valveOpenTrueCloseFalse ;//阀门状态(true为开启状态,false为关闭态) |
| | | public String valveOpenLastDt ;//最后设置阀门开启状态时刻 |
| | | public String valveCloseLastDt ;//最后设置阀门关闭状态时刻 |
| | | public Long valveStatusLastTimeStamp ;//最后设置阀门状态时刻 |
| | | |
| | | public String lastUpCode ;//最近一次上行数据的功能码 |
| | | public String lastUpCodeName ;//最近一次上行数据的功能码名称 |
| | | public String lastUpDt ;//最近一次上行数据的时刻 |
| | | |
| | | public String lastDownCode ;//最近一次下行数据的功能码 |
| | | public String lastDownCodeName ;//最近一次下行数据的功能码名称 |
| | | public String lastDownDt ;//最近一次下行数据的时刻 |
| | | |
| | | public String lastSuccessCommandCode ;//最近一次成功命令的功能码 |
| | | public String lastSuccessCommandCodeName ;//最近一次成功命令的功能码名称 |
| | | public String lastSuccessCommandDt ;//最近一次成功命令的时刻 |
| | | |
| | | public String lastFailureCommandCode ;//最近一次失败命令的功能码 |
| | | public String lastFailureCommandCodeName ;//最近一次失败命令的功能码名称 |
| | | public String lastFailureCommandDt ;//最近一次失败命令的时刻 |
| | | |
| | | |
| | | public void onLine(String rtuAddr, String ip, Integer port, String protocolName, Short protocolVersion){ |
| | | this.rtuAddr = rtuAddr ; |
| | | this.ip = ip ; |
| | | this.port = port ; |
| | | this.onLineDt = DateTime.yyyy_MM_dd_HH_mm_ss() ; |
| | | this.protocolName = protocolName ; |
| | | this.protocolVersion = protocolVersion ; |
| | | } |
| | | |
| | | public void offLine(){ |
| | | this.offLineDt = DateTime.yyyy_MM_dd_HH_mm_ss() ; |
| | | } |
| | | |
| | | public void upData(String code, String codeName, Integer bufferLen){ |
| | | this.lastUpCode = code ; |
| | | this.lastUpCodeName = codeName ; |
| | | this.lastUpDt = DateTime.yyyy_MM_dd_HH_mm_ss() ; |
| | | } |
| | | |
| | | public void downData(String code, String codeName, Integer bufferLen){ |
| | | this.lastDownCode = code ; |
| | | this.lastDownCodeName = codeName ; |
| | | this.lastDownDt = DateTime.yyyy_MM_dd_HH_mm_ss() ; |
| | | } |
| | | |
| | | public void commandSuccess(String code, String codeName){ |
| | | this.lastSuccessCommandCode = code ; |
| | | this.lastSuccessCommandCodeName = codeName ; |
| | | this.lastSuccessCommandDt = DateTime.yyyy_MM_dd_HH_mm_ss() ; |
| | | } |
| | | |
| | | public void commandFailure(String code, String codeName){ |
| | | this.lastFailureCommandCode = code ; |
| | | this.lastFailureCommandCodeName = codeName ; |
| | | this.lastFailureCommandDt = DateTime.yyyy_MM_dd_HH_mm_ss() ; |
| | | } |
| | | |
| | | public void valveOpen(){ |
| | | if(this.valveOpenTrueCloseFalse == null || !this.valveOpenTrueCloseFalse.booleanValue()){ |
| | | this.valveOpenTrueCloseFalse = true ; |
| | | this.valveOpenLastDt = DateTime.yyyy_MM_dd_HH_mm_ss() ; |
| | | this.valveCloseLastDt = null ; |
| | | this.valveStatusLastTimeStamp = System.currentTimeMillis() ; |
| | | } |
| | | } |
| | | |
| | | public void valveClose(){ |
| | | if(this.valveOpenTrueCloseFalse == null || this.valveOpenTrueCloseFalse.booleanValue()){ |
| | | this.valveOpenTrueCloseFalse = false ; |
| | | this.valveCloseLastDt = DateTime.yyyy_MM_dd_HH_mm_ss() ; |
| | | this.valveStatusLastTimeStamp = System.currentTimeMillis() ; |
| | | } |
| | | |
| | | } |
| | | |
| | | } |
| | |
| | | import org.apache.logging.log4j.LogManager; |
| | | import org.apache.logging.log4j.Logger; |
| | | |
| | | import com.dy.common.mw.protocol.rtuStatus.StCommandResult; |
| | | import com.dy.common.mw.protocol.rtuStatus.StDownData; |
| | | import com.dy.common.mw.protocol.rtuStatus.StOnOffLine; |
| | | import com.dy.common.mw.protocol.rtuStatus.StUpData; |
| | | import java.util.HashMap; |
| | | import java.util.Map; |
| | | |
| | | public class RtuStatusDealer { |
| | | private static Logger log = LogManager.getLogger(RtuStatusDealer.class.getName()) ; |
| | | |
| | | |
| | | public static void onOffLine(RtuSessionStatus sta){ |
| | | // StOnOffLine st = new StOnOffLine() ; |
| | | // st.rtuAddr = sta.rtuAddr ; |
| | | // st.onOff_trueFalse = sta.onTrueOffLine ; |
| | | // st.ip = sta.ip ; |
| | | // st.port = sta.port ; |
| | | |
| | | // if(member == null){ |
| | | // log.error("出错,未能得到处理RTU(地址为" + sta.rtuAddr + ")状态数据的数据中间件,可能数据中间件未启动或脱离的集群!"); |
| | | // }else{ |
| | | // log.info("通知数据中间件(" + member.toString() + "),RTU(地址为" + sta.rtuAddr + ")在线!"); |
| | | // new JgIoHandler().sendP2P(member, st); |
| | | // } |
| | | |
| | | private static Map<String, RtuStatus> map = new HashMap<String, RtuStatus>() ; |
| | | |
| | | /** |
| | | * 得到全部状态 |
| | | * @return |
| | | */ |
| | | public static Map<String, RtuStatus> allStatus(){ |
| | | return map ; |
| | | } |
| | | |
| | | public static void onLine(String rtuAddr, String ip, Integer port){ |
| | | // StOnOffLine st = new StOnOffLine() ; |
| | | // st.rtuAddr = rtuAddr ; |
| | | // st.onOff_trueFalse = true ; |
| | | // st.ip = ip ; |
| | | // st.port = port ; |
| | | |
| | | // Address member = JgUnit.getInstance().getJgMembers().getDataMwMemberByRtuAddr(rtuAddr) ; |
| | | // if(member == null){ |
| | | // log.error("出错,未能得到处理RTU(地址为" + rtuAddr + ")状态数据的数据中间件,可能数据中间件未启动或脱离的集群!"); |
| | | // }else{ |
| | | // log.info("通知数据中间件(" + member.toString() + "),RTU(地址为" + rtuAddr + ")在线!"); |
| | | // new JgIoHandler().sendP2P(member, st); |
| | | // } |
| | | /** |
| | | * 得到部分状态 |
| | | * @return |
| | | */ |
| | | public static Map<String, RtuStatus> partStatus(String[] rtuAddrArrGrp){ |
| | | synchronized (map){ |
| | | Map<String, RtuStatus> map = new HashMap<>(); |
| | | for(String rtuAddr : rtuAddrArrGrp){ |
| | | RtuStatus status = map.get(rtuAddr) ; |
| | | if(status != null){ |
| | | map.put(rtuAddr, status) ; |
| | | } |
| | | } |
| | | return map ; |
| | | } |
| | | } |
| | | public static void onLine(String rtuAddr, String ip, Integer port, String protocolName, Short protocolVersion){ |
| | | RtuStatus vo = map.get(rtuAddr) ; |
| | | if(vo == null) { |
| | | vo = new RtuStatus(); |
| | | vo.onLine(rtuAddr, ip, port, protocolName, protocolVersion) ; |
| | | map.put(rtuAddr, vo); |
| | | }else { |
| | | vo.onLine(rtuAddr, ip, port, protocolName, protocolVersion) ; |
| | | } |
| | | } |
| | | |
| | | public static void offLine(String rtuAddr){ |
| | | // StOnOffLine st = new StOnOffLine() ; |
| | | // st.rtuAddr = rtuAddr ; |
| | | // st.onOff_trueFalse = false ; |
| | | |
| | | // Address member = JgUnit.getInstance().getJgMembers().getDataMwMemberByRtuAddr(rtuAddr) ; |
| | | // if(member == null){ |
| | | // log.error("出错,未能得到处理RTU(地址为" + rtuAddr + ")状态数据的数据中间件,可能数据中间件未启动或脱离的集群!"); |
| | | // }else{ |
| | | // log.info("通知数据中间件(" + member.toString() + "),RTU(地址为" + rtuAddr + ")离线!"); |
| | | // new JgIoHandler().sendP2P(member, st); |
| | | // } |
| | | RtuStatus vo = map.get(rtuAddr) ; |
| | | if(vo == null) { |
| | | vo = new RtuStatus(); |
| | | vo.offLine(); |
| | | map.put(rtuAddr, vo); |
| | | }else { |
| | | vo.offLine(); |
| | | } |
| | | } |
| | | |
| | | public static void upData(String rtuAddr, Integer bufferLen){ |
| | | // StUpData st = new StUpData() ; |
| | | // st.rtuAddr = rtuAddr ; |
| | | // st.upBufferLen = bufferLen ; |
| | | // st.isReport = false ; |
| | | |
| | | // Address member = JgUnit.getInstance().getJgMembers().getDataMwMemberByRtuAddr(rtuAddr) ; |
| | | // if(member == null){ |
| | | // log.error("出错,未能得到处理RTU(地址为" + rtuAddr + ")状态数据的数据中间件,可能数据中间件未启动或脱离的集群!"); |
| | | // }else{ |
| | | // log.info("通知数据中间件(" + member.toString() + "),RTU(地址为" + rtuAddr + ")上行数据!"); |
| | | // new JgIoHandler().sendP2P(member, st); |
| | | // } |
| | | public static void upData(String rtuAddr, String code, String codeName, Integer bufferLen){ |
| | | RtuStatus vo = map.get(rtuAddr) ; |
| | | if(vo == null) { |
| | | vo = new RtuStatus(); |
| | | vo.upData(code, codeName, bufferLen); |
| | | map.put(rtuAddr, vo); |
| | | }else { |
| | | vo.upData(code, codeName, bufferLen); |
| | | } |
| | | } |
| | | |
| | | public static void upReport(String rtuAddr, Integer bufferLen){ |
| | | // StUpData st = new StUpData() ; |
| | | // st.rtuAddr = rtuAddr ; |
| | | // st.upBufferLen = bufferLen ; |
| | | // st.isReport = true ; |
| | | |
| | | // Address member = JgUnit.getInstance().getJgMembers().getDataMwMemberByRtuAddr(rtuAddr) ; |
| | | // if(member == null){ |
| | | // log.error("出错,未能得到处理RTU(地址为" + rtuAddr + ")状态数据的数据中间件,可能数据中间件未启动或脱离的集群!"); |
| | | // }else{ |
| | | // log.info("通知数据中间件(" + member.toString() + "),RTU(地址为" + rtuAddr + ")上报数据!"); |
| | | // new JgIoHandler().sendP2P(member, st); |
| | | // } |
| | | public static void upAutoReport(String rtuAddr, String code, String codeName, Integer bufferLen){ |
| | | RtuStatus vo = map.get(rtuAddr) ; |
| | | if(vo == null) { |
| | | vo = new RtuStatus(); |
| | | vo.upData(code, codeName, bufferLen); |
| | | map.put(rtuAddr, vo); |
| | | }else { |
| | | vo.upData(code, codeName, bufferLen); |
| | | } |
| | | } |
| | | |
| | | public static void downData(String rtuAddr, Integer bufferLen){ |
| | | // StDownData st = new StDownData() ; |
| | | // st.rtuAddr = rtuAddr ; |
| | | // st.downBufferLen = bufferLen ; |
| | | |
| | | // Address member = JgUnit.getInstance().getJgMembers().getDataMwMemberByRtuAddr(rtuAddr) ; |
| | | // if(member == null){ |
| | | // log.error("出错,未能得到处理RTU(地址为" + rtuAddr + ")状态数据的数据中间件,可能数据中间件未启动或脱离的集群!"); |
| | | // }else{ |
| | | // log.info("通知数据中间件(" + member.toString() + "),RTU(地址为" + rtuAddr + ")下行数据!"); |
| | | // new JgIoHandler().sendP2P(member, st); |
| | | // } |
| | | public static void downData(String rtuAddr, String code, String codeName, Integer bufferLen){ |
| | | RtuStatus vo = map.get(rtuAddr) ; |
| | | if(vo == null) { |
| | | vo = new RtuStatus(); |
| | | vo.downData(code, codeName, bufferLen); |
| | | map.put(rtuAddr, vo); |
| | | }else { |
| | | vo.downData(code, codeName, bufferLen); |
| | | } |
| | | } |
| | | |
| | | public static void commandSuccess(String rtuAddr){ |
| | | // StCommandResult st = new StCommandResult() ; |
| | | // st.rtuAddr = rtuAddr ; |
| | | // st.isSuccess = true ; |
| | | |
| | | // Address member = JgUnit.getInstance().getJgMembers().getDataMwMemberByRtuAddr(rtuAddr) ; |
| | | // if(member == null){ |
| | | // log.error("出错,未能得到处理RTU(地址为" + rtuAddr + ")状态数据的数据中间件,可能数据中间件未启动或脱离的集群!"); |
| | | // }else{ |
| | | // log.info("通知数据中间件(" + member.toString() + "),RTU(地址为" + rtuAddr + ")命令成功!"); |
| | | // new JgIoHandler().sendP2P(member, st); |
| | | // } |
| | | public static void commandSuccess(String rtuAddr, String code, String codeName){ |
| | | RtuStatus vo = map.get(rtuAddr) ; |
| | | if(vo == null) { |
| | | vo = new RtuStatus(); |
| | | vo.commandSuccess(code, codeName); |
| | | map.put(rtuAddr, vo); |
| | | }else { |
| | | vo.commandSuccess(code, codeName); |
| | | } |
| | | } |
| | | |
| | | public static void commandFailure(String rtuAddr){ |
| | | // StCommandResult st = new StCommandResult() ; |
| | | // st.rtuAddr = rtuAddr ; |
| | | // st.isSuccess = false ; |
| | | |
| | | // Address member = JgUnit.getInstance().getJgMembers().getDataMwMemberByRtuAddr(rtuAddr) ; |
| | | // if(member == null){ |
| | | // log.error("出错,未能得到处理RTU(地址为" + rtuAddr + ")状态数据的数据中间件,可能数据中间件未启动或脱离的集群!"); |
| | | // }else{ |
| | | // log.info("通知数据中间件(" + member.toString() + "),RTU(地址为" + rtuAddr + ")命令失败!"); |
| | | // new JgIoHandler().sendP2P(member, st); |
| | | // } |
| | | public static void commandFailure(String rtuAddr, String code, String codeName){ |
| | | RtuStatus vo = map.get(rtuAddr) ; |
| | | if(vo == null) { |
| | | vo = new RtuStatus(); |
| | | vo.commandFailure(code, codeName); |
| | | map.put(rtuAddr, vo); |
| | | }else { |
| | | vo.commandFailure(code, codeName); |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 命令结果收到了,但未在缓存匹配上下行的命令,说明下行缓存命令因超时被清除,这说明有个命令由失败变成功了 |
| | | * @param rtuAddr |
| | | */ |
| | | public static void commandFail2Success(String rtuAddr){ |
| | | // StCommandResult st = new StCommandResult() ; |
| | | // st.rtuAddr = rtuAddr ; |
| | | // st.fail2Success = true ; |
| | | |
| | | // Address member = JgUnit.getInstance().getJgMembers().getDataMwMemberByRtuAddr(rtuAddr) ; |
| | | // if(member == null){ |
| | | // log.error("出错,未能得到处理RTU(地址为" + rtuAddr + ")状态数据的数据中间件,可能数据中间件未启动或脱离的集群!"); |
| | | // }else{ |
| | | // log.info("通知数据中间件(" + member.toString() + "),RTU(地址为" + rtuAddr + ")命令由失败转成功!"); |
| | | // new JgIoHandler().sendP2P(member, st); |
| | | // } |
| | | //暂时无逻辑 |
| | | } |
| | | |
| | | /** |
| | | * 收到了成功开阀报(开阀自报,开阀工作报,远程开阀(执行)应答等,都认为阀门是开启状态(这时上报的数据中阀门状态可能是关闭(因为打开阀门需要时间))) |
| | | * @param rtuAddr |
| | | */ |
| | | public static void valveOpen(String rtuAddr){ |
| | | RtuStatus vo = map.get(rtuAddr) ; |
| | | if(vo == null) { |
| | | vo = new RtuStatus(); |
| | | vo.valveOpen(); |
| | | map.put(rtuAddr, vo); |
| | | }else { |
| | | vo.valveOpen(); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 收到了成功关阀报(关阀自报,远程关阀(执行)应答等,都认为阀门是关闭状态(这时上报的数据中阀门状态可能是开启(因为关闭阀门需要时间))) |
| | | * @param rtuAddr |
| | | */ |
| | | public static void valveClose(String rtuAddr){ |
| | | RtuStatus vo = map.get(rtuAddr) ; |
| | | if(vo == null) { |
| | | vo = new RtuStatus(); |
| | | vo.valveClose(); |
| | | map.put(rtuAddr, vo); |
| | | }else { |
| | | vo.valveClose(); |
| | | } |
| | | } |
| | | |
| | | } |
| | |
| | | //已经收到命令结果 |
| | | removeNodeFromCach = true ; |
| | | //记录状态 |
| | | RtuStatusDealer.commandSuccess(this.result.rtuAddr); |
| | | RtuStatusDealer.commandSuccess(this.result.rtuAddr, this.result.downCode, this.result.downCodeName); |
| | | return removeNodeFromCach ; |
| | | } |
| | | if(this.sendedTimes >= this.result.maxSendTimes){ |
| | |
| | | //超时 |
| | | removeNodeFromCach = true ; |
| | | //记录状态 |
| | | RtuStatusDealer.commandFailure(this.result.rtuAddr); |
| | | RtuStatusDealer.commandFailure(this.result.rtuAddr, this.result.downCode, this.result.downCodeName); |
| | | } |
| | | return removeNodeFromCach ; |
| | | } |
| | |
| | | //记录日志 |
| | | RtuLogDealer.log(this.result.rtuAddr, "下行数据 " + this.result.downCode + (this.result.downCodeName==null?"":("(" + this.result.downCodeName + ")")) + ":" + this.result.downBufHex); |
| | | //记录状态 |
| | | RtuStatusDealer.downData(this.result.rtuAddr, this.result.downBuffer.length); |
| | | RtuStatusDealer.downData(this.result.rtuAddr, this.result.downCode, this.result.downCodeName, this.result.downBuffer.length); |
| | | |
| | | log.info("下行RTU(地址=" + this.result.rtuAddr + ")命令[功能码=" + this.result.downCode + (this.result.downCodeName==null?"":("(" + this.result.downCodeName + ")")) + "] " + this.result.downBufHex ) ; |
| | | } |
| | |
| | | |
| | | public IoSession ioSession ;//IoSession对象 |
| | | public String protocolName ;//通信协议名称 |
| | | public Short protocolVersion ;//通信协议版本号 |
| | | public Long lastDownComTime ;//上次下发命令时刻(毫秒时刻 System.currentTimeMillis()) |
| | | public Long lastUpDataTime ;//上次收到上行数据时刻(毫秒时刻 System.currentTimeMillis()) |
| | | public Long lastUpDataTimeForOnlineCtrl ;//上次收到上行数据时刻(毫秒时刻 System.currentTimeMillis()),用于上线情况控制 |
| | |
| | | package com.dy.rtuMw.server.forTcp; |
| | | |
| | | import java.net.InetAddress; |
| | | import java.net.InetSocketAddress; |
| | | import java.util.*; |
| | | import java.util.Map.Entry; |
| | | |
| | | import com.dy.common.mw.channel.tcp.TcpIoSessionAttrIdIsRtuAddr; |
| | | import com.dy.common.util.DateTime; |
| | | import org.apache.mina.core.session.IoSession; |
| | | |
| | | import com.dy.rtuMw.server.ServerProperties; |
| | |
| | | * |
| | | * 2023-12-19实测,发现Hashtable并不线程安全,所以应用了HashMap和synchronized |
| | | */ |
| | | private static HashMap<String, TcpSession> sessionTable = new HashMap<String, TcpSession>() ; |
| | | private static HashMap<String, TcpSession> map = new HashMap<String, TcpSession>() ; |
| | | |
| | | |
| | | /** |
| | |
| | | Integer rtuTotalConnect = 0 ;//已经连接过中间件的RTU总数(包括在线与离线的) |
| | | Integer rtuTotalOnLine = 0 ;//在线RTU总数 |
| | | Integer rtuTotalOffLine = 0 ;//离线RTU总数 |
| | | synchronized (sessionTable){ |
| | | rtuTotalConnect = sessionTable.size() ; |
| | | Collection<TcpSession> col = sessionTable.values() ; |
| | | synchronized (map){ |
| | | rtuTotalConnect = map.size() ; |
| | | Collection<TcpSession> col = map.values() ; |
| | | for(TcpSession se : col){ |
| | | if(se.ioSession.isConnected()){ |
| | | rtuTotalOnLine ++ ; |
| | |
| | | * 关闭所有网络连接 |
| | | */ |
| | | public static void closeAllSessions(){ |
| | | synchronized (sessionTable){ |
| | | Collection<TcpSession> col = sessionTable.values() ; |
| | | synchronized (map){ |
| | | Collection<TcpSession> col = map.values() ; |
| | | for(TcpSession se : col){ |
| | | se.ioSession.closeNow() ; |
| | | } |
| | | sessionTable.clear(); |
| | | map.clear(); |
| | | } |
| | | } |
| | | |
| | |
| | | * @param protocolName |
| | | * @param ioSession |
| | | */ |
| | | public static void putNewTcpSession(String rtuAddr, String protocolName, IoSession ioSession){ |
| | | synchronized (sessionTable){ |
| | | TcpSession tcpSe = sessionTable.get(rtuAddr) ; |
| | | public static void putNewTcpSession(String rtuAddr, String protocolName, Short protocolVersion, IoSession ioSession){ |
| | | synchronized (map){ |
| | | TcpSession tcpSe = map.get(rtuAddr) ; |
| | | if(tcpSe == null){ |
| | | tcpSe = new TcpSession() ; |
| | | tcpSe.protocolName = protocolName ; |
| | | tcpSe.protocolVersion = protocolVersion ; |
| | | tcpSe.ioSession = ioSession ; |
| | | sessionTable.put(rtuAddr, tcpSe) ; |
| | | map.put(rtuAddr, tcpSe) ; |
| | | }else{ |
| | | tcpSe.ioSession = ioSession ; |
| | | } |
| | |
| | | * @param oldRtuAddr |
| | | * @param newRtuAddr |
| | | * @param protocolName |
| | | * @param protocolVersion |
| | | * @param ioSession |
| | | */ |
| | | public static void changeRtuAddr(String oldRtuAddr, String newRtuAddr, String protocolName, IoSession ioSession){ |
| | | public static void changeRtuAddr(String oldRtuAddr, String newRtuAddr, String protocolName, Short protocolVersion, IoSession ioSession){ |
| | | if(oldRtuAddr != null && newRtuAddr != null && !oldRtuAddr.equals(newRtuAddr)){ |
| | | synchronized (sessionTable){ |
| | | TcpSession tcpSe = sessionTable.get(oldRtuAddr) ; |
| | | synchronized (map){ |
| | | TcpSession tcpSe = map.get(oldRtuAddr) ; |
| | | if(tcpSe == null){ |
| | | putNewTcpSession(newRtuAddr, protocolName, ioSession) ; |
| | | putNewTcpSession(newRtuAddr, protocolName, protocolVersion, ioSession) ; |
| | | }else{ |
| | | sessionTable.remove(oldRtuAddr) ; |
| | | sessionTable.put(newRtuAddr, tcpSe) ; |
| | | map.remove(oldRtuAddr) ; |
| | | map.put(newRtuAddr, tcpSe) ; |
| | | } |
| | | } |
| | | } |
| | |
| | | * @return |
| | | */ |
| | | public static TcpSession getTcpSession(String rtuAddr){ |
| | | return sessionTable.get(rtuAddr) ; |
| | | return map.get(rtuAddr) ; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 得到Tcp通信协议名称 |
| | | * @param rtuAddr |
| | | * @return |
| | | |
| | | public static String getTcpProtocolName(String rtuAddr){ |
| | | TcpSession tcpSe = sessionTable.get(rtuAddr) ; |
| | | if(tcpSe != null){ |
| | | return tcpSe.protocolName ; |
| | | }else{ |
| | | return null ; |
| | | } |
| | | } |
| | | */ |
| | | /** |
| | | * 得到Tcp通信协议名称 |
| | | * @param rtuAddr |
| | | * @return |
| | | */ |
| | | public static String getTcpProtocolName(String rtuAddr){ |
| | | TcpSession tcpSe = sessionTable.get(rtuAddr) ; |
| | | public static Object[] getTcpProtocolNameVersion(String rtuAddr){ |
| | | TcpSession tcpSe = map.get(rtuAddr) ; |
| | | if(tcpSe != null){ |
| | | return tcpSe.protocolName ; |
| | | return new Object[]{tcpSe.protocolName, tcpSe.protocolVersion}; |
| | | }else{ |
| | | return null ; |
| | | } |
| | |
| | | * @return [0]=在线数量,[2]上线过,但当前离线的数量 |
| | | */ |
| | | public static Integer[] allOnLineStateStatistics(){ |
| | | synchronized (sessionTable){ |
| | | synchronized (map){ |
| | | Integer[] arr = new Integer[]{0, 0} ; |
| | | Iterator<Entry<String, TcpSession>> it = sessionTable.entrySet().iterator() ; |
| | | Iterator<Entry<String, TcpSession>> it = map.entrySet().iterator() ; |
| | | Entry<String, TcpSession> entry = null ; |
| | | while(it.hasNext()){ |
| | | entry = it.next() ; |
| | |
| | | * @return |
| | | */ |
| | | public static HashMap<String, Boolean> allOnLine(){ |
| | | synchronized (sessionTable){ |
| | | synchronized (map){ |
| | | HashMap<String, Boolean> map = new HashMap<String, Boolean>(); |
| | | Iterator<Entry<String, TcpSession>> it = sessionTable.entrySet().iterator() ; |
| | | Iterator<Entry<String, TcpSession>> it = TcpSessionCache.map.entrySet().iterator() ; |
| | | Entry<String, TcpSession> entry = null ; |
| | | while(it.hasNext()){ |
| | | entry = it.next() ; |
| | |
| | | * @return |
| | | */ |
| | | public static HashMap<String, Boolean> partOnLine(String[] rtuAddrArrGrp){ |
| | | synchronized (sessionTable){ |
| | | synchronized (map){ |
| | | HashMap<String, Boolean> map = new HashMap<String, Boolean>(); |
| | | for(String rtuAddr : rtuAddrArrGrp){ |
| | | TcpSession tcpSe = sessionTable.get(rtuAddr) ; |
| | | TcpSession tcpSe = TcpSessionCache.map.get(rtuAddr) ; |
| | | if(tcpSe != null){ |
| | | map.put(rtuAddr, tcpSe.ioSession.isConnected()) ; |
| | | } |
| | |
| | | return map ; |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 得到所有RTU连接状态情况 |
| | | * @return |
| | | */ |
| | | public static List<RtuSessionStatus> allConnectStatus(){ |
| | | synchronized (sessionTable){ |
| | | List<RtuSessionStatus> list = new ArrayList<RtuSessionStatus>(); |
| | | Iterator<Entry<String, TcpSession>> it = sessionTable.entrySet().iterator() ; |
| | | Entry<String, TcpSession> entry = null ; |
| | | while(it.hasNext()){ |
| | | entry = it.next() ; |
| | | RtuSessionStatus vo = new RtuSessionStatus() ; |
| | | vo.rtuAddr = entry.getKey() ; |
| | | IoSession se = entry.getValue().ioSession ; |
| | | vo.onTrueOffLine = se.isConnected() ; |
| | | InetSocketAddress sa = (InetSocketAddress)se.getRemoteAddress() ; |
| | | if(sa != null){ |
| | | InetAddress inetAddr = sa.getAddress() ; |
| | | if(inetAddr != null){ |
| | | vo.ip = inetAddr.getHostAddress() ; |
| | | vo.port = sa.getPort() ; |
| | | } |
| | | } |
| | | list.add(vo) ; |
| | | } |
| | | return list ; |
| | | } |
| | | } |
| | | |
| | | // |
| | | // /** |
| | | // * 得到所有RTU连接状态情况 |
| | | // * @return |
| | | // */ |
| | | // public static List<RtuSessionStatus> allConnectStatus(){ |
| | | // synchronized (sessionTable){ |
| | | // List<RtuSessionStatus> list = new ArrayList<RtuSessionStatus>(); |
| | | // Iterator<Entry<String, TcpSession>> it = sessionTable.entrySet().iterator() ; |
| | | // Entry<String, TcpSession> entry = null ; |
| | | // while(it.hasNext()){ |
| | | // entry = it.next() ; |
| | | // RtuSessionStatus vo = new RtuSessionStatus() ; |
| | | // vo.rtuAddr = entry.getKey() ; |
| | | // IoSession se = entry.getValue().ioSession ; |
| | | // vo.onTrueOffLine = se.isConnected() ; |
| | | // InetSocketAddress sa = (InetSocketAddress)se.getRemoteAddress() ; |
| | | // if(sa != null){ |
| | | // InetAddress inetAddr = sa.getAddress() ; |
| | | // if(inetAddr != null){ |
| | | // vo.ip = inetAddr.getHostAddress() ; |
| | | // vo.port = sa.getPort() ; |
| | | // } |
| | | // } |
| | | // list.add(vo) ; |
| | | // } |
| | | // return list ; |
| | | // } |
| | | // } |
| | | // |
| | | |
| | | /** |
| | | * 得到IoSession |
| | |
| | | * @return |
| | | */ |
| | | public static Boolean isConnect(String rtuAddr){ |
| | | TcpSession tcpSe = sessionTable.get(rtuAddr) ; |
| | | TcpSession tcpSe = map.get(rtuAddr) ; |
| | | if(tcpSe != null){ |
| | | return tcpSe.ioSession.isConnected() ; |
| | | } |
| | |
| | | * @throws Exception |
| | | */ |
| | | public static void write(String rtuAddr, byte[] data) throws Exception{ |
| | | TcpSession tcpSe = sessionTable.get(rtuAddr) ; |
| | | TcpSession tcpSe = map.get(rtuAddr) ; |
| | | if(tcpSe != null){ |
| | | if(tcpSe.ioSession.isConnected()){ |
| | | tcpSe.ioSession.write(data) ; |
| | |
| | | * @param rtuAddr |
| | | */ |
| | | public static void cacheUpDataTime(String rtuAddr){ |
| | | TcpSession tcpSe = sessionTable.get(rtuAddr) ; |
| | | TcpSession tcpSe = map.get(rtuAddr) ; |
| | | if(tcpSe != null){ |
| | | tcpSe.lastUpDataTime = System.currentTimeMillis() ; |
| | | tcpSe.lastUpDataTimeForOnlineCtrl = System.currentTimeMillis() ; |
| | |
| | | * 当一定时间内没有上行数据,则认为RTU离线 |
| | | */ |
| | | public static void updateRtuStatus(Long now){ |
| | | synchronized (sessionTable){ |
| | | Set<Map.Entry<String, TcpSession>> entrySet = sessionTable.entrySet() ; |
| | | synchronized (map){ |
| | | Set<Map.Entry<String, TcpSession>> entrySet = map.entrySet() ; |
| | | Iterator<Map.Entry<String, TcpSession>> it = entrySet.iterator() ; |
| | | Map.Entry<String, TcpSession> entry ; |
| | | TcpSession tcpSe ; |
| | |
| | | * 得到所有RTU连接状态情况 |
| | | * @return |
| | | */ |
| | | public static List<RtuSessionStatus> allConnectStatus(){ |
| | | List<RtuSessionStatus> list = new ArrayList<RtuSessionStatus>(); |
| | | Iterator<Entry<String, TcpSession>> it = sessionTable.entrySet().iterator() ; |
| | | Entry<String, TcpSession> entry = null ; |
| | | while(it.hasNext()){ |
| | | entry = it.next() ; |
| | | RtuSessionStatus vo = new RtuSessionStatus() ; |
| | | vo.rtuAddr = entry.getKey() ; |
| | | IoSession se = entry.getValue().ioSession ; |
| | | vo.onTrueOffLine = se.isConnected() ; |
| | | InetSocketAddress sa = (InetSocketAddress)se.getRemoteAddress() ; |
| | | if(sa != null){ |
| | | InetAddress inetAddr = sa.getAddress() ; |
| | | if(inetAddr != null){ |
| | | vo.ip = inetAddr.getHostAddress() ; |
| | | vo.port = sa.getPort() ; |
| | | } |
| | | } |
| | | list.add(vo) ; |
| | | } |
| | | return list ; |
| | | } |
| | | // public static List<RtuSessionStatus> allConnectStatus(){ |
| | | // List<RtuSessionStatus> list = new ArrayList<RtuSessionStatus>(); |
| | | // Iterator<Entry<String, TcpSession>> it = sessionTable.entrySet().iterator() ; |
| | | // Entry<String, TcpSession> entry = null ; |
| | | // while(it.hasNext()){ |
| | | // entry = it.next() ; |
| | | // RtuSessionStatus vo = new RtuSessionStatus() ; |
| | | // vo.rtuAddr = entry.getKey() ; |
| | | // IoSession se = entry.getValue().ioSession ; |
| | | // vo.onTrueOffLine = se.isConnected() ; |
| | | // InetSocketAddress sa = (InetSocketAddress)se.getRemoteAddress() ; |
| | | // if(sa != null){ |
| | | // InetAddress inetAddr = sa.getAddress() ; |
| | | // if(inetAddr != null){ |
| | | // vo.ip = inetAddr.getHostAddress() ; |
| | | // vo.port = sa.getPort() ; |
| | | // } |
| | | // } |
| | | // list.add(vo) ; |
| | | // } |
| | | // return list ; |
| | | // } |
| | | |
| | | |
| | | /** |
| | |
| | | import com.dy.common.mw.UnitCallbackInterface; |
| | | import com.dy.common.mw.channel.tcp.TcpUnit; |
| | | import com.dy.common.mw.protocol.Command; |
| | | import com.dy.rtuMw.server.forTcp.RtuStatus; |
| | | import com.dy.rtuMw.server.local.localProtocol.*; |
| | | |
| | | import java.util.HashMap; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * @Author liurunyu |
| | |
| | | return this.onPartLine(com) ; |
| | | }else if(code.equals(CodeLocal.onLineStatistics)){ |
| | | return this.onLineStateStatistics(com) ; |
| | | }else if(code.equals(CodeLocal.allRtuStates)){ |
| | | return this.allRtuStates(com) ; |
| | | }else if(code.equals(CodeLocal.partRtuStates)){ |
| | | return this.partRtuStates(com) ; |
| | | }else if(code.equals(CodeLocal.allProtocols)){ |
| | | return this.allProtocols(com) ; |
| | | }else if(code.equals(CodeLocal.stopTcpSv)){ |
| | |
| | | } |
| | | |
| | | /** |
| | | * 查询所有RTU状态 |
| | | * @throws Exception |
| | | */ |
| | | private Command allRtuStates(Command command) throws Exception{ |
| | | Map<String, RtuStatus> map = new RtuStatusDeal().dealAll() ; |
| | | return ReturnCommand.successed("查询所有RTU在线情况结果", command.getId(), command.getCode(), map) ; |
| | | } |
| | | |
| | | /** |
| | | * 查询部分RTU状态 |
| | | * @throws Exception |
| | | */ |
| | | private Command partRtuStates(Command command) throws Exception{ |
| | | if(command.param != null && command.param instanceof String && !command.param.equals("")){ |
| | | String[] rtuAddrGrp = ((String)command.param).split(","); |
| | | Map<String, RtuStatus> map = new RtuStatusDeal().dealPart(rtuAddrGrp) ; |
| | | return ReturnCommand.successed("查询部分RTU状态结果", command.getId(), command.getCode(), map) ; |
| | | }else{ |
| | | return ReturnCommand.errored("出错,命令参数应该是所查询RTU的地址串", command.getId(), command.getCode()) ; |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 查询所有RTU协议配置 |
| | | * @throws Exception |
| | | */ |
| | |
| | | |
| | | public static final String onPartLine = "LCD0002" ;//查询所有RTU在线情况 |
| | | |
| | | public static final String onLineStatistics = "LCD0003" ;//查询所有RTU状态情况 |
| | | public static final String onLineStatistics = "LCD0003" ;//查询所有RTU状态统计情况 |
| | | |
| | | public static final String allRtuStates = "LCD0010" ;//查询所有RTU状态 |
| | | |
| | | public static final String partRtuStates = "LCD0011" ;//查询部分RTU状态 |
| | | |
| | | public static final String allProtocols = "LCD0100" ;//查询所有协议配置 |
| | | |
| New file |
| | |
| | | package com.dy.rtuMw.server.local.localProtocol; |
| | | |
| | | import com.dy.rtuMw.server.forTcp.RtuStatus; |
| | | import com.dy.rtuMw.server.forTcp.RtuStatusDealer; |
| | | import com.dy.rtuMw.server.forTcp.TcpSessionCache; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * @Author: liurunyu |
| | | * @Date: 2024/11/3 16:27 |
| | | * @Description |
| | | */ |
| | | public class RtuStatusDeal { |
| | | |
| | | /** |
| | | * 查询在线与不在线情况 |
| | | */ |
| | | public Map<String, RtuStatus> dealAll(){ |
| | | return RtuStatusDealer.allStatus(); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 查询在线与不在线情况 |
| | | */ |
| | | public Map<String, RtuStatus> dealPart(String[] rtuAddrGrp){ |
| | | return RtuStatusDealer.partStatus(rtuAddrGrp) ; |
| | | } |
| | | } |
| New file |
| | |
| | | package com.dy.rtuMw.server.protocolDriver; |
| | | |
| | | import com.dy.common.mw.protocol.Notify; |
| | | import com.dy.common.mw.protocol.NotifyInfo; |
| | | import com.dy.common.mw.protocol.rtuState.ValveStateInfo; |
| | | import com.dy.rtuMw.server.forTcp.RtuStatusDealer; |
| | | |
| | | /** |
| | | * @Author: liurunyu |
| | | * @Date: 2024/11/3 13:30 |
| | | * @Description |
| | | */ |
| | | public class RtuInfoNotify implements Notify { |
| | | /** |
| | | * RTU信息通知 |
| | | * @param rtuAddr |
| | | * @param protocolName |
| | | * @param protocolVersion |
| | | * @param infos |
| | | */ |
| | | @Override |
| | | public void notify(String rtuAddr, |
| | | String protocolName, |
| | | Short protocolVersion, |
| | | NotifyInfo...infos |
| | | ) { |
| | | if(infos != null && infos.length > 0){ |
| | | for (NotifyInfo anInfo : infos) { |
| | | if(anInfo != null){ |
| | | if(anInfo instanceof ValveStateInfo){ |
| | | ValveStateInfo valveStateInfo = (ValveStateInfo) anInfo; |
| | | if(valveStateInfo.openTrueCloseFalse.booleanValue()){ |
| | | RtuStatusDealer.valveOpen(rtuAddr); |
| | | }else{ |
| | | RtuStatusDealer.valveClose(rtuAddr); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | |
| | | this.icCardNo = vo83Op.icCardNo ; |
| | | this.remainMoney = vo83Op.remainMoney ; |
| | | }else if(vo83Cl != null){ |
| | | if(this.isAll0(vo83Op.icCardAddr)){ |
| | | if(this.isAll0(vo83Cl.icCardAddr)){ |
| | | this.isVirIcCard = true ; |
| | | }else{ |
| | | this.isVirIcCard = false ; |
| | |
| | | public Double remainMoney ; //剩余金额 |
| | | |
| | | public void valueFrom(DataCd84Vo vo84, DataCd83OpenVo vo83Op, DataCd83CloseVo vo83Cl){ |
| | | if(this.isAll0(this.icCardAddr)){ |
| | | this.isVirIcCard = true ; |
| | | }else{ |
| | | this.isVirIcCard = false ; |
| | | } |
| | | if(vo84 != null){ |
| | | if(this.isAll0(vo84.cardAddr)){ |
| | | this.isVirIcCard = true ; |
| | | }else{ |
| | | this.isVirIcCard = false ; |
| | | } |
| | | this.icCardAddr = vo84.cardAddr ; |
| | | this.icCardNo = vo84.cardNo ; |
| | | this.remainMoney = vo84.remainMoney ; |
| | | }else if(vo83Op != null){ |
| | | if(this.isAll0(vo83Op.icCardAddr)){ |
| | | this.isVirIcCard = true ; |
| | | }else{ |
| | | this.isVirIcCard = false ; |
| | | } |
| | | this.icCardAddr = vo83Op.icCardAddr ; |
| | | this.icCardNo = vo83Op.icCardNo ; |
| | | this.remainMoney = vo83Op.remainMoney ; |
| | | }else if(vo83Cl != null){ |
| | | if(this.isAll0(vo83Cl.icCardAddr)){ |
| | | this.isVirIcCard = true ; |
| | | }else{ |
| | | this.isVirIcCard = false ; |
| | | } |
| | | this.icCardAddr = vo83Cl.icCardAddr ; |
| | | this.icCardNo = vo83Cl.icCardNo ; |
| | | this.remainMoney = vo83Cl.remainMoney ; |
| File was renamed from pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/tasks/ToRtuConstantTask.java |
| | |
| | | /** |
| | | * 处理RTU下行命令数据的恒久任务 |
| | | */ |
| | | public class ToRtuConstantTask extends CoreTask { |
| | | private static final Logger log = LogManager.getLogger(ToRtuConstantTask.class.getName()); |
| | | public class RtuDownConstantTask extends CoreTask { |
| | | private static final Logger log = LogManager.getLogger(RtuDownConstantTask.class.getName()); |
| | | |
| | | /** |
| | | * 在单线程环境中运行 |
| | |
| | | } |
| | | String rtuAddr = (String)session.getAttribute(TcpIoSessionAttrIdIsRtuAddr.sessionArrIdKey) ; |
| | | String protocolName = null ; |
| | | Short protocolVersion = null ; |
| | | boolean isOnLine = false ; |
| | | if(rtuAddr == null){ |
| | | //说明刚建立网络连接,此数据应该是上线数据 |
| | | isOnLine = true ; |
| | | String[] rtuAddrProtocolName = this.parseOnLine(session, upBuf) ; |
| | | if(rtuAddrProtocolName.length == 2){ |
| | | Object[] rtuAddrProtocolNameVersion = this.parseOnLine(session, upBuf) ; |
| | | if(rtuAddrProtocolNameVersion.length == 2){ |
| | | //解析上线数据成功,并解析出RTU地址及通信协议名称 |
| | | rtuAddr = rtuAddrProtocolName[0] ; |
| | | protocolName = rtuAddrProtocolName[1] ; |
| | | |
| | | rtuAddr = (String)rtuAddrProtocolNameVersion[0] ; |
| | | protocolName = (String)rtuAddrProtocolNameVersion[1] ; |
| | | protocolVersion = (Short)rtuAddrProtocolNameVersion[2] ; |
| | | |
| | | if(rtuAddr != null && protocolName != null){ |
| | | //设置session的属性ID |
| | | TcpUnit.getInstance().setIoSessionArrId(session, rtuAddr); |
| | | //缓存session |
| | | TcpSessionCache.putNewTcpSession(rtuAddr, protocolName, session); |
| | | TcpSessionCache.putNewTcpSession(rtuAddr, protocolName, protocolVersion, session); |
| | | |
| | | log.info("RTU(地址:" + rtuAddr + ",协议:" + protocolName + ")上线了。") ; |
| | | log.info("RTU(地址:" + rtuAddr + ",协议:" + protocolName + ",协议版本号:" + protocolVersion + ")上线了。") ; |
| | | } |
| | | } |
| | | } |
| | |
| | | } |
| | | if(toDeal){ |
| | | if(protocolName == null){ |
| | | protocolName = TcpSessionCache.getTcpProtocolName(rtuAddr) ; |
| | | Object[] objs = TcpSessionCache.getTcpProtocolNameVersion(rtuAddr) ; |
| | | protocolName = (String)objs[0] ; |
| | | protocolVersion = (Short)objs[1] ; |
| | | } |
| | | |
| | | //设置收到数据时刻 |
| | |
| | | |
| | | if(protocolName != null){ |
| | | //对上行数据进行处理 |
| | | this.dealUpData(session, rtuAddr, protocolName, isOnLine, upBuf, upHex) ; |
| | | this.dealUpData(session, rtuAddr, protocolName, protocolVersion, isOnLine, upBuf, upHex) ; |
| | | } |
| | | } |
| | | } |
| | |
| | | * @param session IO会话 |
| | | * @param upBuf 上行数据 |
| | | */ |
| | | private String[] parseOnLine(IoSession session, byte[] upBuf){ |
| | | private Object[] parseOnLine(IoSession session, byte[] upBuf){ |
| | | String rtuAddr = null ; |
| | | String protocolName = null ; |
| | | Short protocolVersion = null ; |
| | | try { |
| | | OnLine.OnLineResult rs = new OnLineHandle().parse(upBuf) ; |
| | | if(rs == null |
| | |
| | | log.error("严重错误,解析上线结果中协议名称为空 !" ) ; |
| | | }else{ |
| | | protocolName = rs.protocolName ; |
| | | protocolVersion = rs.protocolVersion ; |
| | | } |
| | | }else if(rs.result == OnLine.OnLineAction_success_response){ |
| | | if(rs.remoteData != null && rs.remoteData.length > 0){ |
| | |
| | | } catch (Exception e) { |
| | | log.error("严重错误,分析上线数据时产生异常 !\n" + e.getMessage() , e) ; |
| | | } |
| | | return new String[]{rtuAddr, protocolName} ; |
| | | return new Object[]{rtuAddr, protocolName, protocolVersion} ; |
| | | } |
| | | |
| | | |
| | |
| | | * @param session IO会话 |
| | | * @param rtuAddrAtHead 控制器地址头部 |
| | | * @param protocolName 协议名称 |
| | | * @param protocolVersion 协议版本号 |
| | | * @param isOnLine 是否上线数据 |
| | | * @param upBuf 上行数据 |
| | | * @param upHex 上行数据 |
| | | * @throws Exception 异常 |
| | | */ |
| | | private void dealUpData(IoSession session, String rtuAddrAtHead, String protocolName, boolean isOnLine, byte[] upBuf, String upHex) throws Exception{ |
| | | private void dealUpData(IoSession session, |
| | | String rtuAddrAtHead, |
| | | String protocolName, |
| | | Short protocolVersion, |
| | | boolean isOnLine, |
| | | byte[] upBuf, |
| | | String upHex) throws Exception{ |
| | | Driver dri = ProtocolCache.getDriver(protocolName) ; |
| | | if(dri == null){ |
| | | log.error("严重错误,未能得到协议" + protocolName + "驱动类实例!"); |
| | |
| | | //更新终端状态 |
| | | if(rtuAddrInData != null && !rtuAddrInData.equals(rtuAddrAtHead)){ |
| | | //数据头中的RTU地址与数据中的RTU地址不一致,更换成数据中的RTU地址 |
| | | TcpSessionCache.changeRtuAddr(rtuAddrAtHead, rtuAddrInData, protocolName, session); |
| | | TcpSessionCache.changeRtuAddr(rtuAddrAtHead, rtuAddrInData, protocolName, protocolVersion, session); |
| | | session.setAttribute(TcpIoSessionAttrIdIsRtuAddr.sessionArrIdKey, rtuAddrInData) ; |
| | | } |
| | | |
| | |
| | | InetSocketAddress sa = (InetSocketAddress)session.getRemoteAddress() ; |
| | | if(isOnLine){ |
| | | //上线了 |
| | | RtuStatusDealer.onLine(rtuAddr, sa.getAddress().getHostAddress(), sa.getPort()); |
| | | RtuStatusDealer.onLine(rtuAddr, sa.getAddress().getHostAddress(), sa.getPort(), protocolName, protocolVersion); |
| | | } |
| | | if(reportOrResponse_trueOrFalse != null && reportOrResponse_trueOrFalse){ |
| | | RtuStatusDealer.upReport(rtuAddr, upBuf.length) ; |
| | | RtuStatusDealer.upAutoReport(rtuAddr, code, codeName, upBuf.length) ; |
| | | }else{ |
| | | RtuStatusDealer.upData(rtuAddr, upBuf.length) ; |
| | | RtuStatusDealer.upData(rtuAddr, code, codeName, upBuf.length) ; |
| | | } |
| | | |
| | | //记录日志 |
| New file |
| | |
| | | package com.dy.rtuMw.server.tasks; |
| | | |
| | | import org.apache.logging.log4j.LogManager; |
| | | import org.apache.logging.log4j.Logger; |
| | | |
| | | import com.dy.common.mw.core.CoreTask; |
| | | import com.dy.common.mw.protocol.MidResult; |
| | | import com.dy.common.mw.protocol.Command; |
| | | import com.dy.common.mw.protocol.Driver; |
| | | import com.dy.common.mw.protocol.ProtocolCache; |
| | | import com.dy.rtuMw.server.ServerProperties; |
| | | import com.dy.rtuMw.server.forTcp.TcpSessionCache; |
| | | |
| | | /** |
| | | * 从web业务系统发向RTU的命令任务 |
| | | * @author Administrator |
| | | * |
| | | */ |
| | | public class WebDownComTask extends CoreTask { |
| | | |
| | | private static Logger log = LogManager.getLogger(WebDownComTask.class.getName()); |
| | | |
| | | @Override |
| | | public Integer execute() { |
| | | Command com = (Command)this.data ; |
| | | try { |
| | | log.info("下发远程命令" + com.getCode() + "的核心任务开始执行"); |
| | | this.deal(com); |
| | | } catch (Exception e) { |
| | | log.error("处理下行命令出错" + (e.getMessage()==null?"!":("," + e.getMessage())) ,e); |
| | | } |
| | | return null ; |
| | | } |
| | | |
| | | /** |
| | | * 处理命令 |
| | | * @param com 命令 |
| | | * @throws Exception |
| | | */ |
| | | private void deal(Command com) throws Exception{ |
| | | String rtuAddr = com.getRtuAddr() ; |
| | | //前面已经判断rtuAddr为空情况,至此其不为空 |
| | | Driver dri = null ; |
| | | 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(); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | } |
| | |
| | | import com.dy.rtuMw.server.forTcp.TcpSessionCache; |
| | | import com.dy.rtuMw.server.local.CommandInnerDeaLer; |
| | | import com.dy.rtuMw.server.local.ReturnCommand; |
| | | import com.dy.rtuMw.server.tasks.RtuDownTask; |
| | | import com.dy.rtuMw.server.tasks.WebDownComTask; |
| | | import com.dy.common.mw.core.CoreUnit; |
| | | import com.dy.common.mw.protocol.Command; |
| | | import com.dy.common.mw.protocol.CommandType; |
| | |
| | | } |
| | | |
| | | //生成异步任务 |
| | | RtuDownTask task = new RtuDownTask() ; |
| | | WebDownComTask task = new WebDownComTask() ; |
| | | task.data = command ; |
| | | try{ |
| | | log.info("构造下发远程命令" + command.getCode() + "的核心任务,并放入任务队列中"); |
| | |
| | | prController.setIntakeId(intakeId); |
| | | prController.setRtuAddr(prControllerTramp.getRtuAddr()); |
| | | prController.setProtocol(prControllerTramp.getProtocol()); |
| | | prController.setProtocolVersion(prControllerTramp.getProtocolVersion()); |
| | | prController.setFindDt(prControllerTramp.getFindDt()); |
| | | prController.setOrgTag(prControllerTramp.getOrgTag()); |
| | | prController.setAddWays((byte) 1); |