| | |
| | | confirmCommand.rtuAddr = para.rtuAddr ;//Rtu地址 |
| | | confirmCommand.commandId = Command.defaultId ;//命令ID,发起命令的客户端(web端)生成,以匹配命令结果 |
| | | confirmCommand.downCode = confirmComCode ;//下行命令功能码; |
| | | confirmCommand.downCodeName = CodeV1_0_1.getCodeName(confirmComCode) ;//下行命令功能码名称; |
| | | confirmCommand.downBuffer = data ;//下行命令数据 |
| | | confirmCommand.downBufHex = ByteUtil.bytes2Hex(data, true) ;//下行命令数据十六进制形式 |
| | | confirmCommand.hasResponse = false ;//是否有应答 |
| | |
| | | * @throws Exception 异常 |
| | | */ |
| | | protected void doParse(byte[] bs, int bsLen, String dataCode, Data data) throws Exception { |
| | | byte opType = bs[ProtocolConstantV206V1_0_0.dataIndex]; |
| | | byte opType = (byte)ByteUtil.BCD2Int_LE(bs[ProtocolConstantV206V1_0_0.dataIndex]) ; |
| | | Boolean isCloseType = CommonV1_0_1.isCloseValveType(opType) ; |
| | | if(isCloseType != null && isCloseType.booleanValue()){ |
| | | this.doParseClose(opType, bs, bsLen, dataCode, data); |
| | | }else if(isCloseType != null && !isCloseType.booleanValue()){ |
| | | this.doParseOpen(opType, bs, bsLen, dataCode, data); |
| | | }else{ |
| | | throw new Exception("开关阀类型[" + ByteUtil.bytes2Hex(new byte[]{opType}, false) + "(hex)]不可识别" ) ; |
| | | } |
| | | } |
| | | private void doParseOpen(byte opType, byte[] bs, int bsLen, String dataCode, Data data) throws Exception { |
| | |
| | | cdData.openDt = GlParse.parseTp(bs, index) ; |
| | | |
| | | index += 6 ; |
| | | /* 开阀时,此部分没有 |
| | | cdData.priceType = bs[index] ; |
| | | |
| | | index++ ; |
| | | cdData.price = 0.0D ; |
| | | tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ; |
| | | index++ ; |
| | | cdData.price += tpInt/100.0 ; |
| | | tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ; |
| | | index++ ; |
| | | cdData.price += tpInt; |
| | | |
| | | cdData.cardType = bs[index] ; |
| | | |
| | | index++ ; |
| | | */ |
| | | //控制器时钟 |
| | | cdData.rtuDt = GlParse.parseTp(bs, index) ; |
| | | //index += 6 ; |