From 46ea49c9452002f2c01a10fd9550339a8aaa7cd1 Mon Sep 17 00:00:00 2001 From: liurunyu <lry9898@163.com> Date: 星期三, 18 六月 2025 14:19:15 +0800 Subject: [PATCH] 1、新了解到,FBox可接多台套水肥机、气象站、墒情站,相应修改协议(主要是主题部分); 2、编写《水肥机、气象站、墒情站协议》(未完)。 --- pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol4Mqtt/MqttMsgParser.java | 39 ++++++++++++++++++++++++++++++--------- 1 files changed, 30 insertions(+), 9 deletions(-) diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol4Mqtt/MqttMsgParser.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol4Mqtt/MqttMsgParser.java index 15ec6b0..8389f8e 100644 --- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol4Mqtt/MqttMsgParser.java +++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol4Mqtt/MqttMsgParser.java @@ -3,6 +3,7 @@ import com.dy.common.mw.protocol.Command; import com.dy.common.mw.protocol4Mqtt.pSdV1.ProtocolConstantSdV1; import com.dy.common.mw.protocol4Mqtt.pSdV1.ProtocolParserSdV1; +import com.dy.common.util.NumUtil; import org.eclipse.paho.client.mqttv3.MqttMessage; /** @@ -11,25 +12,45 @@ * @Description */ public class MqttMsgParser { - public MqttSubMsg parseSubMsg(String topic, MqttMessage mqttMsg) throws Exception { + public static MqttTopic parseSubTopic(String topic) throws Exception { if(topic != null && topic.trim().length() != 0){ String[] topicGrp = topic.split("/") ; - if(topicGrp.length != 4){ + if(topicGrp.length != 5){ throw new Exception("鎺ユ敹鐨刴qtt娑堟伅涓婚涓嶅彲璇嗗埆") ; }else{ - if(topicGrp[1].equals("sd1")){ - //灞变笢璁惧(鍗忚)锛屼笖鐗堟湰鍙蜂负1 - return new ProtocolParserSdV1().parseSubMsg(topicGrp[2], topic, mqttMsg); - }else{ - throw new Exception("鎺ユ敹鐨刴qtt娑堟伅涓婚涓崗璁紙鍘傚鍙婄増鏈級涓嶅彲璇嗗埆") ; + if(NumUtil.isPlusIntNumber(topicGrp[4])){ + throw new Exception("鎺ユ敹鐨刴qtt娑堟伅涓婚涓嶅彲璇嗗埆") ; } + if(Integer.parseInt(topicGrp[4]) <= 0){ + throw new Exception("鎺ユ敹鐨刴qtt娑堟伅涓婚涓嶅彲璇嗗埆") ; + } + MqttTopic vo = new MqttTopic() ; + vo.orgTag = topicGrp[0] ; + vo.protocol = topicGrp[1] ; + vo.devId = topicGrp[2] ; + vo.type = topicGrp[3] ; + vo.no = Integer.parseInt(topicGrp[4]) ; + return vo ; } }else{ - throw new Exception("鎺ユ敹鐨刴qtt娑堟伅涓婚涓虹┖") ; + throw new Exception("鎺ユ敹鐨刴qtt娑堟伅涓婚涓嶅悎娉�") ; } } - public MqttPubMsg createPubMsg(String orgTag, Command com) throws Exception { + public static String createPubTopic(MqttTopic tp) throws Exception { + return tp.orgTag + "/" + tp.protocol + "/" + tp.devId + "/" + tp.type + "/" + tp.no; + } + + public static MqttSubMsg parseSubMsg(MqttTopic subTopic, MqttMessage mqttMsg, MqttCallback callback) throws Exception { + if(subTopic.protocol.equals(ProtocolConstantSdV1.protocolName + ProtocolConstantSdV1.protocolVer)){ + //灞变笢璁惧(鍗忚)锛屼笖鐗堟湰鍙蜂负1 + return new ProtocolParserSdV1().parseSubMsg(subTopic, mqttMsg, callback); + }else{ + throw new Exception("鎺ユ敹鐨刴qtt娑堟伅涓婚涓崗璁紙鍘傚鍙婄増鏈級涓嶅彲璇嗗埆") ; + } + } + + public static MqttPubMsg createPubMsg(String orgTag, Command com) throws Exception { if(com.protocol == null && com.protocol.trim().length() != 0){ throw new Exception("鎺ユ敹鍒癕QTT鍛戒护锛屼絾鏈彁渚涘崗璁�") ; } -- Gitblit v1.8.0