wjc
2023-07-03 5d320cd16c9fc2b45d0b9cbd7225febf42489f9e
HDLLinkLocalSdk/src/main/java/com/hdl/sdk/link/core/connect/HDLModBusConnect.java
@@ -25,7 +25,7 @@
 */
public class HDLModBusConnect {
    private static final String TAG="HDLModbusConnect";
    private static final String TAG = "HDLModbusConnect";
    private static HDLModBusConnect instance;
    /**
     * 内部用,主要是处理处理掉透传主题及link主题后,还原modbus原生数据及主题用
@@ -51,7 +51,7 @@
     * @param eventListener
     */
    public void registerListener(EventListener eventListener) {
        if(null==eventListener){
        if (null == eventListener) {
            return;
        }
        EventDispatcher.getInstance().register(allTopic, eventListener);
@@ -63,7 +63,7 @@
     * @param eventListener
     */
    public void removeListener(EventListener eventListener) {
        if(null==eventListener){
        if (null == eventListener) {
            return;
        }
        EventDispatcher.getInstance().remove(allTopic, eventListener);
@@ -79,13 +79,12 @@
                try {
                    if (msg instanceof LinkResponse) {
                        LinkResponse linkResponse = (LinkResponse) msg;
                        if(linkResponse.getTopic()==null||!linkResponse.getTopic().contains("custom/native/inverter/"))
                        {
                        if (linkResponse.getTopic() == null || !linkResponse.getTopic().contains("custom/native/inverter/")) {
                            return;
                        }
                        byte []data = linkResponse.getByteData();
                        ModbusResponse  modbusResponse= new ModbusResponse();
                        String topic="Modbus"+data[0]+data[1];
                        byte[] data = linkResponse.getByteData();
                        ModbusResponse modbusResponse = new ModbusResponse();
                        String topic = "Modbus" + data[0] + data[1];
                        modbusResponse.setTopic(topic);
                        modbusResponse.setData(data);
                        String oid = null;
@@ -108,7 +107,7 @@
//                        EventDispatcher.getInstance().post(allTopic, modbusResponse);
                    }
                } catch (Exception e) {
                    LogUtils.e(TAG,"LinkResponse转ModbusResponse异常:"+ e.getMessage());
                    LogUtils.e(TAG, "LinkResponse转ModbusResponse异常:" + e.getMessage());
                }
            }
        };
@@ -123,9 +122,9 @@
     *
     * @param gatewayOidOrGatewayId 目标网关的oid或者网关Id
     * @param payload               发送数据
     * @param baseCallBack        结果回调
     * @param baseCallBack          结果回调
     */
    public void Send(String gatewayOidOrGatewayId, byte []payload, final ModbusCallBack baseCallBack) {
    public void Send(String gatewayOidOrGatewayId, byte[] payload, final ModbusCallBack baseCallBack) {
        //如果本地有链接这个网关,则用本地连接
        GatewayBean gatewayBean = HDLLinkLocalGateway.getInstance().getGatewayByOidOrGatewayId(gatewayOidOrGatewayId);
        if (null == gatewayBean) {
@@ -140,11 +139,11 @@
        LinkRequest request = new LinkRequest(tempTopic, payload, gatewayBean.getIsLocalEncrypt());
//        if ("true".equals(gatewayBean.getMaster())) {
            request.setCloudTopic(String.format(TopicConstant.NATIVE_MODBUS_DOWN, HDLLinkConfig.getInstance().getGatewayId()));
        request.setCloudTopic(String.format(TopicConstant.NATIVE_MODBUS_DOWN, HDLLinkConfig.getInstance().getGatewayId()));
//        } else {
//            request.setCloudTopic(String.format(TopicConstant.NATIVE_MODBUS_DOWN_SLAVE, HDLLinkConfig.getInstance().getGatewayId(), gatewayOidOrGatewayId));
//        }
        request.setReplyTopic("Modbus"+payload[0]+payload[1]);
        request.setReplyTopic("Modbus" + payload[0] + payload[1]);
        long timeout = 2 * 1000;
        new HDLConnectHelper(timeout, 1, gatewayBean.getIp_address(), 8586, request, new HDLConnectHelper.HdlSocketListener() {
@@ -152,10 +151,10 @@
            public void onSucceed(Object msg) {
                if (msg instanceof byte[]) {
                    if (null != baseCallBack) {
                        baseCallBack.onSuccess((byte[])msg);
                        baseCallBack.onSuccess((byte[]) msg);
                    }
                }else{
                    LogUtils.e("发送Modbus回调对象类型非数组类型,类型是"+msg.getClass());
                } else {
                    LogUtils.e("发送Modbus回调对象类型非数组类型,类型是" + msg.getClass());
                }
            }
@@ -167,7 +166,6 @@
            }
        }, true).send();
    }
    /**
@@ -257,12 +255,12 @@
    /**
     * 处理zigbee回复的数据
     *
     * @param responeTopic   回复主题
     * @param linkResponse   回复的透传数据
     * @param responeTopic 回复主题
     * @param linkResponse 回复的透传数据
     */
    private static String getZigbeeData(String responeTopic, LinkResponse linkResponse) {
        //主题为空不处理
        if(TextUtils.isEmpty(responeTopic)){
        if (TextUtils.isEmpty(responeTopic)) {
            return null;
        }