| | |
| | | byte[] payload = linkResponse.getByteData(); |
| | | ModbusResponse modbusResponse = new ModbusResponse(); |
| | | String topic; |
| | | if(10<payload.length){ |
| | | topic=String.format("Modbus %s", ByteUtils.encodeHexString(new byte[]{payload[0], payload[1], payload[6], payload[7], payload[8], payload[9]}));//序号+oid |
| | | } |
| | | else { |
| | | topic=String.format("Modbus %s", ByteUtils.encodeHexString(new byte[]{payload[0], payload[1]})); |
| | | if (10 < payload.length) { |
| | | topic = String.format("Modbus %s", ByteUtils.encodeHexString(new byte[]{payload[0], payload[1], payload[6], payload[7], payload[8], payload[9]}));//序号+oid |
| | | } else { |
| | | topic = String.format("Modbus %s", ByteUtils.encodeHexString(new byte[]{payload[0], payload[1]})); |
| | | } |
| | | modbusResponse.setTopic(topic); |
| | | modbusResponse.setData(payload); |
| | |
| | | * @param baseCallBack 结果回调 |
| | | */ |
| | | public void Send(String gatewayOidOrGatewayId, byte[] payload, final ModbusCallBack baseCallBack) { |
| | | Send(gatewayOidOrGatewayId, payload, 4, baseCallBack,false); |
| | | Send(gatewayOidOrGatewayId, payload, 4, baseCallBack, false); |
| | | } |
| | | |
| | | /** |
| | |
| | | * @param baseCallBack 结果回调 |
| | | */ |
| | | public void asyncSend(String gatewayOidOrGatewayId, byte[] payload, final ModbusCallBack baseCallBack) { |
| | | Send(gatewayOidOrGatewayId, payload, 4, baseCallBack,true); |
| | | Send(gatewayOidOrGatewayId, payload, 4, baseCallBack, true); |
| | | } |
| | | |
| | | /** |
| | |
| | | * @param timeout 超时时间(s) |
| | | * @param baseCallBack 结果回调 |
| | | */ |
| | | public void Send(String gatewayOidOrGatewayId, byte[] payload, int timeout, final ModbusCallBack baseCallBack,boolean useSubThread) { |
| | | public void Send(String gatewayOidOrGatewayId, byte[] payload, int timeout, final ModbusCallBack baseCallBack, boolean useSubThread) { |
| | | if (payload == null || payload.length == 0) { |
| | | if (baseCallBack != null) { |
| | | baseCallBack.onError(HDLLinkException.getErrorWithCode(HDLLinkCode.HDL_DATA_NULL_ERROR)); |
| | |
| | | } |
| | | |
| | | String tempTopic = String.format(TopicConstant.NATIVE_MODBUS_DOWN, gatewayOidOrGatewayId); |
| | | LinkRequest request = new LinkRequest(tempTopic, payload, HDLLinkConfig.getInstance().isLocalEncrypt()); |
| | | LinkRequest request = new LinkRequest(tempTopic, payload, gatewayBean.isLocalEncrypt()); |
| | | |
| | | request.setCloudTopic(String.format(TopicConstant.NATIVE_MODBUS_DOWN,gatewayBean.getGatewayId())); |
| | | if(10<payload.length) { |
| | | request.setCloudTopic(String.format(TopicConstant.NATIVE_MODBUS_DOWN, gatewayBean.getGatewayId())); |
| | | if (10 < payload.length) { |
| | | request.setReplyTopic(String.format("Modbus %s", ByteUtils.encodeHexString(new byte[]{payload[0], payload[1], payload[6], payload[7], payload[8], payload[9]})));//序号+oid |
| | | } |
| | | else { |
| | | } else { |
| | | request.setReplyTopic(String.format("Modbus %s", ByteUtils.encodeHexString(new byte[]{payload[0], payload[1]}))); |
| | | } |
| | | long awaitTime = timeout * 1000L; |
| | | |
| | | HDLConnectHelper hdlConnectHelper=new HDLConnectHelper(awaitTime, 2, gatewayBean.getIp_address(), 8586, request, new HDLConnectHelper.HdlSocketListener() { |
| | | HDLConnectHelper hdlConnectHelper = new HDLConnectHelper(awaitTime, 2, gatewayBean.getIp_address(), 8586, request, new HDLConnectHelper.HdlSocketListener() { |
| | | @Override |
| | | public void onSucceed(Object msg) { |
| | | if (msg instanceof ModbusResponse) { |
| | |
| | | baseCallBack.onError(HDLLinkException.getErrorWithCode(hdlLinkCode)); |
| | | } |
| | | } |
| | | }, true,gatewayBean.getDevice_mac()); |
| | | hdlConnectHelper.setUseSubThread(useSubThread); |
| | | }, true, gatewayBean.getDevice_mac(),true); |
| | | // hdlConnectHelper.setUseSubThread(useSubThread); |
| | | hdlConnectHelper.send(); |
| | | } |
| | | |