From dcb7088c2dca789074f8f48597dca3c55f3ab6f1 Mon Sep 17 00:00:00 2001
From: mac <user@users-MacBook-Pro.local>
Date: 星期四, 01 二月 2024 19:37:09 +0800
Subject: [PATCH] 2024年02月01日19:37:00
---
HDLLinkLocalSdk/src/main/java/com/hdl/sdk/link/core/connect/HDLModBusConnect.java | 70 ++++++++++++++++++++++-------------
1 files changed, 44 insertions(+), 26 deletions(-)
diff --git a/HDLLinkLocalSdk/src/main/java/com/hdl/sdk/link/core/connect/HDLModBusConnect.java b/HDLLinkLocalSdk/src/main/java/com/hdl/sdk/link/core/connect/HDLModBusConnect.java
index 7067b11..324b7fe 100644
--- a/HDLLinkLocalSdk/src/main/java/com/hdl/sdk/link/core/connect/HDLModBusConnect.java
+++ b/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;
/**
* 鍐呴儴鐢紝涓昏鏄鐞嗗鐞嗘帀閫忎紶涓婚鍙妉ink涓婚鍚庯紝杩樺師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/up")) {
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;
@@ -103,20 +102,32 @@
break;
}
}
+
EventDispatcher.getInstance().post(topic, modbusResponse);
//鍙戝竷Zigbee鍘熺敓涓婚鍙婃暟鎹�
// EventDispatcher.getInstance().post(allTopic, modbusResponse);
}
} catch (Exception e) {
- LogUtils.e(TAG,"LinkResponse杞琈odbusResponse寮傚父:"+ e.getMessage());
+ LogUtils.e(TAG, "LinkResponse杞琈odbusResponse寮傚父:" + e.getMessage());
}
}
};
//娉ㄥ唽鐩存帴閫氳鐨勪富棰橈紝鍖呮嫭鐩存帴鍜屼富缃戝叧閫氳鎴栬�呯洿鎺ュ拰浠庣綉鍏抽�氳
registerListener(String.format(TopicConstant.NATIVE_MODBUS_UP, "+"), eventListener);
- registerListener(String.format(TopicConstant.NATIVE_MODBUS_DOWN_REPLY, "+"), eventListener);
+ //registerListener(String.format(TopicConstant.NATIVE_MODBUS_DOWN_REPLY, "+"), eventListener);
+ //registerListener(String.format(TopicConstant.NATIVE_ZIGBEE_UP_SLAVE, "+", "+"), eventListener);
+ }
- // registerListener(String.format(TopicConstant.NATIVE_ZIGBEE_UP_SLAVE, "+", "+"), eventListener);
+
+ /**
+ * 鍙戦�佸師鐢熸暟鎹�
+ *
+ * @param gatewayOidOrGatewayId 鐩爣缃戝叧鐨刼id鎴栬�呯綉鍏矷d
+ * @param payload 鍙戦�佹暟鎹�
+ * @param baseCallBack 缁撴灉鍥炶皟
+ */
+ public void Send(String gatewayOidOrGatewayId, byte[] payload, final ModbusCallBack baseCallBack) {
+ Send(gatewayOidOrGatewayId, payload, 5, baseCallBack);
}
/**
@@ -124,9 +135,17 @@
*
* @param gatewayOidOrGatewayId 鐩爣缃戝叧鐨刼id鎴栬�呯綉鍏矷d
* @param payload 鍙戦�佹暟鎹�
- * @param baseCallBack 缁撴灉鍥炶皟
+ * @param timeout 瓒呮椂鏃堕棿(s)
+ * @param baseCallBack 缁撴灉鍥炶皟
*/
- public void Send(String gatewayOidOrGatewayId, byte []payload, final ModbusCallBack baseCallBack) {
+ public void Send(String gatewayOidOrGatewayId, byte[] payload, int timeout, final ModbusCallBack baseCallBack) {
+ if (payload == null || payload.length == 0) {
+ if (baseCallBack != null) {
+ baseCallBack.onError(HDLLinkException.getErrorWithCode(HDLLinkCode.HDL_DATA_NULL_ERROR));
+ System.out.println("鍙戦�佹暟鎹椂璐熻浇鏁版嵁鏄┖鐨�--->");
+ }
+ return;
+ }
//濡傛灉鏈湴鏈夐摼鎺ヨ繖涓綉鍏�,鍒欑敤鏈湴杩炴帴
GatewayBean gatewayBean = HDLLinkLocalGateway.getInstance().getGatewayByOidOrGatewayId(gatewayOidOrGatewayId);
if (null == gatewayBean) {
@@ -138,25 +157,25 @@
}
String tempTopic = String.format(TopicConstant.NATIVE_MODBUS_DOWN, gatewayOidOrGatewayId);
- LinkRequest request = new LinkRequest(tempTopic, payload, gatewayBean.getIsLocalEncrypt());
+ 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]);
- long timeout = 2 * 1000;
+ request.setReplyTopic("Modbus" + payload[0] + payload[1]);
+ long awaitTime = timeout * 1000L;
- new HDLConnectHelper(timeout, 1, gatewayBean.getIp_address(), 8586, request, new HDLConnectHelper.HdlSocketListener() {
+ new HDLConnectHelper(awaitTime, 1, gatewayBean.getIp_address(), 8586, request, new HDLConnectHelper.HdlSocketListener() {
@Override
public void onSucceed(Object msg) {
- if (msg instanceof Byte[]) {
+ if (msg instanceof int[]) {
if (null != baseCallBack) {
- baseCallBack.onSuccess((byte[])msg);
+ baseCallBack.onSuccess((int[]) msg);
}
- }else{
- LogUtils.e("鍙戦�丮odbus鍥炶皟瀵硅薄绫诲瀷闈炴暟缁勭被鍨嬶紝绫诲瀷鏄�"+msg.getClass());
+ } else {
+ LogUtils.e("鍙戦�丮odbus鍥炶皟瀵硅薄绫诲瀷闈炴暟缁勭被鍨嬶紝绫诲瀷鏄�" + msg.getClass());
}
}
@@ -168,7 +187,6 @@
}
}, true).send();
}
-
/**
@@ -258,12 +276,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;
}
--
Gitblit v1.8.0