wjc
2025-04-09 afb62b49b79a31ab62a548f9cef672dfc9bae16f
sdk/src/main/java/com/hdl/sdk/link/core/connect/HDLModBusConnect.java
@@ -84,11 +84,10 @@
                        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);
@@ -132,7 +131,7 @@
     * @param baseCallBack          结果回调
     */
    public void Send(String gatewayOidOrGatewayId, byte[] payload, final ModbusCallBack baseCallBack) {
        Send(gatewayOidOrGatewayId, payload, 4, baseCallBack,false);
        Send(gatewayOidOrGatewayId, payload, 4, baseCallBack, false);
    }
    /**
@@ -143,7 +142,7 @@
     * @param baseCallBack          结果回调
     */
    public void asyncSend(String gatewayOidOrGatewayId, byte[] payload, final ModbusCallBack baseCallBack) {
        Send(gatewayOidOrGatewayId, payload, 4, baseCallBack,true);
        Send(gatewayOidOrGatewayId, payload, 4, baseCallBack, true);
    }
    /**
@@ -154,7 +153,7 @@
     * @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));
@@ -173,18 +172,17 @@
        }
        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) {
@@ -202,8 +200,8 @@
                    baseCallBack.onError(HDLLinkException.getErrorWithCode(hdlLinkCode));
                }
            }
        }, true,gatewayBean.getDevice_mac());
        hdlConnectHelper.setUseSubThread(useSubThread);
        }, true, gatewayBean.getDevice_mac(),true);
//        hdlConnectHelper.setUseSubThread(useSubThread);
        hdlConnectHelper.send();
    }