Merge remote-tracking branch 'origin/master'
1 文件已复制
1 文件已重命名
40个文件已修改
44个文件已添加
| | |
| | | public static final String cd_02 = "02" ;//饿µç«é¾è·¯æ£æµ |
| | | public static final String cd_10 = "10" ;//è®¾ç½®é¥æµç«ç»ç«¯å°å |
| | | public static final String cd_21 = "21" ;//设置æå¡ç«¯IPåç«¯å£ |
| | | public static final String cd_35 = "35" ;//è®¾ç½®èªæ¥å¨æ |
| | | public static final String cd_36 = "36" ;//设置主信éIPåç«¯å£ |
| | | public static final String cd_37 = "37" ;//设置æµééé卿 |
| | | public static final String cd_38 = "38" ;//è®¾ç½®ç¨æ·ä½é¢æ¥è¦å¼ |
| | | public static final String cd_39 = "39" ;//è®¾ç½®çµæ± çµåæ¥è¦å¼ |
| | | public static final String cd_3A = "3A" ;//设置éé¨å µè½¬çµæµ |
| | | public static final String cd_3B = "3B" ;//设置éé¨è¶
æ¶æ¶é´ |
| | | public static final String cd_50 = "50" ;//æ¥è¯¢é¥æµç«ç»ç«¯å°å |
| | | public static final String cd_65 = "65" ;//æ¥è¯¢IPåç«¯å£ |
| | | public static final String cd_66 = "66" ;//æ¥è¯¢éé¨ç¶æ(鳿»æè¯¥å½ä»¤è®¾è®¡æå¬æµ83åè½ç æ°æ®çå½ä»¤äºï¼å 为è¿ä¸ªå½ä»¤åæ§æ²¡æéé¨ç¶ææ°æ®åï¼æä»¥è¿ä¸ªå½ä»¤åªè½ä½ä¸ºå¬æµå½ä»¤ç¨äº) |
| | | public static final String cd_65 = "65" ;//æ¥è¯¢èªæ¥å¨æ |
| | | public static final String cd_66 = "66" ;//æ¥è¯¢IPåç«¯å£ |
| | | //public static final String cd_66 = "66" ;//æ¥è¯¢éé¨ç¶æ(鳿»æè¯¥å½ä»¤è®¾è®¡æå¬æµ83åè½ç æ°æ®çå½ä»¤äºï¼å 为è¿ä¸ªå½ä»¤åæ§æ²¡æéé¨ç¶ææ°æ®åï¼æä»¥è¿ä¸ªå½ä»¤åªè½ä½ä¸ºå¬æµå½ä»¤ç¨äº) |
| | | public static final String cd_67 = "67" ;//æ¥è¯¢æµééé卿 |
| | | public static final String cd_68 = "68" ;//æ¥è¯¢ç¨æ·ä½é¢æ¥è¦å¼ |
| | | public static final String cd_69 = "69" ;//æ¥è¯¢çµæ± çµåæ¥è¦å¼ |
| | | public static final String cd_6A = "6A" ;//æ¥è¯¢éé¨å µè½¬çµæµå¼ |
| | | public static final String cd_6B = "6B" ;//æ¥è¯¢éé¨è¶
æ¶æ¶é´ |
| | | public static final String cd_71 = "71" ;//è®¾ç½®å·¥ä½æ¨¡å¼ï¼æå¤©èµå¶å®çåè®®ï¼å½åæªå®ç°ï¼ |
| | | public static final String cd_81 = "81" ;//éæºèªæ¥æ¥ |
| | | public static final String cd_83 = "83" ;//饿µç«å¼å
³éèªæ¥ |
| | | public static final String cd_84 = "84" ;//å¼é工使¥ |
| | | public static final String cd_91 = "91" ;//æ¸
空åå²è®°å½ |
| | | public static final String cd_92 = "92" ;//饿§å¯å¨éé¨ |
| | | public static final String cd_93 = "93" ;//饿§å
³ééé¨ |
| | | public static final String cd_97 = "97" ;//APPè¿ç¨å¼é |
| | | public static final String cd_98 = "98" ;//APPè¿ç¨å
³é |
| | | public static final String cd_3C = "3C" ;//设置水价 |
| | | public static final String cd_6C = "6C" ;//æ¥è¯¢æ°´ä»· |
| | | public static final String cd_3D = "3D" ;//设置é»åå |
| | | public static final String cd_C0 = "C0" ;//饿µç«èªæ¥å®æ¶æ°æ® |
| | | |
| | | public static String getCodeName(String code) { |
| | | String name = (code.equals(cd_02) ? "é¾è·¯æ£æµ" : |
| | | (code.equals(cd_10) ? "è®¾ç½®é¥æµç«ç»ç«¯å°å" : |
| | | (code.equals(cd_21) ? "设置IPå端å£" : |
| | | (code.equals(cd_35) ? "è®¾ç½®èªæ¥å¨æ" : |
| | | (code.equals(cd_36) ? "设置IPå端å£" : |
| | | (code.equals(cd_37) ? "设置æµééé卿" : |
| | | (code.equals(cd_38) ? "è®¾ç½®ç¨æ·ä½é¢æ¥è¦å¼" : |
| | | (code.equals(cd_39) ? "è®¾ç½®çµæ± çµåæ¥è¦å¼" : |
| | | (code.equals(cd_3A) ? "设置éé¨å µè½¬çµæµ" : |
| | | (code.equals(cd_3B) ? "设置éé¨è¶
æ¶æ¶é´" : |
| | | (code.equals(cd_50) ? "æ¥è¯¢é¥æµç«ç»ç«¯å°å" : |
| | | (code.equals(cd_65) ? "æ¥è¯¢IPå端å£" : |
| | | (code.equals(cd_66) ? "æ¥è¯¢éé¨ç¶æ" : |
| | | (code.equals(cd_65) ? "æ¥è¯¢èªæ¥å¨æ" : |
| | | (code.equals(cd_66) ? "æ¥è¯¢IPå端å£" : |
| | | (code.equals(cd_67) ? "æ¥è¯¢æµééé卿" : |
| | | (code.equals(cd_68) ? "æ¥è¯¢ç¨æ·ä½é¢æ¥è¦å¼" : |
| | | (code.equals(cd_69) ? "æ¥è¯¢çµæ± çµåæ¥è¦å¼" : |
| | | (code.equals(cd_6A) ? "æ¥è¯¢éé¨å µè½¬çµæµå¼" : |
| | | (code.equals(cd_6B) ? "æ¥è¯¢éé¨è¶
æ¶æ¶é´" : |
| | | (code.equals(cd_71) ? "è®¾ç½®å·¥ä½æ¨¡å¼" : |
| | | (code.equals(cd_81) ? "éæºèªæ¥" : |
| | | (code.equals(cd_83) ? "å¼å
³éèªæ¥" : |
| | | (code.equals(cd_84) ? "å¼é工使¥" : |
| | | (code.equals(cd_91) ? "æ¸
空åå²è®°å½" : |
| | | (code.equals(cd_92) ? "饿§å¯å¨éé¨" : |
| | | (code.equals(cd_93) ? "饿§å
³ééé¨" : |
| | | (code.equals(cd_97) ? "APPè¿ç¨å¼é" : |
| | | (code.equals(cd_98) ? "PPè¿ç¨å
³é" : |
| | | (code.equals(cd_3C) ? "设置水价" : |
| | | (code.equals(cd_6C) ? "æ¥è¯¢æ°´ä»·" : |
| | | (code.equals(cd_3D) ? "设置é»åå" : |
| | | (code.equals(cd_C0) ? "èªæ¥å®æ¶æ°æ®" : |
| | | ""))))))))))))))) ; |
| | | ""))))))))))))))))))))))))))))))) ; |
| | | return name ; |
| | | } |
| | | |
| | |
| | | */ |
| | | public String parseRtuAddr(byte[] bs)throws Exception{ |
| | | String rtuAddrBCD = "" + ByteUtil.BCD2Long_BE(bs, ProtocolConstantV206V1_0_0.rtuAddr1Index_start, ProtocolConstantV206V1_0_0.rtuAddr1Index_end) ; |
| | | String rtuAddrStr = "" + ByteUtilUnsigned.bytes2Short_BE(bs, ProtocolConstantV206V1_0_0.rtuAddr2Index_start) ; |
| | | String rtuAddrStr = "" + ByteUtilUnsigned.bytes2Short_LE(bs, ProtocolConstantV206V1_0_0.rtuAddr2Index_start) ; |
| | | while(rtuAddrStr.length() < 5){ |
| | | rtuAddrStr = "0" + rtuAddrStr ; |
| | | } |
| | |
| | | * @throws Exception å¼å¸¸ |
| | | */ |
| | | public String parseRtuAddr(byte[] bs, int index)throws Exception{ |
| | | String rtuAddrBCD = "" + ByteUtil.BCD2Long_BE(bs, index, index + 2) ; |
| | | String rtuAddrStr = "" + ByteUtilUnsigned.bytes2Short_BE(bs, index + 3) ; |
| | | String rtuAddrBCD = "" + ByteUtil.BCD2Long_BE(bs, index, index + 2) ;//å°åæ¯å¤§ç«¯æ¨¡å¼ |
| | | String rtuAddrStr = "" + ByteUtilUnsigned.bytes2Short_LE(bs, index + 3) ; |
| | | while(rtuAddrStr.length() < 5){ |
| | | rtuAddrStr = "0" + rtuAddrStr ; |
| | | } |
| | |
| | | |
| | | public String toString(){ |
| | | StringBuilder sb = new StringBuilder() ; |
| | | sb.append(" 设å¤RTUå°ååºç:\n"); |
| | | sb.append(" 设置RTUå°ååºç:\n"); |
| | | sb.append(" æ°å°åï¼"); |
| | | sb.append(newRtuAddr); |
| | | sb.append("\n"); |
New file |
| | |
| | | package com.dy.common.mw.protocol.p206V1_0_0; |
| | | |
| | | import lombok.Data; |
| | | |
| | | /** |
| | | * @Author liurunyu |
| | | * @Date 2024/4/10 18:44 |
| | | * @LastEditTime 2024/4/10 18:44 |
| | | * @Description |
| | | */ |
| | | @Data |
| | | public class DataCd35And65Vo { |
| | | public Integer minute ; |
| | | |
| | | public String toString(){ |
| | | StringBuilder sb = new StringBuilder() ; |
| | | sb.append(" 设置(æ¥è¯¢)èªæ¥å¨æåºç:\n"); |
| | | sb.append(" åéï¼"); |
| | | sb.append(minute); |
| | | sb.append("\n"); |
| | | |
| | | return sb.toString() ; |
| | | } |
| | | } |
copy from pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DataCd65Vo.java
copy to pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DataCd36Vo.java
File was copied from pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DataCd65Vo.java |
| | |
| | | import lombok.Data; |
| | | |
| | | @Data |
| | | public class DataCd65Vo { |
| | | public class DataCd36Vo { |
| | | public String ip ;//IPå°å |
| | | public Integer port ;//端å£å· |
| | | |
| | | public String toString(){ |
| | | StringBuilder sb = new StringBuilder() ; |
| | | sb.append(" æ¥è¯¢IPå°åå端å£:\n"); |
| | | sb.append(" 设置询IPå°åå端å£:\n"); |
| | | sb.append(" IPå°åï¼"); |
| | | sb.append(ip); |
| | | sb.append("\n"); |
New file |
| | |
| | | package com.dy.common.mw.protocol.p206V1_0_0; |
| | | |
| | | import lombok.Data; |
| | | |
| | | /** |
| | | * @Author liurunyu |
| | | * @Date 2024/4/10 18:44 |
| | | * @LastEditTime 2024/4/10 18:44 |
| | | * @Description |
| | | */ |
| | | @Data |
| | | public class DataCd37And67Vo { |
| | | public Integer second ; |
| | | |
| | | public String toString(){ |
| | | StringBuilder sb = new StringBuilder() ; |
| | | sb.append(" 设置(æ¥è¯¢)æµééé卿åºç:\n"); |
| | | sb.append(" ç§éï¼"); |
| | | sb.append(second); |
| | | sb.append("\n"); |
| | | |
| | | return sb.toString() ; |
| | | } |
| | | } |
New file |
| | |
| | | package com.dy.common.mw.protocol.p206V1_0_0; |
| | | |
| | | import lombok.Data; |
| | | |
| | | /** |
| | | * @Author liurunyu |
| | | * @Date 2024/4/10 18:44 |
| | | * @LastEditTime 2024/4/10 18:44 |
| | | * @Description |
| | | */ |
| | | @Data |
| | | public class DataCd38And68Vo { |
| | | public Double remainMoneyAlarm ; |
| | | |
| | | public String toString(){ |
| | | StringBuilder sb = new StringBuilder() ; |
| | | sb.append(" 设置(æ¥è¯¢)ç¨æ·ä½é¢æ¥è¦å¼:\n"); |
| | | sb.append(" ä½é¢ï¼"); |
| | | sb.append(remainMoneyAlarm); |
| | | sb.append("\n"); |
| | | |
| | | return sb.toString() ; |
| | | } |
| | | } |
New file |
| | |
| | | package com.dy.common.mw.protocol.p206V1_0_0; |
| | | |
| | | import lombok.Data; |
| | | |
| | | /** |
| | | * @Author liurunyu |
| | | * @Date 2024/4/10 18:44 |
| | | * @LastEditTime 2024/4/10 18:44 |
| | | * @Description |
| | | */ |
| | | @Data |
| | | public class DataCd39And69Vo { |
| | | public Double batteryVoltAlarm ; |
| | | |
| | | public String toString(){ |
| | | StringBuilder sb = new StringBuilder() ; |
| | | sb.append(" 设置(æ¥è¯¢)çµæ± çµåæ¥è¦å¼:\n"); |
| | | sb.append(" çµåï¼"); |
| | | sb.append(batteryVoltAlarm); |
| | | sb.append("\n"); |
| | | |
| | | return sb.toString() ; |
| | | } |
| | | } |
New file |
| | |
| | | package com.dy.common.mw.protocol.p206V1_0_0; |
| | | |
| | | import lombok.Data; |
| | | |
| | | /** |
| | | * @Author liurunyu |
| | | * @Date 2024/4/10 18:44 |
| | | * @LastEditTime 2024/4/10 18:44 |
| | | * @Description |
| | | */ |
| | | @Data |
| | | public class DataCd3AAnd6AVo { |
| | | public Double current ; |
| | | |
| | | public String toString(){ |
| | | StringBuilder sb = new StringBuilder() ; |
| | | sb.append(" 设置(æ¥è¯¢)éé¨å µè½¬çµæµ:\n"); |
| | | sb.append(" çµæµï¼"); |
| | | sb.append(current); |
| | | sb.append("\n"); |
| | | |
| | | return sb.toString() ; |
| | | } |
| | | } |
New file |
| | |
| | | package com.dy.common.mw.protocol.p206V1_0_0; |
| | | |
| | | import lombok.Data; |
| | | |
| | | /** |
| | | * @Author liurunyu |
| | | * @Date 2024/4/10 18:44 |
| | | * @LastEditTime 2024/4/10 18:44 |
| | | * @Description |
| | | */ |
| | | @Data |
| | | public class DataCd3BAnd6BVo { |
| | | public Integer second ; |
| | | |
| | | public String toString(){ |
| | | StringBuilder sb = new StringBuilder() ; |
| | | sb.append(" 设置(æ¥è¯¢)éé¨è¶
æ¶æ¶é´:\n"); |
| | | sb.append(" ç§éï¼"); |
| | | sb.append(second); |
| | | sb.append("\n"); |
| | | |
| | | return sb.toString() ; |
| | | } |
| | | } |
New file |
| | |
| | | package com.dy.common.mw.protocol.p206V1_0_0; |
| | | |
| | | import lombok.Data; |
| | | |
| | | /** |
| | | * @Author liurunyu |
| | | * @Date 2024/4/10 18:44 |
| | | * @LastEditTime 2024/4/10 18:44 |
| | | * @Description |
| | | */ |
| | | @Data |
| | | public class DataCd3CVo { |
| | | public Double price ; |
| | | |
| | | public String toString(){ |
| | | StringBuilder sb = new StringBuilder() ; |
| | | sb.append(" 设置水价åºç:\n"); |
| | | sb.append(" æ°´ä»·ï¼"); |
| | | sb.append(price); |
| | | sb.append("\n"); |
| | | |
| | | return sb.toString() ; |
| | | } |
| | | } |
New file |
| | |
| | | package com.dy.common.mw.protocol.p206V1_0_0; |
| | | |
| | | import lombok.Data; |
| | | |
| | | /** |
| | | * @Author liurunyu |
| | | * @Date 2024/4/10 18:44 |
| | | * @LastEditTime 2024/4/10 18:44 |
| | | * @Description |
| | | */ |
| | | @Data |
| | | public class DataCd3DVo { |
| | | public String icCardNo ; |
| | | |
| | | public String toString(){ |
| | | StringBuilder sb = new StringBuilder() ; |
| | | sb.append(" 设置é»åååºç:\n"); |
| | | sb.append(" å¡å·ï¼"); |
| | | sb.append(icCardNo); |
| | | sb.append("\n"); |
| | | |
| | | return sb.toString() ; |
| | | } |
| | | } |
File was renamed from pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DataCd65Vo.java |
| | |
| | | import lombok.Data; |
| | | |
| | | @Data |
| | | public class DataCd65Vo { |
| | | public class DataCd66Vo { |
| | | public String ip ;//IPå°å |
| | | public Integer port ;//端å£å· |
| | | |
New file |
| | |
| | | package com.dy.common.mw.protocol.p206V1_0_0; |
| | | |
| | | import lombok.Data; |
| | | |
| | | /** |
| | | * @Author liurunyu |
| | | * @Date 2024/4/10 18:44 |
| | | * @LastEditTime 2024/4/10 18:44 |
| | | * @Description |
| | | */ |
| | | @Data |
| | | public class DataCd6CVo { |
| | | public Double price ; |
| | | |
| | | public String toString(){ |
| | | StringBuilder sb = new StringBuilder() ; |
| | | sb.append(" æ¥è¯¢æ°´ä»·åºç:\n"); |
| | | sb.append(" æ°´ä»·ï¼"); |
| | | sb.append(price); |
| | | sb.append("\n"); |
| | | |
| | | return sb.toString() ; |
| | | } |
| | | } |
| | |
| | | |
| | | public String rtuAddr ;//RtuAddr |
| | | |
| | | public DataCd02Vo dataCd02Vo;//é¾è·¯æ£æµ |
| | | public DataCd10Vo dataCd10Vo;//设置RTUå°å |
| | | public DataCd21Vo dataCd21Vo;//设置IPå°å |
| | | public DataCd65Vo dataCd65Vo;//æ¥è¯¢IPå°ååç«¯å£ |
| | | public DataCd71Vo dataCd71Vo;//æ¥è¯¢éé¨ç¶æ |
| | | public DataCd81Vo dataCd81Vo;//éæºèªæ¥æ¥ |
| | | public DataCd83OpenVo dataCd83OpenVo;//å¼éèªæ¥ |
| | | public DataCd83CloseVo dataCd83CloseVo;//å
³éèªæ¥ |
| | | public DataCd84Vo dataCd84Vo;//å¼é工使¥ |
| | | public DataCd92Vo dataCd92Vo;//å¼éåºç |
| | | public DataCd93Vo dataCd93Vo;//å
³éåºç |
| | | public DataCd97Vo dataCd97Vo;//APPè¿ç¨å¼éåºç |
| | | public DataCd98Vo dataCd98Vo;//APPè¿ç¨å
³éåºç |
| | | public DataCdC0Vo dataCdC0Vo;//ç»ç«¯èªæ¥å®æ¶æ°æ® |
| | | public Object subData ; |
| | | |
| | | public String dt ;//éä¿¡ä¸é´ä»¶äº§çæ¶æ¥æ¶é´(yyyy-MM-dd hh:mm:ss) |
| | | |
| | |
| | | StringBuffer sb = new StringBuffer() ; |
| | | sb.append(" æ§å¶å¨å°å : " + (rtuAddr==null?"":rtuAddr) + "\n") ; |
| | | sb.append(" ç»ç«¯æ°æ®:\n") ; |
| | | if(dataCd02Vo != null){ |
| | | sb.append(dataCd02Vo.toString()) ; |
| | | } |
| | | if(dataCd10Vo != null){ |
| | | sb.append(dataCd10Vo.toString()) ; |
| | | } |
| | | if(dataCd21Vo != null){ |
| | | sb.append(dataCd21Vo.toString()) ; |
| | | } |
| | | if(dataCd65Vo != null){ |
| | | sb.append(dataCd65Vo.toString()) ; |
| | | } |
| | | if(dataCd71Vo != null){ |
| | | sb.append(dataCd71Vo.toString()) ; |
| | | } |
| | | if(dataCd81Vo != null){ |
| | | sb.append(dataCd81Vo.toString()) ; |
| | | } |
| | | if(dataCd83OpenVo != null){ |
| | | sb.append(dataCd83OpenVo.toString()) ; |
| | | } |
| | | if(dataCd83CloseVo != null){ |
| | | sb.append(dataCd83CloseVo.toString()) ; |
| | | } |
| | | if(dataCd84Vo != null){ |
| | | sb.append(dataCd84Vo.toString()) ; |
| | | } |
| | | if(dataCd92Vo != null){ |
| | | sb.append(dataCd92Vo.toString()) ; |
| | | } |
| | | if(dataCd93Vo != null){ |
| | | sb.append(dataCd93Vo.toString()) ; |
| | | } |
| | | if(dataCd97Vo != null){ |
| | | sb.append(dataCd97Vo.toString()) ; |
| | | } |
| | | if(dataCd98Vo != null){ |
| | | sb.append(dataCd98Vo.toString()) ; |
| | | } |
| | | if(dataCdC0Vo != null){ |
| | | sb.append(dataCdC0Vo.toString()) ; |
| | | if(subData != null){ |
| | | sb.append(subData.toString()) ; |
| | | } |
| | | return sb.toString() ; |
| | | } |
| | |
| | | return bytes ; |
| | | } |
| | | |
| | | public static void main(String[] args) throws Exception{ |
| | | ParseParamsForDownV1_0_1 p = new ParseParamsForDownV1_0_1() ; |
| | | p.commandCode = "02" ; |
| | | p.rtuAddr = "9672950001"; |
| | | |
| | | Cd_02_Down obj = new Cd_02_Down() ; |
| | | byte[] bs = obj.doParse(p) ; |
| | | |
| | | String hex1 = ByteUtil.bytes2Hex(bs,true) ; |
| | | String hex2 = ByteUtil.bytes2Hex(bs,false) ; |
| | | |
| | | System.out.println(hex1); |
| | | System.out.println(hex2); |
| | | } |
| | | |
| | | } |
| | |
| | | protected void doParse(byte[] bs, int bsLen, String dataCode, Data data) throws Exception { |
| | | DataV1_0_1 dV1 = (DataV1_0_1)data.getSubData() ; |
| | | DataCd02Vo cdData = new DataCd02Vo() ; |
| | | dV1.dataCd02Vo = cdData ; |
| | | dV1.subData = cdData ; |
| | | cdData.status = ByteUtil.bytes2Hex(bs, false, ProtocolConstantV206V1_0_0.dataIndex, 1) ; |
| | | } |
| | | } |
| | |
| | | ByteUtil.hex2Bytes(para.commandCode, bsHead, index) ; |
| | | |
| | | if(para.param == null){ |
| | | throw new Exception("æªæä¾å½ä»¤åæ°æ°æ®ï¼ä¸è½æé åè½ç 为" + CodeV1_0_1.cd_10 + "çä¸è¡å½ä»¤") ; |
| | | throw new Exception("æªæä¾å½ä»¤åæ°æ°æ®ï¼ä¸è½æé åè½ç 为" + para.commandCode + "çä¸è¡å½ä»¤") ; |
| | | }else{ |
| | | index = 0 ; |
| | | byte[] bs = new byte[12] ; |
| | | byte[] bs = new byte[13] ; |
| | | String newRtuAddr = (String)para.param ; |
| | | GlCreate.createRtuAddr(newRtuAddr, bs, index); |
| | | index += 5 ; |
| | |
| | | protected void doParse(byte[] bs, int bsLen, String dataCode, Data data) throws Exception { |
| | | DataV1_0_1 dV1 = (DataV1_0_1)data.getSubData() ; |
| | | DataCd10Vo cdData = new DataCd10Vo() ; |
| | | dV1.dataCd10Vo = cdData ; |
| | | dV1.subData = cdData ; |
| | | cdData.newRtuAddr = new CommonV1_0_1().parseRtuAddr(bs, ProtocolConstantV206V1_0_0.dataIndex) ; |
| | | } |
| | | |
| | |
| | | åæ°æ ¼å¼ï¼ ip1,ip2,ip3,ip4,port |
| | | */ |
| | | if(para.param == null){ |
| | | throw new Exception("æªæä¾å½ä»¤åæ°æ°æ®ï¼ä¸è½æé åè½ç 为" + CodeV1_0_1.cd_21 + "çä¸è¡å½ä»¤") ; |
| | | throw new Exception("æªæä¾å½ä»¤åæ°æ°æ®ï¼ä¸è½æé åè½ç 为" + para.commandCode + "çä¸è¡å½ä»¤") ; |
| | | }else{ |
| | | index = 0 ; |
| | | byte[] bs = new byte[14] ; |
| | | byte[] bs = new byte[13] ; |
| | | String ipPort = (String)para.param ; |
| | | String[] ipPorts = ipPort.split(",") ; |
| | | ByteUtilUnsigned.short2Bytes_LE(bs, (byte) Integer.parseInt(ipPorts[0]), index++); |
| | |
| | | protected void doParse(byte[] bs, int bsLen, String dataCode, Data data) throws Exception { |
| | | DataV1_0_1 dV1 = (DataV1_0_1)data.getSubData() ; |
| | | DataCd21Vo cdData = new DataCd21Vo() ; |
| | | dV1.dataCd21Vo = cdData ; |
| | | dV1.subData = cdData ; |
| | | short index = ProtocolConstantV206V1_0_0.dataIndex ; |
| | | String ip1 = "" +ByteUtilUnsigned.byte2Byte(bs, index++) ; |
| | | String ip2 = "" +ByteUtilUnsigned.byte2Byte(bs, index++) ; |
New file |
| | |
| | | package com.dy.common.mw.protocol.p206V1_0_0.parse; |
| | | |
| | | import com.dy.common.mw.protocol.*; |
| | | import com.dy.common.mw.protocol.p206V1_0_0.CodeV1_0_1; |
| | | import com.dy.common.mw.protocol.p206V1_0_0.CommonV1_0_1; |
| | | import com.dy.common.mw.protocol.p206V1_0_0.ParseParamsForDownV1_0_1; |
| | | import com.dy.common.mw.protocol.p206V1_0_0.ProtocolConstantV206V1_0_0; |
| | | import com.dy.common.mw.protocol.p206V1_0_0.parse.global.GlCreate; |
| | | import com.dy.common.util.ByteUtil; |
| | | import com.dy.common.util.ByteUtilUnsigned; |
| | | |
| | | /** |
| | | * @Author liurunyu |
| | | * @Date 2024/4/10 18:26 |
| | | * @LastEditTime 2024/4/10 18:26 |
| | | * @Description 设置水价 |
| | | */ |
| | | @AnnotationCodeDown(ifAny={ |
| | | CodeV1_0_1.cd_35 |
| | | }) |
| | | public class Cd_35_Down implements CodeParse { |
| | | |
| | | @Override |
| | | public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback) throws Exception { |
| | | ParseParamsForDownV1_0_1 para = (ParseParamsForDownV1_0_1) params ; |
| | | byte[] bs = this.doParse(para) ; |
| | | |
| | | MidResultToRtu midRs = new MidResultToRtu() ; |
| | | midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ;//rtuè¿åå½ä»¤ç»æ ååç®çå°web URL |
| | | midRs.protocolName = para.protocolName ;//åè®®åç§° |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtuå°åï¼çµä¿¡å¹³å°è®¾å¤IMEIï¼ |
| | | midRs.commandId = para.commandId ;//å½ä»¤IDï¼åèµ·å½ä»¤ç客æ·ç«¯(web端)çæï¼ä»¥å¹é
å½ä»¤ç»æ |
| | | midRs.downCode = para.commandCode ;//ä¸è¡å½ä»¤åè½ç ; |
| | | midRs.downBuffer = bs ;//ä¸è¡å½ä»¤æ°æ® |
| | | midRs.downBufHex = ByteUtil.bytes2Hex(bs, true) ;//ä¸è¡å½ä»¤æ°æ®åå
è¿å¶å½¢å¼ |
| | | midRs.hasResponse = true ;//æ¯å¦æåºç |
| | | midRs.maxSendTimes = null ;//å½ä»¤æå¤§å鿬¡æ°(彿¶ä¸å°åºçæ¶ï¼å°éå)ï¼å¦æä¸è®¾ç½®ï¼å½ä»¤ç¼åå¨è¿è¡è¡¥å
设置 |
| | | midRs.isCachForOffLine = false ;//RTUä¸å¨çº¿ï¼å½ä»¤æ¯å¦ç¼åï¼ä½åèæ¶ä¸ºtrue |
| | | |
| | | if(isLowPower != null && isLowPower.booleanValue()){ |
| | | //ä½åèæ¶ï¼å°½å¿«åé |
| | | midRs.isQuickSend = true ; |
| | | } |
| | | |
| | | return new MidResult[]{midRs} ; |
| | | } |
| | | |
| | | /** |
| | | * æé ä¸è¡æ°æ® |
| | | * @param para åæ° |
| | | * @return åèæ°ç» |
| | | * @throws Exception å¼å¸¸ |
| | | */ |
| | | public byte[] doParse(ParseParamsForDownV1_0_1 para) throws Exception { |
| | | CommonV1_0_1 commonV1_0_1 = new CommonV1_0_1() ; |
| | | byte[] bytes ; |
| | | byte[] bsHead = new byte[ProtocolConstantV206V1_0_0.lenHead2Code] ; |
| | | byte index = 0 ; |
| | | bsHead[index] = ProtocolConstantV206V1_0_0.P_Head_Byte ; |
| | | |
| | | index++ ; |
| | | bsHead[index] = 0 ;//帧é¿åº¦ |
| | | |
| | | index++ ; |
| | | bsHead[index] = ProtocolConstantV206V1_0_0.P_Head_Byte ; |
| | | |
| | | index++ ; |
| | | bsHead[index] = commonV1_0_1.createCtrl((byte)0, (byte)0) ; |
| | | |
| | | index++ ; |
| | | GlCreate.createRtuAddr(para.rtuAddr, bsHead, index); |
| | | index += 5 ; |
| | | |
| | | ByteUtil.hex2Bytes(para.commandCode, bsHead, index) ; |
| | | |
| | | if(para.param == null){ |
| | | throw new Exception("æªæä¾å½ä»¤åæ°æ°æ®ï¼ä¸è½æé åè½ç 为" + para.commandCode + "çä¸è¡å½ä»¤") ; |
| | | }else{ |
| | | index = 0 ; |
| | | byte[] bs = new byte[10] ; |
| | | Integer minute = (Integer)para.param ; |
| | | ByteUtilUnsigned.short2Bytes_LE(bs, minute.shortValue(), index); |
| | | index += 2 ; |
| | | GlCreate.createPw(bs, index); |
| | | index += 2 ; |
| | | GlCreate.createTp(bs, index); |
| | | bytes = ByteUtil.bytesMerge(bsHead, bs) ; |
| | | } |
| | | |
| | | GlCreate.createLen(bytes);//é¿åº¦æ¾åèæ°ç»ä¸ |
| | | |
| | | byte[] bsTail = GlCreate.createCrcTail(bytes) ;//CRCåå°¾å å åèæ°ç»ä¸ |
| | | |
| | | bytes = ByteUtil.bytesMerge(bytes, bsTail) ; |
| | | |
| | | return bytes ; |
| | | } |
| | | |
| | | } |
New file |
| | |
| | | package com.dy.common.mw.protocol.p206V1_0_0.parse; |
| | | |
| | | import com.dy.common.mw.protocol.*; |
| | | import com.dy.common.mw.protocol.p206V1_0_0.*; |
| | | import com.dy.common.util.ByteUtilUnsigned; |
| | | import org.apache.logging.log4j.LogManager; |
| | | import org.apache.logging.log4j.Logger; |
| | | |
| | | /** |
| | | * @Author liurunyu |
| | | * @Date 2024/4/10 18:42 |
| | | * @LastEditTime 2024/4/10 18:42 |
| | | * @Description |
| | | */ |
| | | @AnnotationCodeUp(ifAny={ |
| | | CodeV1_0_1.cd_35 |
| | | }) |
| | | public class Cd_35_Up implements CodeParse { |
| | | |
| | | private static final Logger log = LogManager.getLogger(Cd_35_Up.class); |
| | | |
| | | /** |
| | | * åæä¸è¡æ°æ® |
| | | */ |
| | | @Override |
| | | public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback)throws Exception { |
| | | ParseParamsForUpV1_0_1 para = (ParseParamsForUpV1_0_1)params ; |
| | | int bsLen = new CommonV1_0_1().parseDataLen(para.upBuffer) ; |
| | | if(bsLen > 0){ |
| | | this.doParse(para.upBuffer, |
| | | bsLen, |
| | | para.upCode, |
| | | para.data) ; |
| | | } |
| | | log.info("åæå½ä»¤åºçæ°æ®<" + CodeV1_0_1.getCodeName(para.upCode) + " RTUå°å=" + para.rtuAddr + ">:\n" + para.data.toString()); |
| | | |
| | | MidResultFromRtu midRs = new MidResultFromRtu() ; |
| | | midRs.protocolName = para.protocolName ;//åè®®åç§° |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtuå°å |
| | | midRs.upCode = para.upCode ;//ä¸è¡æ°æ®ä¸çåè½ç |
| | | midRs.upHex = para.upHex ;//ä¸è¡æ°æ®åå
è¿å¶å½¢å¼ |
| | | midRs.upBuffer = para.upBuffer ;//ä¸è¡æ°æ®åèæ°ç» |
| | | midRs.data = para.data ;//è§£æåçæ°æ® |
| | | |
| | | midRs.reportOrResponse_trueOrFalse = false ;//å½ä»¤åºç |
| | | |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | return new MidResult[]{midRs} ; |
| | | } |
| | | /** |
| | | * æ§è¡åæ |
| | | * @param bs åèæ°ç» |
| | | * @param bsLen åèé¿åº¦ï¼æ»å
é¿ï¼å
æ¬å
头åå
å°¾ï¼ |
| | | * @param dataCode åè½ç |
| | | * @param data æ°æ® |
| | | * @throws Exception å¼å¸¸ |
| | | */ |
| | | protected void doParse(byte[] bs, int bsLen, String dataCode, Data data) throws Exception { |
| | | DataV1_0_1 dV1 = (DataV1_0_1)data.getSubData() ; |
| | | DataCd35And65Vo cdData = new DataCd35And65Vo() ; |
| | | dV1.subData = cdData ; |
| | | int minute = ByteUtilUnsigned.bytes2Short_LE(bs, ProtocolConstantV206V1_0_0.dataIndex) ; |
| | | cdData.minute = minute; |
| | | } |
| | | |
| | | } |
New file |
| | |
| | | package com.dy.common.mw.protocol.p206V1_0_0.parse; |
| | | |
| | | import com.dy.common.mw.protocol.*; |
| | | import com.dy.common.mw.protocol.p206V1_0_0.CodeV1_0_1; |
| | | import com.dy.common.mw.protocol.p206V1_0_0.CommonV1_0_1; |
| | | import com.dy.common.mw.protocol.p206V1_0_0.ParseParamsForDownV1_0_1; |
| | | import com.dy.common.mw.protocol.p206V1_0_0.ProtocolConstantV206V1_0_0; |
| | | import com.dy.common.mw.protocol.p206V1_0_0.parse.global.GlCreate; |
| | | import com.dy.common.util.ByteUtil; |
| | | import com.dy.common.util.ByteUtilUnsigned; |
| | | |
| | | /** |
| | | * @Author liurunyu |
| | | * @Date 2024/4/10 18:26 |
| | | * @LastEditTime 2024/4/10 18:26 |
| | | * @Description 设置水价 |
| | | */ |
| | | @AnnotationCodeDown(ifAny={ |
| | | CodeV1_0_1.cd_36 |
| | | }) |
| | | public class Cd_36_Down implements CodeParse { |
| | | |
| | | @Override |
| | | public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback) throws Exception { |
| | | ParseParamsForDownV1_0_1 para = (ParseParamsForDownV1_0_1) params ; |
| | | byte[] bs = this.doParse(para) ; |
| | | |
| | | MidResultToRtu midRs = new MidResultToRtu() ; |
| | | midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ;//rtuè¿åå½ä»¤ç»æ ååç®çå°web URL |
| | | midRs.protocolName = para.protocolName ;//åè®®åç§° |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtuå°åï¼çµä¿¡å¹³å°è®¾å¤IMEIï¼ |
| | | midRs.commandId = para.commandId ;//å½ä»¤IDï¼åèµ·å½ä»¤ç客æ·ç«¯(web端)çæï¼ä»¥å¹é
å½ä»¤ç»æ |
| | | midRs.downCode = para.commandCode ;//ä¸è¡å½ä»¤åè½ç ; |
| | | midRs.downBuffer = bs ;//ä¸è¡å½ä»¤æ°æ® |
| | | midRs.downBufHex = ByteUtil.bytes2Hex(bs, true) ;//ä¸è¡å½ä»¤æ°æ®åå
è¿å¶å½¢å¼ |
| | | midRs.hasResponse = true ;//æ¯å¦æåºç |
| | | midRs.maxSendTimes = null ;//å½ä»¤æå¤§å鿬¡æ°(彿¶ä¸å°åºçæ¶ï¼å°éå)ï¼å¦æä¸è®¾ç½®ï¼å½ä»¤ç¼åå¨è¿è¡è¡¥å
设置 |
| | | midRs.isCachForOffLine = false ;//RTUä¸å¨çº¿ï¼å½ä»¤æ¯å¦ç¼åï¼ä½åèæ¶ä¸ºtrue |
| | | |
| | | if(isLowPower != null && isLowPower.booleanValue()){ |
| | | //ä½åèæ¶ï¼å°½å¿«åé |
| | | midRs.isQuickSend = true ; |
| | | } |
| | | |
| | | return new MidResult[]{midRs} ; |
| | | } |
| | | |
| | | /** |
| | | * æé ä¸è¡æ°æ® |
| | | * @param para åæ° |
| | | * @return åèæ°ç» |
| | | * @throws Exception å¼å¸¸ |
| | | */ |
| | | public byte[] doParse(ParseParamsForDownV1_0_1 para) throws Exception { |
| | | CommonV1_0_1 commonV1_0_1 = new CommonV1_0_1() ; |
| | | byte[] bytes ; |
| | | byte[] bsHead = new byte[ProtocolConstantV206V1_0_0.lenHead2Code] ; |
| | | byte index = 0 ; |
| | | bsHead[index] = ProtocolConstantV206V1_0_0.P_Head_Byte ; |
| | | |
| | | index++ ; |
| | | bsHead[index] = 0 ;//帧é¿åº¦ |
| | | |
| | | index++ ; |
| | | bsHead[index] = ProtocolConstantV206V1_0_0.P_Head_Byte ; |
| | | |
| | | index++ ; |
| | | bsHead[index] = commonV1_0_1.createCtrl((byte)0, (byte)0) ; |
| | | |
| | | index++ ; |
| | | GlCreate.createRtuAddr(para.rtuAddr, bsHead, index); |
| | | index += 5 ; |
| | | |
| | | ByteUtil.hex2Bytes(para.commandCode, bsHead, index) ; |
| | | |
| | | if(para.param == null){ |
| | | throw new Exception("æªæä¾å½ä»¤åæ°æ°æ®ï¼ä¸è½æé åè½ç 为" + para.commandCode + "çä¸è¡å½ä»¤") ; |
| | | }else{ |
| | | index = 0 ; |
| | | byte[] bs = new byte[14] ; |
| | | String ipPort = (String)para.param ; |
| | | String[] ipPortGrp = ipPort.split(","); |
| | | String[] ip = ipPortGrp[0].split(".") ; |
| | | bs[index++] = Byte.parseByte(ip[0]) ; |
| | | bs[index++] = Byte.parseByte(ip[2]) ; |
| | | bs[index++] = Byte.parseByte(ip[3]) ; |
| | | bs[index++] = Byte.parseByte(ip[4]) ; |
| | | |
| | | ByteUtilUnsigned.short2Bytes_LE(bs, Short.parseShort(ipPortGrp[1]), index); |
| | | |
| | | index += 2 ; |
| | | GlCreate.createPw(bs, index); |
| | | index += 2 ; |
| | | GlCreate.createTp(bs, index); |
| | | bytes = ByteUtil.bytesMerge(bsHead, bs) ; |
| | | } |
| | | |
| | | GlCreate.createLen(bytes);//é¿åº¦æ¾åèæ°ç»ä¸ |
| | | |
| | | byte[] bsTail = GlCreate.createCrcTail(bytes) ;//CRCåå°¾å å åèæ°ç»ä¸ |
| | | |
| | | bytes = ByteUtil.bytesMerge(bytes, bsTail) ; |
| | | |
| | | return bytes ; |
| | | } |
| | | |
| | | } |
New file |
| | |
| | | package com.dy.common.mw.protocol.p206V1_0_0.parse; |
| | | |
| | | import com.dy.common.mw.protocol.*; |
| | | import com.dy.common.mw.protocol.p206V1_0_0.*; |
| | | import com.dy.common.util.ByteUtilUnsigned; |
| | | import org.apache.logging.log4j.LogManager; |
| | | import org.apache.logging.log4j.Logger; |
| | | |
| | | /** |
| | | * @Author liurunyu |
| | | * @Date 2024/4/10 18:42 |
| | | * @LastEditTime 2024/4/10 18:42 |
| | | * @Description |
| | | */ |
| | | @AnnotationCodeUp(ifAny={ |
| | | CodeV1_0_1.cd_36 |
| | | }) |
| | | public class Cd_36_Up implements CodeParse { |
| | | |
| | | private static final Logger log = LogManager.getLogger(Cd_36_Up.class); |
| | | |
| | | /** |
| | | * åæä¸è¡æ°æ® |
| | | */ |
| | | @Override |
| | | public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback)throws Exception { |
| | | ParseParamsForUpV1_0_1 para = (ParseParamsForUpV1_0_1)params ; |
| | | int bsLen = new CommonV1_0_1().parseDataLen(para.upBuffer) ; |
| | | if(bsLen > 0){ |
| | | this.doParse(para.upBuffer, |
| | | bsLen, |
| | | para.upCode, |
| | | para.data) ; |
| | | } |
| | | log.info("åæå½ä»¤åºçæ°æ®<" + CodeV1_0_1.getCodeName(para.upCode) + " RTUå°å=" + para.rtuAddr + ">:\n" + para.data.toString()); |
| | | |
| | | MidResultFromRtu midRs = new MidResultFromRtu() ; |
| | | midRs.protocolName = para.protocolName ;//åè®®åç§° |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtuå°å |
| | | midRs.upCode = para.upCode ;//ä¸è¡æ°æ®ä¸çåè½ç |
| | | midRs.upHex = para.upHex ;//ä¸è¡æ°æ®åå
è¿å¶å½¢å¼ |
| | | midRs.upBuffer = para.upBuffer ;//ä¸è¡æ°æ®åèæ°ç» |
| | | midRs.data = para.data ;//è§£æåçæ°æ® |
| | | |
| | | midRs.reportOrResponse_trueOrFalse = false ;//å½ä»¤åºç |
| | | |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | return new MidResult[]{midRs} ; |
| | | } |
| | | /** |
| | | * æ§è¡åæ |
| | | * @param bs åèæ°ç» |
| | | * @param bsLen åèé¿åº¦ï¼æ»å
é¿ï¼å
æ¬å
头åå
å°¾ï¼ |
| | | * @param dataCode åè½ç |
| | | * @param data æ°æ® |
| | | * @throws Exception å¼å¸¸ |
| | | */ |
| | | protected void doParse(byte[] bs, int bsLen, String dataCode, Data data) throws Exception { |
| | | DataV1_0_1 dV1 = (DataV1_0_1)data.getSubData() ; |
| | | DataCd36Vo cdData = new DataCd36Vo() ; |
| | | dV1.subData = cdData ; |
| | | int index = ProtocolConstantV206V1_0_0.dataIndex ; |
| | | int ip1 = ByteUtilUnsigned.byte2Byte(bs, index++) ; |
| | | int ip2 = ByteUtilUnsigned.byte2Byte(bs, index++) ; |
| | | int ip3 = ByteUtilUnsigned.byte2Byte(bs, index++) ; |
| | | int ip4 = ByteUtilUnsigned.byte2Byte(bs, index++) ; |
| | | int port = ByteUtilUnsigned.bytes2Short_LE(bs, index++) ; |
| | | cdData.ip = ip1 + "." + ip2 + "." + ip3 + "." + ip4; |
| | | cdData.port = port ; |
| | | } |
| | | |
| | | } |
New file |
| | |
| | | package com.dy.common.mw.protocol.p206V1_0_0.parse; |
| | | |
| | | import com.dy.common.mw.protocol.*; |
| | | import com.dy.common.mw.protocol.p206V1_0_0.CodeV1_0_1; |
| | | import com.dy.common.mw.protocol.p206V1_0_0.CommonV1_0_1; |
| | | import com.dy.common.mw.protocol.p206V1_0_0.ParseParamsForDownV1_0_1; |
| | | import com.dy.common.mw.protocol.p206V1_0_0.ProtocolConstantV206V1_0_0; |
| | | import com.dy.common.mw.protocol.p206V1_0_0.parse.global.GlCreate; |
| | | import com.dy.common.util.ByteUtil; |
| | | import com.dy.common.util.ByteUtilUnsigned; |
| | | |
| | | /** |
| | | * @Author liurunyu |
| | | * @Date 2024/4/10 18:26 |
| | | * @LastEditTime 2024/4/10 18:26 |
| | | * @Description 设置水价 |
| | | */ |
| | | @AnnotationCodeDown(ifAny={ |
| | | CodeV1_0_1.cd_37 |
| | | }) |
| | | public class Cd_37_Down implements CodeParse { |
| | | |
| | | @Override |
| | | public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback) throws Exception { |
| | | ParseParamsForDownV1_0_1 para = (ParseParamsForDownV1_0_1) params ; |
| | | byte[] bs = this.doParse(para) ; |
| | | |
| | | MidResultToRtu midRs = new MidResultToRtu() ; |
| | | midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ;//rtuè¿åå½ä»¤ç»æ ååç®çå°web URL |
| | | midRs.protocolName = para.protocolName ;//åè®®åç§° |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtuå°åï¼çµä¿¡å¹³å°è®¾å¤IMEIï¼ |
| | | midRs.commandId = para.commandId ;//å½ä»¤IDï¼åèµ·å½ä»¤ç客æ·ç«¯(web端)çæï¼ä»¥å¹é
å½ä»¤ç»æ |
| | | midRs.downCode = para.commandCode ;//ä¸è¡å½ä»¤åè½ç ; |
| | | midRs.downBuffer = bs ;//ä¸è¡å½ä»¤æ°æ® |
| | | midRs.downBufHex = ByteUtil.bytes2Hex(bs, true) ;//ä¸è¡å½ä»¤æ°æ®åå
è¿å¶å½¢å¼ |
| | | midRs.hasResponse = true ;//æ¯å¦æåºç |
| | | midRs.maxSendTimes = null ;//å½ä»¤æå¤§å鿬¡æ°(彿¶ä¸å°åºçæ¶ï¼å°éå)ï¼å¦æä¸è®¾ç½®ï¼å½ä»¤ç¼åå¨è¿è¡è¡¥å
设置 |
| | | midRs.isCachForOffLine = false ;//RTUä¸å¨çº¿ï¼å½ä»¤æ¯å¦ç¼åï¼ä½åèæ¶ä¸ºtrue |
| | | |
| | | if(isLowPower != null && isLowPower.booleanValue()){ |
| | | //ä½åèæ¶ï¼å°½å¿«åé |
| | | midRs.isQuickSend = true ; |
| | | } |
| | | |
| | | return new MidResult[]{midRs} ; |
| | | } |
| | | |
| | | /** |
| | | * æé ä¸è¡æ°æ® |
| | | * @param para åæ° |
| | | * @return åèæ°ç» |
| | | * @throws Exception å¼å¸¸ |
| | | */ |
| | | public byte[] doParse(ParseParamsForDownV1_0_1 para) throws Exception { |
| | | CommonV1_0_1 commonV1_0_1 = new CommonV1_0_1() ; |
| | | byte[] bytes ; |
| | | byte[] bsHead = new byte[ProtocolConstantV206V1_0_0.lenHead2Code] ; |
| | | byte index = 0 ; |
| | | bsHead[index] = ProtocolConstantV206V1_0_0.P_Head_Byte ; |
| | | |
| | | index++ ; |
| | | bsHead[index] = 0 ;//帧é¿åº¦ |
| | | |
| | | index++ ; |
| | | bsHead[index] = ProtocolConstantV206V1_0_0.P_Head_Byte ; |
| | | |
| | | index++ ; |
| | | bsHead[index] = commonV1_0_1.createCtrl((byte)0, (byte)0) ; |
| | | |
| | | index++ ; |
| | | GlCreate.createRtuAddr(para.rtuAddr, bsHead, index); |
| | | index += 5 ; |
| | | |
| | | ByteUtil.hex2Bytes(para.commandCode, bsHead, index) ; |
| | | |
| | | if(para.param == null){ |
| | | throw new Exception("æªæä¾å½ä»¤åæ°æ°æ®ï¼ä¸è½æé åè½ç 为" + para.commandCode + "çä¸è¡å½ä»¤") ; |
| | | }else{ |
| | | index = 0 ; |
| | | byte[] bs = new byte[10] ; |
| | | Integer second = (Integer)para.param ; |
| | | ByteUtilUnsigned.short2Bytes_LE(bs, second.shortValue(), index); |
| | | index += 2 ; |
| | | GlCreate.createPw(bs, index); |
| | | index += 2 ; |
| | | GlCreate.createTp(bs, index); |
| | | bytes = ByteUtil.bytesMerge(bsHead, bs) ; |
| | | } |
| | | |
| | | GlCreate.createLen(bytes);//é¿åº¦æ¾åèæ°ç»ä¸ |
| | | |
| | | byte[] bsTail = GlCreate.createCrcTail(bytes) ;//CRCåå°¾å å åèæ°ç»ä¸ |
| | | |
| | | bytes = ByteUtil.bytesMerge(bytes, bsTail) ; |
| | | |
| | | return bytes ; |
| | | } |
| | | |
| | | } |
New file |
| | |
| | | package com.dy.common.mw.protocol.p206V1_0_0.parse; |
| | | |
| | | import com.dy.common.mw.protocol.*; |
| | | import com.dy.common.mw.protocol.p206V1_0_0.*; |
| | | import com.dy.common.util.ByteUtilUnsigned; |
| | | import org.apache.logging.log4j.LogManager; |
| | | import org.apache.logging.log4j.Logger; |
| | | |
| | | /** |
| | | * @Author liurunyu |
| | | * @Date 2024/4/10 18:42 |
| | | * @LastEditTime 2024/4/10 18:42 |
| | | * @Description |
| | | */ |
| | | @AnnotationCodeUp(ifAny={ |
| | | CodeV1_0_1.cd_37 |
| | | }) |
| | | public class Cd_37_Up implements CodeParse { |
| | | |
| | | private static final Logger log = LogManager.getLogger(Cd_37_Up.class); |
| | | |
| | | /** |
| | | * åæä¸è¡æ°æ® |
| | | */ |
| | | @Override |
| | | public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback)throws Exception { |
| | | ParseParamsForUpV1_0_1 para = (ParseParamsForUpV1_0_1)params ; |
| | | int bsLen = new CommonV1_0_1().parseDataLen(para.upBuffer) ; |
| | | if(bsLen > 0){ |
| | | this.doParse(para.upBuffer, |
| | | bsLen, |
| | | para.upCode, |
| | | para.data) ; |
| | | } |
| | | log.info("åæå½ä»¤åºçæ°æ®<" + CodeV1_0_1.getCodeName(para.upCode) + " RTUå°å=" + para.rtuAddr + ">:\n" + para.data.toString()); |
| | | |
| | | MidResultFromRtu midRs = new MidResultFromRtu() ; |
| | | midRs.protocolName = para.protocolName ;//åè®®åç§° |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtuå°å |
| | | midRs.upCode = para.upCode ;//ä¸è¡æ°æ®ä¸çåè½ç |
| | | midRs.upHex = para.upHex ;//ä¸è¡æ°æ®åå
è¿å¶å½¢å¼ |
| | | midRs.upBuffer = para.upBuffer ;//ä¸è¡æ°æ®åèæ°ç» |
| | | midRs.data = para.data ;//è§£æåçæ°æ® |
| | | |
| | | midRs.reportOrResponse_trueOrFalse = false ;//å½ä»¤åºç |
| | | |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | return new MidResult[]{midRs} ; |
| | | } |
| | | /** |
| | | * æ§è¡åæ |
| | | * @param bs åèæ°ç» |
| | | * @param bsLen åèé¿åº¦ï¼æ»å
é¿ï¼å
æ¬å
头åå
å°¾ï¼ |
| | | * @param dataCode åè½ç |
| | | * @param data æ°æ® |
| | | * @throws Exception å¼å¸¸ |
| | | */ |
| | | protected void doParse(byte[] bs, int bsLen, String dataCode, Data data) throws Exception { |
| | | DataV1_0_1 dV1 = (DataV1_0_1)data.getSubData() ; |
| | | DataCd37And67Vo cdData = new DataCd37And67Vo() ; |
| | | dV1.subData = cdData ; |
| | | int second = ByteUtilUnsigned.bytes2Short_LE(bs, ProtocolConstantV206V1_0_0.dataIndex) ; |
| | | cdData.second = second; |
| | | } |
| | | |
| | | } |
New file |
| | |
| | | package com.dy.common.mw.protocol.p206V1_0_0.parse; |
| | | |
| | | import com.dy.common.mw.protocol.*; |
| | | import com.dy.common.mw.protocol.p206V1_0_0.CodeV1_0_1; |
| | | import com.dy.common.mw.protocol.p206V1_0_0.CommonV1_0_1; |
| | | import com.dy.common.mw.protocol.p206V1_0_0.ParseParamsForDownV1_0_1; |
| | | import com.dy.common.mw.protocol.p206V1_0_0.ProtocolConstantV206V1_0_0; |
| | | import com.dy.common.mw.protocol.p206V1_0_0.parse.global.GlCreate; |
| | | import com.dy.common.util.ByteUtil; |
| | | import com.dy.common.util.ByteUtilUnsigned; |
| | | |
| | | /** |
| | | * @Author liurunyu |
| | | * @Date 2024/4/10 18:26 |
| | | * @LastEditTime 2024/4/10 18:26 |
| | | * @Description 设置水价 |
| | | */ |
| | | @AnnotationCodeDown(ifAny={ |
| | | CodeV1_0_1.cd_38 |
| | | }) |
| | | public class Cd_38_Down implements CodeParse { |
| | | |
| | | @Override |
| | | public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback) throws Exception { |
| | | ParseParamsForDownV1_0_1 para = (ParseParamsForDownV1_0_1) params ; |
| | | byte[] bs = this.doParse(para) ; |
| | | |
| | | MidResultToRtu midRs = new MidResultToRtu() ; |
| | | midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ;//rtuè¿åå½ä»¤ç»æ ååç®çå°web URL |
| | | midRs.protocolName = para.protocolName ;//åè®®åç§° |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtuå°åï¼çµä¿¡å¹³å°è®¾å¤IMEIï¼ |
| | | midRs.commandId = para.commandId ;//å½ä»¤IDï¼åèµ·å½ä»¤ç客æ·ç«¯(web端)çæï¼ä»¥å¹é
å½ä»¤ç»æ |
| | | midRs.downCode = para.commandCode ;//ä¸è¡å½ä»¤åè½ç ; |
| | | midRs.downBuffer = bs ;//ä¸è¡å½ä»¤æ°æ® |
| | | midRs.downBufHex = ByteUtil.bytes2Hex(bs, true) ;//ä¸è¡å½ä»¤æ°æ®åå
è¿å¶å½¢å¼ |
| | | midRs.hasResponse = true ;//æ¯å¦æåºç |
| | | midRs.maxSendTimes = null ;//å½ä»¤æå¤§å鿬¡æ°(彿¶ä¸å°åºçæ¶ï¼å°éå)ï¼å¦æä¸è®¾ç½®ï¼å½ä»¤ç¼åå¨è¿è¡è¡¥å
设置 |
| | | midRs.isCachForOffLine = false ;//RTUä¸å¨çº¿ï¼å½ä»¤æ¯å¦ç¼åï¼ä½åèæ¶ä¸ºtrue |
| | | |
| | | if(isLowPower != null && isLowPower.booleanValue()){ |
| | | //ä½åèæ¶ï¼å°½å¿«åé |
| | | midRs.isQuickSend = true ; |
| | | } |
| | | |
| | | return new MidResult[]{midRs} ; |
| | | } |
| | | |
| | | /** |
| | | * æé ä¸è¡æ°æ® |
| | | * @param para åæ° |
| | | * @return åèæ°ç» |
| | | * @throws Exception å¼å¸¸ |
| | | */ |
| | | public byte[] doParse(ParseParamsForDownV1_0_1 para) throws Exception { |
| | | CommonV1_0_1 commonV1_0_1 = new CommonV1_0_1() ; |
| | | byte[] bytes ; |
| | | byte[] bsHead = new byte[ProtocolConstantV206V1_0_0.lenHead2Code] ; |
| | | byte index = 0 ; |
| | | bsHead[index] = ProtocolConstantV206V1_0_0.P_Head_Byte ; |
| | | |
| | | index++ ; |
| | | bsHead[index] = 0 ;//帧é¿åº¦ |
| | | |
| | | index++ ; |
| | | bsHead[index] = ProtocolConstantV206V1_0_0.P_Head_Byte ; |
| | | |
| | | index++ ; |
| | | bsHead[index] = commonV1_0_1.createCtrl((byte)0, (byte)0) ; |
| | | |
| | | index++ ; |
| | | GlCreate.createRtuAddr(para.rtuAddr, bsHead, index); |
| | | index += 5 ; |
| | | |
| | | ByteUtil.hex2Bytes(para.commandCode, bsHead, index) ; |
| | | |
| | | if(para.param == null){ |
| | | throw new Exception("æªæä¾å½ä»¤åæ°æ°æ®ï¼ä¸è½æé åè½ç 为" + para.commandCode + "çä¸è¡å½ä»¤") ; |
| | | }else{ |
| | | index = 0 ; |
| | | byte[] bs = new byte[10] ; |
| | | Double remainMoneyAlarmDb = ((Double)para.param) * 100 ; |
| | | Integer remainMoneyAlarmInt = remainMoneyAlarmDb.intValue() ; |
| | | ByteUtilUnsigned.short2Bytes_LE(bs, remainMoneyAlarmInt.shortValue(), index); |
| | | index += 2 ; |
| | | GlCreate.createPw(bs, index); |
| | | index += 2 ; |
| | | GlCreate.createTp(bs, index); |
| | | bytes = ByteUtil.bytesMerge(bsHead, bs) ; |
| | | } |
| | | |
| | | GlCreate.createLen(bytes);//é¿åº¦æ¾åèæ°ç»ä¸ |
| | | |
| | | byte[] bsTail = GlCreate.createCrcTail(bytes) ;//CRCåå°¾å å åèæ°ç»ä¸ |
| | | |
| | | bytes = ByteUtil.bytesMerge(bytes, bsTail) ; |
| | | |
| | | return bytes ; |
| | | } |
| | | |
| | | } |
New file |
| | |
| | | package com.dy.common.mw.protocol.p206V1_0_0.parse; |
| | | |
| | | import com.dy.common.mw.protocol.*; |
| | | import com.dy.common.mw.protocol.p206V1_0_0.*; |
| | | import com.dy.common.util.ByteUtilUnsigned; |
| | | import org.apache.logging.log4j.LogManager; |
| | | import org.apache.logging.log4j.Logger; |
| | | |
| | | /** |
| | | * @Author liurunyu |
| | | * @Date 2024/4/10 18:42 |
| | | * @LastEditTime 2024/4/10 18:42 |
| | | * @Description |
| | | */ |
| | | @AnnotationCodeUp(ifAny={ |
| | | CodeV1_0_1.cd_38 |
| | | }) |
| | | public class Cd_38_Up implements CodeParse { |
| | | |
| | | private static final Logger log = LogManager.getLogger(Cd_38_Up.class); |
| | | |
| | | /** |
| | | * åæä¸è¡æ°æ® |
| | | */ |
| | | @Override |
| | | public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback)throws Exception { |
| | | ParseParamsForUpV1_0_1 para = (ParseParamsForUpV1_0_1)params ; |
| | | int bsLen = new CommonV1_0_1().parseDataLen(para.upBuffer) ; |
| | | if(bsLen > 0){ |
| | | this.doParse(para.upBuffer, |
| | | bsLen, |
| | | para.upCode, |
| | | para.data) ; |
| | | } |
| | | log.info("åæå½ä»¤åºçæ°æ®<" + CodeV1_0_1.getCodeName(para.upCode) + " RTUå°å=" + para.rtuAddr + ">:\n" + para.data.toString()); |
| | | |
| | | MidResultFromRtu midRs = new MidResultFromRtu() ; |
| | | midRs.protocolName = para.protocolName ;//åè®®åç§° |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtuå°å |
| | | midRs.upCode = para.upCode ;//ä¸è¡æ°æ®ä¸çåè½ç |
| | | midRs.upHex = para.upHex ;//ä¸è¡æ°æ®åå
è¿å¶å½¢å¼ |
| | | midRs.upBuffer = para.upBuffer ;//ä¸è¡æ°æ®åèæ°ç» |
| | | midRs.data = para.data ;//è§£æåçæ°æ® |
| | | |
| | | midRs.reportOrResponse_trueOrFalse = false ;//å½ä»¤åºç |
| | | |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | return new MidResult[]{midRs} ; |
| | | } |
| | | /** |
| | | * æ§è¡åæ |
| | | * @param bs åèæ°ç» |
| | | * @param bsLen åèé¿åº¦ï¼æ»å
é¿ï¼å
æ¬å
头åå
å°¾ï¼ |
| | | * @param dataCode åè½ç |
| | | * @param data æ°æ® |
| | | * @throws Exception å¼å¸¸ |
| | | */ |
| | | protected void doParse(byte[] bs, int bsLen, String dataCode, Data data) throws Exception { |
| | | // DataV1_0_1 dV1 = (DataV1_0_1)data.getSubData() ; |
| | | // DataCd38Vo cdData = new DataCd38Vo() ; |
| | | // dV1.subData = cdData ; |
| | | // int remainMoneyAlarmInt = ByteUtilUnsigned.bytes2Short_LE(bs, ProtocolConstantV206V1_0_0.dataIndex) ; |
| | | // cdData.remainMoneyAlarm = remainMoneyAlarmInt/100.0D; |
| | | } |
| | | |
| | | } |
New file |
| | |
| | | package com.dy.common.mw.protocol.p206V1_0_0.parse; |
| | | |
| | | import com.dy.common.mw.protocol.*; |
| | | import com.dy.common.mw.protocol.p206V1_0_0.CodeV1_0_1; |
| | | import com.dy.common.mw.protocol.p206V1_0_0.CommonV1_0_1; |
| | | import com.dy.common.mw.protocol.p206V1_0_0.ParseParamsForDownV1_0_1; |
| | | import com.dy.common.mw.protocol.p206V1_0_0.ProtocolConstantV206V1_0_0; |
| | | import com.dy.common.mw.protocol.p206V1_0_0.parse.global.GlCreate; |
| | | import com.dy.common.util.ByteUtil; |
| | | import com.dy.common.util.ByteUtilUnsigned; |
| | | |
| | | /** |
| | | * @Author liurunyu |
| | | * @Date 2024/4/10 18:26 |
| | | * @LastEditTime 2024/4/10 18:26 |
| | | * @Description 设置水价 |
| | | */ |
| | | @AnnotationCodeDown(ifAny={ |
| | | CodeV1_0_1.cd_39 |
| | | }) |
| | | public class Cd_39_Down implements CodeParse { |
| | | |
| | | @Override |
| | | public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback) throws Exception { |
| | | ParseParamsForDownV1_0_1 para = (ParseParamsForDownV1_0_1) params ; |
| | | byte[] bs = this.doParse(para) ; |
| | | |
| | | MidResultToRtu midRs = new MidResultToRtu() ; |
| | | midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ;//rtuè¿åå½ä»¤ç»æ ååç®çå°web URL |
| | | midRs.protocolName = para.protocolName ;//åè®®åç§° |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtuå°åï¼çµä¿¡å¹³å°è®¾å¤IMEIï¼ |
| | | midRs.commandId = para.commandId ;//å½ä»¤IDï¼åèµ·å½ä»¤ç客æ·ç«¯(web端)çæï¼ä»¥å¹é
å½ä»¤ç»æ |
| | | midRs.downCode = para.commandCode ;//ä¸è¡å½ä»¤åè½ç ; |
| | | midRs.downBuffer = bs ;//ä¸è¡å½ä»¤æ°æ® |
| | | midRs.downBufHex = ByteUtil.bytes2Hex(bs, true) ;//ä¸è¡å½ä»¤æ°æ®åå
è¿å¶å½¢å¼ |
| | | midRs.hasResponse = true ;//æ¯å¦æåºç |
| | | midRs.maxSendTimes = null ;//å½ä»¤æå¤§å鿬¡æ°(彿¶ä¸å°åºçæ¶ï¼å°éå)ï¼å¦æä¸è®¾ç½®ï¼å½ä»¤ç¼åå¨è¿è¡è¡¥å
设置 |
| | | midRs.isCachForOffLine = false ;//RTUä¸å¨çº¿ï¼å½ä»¤æ¯å¦ç¼åï¼ä½åèæ¶ä¸ºtrue |
| | | |
| | | if(isLowPower != null && isLowPower.booleanValue()){ |
| | | //ä½åèæ¶ï¼å°½å¿«åé |
| | | midRs.isQuickSend = true ; |
| | | } |
| | | |
| | | return new MidResult[]{midRs} ; |
| | | } |
| | | |
| | | /** |
| | | * æé ä¸è¡æ°æ® |
| | | * @param para åæ° |
| | | * @return åèæ°ç» |
| | | * @throws Exception å¼å¸¸ |
| | | */ |
| | | public byte[] doParse(ParseParamsForDownV1_0_1 para) throws Exception { |
| | | CommonV1_0_1 commonV1_0_1 = new CommonV1_0_1() ; |
| | | byte[] bytes ; |
| | | byte[] bsHead = new byte[ProtocolConstantV206V1_0_0.lenHead2Code] ; |
| | | byte index = 0 ; |
| | | bsHead[index] = ProtocolConstantV206V1_0_0.P_Head_Byte ; |
| | | |
| | | index++ ; |
| | | bsHead[index] = 0 ;//帧é¿åº¦ |
| | | |
| | | index++ ; |
| | | bsHead[index] = ProtocolConstantV206V1_0_0.P_Head_Byte ; |
| | | |
| | | index++ ; |
| | | bsHead[index] = commonV1_0_1.createCtrl((byte)0, (byte)0) ; |
| | | |
| | | index++ ; |
| | | GlCreate.createRtuAddr(para.rtuAddr, bsHead, index); |
| | | index += 5 ; |
| | | |
| | | ByteUtil.hex2Bytes(para.commandCode, bsHead, index) ; |
| | | |
| | | if(para.param == null){ |
| | | throw new Exception("æªæä¾å½ä»¤åæ°æ°æ®ï¼ä¸è½æé åè½ç 为" + para.commandCode + "çä¸è¡å½ä»¤") ; |
| | | }else{ |
| | | index = 0 ; |
| | | byte[] bs = new byte[10] ; |
| | | Double batteryvoltAlarmDb = ((Double)para.param) * 100 ; |
| | | Integer batteryvoltAlarmInt = batteryvoltAlarmDb.intValue() ; |
| | | ByteUtilUnsigned.short2Bytes_LE(bs, batteryvoltAlarmInt.shortValue(), index); |
| | | index += 2 ; |
| | | GlCreate.createPw(bs, index); |
| | | index += 2 ; |
| | | GlCreate.createTp(bs, index); |
| | | bytes = ByteUtil.bytesMerge(bsHead, bs) ; |
| | | } |
| | | |
| | | GlCreate.createLen(bytes);//é¿åº¦æ¾åèæ°ç»ä¸ |
| | | |
| | | byte[] bsTail = GlCreate.createCrcTail(bytes) ;//CRCåå°¾å å åèæ°ç»ä¸ |
| | | |
| | | bytes = ByteUtil.bytesMerge(bytes, bsTail) ; |
| | | |
| | | return bytes ; |
| | | } |
| | | |
| | | } |
New file |
| | |
| | | package com.dy.common.mw.protocol.p206V1_0_0.parse; |
| | | |
| | | import com.dy.common.mw.protocol.*; |
| | | import com.dy.common.mw.protocol.p206V1_0_0.*; |
| | | import com.dy.common.util.ByteUtilUnsigned; |
| | | import org.apache.logging.log4j.LogManager; |
| | | import org.apache.logging.log4j.Logger; |
| | | |
| | | /** |
| | | * @Author liurunyu |
| | | * @Date 2024/4/10 18:42 |
| | | * @LastEditTime 2024/4/10 18:42 |
| | | * @Description |
| | | */ |
| | | @AnnotationCodeUp(ifAny={ |
| | | CodeV1_0_1.cd_39 |
| | | }) |
| | | public class Cd_39_Up implements CodeParse { |
| | | |
| | | private static final Logger log = LogManager.getLogger(Cd_39_Up.class); |
| | | |
| | | /** |
| | | * åæä¸è¡æ°æ® |
| | | */ |
| | | @Override |
| | | public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback)throws Exception { |
| | | ParseParamsForUpV1_0_1 para = (ParseParamsForUpV1_0_1)params ; |
| | | int bsLen = new CommonV1_0_1().parseDataLen(para.upBuffer) ; |
| | | if(bsLen > 0){ |
| | | this.doParse(para.upBuffer, |
| | | bsLen, |
| | | para.upCode, |
| | | para.data) ; |
| | | } |
| | | log.info("åæå½ä»¤åºçæ°æ®<" + CodeV1_0_1.getCodeName(para.upCode) + " RTUå°å=" + para.rtuAddr + ">:\n" + para.data.toString()); |
| | | |
| | | MidResultFromRtu midRs = new MidResultFromRtu() ; |
| | | midRs.protocolName = para.protocolName ;//åè®®åç§° |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtuå°å |
| | | midRs.upCode = para.upCode ;//ä¸è¡æ°æ®ä¸çåè½ç |
| | | midRs.upHex = para.upHex ;//ä¸è¡æ°æ®åå
è¿å¶å½¢å¼ |
| | | midRs.upBuffer = para.upBuffer ;//ä¸è¡æ°æ®åèæ°ç» |
| | | midRs.data = para.data ;//è§£æåçæ°æ® |
| | | |
| | | midRs.reportOrResponse_trueOrFalse = false ;//å½ä»¤åºç |
| | | |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | return new MidResult[]{midRs} ; |
| | | } |
| | | /** |
| | | * æ§è¡åæ |
| | | * @param bs åèæ°ç» |
| | | * @param bsLen åèé¿åº¦ï¼æ»å
é¿ï¼å
æ¬å
头åå
å°¾ï¼ |
| | | * @param dataCode åè½ç |
| | | * @param data æ°æ® |
| | | * @throws Exception å¼å¸¸ |
| | | */ |
| | | protected void doParse(byte[] bs, int bsLen, String dataCode, Data data) throws Exception { |
| | | DataV1_0_1 dV1 = (DataV1_0_1)data.getSubData() ; |
| | | DataCd39And69Vo cdData = new DataCd39And69Vo() ; |
| | | dV1.subData = cdData ; |
| | | int batteryVoltAlarm = ByteUtilUnsigned.bytes2Short_LE(bs, ProtocolConstantV206V1_0_0.dataIndex) ; |
| | | cdData.batteryVoltAlarm = batteryVoltAlarm/100.0D; |
| | | } |
| | | |
| | | } |
New file |
| | |
| | | package com.dy.common.mw.protocol.p206V1_0_0.parse; |
| | | |
| | | import com.dy.common.mw.protocol.*; |
| | | import com.dy.common.mw.protocol.p206V1_0_0.CodeV1_0_1; |
| | | import com.dy.common.mw.protocol.p206V1_0_0.CommonV1_0_1; |
| | | import com.dy.common.mw.protocol.p206V1_0_0.ParseParamsForDownV1_0_1; |
| | | import com.dy.common.mw.protocol.p206V1_0_0.ProtocolConstantV206V1_0_0; |
| | | import com.dy.common.mw.protocol.p206V1_0_0.parse.global.GlCreate; |
| | | import com.dy.common.util.ByteUtil; |
| | | import com.dy.common.util.ByteUtilUnsigned; |
| | | |
| | | /** |
| | | * @Author liurunyu |
| | | * @Date 2024/4/10 18:26 |
| | | * @LastEditTime 2024/4/10 18:26 |
| | | * @Description 设置水价 |
| | | */ |
| | | @AnnotationCodeDown(ifAny={ |
| | | CodeV1_0_1.cd_3A |
| | | }) |
| | | public class Cd_3A_Down implements CodeParse { |
| | | |
| | | @Override |
| | | public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback) throws Exception { |
| | | ParseParamsForDownV1_0_1 para = (ParseParamsForDownV1_0_1) params ; |
| | | byte[] bs = this.doParse(para) ; |
| | | |
| | | MidResultToRtu midRs = new MidResultToRtu() ; |
| | | midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ;//rtuè¿åå½ä»¤ç»æ ååç®çå°web URL |
| | | midRs.protocolName = para.protocolName ;//åè®®åç§° |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtuå°åï¼çµä¿¡å¹³å°è®¾å¤IMEIï¼ |
| | | midRs.commandId = para.commandId ;//å½ä»¤IDï¼åèµ·å½ä»¤ç客æ·ç«¯(web端)çæï¼ä»¥å¹é
å½ä»¤ç»æ |
| | | midRs.downCode = para.commandCode ;//ä¸è¡å½ä»¤åè½ç ; |
| | | midRs.downBuffer = bs ;//ä¸è¡å½ä»¤æ°æ® |
| | | midRs.downBufHex = ByteUtil.bytes2Hex(bs, true) ;//ä¸è¡å½ä»¤æ°æ®åå
è¿å¶å½¢å¼ |
| | | midRs.hasResponse = true ;//æ¯å¦æåºç |
| | | midRs.maxSendTimes = null ;//å½ä»¤æå¤§å鿬¡æ°(彿¶ä¸å°åºçæ¶ï¼å°éå)ï¼å¦æä¸è®¾ç½®ï¼å½ä»¤ç¼åå¨è¿è¡è¡¥å
设置 |
| | | midRs.isCachForOffLine = false ;//RTUä¸å¨çº¿ï¼å½ä»¤æ¯å¦ç¼åï¼ä½åèæ¶ä¸ºtrue |
| | | |
| | | if(isLowPower != null && isLowPower.booleanValue()){ |
| | | //ä½åèæ¶ï¼å°½å¿«åé |
| | | midRs.isQuickSend = true ; |
| | | } |
| | | |
| | | return new MidResult[]{midRs} ; |
| | | } |
| | | |
| | | /** |
| | | * æé ä¸è¡æ°æ® |
| | | * @param para åæ° |
| | | * @return åèæ°ç» |
| | | * @throws Exception å¼å¸¸ |
| | | */ |
| | | public byte[] doParse(ParseParamsForDownV1_0_1 para) throws Exception { |
| | | CommonV1_0_1 commonV1_0_1 = new CommonV1_0_1() ; |
| | | byte[] bytes ; |
| | | byte[] bsHead = new byte[ProtocolConstantV206V1_0_0.lenHead2Code] ; |
| | | byte index = 0 ; |
| | | bsHead[index] = ProtocolConstantV206V1_0_0.P_Head_Byte ; |
| | | |
| | | index++ ; |
| | | bsHead[index] = 0 ;//帧é¿åº¦ |
| | | |
| | | index++ ; |
| | | bsHead[index] = ProtocolConstantV206V1_0_0.P_Head_Byte ; |
| | | |
| | | index++ ; |
| | | bsHead[index] = commonV1_0_1.createCtrl((byte)0, (byte)0) ; |
| | | |
| | | index++ ; |
| | | GlCreate.createRtuAddr(para.rtuAddr, bsHead, index); |
| | | index += 5 ; |
| | | |
| | | ByteUtil.hex2Bytes(para.commandCode, bsHead, index) ; |
| | | |
| | | if(para.param == null){ |
| | | throw new Exception("æªæä¾å½ä»¤åæ°æ°æ®ï¼ä¸è½æé åè½ç 为" + para.commandCode + "çä¸è¡å½ä»¤") ; |
| | | }else{ |
| | | index = 0 ; |
| | | byte[] bs = new byte[11] ; |
| | | Double currentDb = ((Double)para.param) * 100 ; |
| | | Integer currentInt = currentDb.intValue() ; |
| | | ByteUtilUnsigned.int2Bytes_LE(bs, currentInt.shortValue(), index); |
| | | index += 3 ;//ä¸é¢æ¯ä¸byteçæ°å¼ |
| | | GlCreate.createPw(bs, index); |
| | | index += 2 ; |
| | | GlCreate.createTp(bs, index); |
| | | bytes = ByteUtil.bytesMerge(bsHead, bs) ; |
| | | } |
| | | |
| | | GlCreate.createLen(bytes);//é¿åº¦æ¾åèæ°ç»ä¸ |
| | | |
| | | byte[] bsTail = GlCreate.createCrcTail(bytes) ;//CRCåå°¾å å åèæ°ç»ä¸ |
| | | |
| | | bytes = ByteUtil.bytesMerge(bytes, bsTail) ; |
| | | |
| | | return bytes ; |
| | | } |
| | | |
| | | } |
New file |
| | |
| | | package com.dy.common.mw.protocol.p206V1_0_0.parse; |
| | | |
| | | import com.dy.common.mw.protocol.*; |
| | | import com.dy.common.mw.protocol.p206V1_0_0.*; |
| | | import com.dy.common.util.ByteUtilUnsigned; |
| | | import org.apache.logging.log4j.LogManager; |
| | | import org.apache.logging.log4j.Logger; |
| | | |
| | | /** |
| | | * @Author liurunyu |
| | | * @Date 2024/4/10 18:42 |
| | | * @LastEditTime 2024/4/10 18:42 |
| | | * @Description |
| | | */ |
| | | @AnnotationCodeUp(ifAny={ |
| | | CodeV1_0_1.cd_3A |
| | | }) |
| | | public class Cd_3A_Up implements CodeParse { |
| | | |
| | | private static final Logger log = LogManager.getLogger(Cd_3A_Up.class); |
| | | |
| | | /** |
| | | * åæä¸è¡æ°æ® |
| | | */ |
| | | @Override |
| | | public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback)throws Exception { |
| | | ParseParamsForUpV1_0_1 para = (ParseParamsForUpV1_0_1)params ; |
| | | int bsLen = new CommonV1_0_1().parseDataLen(para.upBuffer) ; |
| | | if(bsLen > 0){ |
| | | this.doParse(para.upBuffer, |
| | | bsLen, |
| | | para.upCode, |
| | | para.data) ; |
| | | } |
| | | log.info("åæå½ä»¤åºçæ°æ®<" + CodeV1_0_1.getCodeName(para.upCode) + " RTUå°å=" + para.rtuAddr + ">:\n" + para.data.toString()); |
| | | |
| | | MidResultFromRtu midRs = new MidResultFromRtu() ; |
| | | midRs.protocolName = para.protocolName ;//åè®®åç§° |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtuå°å |
| | | midRs.upCode = para.upCode ;//ä¸è¡æ°æ®ä¸çåè½ç |
| | | midRs.upHex = para.upHex ;//ä¸è¡æ°æ®åå
è¿å¶å½¢å¼ |
| | | midRs.upBuffer = para.upBuffer ;//ä¸è¡æ°æ®åèæ°ç» |
| | | midRs.data = para.data ;//è§£æåçæ°æ® |
| | | |
| | | midRs.reportOrResponse_trueOrFalse = false ;//å½ä»¤åºç |
| | | |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | return new MidResult[]{midRs} ; |
| | | } |
| | | /** |
| | | * æ§è¡åæ |
| | | * @param bs åèæ°ç» |
| | | * @param bsLen åèé¿åº¦ï¼æ»å
é¿ï¼å
æ¬å
头åå
å°¾ï¼ |
| | | * @param dataCode åè½ç |
| | | * @param data æ°æ® |
| | | * @throws Exception å¼å¸¸ |
| | | */ |
| | | protected void doParse(byte[] bs, int bsLen, String dataCode, Data data) throws Exception { |
| | | DataV1_0_1 dV1 = (DataV1_0_1)data.getSubData() ; |
| | | DataCd3AAnd6AVo cdData = new DataCd3AAnd6AVo() ; |
| | | dV1.subData = cdData ; |
| | | Long batteryVoltAlarm = ByteUtilUnsigned.bytes2Int_LE(bs, ProtocolConstantV206V1_0_0.dataIndex, true) ; |
| | | cdData.current = batteryVoltAlarm/1000.0D; |
| | | } |
| | | |
| | | } |
New file |
| | |
| | | package com.dy.common.mw.protocol.p206V1_0_0.parse; |
| | | |
| | | import com.dy.common.mw.protocol.*; |
| | | import com.dy.common.mw.protocol.p206V1_0_0.CodeV1_0_1; |
| | | import com.dy.common.mw.protocol.p206V1_0_0.CommonV1_0_1; |
| | | import com.dy.common.mw.protocol.p206V1_0_0.ParseParamsForDownV1_0_1; |
| | | import com.dy.common.mw.protocol.p206V1_0_0.ProtocolConstantV206V1_0_0; |
| | | import com.dy.common.mw.protocol.p206V1_0_0.parse.global.GlCreate; |
| | | import com.dy.common.util.ByteUtil; |
| | | import com.dy.common.util.ByteUtilUnsigned; |
| | | |
| | | /** |
| | | * @Author liurunyu |
| | | * @Date 2024/4/10 18:26 |
| | | * @LastEditTime 2024/4/10 18:26 |
| | | * @Description 设置水价 |
| | | */ |
| | | @AnnotationCodeDown(ifAny={ |
| | | CodeV1_0_1.cd_3B |
| | | }) |
| | | public class Cd_3B_Down implements CodeParse { |
| | | |
| | | @Override |
| | | public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback) throws Exception { |
| | | ParseParamsForDownV1_0_1 para = (ParseParamsForDownV1_0_1) params ; |
| | | byte[] bs = this.doParse(para) ; |
| | | |
| | | MidResultToRtu midRs = new MidResultToRtu() ; |
| | | midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ;//rtuè¿åå½ä»¤ç»æ ååç®çå°web URL |
| | | midRs.protocolName = para.protocolName ;//åè®®åç§° |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtuå°åï¼çµä¿¡å¹³å°è®¾å¤IMEIï¼ |
| | | midRs.commandId = para.commandId ;//å½ä»¤IDï¼åèµ·å½ä»¤ç客æ·ç«¯(web端)çæï¼ä»¥å¹é
å½ä»¤ç»æ |
| | | midRs.downCode = para.commandCode ;//ä¸è¡å½ä»¤åè½ç ; |
| | | midRs.downBuffer = bs ;//ä¸è¡å½ä»¤æ°æ® |
| | | midRs.downBufHex = ByteUtil.bytes2Hex(bs, true) ;//ä¸è¡å½ä»¤æ°æ®åå
è¿å¶å½¢å¼ |
| | | midRs.hasResponse = true ;//æ¯å¦æåºç |
| | | midRs.maxSendTimes = null ;//å½ä»¤æå¤§å鿬¡æ°(彿¶ä¸å°åºçæ¶ï¼å°éå)ï¼å¦æä¸è®¾ç½®ï¼å½ä»¤ç¼åå¨è¿è¡è¡¥å
设置 |
| | | midRs.isCachForOffLine = false ;//RTUä¸å¨çº¿ï¼å½ä»¤æ¯å¦ç¼åï¼ä½åèæ¶ä¸ºtrue |
| | | |
| | | if(isLowPower != null && isLowPower.booleanValue()){ |
| | | //ä½åèæ¶ï¼å°½å¿«åé |
| | | midRs.isQuickSend = true ; |
| | | } |
| | | |
| | | return new MidResult[]{midRs} ; |
| | | } |
| | | |
| | | /** |
| | | * æé ä¸è¡æ°æ® |
| | | * @param para åæ° |
| | | * @return åèæ°ç» |
| | | * @throws Exception å¼å¸¸ |
| | | */ |
| | | public byte[] doParse(ParseParamsForDownV1_0_1 para) throws Exception { |
| | | CommonV1_0_1 commonV1_0_1 = new CommonV1_0_1() ; |
| | | byte[] bytes ; |
| | | byte[] bsHead = new byte[ProtocolConstantV206V1_0_0.lenHead2Code] ; |
| | | byte index = 0 ; |
| | | bsHead[index] = ProtocolConstantV206V1_0_0.P_Head_Byte ; |
| | | |
| | | index++ ; |
| | | bsHead[index] = 0 ;//帧é¿åº¦ |
| | | |
| | | index++ ; |
| | | bsHead[index] = ProtocolConstantV206V1_0_0.P_Head_Byte ; |
| | | |
| | | index++ ; |
| | | bsHead[index] = commonV1_0_1.createCtrl((byte)0, (byte)0) ; |
| | | |
| | | index++ ; |
| | | GlCreate.createRtuAddr(para.rtuAddr, bsHead, index); |
| | | index += 5 ; |
| | | |
| | | ByteUtil.hex2Bytes(para.commandCode, bsHead, index) ; |
| | | |
| | | if(para.param == null){ |
| | | throw new Exception("æªæä¾å½ä»¤åæ°æ°æ®ï¼ä¸è½æé åè½ç 为" + para.commandCode + "çä¸è¡å½ä»¤") ; |
| | | }else{ |
| | | index = 0 ; |
| | | byte[] bs = new byte[10] ; |
| | | Integer second = (Integer)para.param; |
| | | ByteUtilUnsigned.short2Bytes_LE(bs, second.shortValue(), index); |
| | | index += 2 ; |
| | | GlCreate.createPw(bs, index); |
| | | index += 2 ; |
| | | GlCreate.createTp(bs, index); |
| | | bytes = ByteUtil.bytesMerge(bsHead, bs) ; |
| | | } |
| | | |
| | | GlCreate.createLen(bytes);//é¿åº¦æ¾åèæ°ç»ä¸ |
| | | |
| | | byte[] bsTail = GlCreate.createCrcTail(bytes) ;//CRCåå°¾å å åèæ°ç»ä¸ |
| | | |
| | | bytes = ByteUtil.bytesMerge(bytes, bsTail) ; |
| | | |
| | | return bytes ; |
| | | } |
| | | |
| | | } |
New file |
| | |
| | | package com.dy.common.mw.protocol.p206V1_0_0.parse; |
| | | |
| | | import com.dy.common.mw.protocol.*; |
| | | import com.dy.common.mw.protocol.p206V1_0_0.*; |
| | | import com.dy.common.util.ByteUtilUnsigned; |
| | | import org.apache.logging.log4j.LogManager; |
| | | import org.apache.logging.log4j.Logger; |
| | | |
| | | /** |
| | | * @Author liurunyu |
| | | * @Date 2024/4/10 18:42 |
| | | * @LastEditTime 2024/4/10 18:42 |
| | | * @Description |
| | | */ |
| | | @AnnotationCodeUp(ifAny={ |
| | | CodeV1_0_1.cd_3B |
| | | }) |
| | | public class Cd_3B_Up implements CodeParse { |
| | | |
| | | private static final Logger log = LogManager.getLogger(Cd_3B_Up.class); |
| | | |
| | | /** |
| | | * åæä¸è¡æ°æ® |
| | | */ |
| | | @Override |
| | | public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback)throws Exception { |
| | | ParseParamsForUpV1_0_1 para = (ParseParamsForUpV1_0_1)params ; |
| | | int bsLen = new CommonV1_0_1().parseDataLen(para.upBuffer) ; |
| | | if(bsLen > 0){ |
| | | this.doParse(para.upBuffer, |
| | | bsLen, |
| | | para.upCode, |
| | | para.data) ; |
| | | } |
| | | log.info("åæå½ä»¤åºçæ°æ®<" + CodeV1_0_1.getCodeName(para.upCode) + " RTUå°å=" + para.rtuAddr + ">:\n" + para.data.toString()); |
| | | |
| | | MidResultFromRtu midRs = new MidResultFromRtu() ; |
| | | midRs.protocolName = para.protocolName ;//åè®®åç§° |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtuå°å |
| | | midRs.upCode = para.upCode ;//ä¸è¡æ°æ®ä¸çåè½ç |
| | | midRs.upHex = para.upHex ;//ä¸è¡æ°æ®åå
è¿å¶å½¢å¼ |
| | | midRs.upBuffer = para.upBuffer ;//ä¸è¡æ°æ®åèæ°ç» |
| | | midRs.data = para.data ;//è§£æåçæ°æ® |
| | | |
| | | midRs.reportOrResponse_trueOrFalse = false ;//å½ä»¤åºç |
| | | |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | return new MidResult[]{midRs} ; |
| | | } |
| | | /** |
| | | * æ§è¡åæ |
| | | * @param bs åèæ°ç» |
| | | * @param bsLen åèé¿åº¦ï¼æ»å
é¿ï¼å
æ¬å
头åå
å°¾ï¼ |
| | | * @param dataCode åè½ç |
| | | * @param data æ°æ® |
| | | * @throws Exception å¼å¸¸ |
| | | */ |
| | | protected void doParse(byte[] bs, int bsLen, String dataCode, Data data) throws Exception { |
| | | DataV1_0_1 dV1 = (DataV1_0_1)data.getSubData() ; |
| | | DataCd3BAnd6BVo cdData = new DataCd3BAnd6BVo() ; |
| | | dV1.subData = cdData ; |
| | | int second = ByteUtilUnsigned.bytes2Short_LE(bs, ProtocolConstantV206V1_0_0.dataIndex) ; |
| | | cdData.second = second; |
| | | } |
| | | |
| | | } |
New file |
| | |
| | | package com.dy.common.mw.protocol.p206V1_0_0.parse; |
| | | |
| | | import com.dy.common.mw.protocol.*; |
| | | import com.dy.common.mw.protocol.p206V1_0_0.CodeV1_0_1; |
| | | import com.dy.common.mw.protocol.p206V1_0_0.CommonV1_0_1; |
| | | import com.dy.common.mw.protocol.p206V1_0_0.ParseParamsForDownV1_0_1; |
| | | import com.dy.common.mw.protocol.p206V1_0_0.ProtocolConstantV206V1_0_0; |
| | | import com.dy.common.mw.protocol.p206V1_0_0.parse.global.GlCreate; |
| | | import com.dy.common.util.ByteUtil; |
| | | import com.dy.common.util.ByteUtilUnsigned; |
| | | |
| | | /** |
| | | * @Author liurunyu |
| | | * @Date 2024/4/10 18:26 |
| | | * @LastEditTime 2024/4/10 18:26 |
| | | * @Description 设置水价 |
| | | */ |
| | | @AnnotationCodeDown(ifAny={ |
| | | CodeV1_0_1.cd_3C |
| | | }) |
| | | public class Cd_3C_Down implements CodeParse { |
| | | |
| | | @Override |
| | | public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback) throws Exception { |
| | | ParseParamsForDownV1_0_1 para = (ParseParamsForDownV1_0_1) params ; |
| | | byte[] bs = this.doParse(para) ; |
| | | |
| | | MidResultToRtu midRs = new MidResultToRtu() ; |
| | | midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ;//rtuè¿åå½ä»¤ç»æ ååç®çå°web URL |
| | | midRs.protocolName = para.protocolName ;//åè®®åç§° |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtuå°åï¼çµä¿¡å¹³å°è®¾å¤IMEIï¼ |
| | | midRs.commandId = para.commandId ;//å½ä»¤IDï¼åèµ·å½ä»¤ç客æ·ç«¯(web端)çæï¼ä»¥å¹é
å½ä»¤ç»æ |
| | | midRs.downCode = para.commandCode ;//ä¸è¡å½ä»¤åè½ç ; |
| | | midRs.downBuffer = bs ;//ä¸è¡å½ä»¤æ°æ® |
| | | midRs.downBufHex = ByteUtil.bytes2Hex(bs, true) ;//ä¸è¡å½ä»¤æ°æ®åå
è¿å¶å½¢å¼ |
| | | midRs.hasResponse = true ;//æ¯å¦æåºç |
| | | midRs.maxSendTimes = null ;//å½ä»¤æå¤§å鿬¡æ°(彿¶ä¸å°åºçæ¶ï¼å°éå)ï¼å¦æä¸è®¾ç½®ï¼å½ä»¤ç¼åå¨è¿è¡è¡¥å
设置 |
| | | midRs.isCachForOffLine = false ;//RTUä¸å¨çº¿ï¼å½ä»¤æ¯å¦ç¼åï¼ä½åèæ¶ä¸ºtrue |
| | | |
| | | if(isLowPower != null && isLowPower.booleanValue()){ |
| | | //ä½åèæ¶ï¼å°½å¿«åé |
| | | midRs.isQuickSend = true ; |
| | | } |
| | | |
| | | return new MidResult[]{midRs} ; |
| | | } |
| | | |
| | | /** |
| | | * æé ä¸è¡æ°æ® |
| | | * @param para åæ° |
| | | * @return åèæ°ç» |
| | | * @throws Exception å¼å¸¸ |
| | | */ |
| | | public byte[] doParse(ParseParamsForDownV1_0_1 para) throws Exception { |
| | | CommonV1_0_1 commonV1_0_1 = new CommonV1_0_1() ; |
| | | byte[] bytes ; |
| | | byte[] bsHead = new byte[ProtocolConstantV206V1_0_0.lenHead2Code] ; |
| | | byte index = 0 ; |
| | | bsHead[index] = ProtocolConstantV206V1_0_0.P_Head_Byte ; |
| | | |
| | | index++ ; |
| | | bsHead[index] = 0 ;//帧é¿åº¦ |
| | | |
| | | index++ ; |
| | | bsHead[index] = ProtocolConstantV206V1_0_0.P_Head_Byte ; |
| | | |
| | | index++ ; |
| | | bsHead[index] = commonV1_0_1.createCtrl((byte)0, (byte)0) ; |
| | | |
| | | index++ ; |
| | | GlCreate.createRtuAddr(para.rtuAddr, bsHead, index); |
| | | index += 5 ; |
| | | |
| | | ByteUtil.hex2Bytes(para.commandCode, bsHead, index) ; |
| | | |
| | | if(para.param == null){ |
| | | throw new Exception("æªæä¾å½ä»¤åæ°æ°æ®ï¼ä¸è½æé åè½ç 为" + para.commandCode + "çä¸è¡å½ä»¤") ; |
| | | }else{ |
| | | index = 0 ; |
| | | byte[] bs = new byte[10] ; |
| | | Double priceDb = ((Double)para.param) * 100 ; |
| | | Integer priceInt = priceDb.intValue() ; |
| | | ByteUtilUnsigned.short2Bytes_LE(bs, priceInt.shortValue(), index); |
| | | index += 2 ; |
| | | GlCreate.createPw(bs, index); |
| | | index += 2 ; |
| | | GlCreate.createTp(bs, index); |
| | | bytes = ByteUtil.bytesMerge(bsHead, bs) ; |
| | | } |
| | | |
| | | GlCreate.createLen(bytes);//é¿åº¦æ¾åèæ°ç»ä¸ |
| | | |
| | | byte[] bsTail = GlCreate.createCrcTail(bytes) ;//CRCåå°¾å å åèæ°ç»ä¸ |
| | | |
| | | bytes = ByteUtil.bytesMerge(bytes, bsTail) ; |
| | | |
| | | return bytes ; |
| | | } |
| | | |
| | | } |
New file |
| | |
| | | package com.dy.common.mw.protocol.p206V1_0_0.parse; |
| | | |
| | | import com.dy.common.mw.protocol.*; |
| | | import com.dy.common.mw.protocol.p206V1_0_0.*; |
| | | import com.dy.common.util.ByteUtilUnsigned; |
| | | import org.apache.logging.log4j.LogManager; |
| | | import org.apache.logging.log4j.Logger; |
| | | |
| | | /** |
| | | * @Author liurunyu |
| | | * @Date 2024/4/10 18:42 |
| | | * @LastEditTime 2024/4/10 18:42 |
| | | * @Description |
| | | */ |
| | | @AnnotationCodeUp(ifAny={ |
| | | CodeV1_0_1.cd_3C |
| | | }) |
| | | public class Cd_3C_Up implements CodeParse { |
| | | |
| | | private static final Logger log = LogManager.getLogger(Cd_3C_Up.class); |
| | | |
| | | /** |
| | | * åæä¸è¡æ°æ® |
| | | */ |
| | | @Override |
| | | public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback)throws Exception { |
| | | ParseParamsForUpV1_0_1 para = (ParseParamsForUpV1_0_1)params ; |
| | | int bsLen = new CommonV1_0_1().parseDataLen(para.upBuffer) ; |
| | | if(bsLen > 0){ |
| | | this.doParse(para.upBuffer, |
| | | bsLen, |
| | | para.upCode, |
| | | para.data) ; |
| | | } |
| | | log.info("åæå½ä»¤åºçæ°æ®<" + CodeV1_0_1.getCodeName(para.upCode) + " RTUå°å=" + para.rtuAddr + ">:\n" + para.data.toString()); |
| | | |
| | | MidResultFromRtu midRs = new MidResultFromRtu() ; |
| | | midRs.protocolName = para.protocolName ;//åè®®åç§° |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtuå°å |
| | | midRs.upCode = para.upCode ;//ä¸è¡æ°æ®ä¸çåè½ç |
| | | midRs.upHex = para.upHex ;//ä¸è¡æ°æ®åå
è¿å¶å½¢å¼ |
| | | midRs.upBuffer = para.upBuffer ;//ä¸è¡æ°æ®åèæ°ç» |
| | | midRs.data = para.data ;//è§£æåçæ°æ® |
| | | |
| | | midRs.reportOrResponse_trueOrFalse = false ;//å½ä»¤åºç |
| | | |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | return new MidResult[]{midRs} ; |
| | | } |
| | | /** |
| | | * æ§è¡åæ |
| | | * @param bs åèæ°ç» |
| | | * @param bsLen åèé¿åº¦ï¼æ»å
é¿ï¼å
æ¬å
头åå
å°¾ï¼ |
| | | * @param dataCode åè½ç |
| | | * @param data æ°æ® |
| | | * @throws Exception å¼å¸¸ |
| | | */ |
| | | protected void doParse(byte[] bs, int bsLen, String dataCode, Data data) throws Exception { |
| | | DataV1_0_1 dV1 = (DataV1_0_1)data.getSubData() ; |
| | | DataCd3CVo cdData = new DataCd3CVo() ; |
| | | dV1.subData = cdData ; |
| | | int priceInt = ByteUtilUnsigned.bytes2Short_LE(bs, ProtocolConstantV206V1_0_0.dataIndex) ; |
| | | cdData.price = priceInt/100.0D; |
| | | } |
| | | |
| | | } |
New file |
| | |
| | | package com.dy.common.mw.protocol.p206V1_0_0.parse; |
| | | |
| | | import com.dy.common.mw.protocol.*; |
| | | import com.dy.common.mw.protocol.p206V1_0_0.CodeV1_0_1; |
| | | import com.dy.common.mw.protocol.p206V1_0_0.CommonV1_0_1; |
| | | import com.dy.common.mw.protocol.p206V1_0_0.ParseParamsForDownV1_0_1; |
| | | import com.dy.common.mw.protocol.p206V1_0_0.ProtocolConstantV206V1_0_0; |
| | | import com.dy.common.mw.protocol.p206V1_0_0.parse.global.GlCreate; |
| | | import com.dy.common.util.ByteUtil; |
| | | import com.dy.common.util.ByteUtilUnsigned; |
| | | |
| | | /** |
| | | * @Author liurunyu |
| | | * @Date 2024/4/10 18:51 |
| | | * @LastEditTime 2024/4/10 18:51 |
| | | * @Description |
| | | */ |
| | | @AnnotationCodeDown(ifAny={ |
| | | CodeV1_0_1.cd_3D |
| | | }) |
| | | public class Cd_3D_Down implements CodeParse { |
| | | |
| | | @Override |
| | | public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback) throws Exception { |
| | | ParseParamsForDownV1_0_1 para = (ParseParamsForDownV1_0_1) params ; |
| | | byte[] bs = this.doParse(para) ; |
| | | |
| | | MidResultToRtu midRs = new MidResultToRtu() ; |
| | | midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ;//rtuè¿åå½ä»¤ç»æ ååç®çå°web URL |
| | | midRs.protocolName = para.protocolName ;//åè®®åç§° |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtuå°åï¼çµä¿¡å¹³å°è®¾å¤IMEIï¼ |
| | | midRs.commandId = para.commandId ;//å½ä»¤IDï¼åèµ·å½ä»¤ç客æ·ç«¯(web端)çæï¼ä»¥å¹é
å½ä»¤ç»æ |
| | | midRs.downCode = para.commandCode ;//ä¸è¡å½ä»¤åè½ç ; |
| | | midRs.downBuffer = bs ;//ä¸è¡å½ä»¤æ°æ® |
| | | midRs.downBufHex = ByteUtil.bytes2Hex(bs, true) ;//ä¸è¡å½ä»¤æ°æ®åå
è¿å¶å½¢å¼ |
| | | midRs.hasResponse = true ;//æ¯å¦æåºç |
| | | midRs.maxSendTimes = null ;//å½ä»¤æå¤§å鿬¡æ°(彿¶ä¸å°åºçæ¶ï¼å°éå)ï¼å¦æä¸è®¾ç½®ï¼å½ä»¤ç¼åå¨è¿è¡è¡¥å
设置 |
| | | midRs.isCachForOffLine = false ;//RTUä¸å¨çº¿ï¼å½ä»¤æ¯å¦ç¼åï¼ä½åèæ¶ä¸ºtrue |
| | | |
| | | if(isLowPower != null && isLowPower.booleanValue()){ |
| | | //ä½åèæ¶ï¼å°½å¿«åé |
| | | midRs.isQuickSend = true ; |
| | | } |
| | | |
| | | return new MidResult[]{midRs} ; |
| | | } |
| | | |
| | | /** |
| | | * æé ä¸è¡æ°æ® |
| | | * @param para åæ° |
| | | * @return åèæ°ç» |
| | | * @throws Exception å¼å¸¸ |
| | | */ |
| | | public byte[] doParse(ParseParamsForDownV1_0_1 para) throws Exception { |
| | | CommonV1_0_1 commonV1_0_1 = new CommonV1_0_1() ; |
| | | byte[] bytes ; |
| | | byte[] bsHead = new byte[ProtocolConstantV206V1_0_0.lenHead2Code] ; |
| | | byte index = 0 ; |
| | | bsHead[index] = ProtocolConstantV206V1_0_0.P_Head_Byte ; |
| | | |
| | | index++ ; |
| | | bsHead[index] = 0 ;//帧é¿åº¦ |
| | | |
| | | index++ ; |
| | | bsHead[index] = ProtocolConstantV206V1_0_0.P_Head_Byte ; |
| | | |
| | | index++ ; |
| | | bsHead[index] = commonV1_0_1.createCtrl((byte)0, (byte)0) ; |
| | | |
| | | index++ ; |
| | | GlCreate.createRtuAddr(para.rtuAddr, bsHead, index); |
| | | index += 5 ; |
| | | |
| | | ByteUtil.hex2Bytes(para.commandCode, bsHead, index) ; |
| | | |
| | | if(para.param == null){ |
| | | throw new Exception("æªæä¾å½ä»¤åæ°æ°æ®ï¼ä¸è½æé åè½ç 为" + para.commandCode + "çä¸è¡å½ä»¤") ; |
| | | }else{ |
| | | index = 0 ; |
| | | byte[] bs = new byte[12] ; |
| | | String icCardNo = ((String)para.param) ; |
| | | Integer icCardNoInt = Integer.valueOf(icCardNo); |
| | | ByteUtilUnsigned.int2Bytes_LE(bs, icCardNoInt, index); |
| | | index += 4 ; |
| | | GlCreate.createPw(bs, index); |
| | | index += 2 ; |
| | | GlCreate.createTp(bs, index); |
| | | bytes = ByteUtil.bytesMerge(bsHead, bs) ; |
| | | } |
| | | |
| | | GlCreate.createLen(bytes);//é¿åº¦æ¾åèæ°ç»ä¸ |
| | | |
| | | byte[] bsTail = GlCreate.createCrcTail(bytes) ;//CRCåå°¾å å åèæ°ç»ä¸ |
| | | |
| | | bytes = ByteUtil.bytesMerge(bytes, bsTail) ; |
| | | |
| | | return bytes ; |
| | | } |
| | | |
| | | } |
New file |
| | |
| | | package com.dy.common.mw.protocol.p206V1_0_0.parse; |
| | | |
| | | import com.dy.common.mw.protocol.*; |
| | | import com.dy.common.mw.protocol.p206V1_0_0.*; |
| | | import com.dy.common.util.ByteUtilUnsigned; |
| | | import org.apache.logging.log4j.LogManager; |
| | | import org.apache.logging.log4j.Logger; |
| | | |
| | | /** |
| | | * @Author liurunyu |
| | | * @Date 2024/4/10 18:42 |
| | | * @LastEditTime 2024/4/10 18:42 |
| | | * @Description |
| | | */ |
| | | @AnnotationCodeUp(ifAny={ |
| | | CodeV1_0_1.cd_3D |
| | | }) |
| | | public class Cd_3D_Up implements CodeParse { |
| | | |
| | | private static final Logger log = LogManager.getLogger(Cd_3D_Up.class); |
| | | |
| | | /** |
| | | * åæä¸è¡æ°æ® |
| | | */ |
| | | @Override |
| | | public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback)throws Exception { |
| | | ParseParamsForUpV1_0_1 para = (ParseParamsForUpV1_0_1)params ; |
| | | int bsLen = new CommonV1_0_1().parseDataLen(para.upBuffer) ; |
| | | if(bsLen > 0){ |
| | | this.doParse(para.upBuffer, |
| | | bsLen, |
| | | para.upCode, |
| | | para.data) ; |
| | | } |
| | | log.info("åæå½ä»¤åºçæ°æ®<" + CodeV1_0_1.getCodeName(para.upCode) + " RTUå°å=" + para.rtuAddr + ">:\n" + para.data.toString()); |
| | | |
| | | MidResultFromRtu midRs = new MidResultFromRtu() ; |
| | | midRs.protocolName = para.protocolName ;//åè®®åç§° |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtuå°å |
| | | midRs.upCode = para.upCode ;//ä¸è¡æ°æ®ä¸çåè½ç |
| | | midRs.upHex = para.upHex ;//ä¸è¡æ°æ®åå
è¿å¶å½¢å¼ |
| | | midRs.upBuffer = para.upBuffer ;//ä¸è¡æ°æ®åèæ°ç» |
| | | midRs.data = para.data ;//è§£æåçæ°æ® |
| | | |
| | | midRs.reportOrResponse_trueOrFalse = false ;//å½ä»¤åºç |
| | | |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | return new MidResult[]{midRs} ; |
| | | } |
| | | /** |
| | | * æ§è¡åæ |
| | | * @param bs åèæ°ç» |
| | | * @param bsLen åèé¿åº¦ï¼æ»å
é¿ï¼å
æ¬å
头åå
å°¾ï¼ |
| | | * @param dataCode åè½ç |
| | | * @param data æ°æ® |
| | | * @throws Exception å¼å¸¸ |
| | | */ |
| | | protected void doParse(byte[] bs, int bsLen, String dataCode, Data data) throws Exception { |
| | | DataV1_0_1 dV1 = (DataV1_0_1)data.getSubData() ; |
| | | DataCd3DVo cdData = new DataCd3DVo() ; |
| | | dV1.subData = cdData ; |
| | | Long v = ByteUtilUnsigned.bytes2Int_LE(bs, ProtocolConstantV206V1_0_0.dataIndex) ; |
| | | cdData.icCardNo = "" + v; |
| | | } |
| | | |
| | | } |
| | |
| | | |
| | | /** |
| | | * @Author liurunyu |
| | | * @Date 2024/01/13 10:47 |
| | | * @LastEditTime 2024/01/13 10:47 |
| | | * @Date 2024/4/10 18:51 |
| | | * @LastEditTime 2024/4/10 18:51 |
| | | * @Description |
| | | */ |
| | | @AnnotationCodeDown(ifAny={ |
| | | CodeV1_0_1.cd_65 |
| | | }) |
| | | public class Cd_65_Down implements CodeParse { |
| | | |
| | | //private static Logger log = LogManager.getLogger(Cd_66_Down.class); |
| | | |
| | | @Override |
| | | public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback) throws Exception { |
| | |
| | | return bytes ; |
| | | } |
| | | |
| | | } |
| | | } |
| | |
| | | |
| | | /** |
| | | * @Author liurunyu |
| | | * @Date 2024/01/13 10:40 |
| | | * @LastEditTime 2024/01/13 10:40 |
| | | * @Date 2024/4/10 18:42 |
| | | * @LastEditTime 2024/4/10 18:42 |
| | | * @Description |
| | | */ |
| | | @AnnotationCodeUp(ifAny={ |
| | | CodeV1_0_1.cd_65 |
| | | }) |
| | | @SuppressWarnings("unused") |
| | | public class Cd_65_Up implements CodeParse { |
| | | |
| | | private static final Logger log = LogManager.getLogger(Cd_65_Up.class); |
| | |
| | | */ |
| | | protected void doParse(byte[] bs, int bsLen, String dataCode, Data data) throws Exception { |
| | | DataV1_0_1 dV1 = (DataV1_0_1)data.getSubData() ; |
| | | DataCd65Vo cdData = new DataCd65Vo() ; |
| | | dV1.dataCd65Vo = cdData ; |
| | | short index = ProtocolConstantV206V1_0_0.dataIndex ; |
| | | String ip1 = "" + ByteUtilUnsigned.byte2Byte(bs, index++) ; |
| | | String ip2 = "" +ByteUtilUnsigned.byte2Byte(bs, index++) ; |
| | | String ip3 = "" +ByteUtilUnsigned.byte2Byte(bs, index++) ; |
| | | String ip4 = "" +ByteUtilUnsigned.byte2Byte(bs, index++) ; |
| | | |
| | | cdData.ip = ip1 + "." + ip2 + "." + ip3 + "." + ip4 ; |
| | | |
| | | String port = "" +ByteUtilUnsigned.bytes2Short_LE(bs, index++) ; |
| | | cdData.port = Integer.parseInt(port) ; |
| | | DataCd35And65Vo cdData = new DataCd35And65Vo() ; |
| | | dV1.subData = cdData ; |
| | | int minute = ByteUtilUnsigned.bytes2Short_LE(bs, ProtocolConstantV206V1_0_0.dataIndex) ; |
| | | cdData.minute =minute ; |
| | | } |
| | | |
| | | } |
| | |
| | | |
| | | /** |
| | | * @Author liurunyu |
| | | * @Date 2023/12/23 9:35 |
| | | * @LastEditTime 2023/12/23 9:35 |
| | | * @Date 2024/01/13 10:47 |
| | | * @LastEditTime 2024/01/13 10:47 |
| | | * @Description |
| | | */ |
| | | @AnnotationCodeDown(ifAny={ |
| | |
| | | |
| | | ByteUtil.hex2Bytes(para.commandCode, bsHead, index) ; |
| | | |
| | | if(para.param == null){ |
| | | throw new Exception("æªæä¾å½ä»¤åæ°æ°æ®ï¼ä¸è½æé åè½ç 为" + CodeV1_0_1.cd_66 + "çä¸è¡å½ä»¤") ; |
| | | }else{ |
| | | byte flag = ((Integer)para.param).byteValue() ; |
| | | byte[] bs = new byte[]{flag} ; |
| | | bytes = ByteUtil.bytesMerge(bsHead, bs) ; |
| | | } |
| | | bytes = bsHead ; |
| | | |
| | | GlCreate.createLen(bytes);//é¿åº¦æ¾åèæ°ç»ä¸ |
| | | |
| | |
| | | |
| | | import com.dy.common.mw.protocol.*; |
| | | import com.dy.common.mw.protocol.p206V1_0_0.*; |
| | | import com.dy.common.util.ByteUtilUnsigned; |
| | | import org.apache.logging.log4j.LogManager; |
| | | import org.apache.logging.log4j.Logger; |
| | | |
| | | /** |
| | | * @Author liurunyu |
| | | * @Date 2023/12/23 9:48 |
| | | * @LastEditTime 2023/12/23 9:48 |
| | | * @Date 2024/01/13 10:40 |
| | | * @LastEditTime 2024/01/13 10:40 |
| | | * @Description |
| | | */ |
| | | @AnnotationCodeUp(ifAny={ |
| | |
| | | * @throws Exception å¼å¸¸ |
| | | */ |
| | | protected void doParse(byte[] bs, int bsLen, String dataCode, Data data) throws Exception { |
| | | DataV1_0_1 dV1 = (DataV1_0_1)data.getSubData() ; |
| | | DataCd66Vo cdData = new DataCd66Vo() ; |
| | | dV1.subData = cdData ; |
| | | short index = ProtocolConstantV206V1_0_0.dataIndex ; |
| | | String ip1 = "" + ByteUtilUnsigned.byte2Byte(bs, index++) ; |
| | | String ip2 = "" +ByteUtilUnsigned.byte2Byte(bs, index++) ; |
| | | String ip3 = "" +ByteUtilUnsigned.byte2Byte(bs, index++) ; |
| | | String ip4 = "" +ByteUtilUnsigned.byte2Byte(bs, index++) ; |
| | | |
| | | cdData.ip = ip1 + "." + ip2 + "." + ip3 + "." + ip4 ; |
| | | |
| | | String port = "" +ByteUtilUnsigned.bytes2Short_LE(bs, index++) ; |
| | | cdData.port = Integer.parseInt(port) ; |
| | | } |
| | | |
| | | } |
New file |
| | |
| | | package com.dy.common.mw.protocol.p206V1_0_0.parse; |
| | | |
| | | import com.dy.common.mw.protocol.*; |
| | | import com.dy.common.mw.protocol.p206V1_0_0.CodeV1_0_1; |
| | | import com.dy.common.mw.protocol.p206V1_0_0.CommonV1_0_1; |
| | | import com.dy.common.mw.protocol.p206V1_0_0.ParseParamsForDownV1_0_1; |
| | | import com.dy.common.mw.protocol.p206V1_0_0.ProtocolConstantV206V1_0_0; |
| | | import com.dy.common.mw.protocol.p206V1_0_0.parse.global.GlCreate; |
| | | import com.dy.common.util.ByteUtil; |
| | | |
| | | /** |
| | | * @Author liurunyu |
| | | * @Date 2024/4/10 18:51 |
| | | * @LastEditTime 2024/4/10 18:51 |
| | | * @Description |
| | | */ |
| | | @AnnotationCodeDown(ifAny={ |
| | | CodeV1_0_1.cd_67 |
| | | }) |
| | | public class Cd_67_Down implements CodeParse { |
| | | |
| | | @Override |
| | | public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback) throws Exception { |
| | | ParseParamsForDownV1_0_1 para = (ParseParamsForDownV1_0_1) params ; |
| | | byte[] bs = this.doParse(para) ; |
| | | |
| | | MidResultToRtu midRs = new MidResultToRtu() ; |
| | | midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ;//rtuè¿åå½ä»¤ç»æ ååç®çå°web URL |
| | | midRs.protocolName = para.protocolName ;//åè®®åç§° |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtuå°åï¼çµä¿¡å¹³å°è®¾å¤IMEIï¼ |
| | | midRs.commandId = para.commandId ;//å½ä»¤IDï¼åèµ·å½ä»¤ç客æ·ç«¯(web端)çæï¼ä»¥å¹é
å½ä»¤ç»æ |
| | | midRs.downCode = para.commandCode ;//ä¸è¡å½ä»¤åè½ç ; |
| | | midRs.downBuffer = bs ;//ä¸è¡å½ä»¤æ°æ® |
| | | midRs.downBufHex = ByteUtil.bytes2Hex(bs, true) ;//ä¸è¡å½ä»¤æ°æ®åå
è¿å¶å½¢å¼ |
| | | midRs.hasResponse = true ;//æ¯å¦æåºç |
| | | midRs.maxSendTimes = null ;//å½ä»¤æå¤§å鿬¡æ°(彿¶ä¸å°åºçæ¶ï¼å°éå)ï¼å¦æä¸è®¾ç½®ï¼å½ä»¤ç¼åå¨è¿è¡è¡¥å
设置 |
| | | midRs.isCachForOffLine = false ;//RTUä¸å¨çº¿ï¼å½ä»¤æ¯å¦ç¼åï¼ä½åèæ¶ä¸ºtrue |
| | | |
| | | if(isLowPower != null && isLowPower.booleanValue()){ |
| | | //ä½åèæ¶ï¼å°½å¿«åé |
| | | midRs.isQuickSend = true ; |
| | | } |
| | | |
| | | return new MidResult[]{midRs} ; |
| | | } |
| | | |
| | | /** |
| | | * æé ä¸è¡æ°æ® |
| | | * @param para åæ° |
| | | * @return åèæ°ç» |
| | | * @throws Exception å¼å¸¸ |
| | | */ |
| | | public byte[] doParse(ParseParamsForDownV1_0_1 para) throws Exception { |
| | | CommonV1_0_1 commonV1_0_1 = new CommonV1_0_1() ; |
| | | byte[] bytes ; |
| | | byte[] bsHead = new byte[ProtocolConstantV206V1_0_0.lenHead2Code] ; |
| | | byte index = 0 ; |
| | | bsHead[index] = ProtocolConstantV206V1_0_0.P_Head_Byte ; |
| | | |
| | | index++ ; |
| | | bsHead[index] = 0 ;//帧é¿åº¦ |
| | | |
| | | index++ ; |
| | | bsHead[index] = ProtocolConstantV206V1_0_0.P_Head_Byte ; |
| | | |
| | | index++ ; |
| | | bsHead[index] = commonV1_0_1.createCtrl((byte)0, (byte)0) ; |
| | | |
| | | index++ ; |
| | | GlCreate.createRtuAddr(para.rtuAddr, bsHead, index); |
| | | index += 5 ; |
| | | |
| | | ByteUtil.hex2Bytes(para.commandCode, bsHead, index) ; |
| | | |
| | | bytes = bsHead ; |
| | | |
| | | GlCreate.createLen(bytes);//é¿åº¦æ¾åèæ°ç»ä¸ |
| | | |
| | | byte[] bsTail = GlCreate.createCrcTail(bytes) ;//CRCåå°¾å å åèæ°ç»ä¸ |
| | | |
| | | bytes = ByteUtil.bytesMerge(bytes, bsTail) ; |
| | | |
| | | return bytes ; |
| | | } |
| | | |
| | | } |
New file |
| | |
| | | package com.dy.common.mw.protocol.p206V1_0_0.parse; |
| | | |
| | | import com.dy.common.mw.protocol.*; |
| | | import com.dy.common.mw.protocol.p206V1_0_0.*; |
| | | import com.dy.common.util.ByteUtilUnsigned; |
| | | import org.apache.logging.log4j.LogManager; |
| | | import org.apache.logging.log4j.Logger; |
| | | |
| | | /** |
| | | * @Author liurunyu |
| | | * @Date 2024/4/10 18:42 |
| | | * @LastEditTime 2024/4/10 18:42 |
| | | * @Description |
| | | */ |
| | | @AnnotationCodeUp(ifAny={ |
| | | CodeV1_0_1.cd_67 |
| | | }) |
| | | public class Cd_67_Up implements CodeParse { |
| | | |
| | | private static final Logger log = LogManager.getLogger(Cd_67_Up.class); |
| | | |
| | | /** |
| | | * åæä¸è¡æ°æ® |
| | | */ |
| | | @Override |
| | | public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback)throws Exception { |
| | | ParseParamsForUpV1_0_1 para = (ParseParamsForUpV1_0_1)params ; |
| | | int bsLen = new CommonV1_0_1().parseDataLen(para.upBuffer) ; |
| | | if(bsLen > 0){ |
| | | this.doParse(para.upBuffer, |
| | | bsLen, |
| | | para.upCode, |
| | | para.data) ; |
| | | } |
| | | log.info("åæå½ä»¤åºçæ°æ®<" + CodeV1_0_1.getCodeName(para.upCode) + " RTUå°å=" + para.rtuAddr + ">:\n" + para.data.toString()); |
| | | |
| | | MidResultFromRtu midRs = new MidResultFromRtu() ; |
| | | midRs.protocolName = para.protocolName ;//åè®®åç§° |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtuå°å |
| | | midRs.upCode = para.upCode ;//ä¸è¡æ°æ®ä¸çåè½ç |
| | | midRs.upHex = para.upHex ;//ä¸è¡æ°æ®åå
è¿å¶å½¢å¼ |
| | | midRs.upBuffer = para.upBuffer ;//ä¸è¡æ°æ®åèæ°ç» |
| | | midRs.data = para.data ;//è§£æåçæ°æ® |
| | | |
| | | midRs.reportOrResponse_trueOrFalse = false ;//å½ä»¤åºç |
| | | |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | return new MidResult[]{midRs} ; |
| | | } |
| | | /** |
| | | * æ§è¡åæ |
| | | * @param bs åèæ°ç» |
| | | * @param bsLen åèé¿åº¦ï¼æ»å
é¿ï¼å
æ¬å
头åå
å°¾ï¼ |
| | | * @param dataCode åè½ç |
| | | * @param data æ°æ® |
| | | * @throws Exception å¼å¸¸ |
| | | */ |
| | | protected void doParse(byte[] bs, int bsLen, String dataCode, Data data) throws Exception { |
| | | DataV1_0_1 dV1 = (DataV1_0_1)data.getSubData() ; |
| | | DataCd37And67Vo cdData = new DataCd37And67Vo() ; |
| | | dV1.subData = cdData ; |
| | | int second = ByteUtilUnsigned.bytes2Short_LE(bs, ProtocolConstantV206V1_0_0.dataIndex) ; |
| | | cdData.second =second ; |
| | | } |
| | | |
| | | } |
New file |
| | |
| | | package com.dy.common.mw.protocol.p206V1_0_0.parse; |
| | | |
| | | import com.dy.common.mw.protocol.*; |
| | | import com.dy.common.mw.protocol.p206V1_0_0.CodeV1_0_1; |
| | | import com.dy.common.mw.protocol.p206V1_0_0.CommonV1_0_1; |
| | | import com.dy.common.mw.protocol.p206V1_0_0.ParseParamsForDownV1_0_1; |
| | | import com.dy.common.mw.protocol.p206V1_0_0.ProtocolConstantV206V1_0_0; |
| | | import com.dy.common.mw.protocol.p206V1_0_0.parse.global.GlCreate; |
| | | import com.dy.common.util.ByteUtil; |
| | | |
| | | /** |
| | | * @Author liurunyu |
| | | * @Date 2024/4/10 18:51 |
| | | * @LastEditTime 2024/4/10 18:51 |
| | | * @Description |
| | | */ |
| | | @AnnotationCodeDown(ifAny={ |
| | | CodeV1_0_1.cd_68 |
| | | }) |
| | | public class Cd_68_Down implements CodeParse { |
| | | |
| | | @Override |
| | | public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback) throws Exception { |
| | | ParseParamsForDownV1_0_1 para = (ParseParamsForDownV1_0_1) params ; |
| | | byte[] bs = this.doParse(para) ; |
| | | |
| | | MidResultToRtu midRs = new MidResultToRtu() ; |
| | | midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ;//rtuè¿åå½ä»¤ç»æ ååç®çå°web URL |
| | | midRs.protocolName = para.protocolName ;//åè®®åç§° |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtuå°åï¼çµä¿¡å¹³å°è®¾å¤IMEIï¼ |
| | | midRs.commandId = para.commandId ;//å½ä»¤IDï¼åèµ·å½ä»¤ç客æ·ç«¯(web端)çæï¼ä»¥å¹é
å½ä»¤ç»æ |
| | | midRs.downCode = para.commandCode ;//ä¸è¡å½ä»¤åè½ç ; |
| | | midRs.downBuffer = bs ;//ä¸è¡å½ä»¤æ°æ® |
| | | midRs.downBufHex = ByteUtil.bytes2Hex(bs, true) ;//ä¸è¡å½ä»¤æ°æ®åå
è¿å¶å½¢å¼ |
| | | midRs.hasResponse = true ;//æ¯å¦æåºç |
| | | midRs.maxSendTimes = null ;//å½ä»¤æå¤§å鿬¡æ°(彿¶ä¸å°åºçæ¶ï¼å°éå)ï¼å¦æä¸è®¾ç½®ï¼å½ä»¤ç¼åå¨è¿è¡è¡¥å
设置 |
| | | midRs.isCachForOffLine = false ;//RTUä¸å¨çº¿ï¼å½ä»¤æ¯å¦ç¼åï¼ä½åèæ¶ä¸ºtrue |
| | | |
| | | if(isLowPower != null && isLowPower.booleanValue()){ |
| | | //ä½åèæ¶ï¼å°½å¿«åé |
| | | midRs.isQuickSend = true ; |
| | | } |
| | | |
| | | return new MidResult[]{midRs} ; |
| | | } |
| | | |
| | | /** |
| | | * æé ä¸è¡æ°æ® |
| | | * @param para åæ° |
| | | * @return åèæ°ç» |
| | | * @throws Exception å¼å¸¸ |
| | | */ |
| | | public byte[] doParse(ParseParamsForDownV1_0_1 para) throws Exception { |
| | | CommonV1_0_1 commonV1_0_1 = new CommonV1_0_1() ; |
| | | byte[] bytes ; |
| | | byte[] bsHead = new byte[ProtocolConstantV206V1_0_0.lenHead2Code] ; |
| | | byte index = 0 ; |
| | | bsHead[index] = ProtocolConstantV206V1_0_0.P_Head_Byte ; |
| | | |
| | | index++ ; |
| | | bsHead[index] = 0 ;//帧é¿åº¦ |
| | | |
| | | index++ ; |
| | | bsHead[index] = ProtocolConstantV206V1_0_0.P_Head_Byte ; |
| | | |
| | | index++ ; |
| | | bsHead[index] = commonV1_0_1.createCtrl((byte)0, (byte)0) ; |
| | | |
| | | index++ ; |
| | | GlCreate.createRtuAddr(para.rtuAddr, bsHead, index); |
| | | index += 5 ; |
| | | |
| | | ByteUtil.hex2Bytes(para.commandCode, bsHead, index) ; |
| | | |
| | | bytes = bsHead ; |
| | | |
| | | GlCreate.createLen(bytes);//é¿åº¦æ¾åèæ°ç»ä¸ |
| | | |
| | | byte[] bsTail = GlCreate.createCrcTail(bytes) ;//CRCåå°¾å å åèæ°ç»ä¸ |
| | | |
| | | bytes = ByteUtil.bytesMerge(bytes, bsTail) ; |
| | | |
| | | return bytes ; |
| | | } |
| | | |
| | | } |
New file |
| | |
| | | package com.dy.common.mw.protocol.p206V1_0_0.parse; |
| | | |
| | | import com.dy.common.mw.protocol.*; |
| | | import com.dy.common.mw.protocol.p206V1_0_0.*; |
| | | import com.dy.common.util.ByteUtilUnsigned; |
| | | import org.apache.logging.log4j.LogManager; |
| | | import org.apache.logging.log4j.Logger; |
| | | |
| | | /** |
| | | * @Author liurunyu |
| | | * @Date 2024/4/10 18:42 |
| | | * @LastEditTime 2024/4/10 18:42 |
| | | * @Description |
| | | */ |
| | | @AnnotationCodeUp(ifAny={ |
| | | CodeV1_0_1.cd_68 |
| | | }) |
| | | public class Cd_68_Up implements CodeParse { |
| | | |
| | | private static final Logger log = LogManager.getLogger(Cd_68_Up.class); |
| | | |
| | | /** |
| | | * åæä¸è¡æ°æ® |
| | | */ |
| | | @Override |
| | | public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback)throws Exception { |
| | | ParseParamsForUpV1_0_1 para = (ParseParamsForUpV1_0_1)params ; |
| | | int bsLen = new CommonV1_0_1().parseDataLen(para.upBuffer) ; |
| | | if(bsLen > 0){ |
| | | this.doParse(para.upBuffer, |
| | | bsLen, |
| | | para.upCode, |
| | | para.data) ; |
| | | } |
| | | log.info("åæå½ä»¤åºçæ°æ®<" + CodeV1_0_1.getCodeName(para.upCode) + " RTUå°å=" + para.rtuAddr + ">:\n" + para.data.toString()); |
| | | |
| | | MidResultFromRtu midRs = new MidResultFromRtu() ; |
| | | midRs.protocolName = para.protocolName ;//åè®®åç§° |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtuå°å |
| | | midRs.upCode = para.upCode ;//ä¸è¡æ°æ®ä¸çåè½ç |
| | | midRs.upHex = para.upHex ;//ä¸è¡æ°æ®åå
è¿å¶å½¢å¼ |
| | | midRs.upBuffer = para.upBuffer ;//ä¸è¡æ°æ®åèæ°ç» |
| | | midRs.data = para.data ;//è§£æåçæ°æ® |
| | | |
| | | midRs.reportOrResponse_trueOrFalse = false ;//å½ä»¤åºç |
| | | |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | return new MidResult[]{midRs} ; |
| | | } |
| | | /** |
| | | * æ§è¡åæ |
| | | * @param bs åèæ°ç» |
| | | * @param bsLen åèé¿åº¦ï¼æ»å
é¿ï¼å
æ¬å
头åå
å°¾ï¼ |
| | | * @param dataCode åè½ç |
| | | * @param data æ°æ® |
| | | * @throws Exception å¼å¸¸ |
| | | */ |
| | | protected void doParse(byte[] bs, int bsLen, String dataCode, Data data) throws Exception { |
| | | DataV1_0_1 dV1 = (DataV1_0_1)data.getSubData() ; |
| | | DataCd38And68Vo cdData = new DataCd38And68Vo() ; |
| | | dV1.subData = cdData ; |
| | | int alarm = ByteUtilUnsigned.bytes2Short_LE(bs, ProtocolConstantV206V1_0_0.dataIndex) ; |
| | | cdData.remainMoneyAlarm = alarm/100.0D ; |
| | | } |
| | | |
| | | } |
New file |
| | |
| | | package com.dy.common.mw.protocol.p206V1_0_0.parse; |
| | | |
| | | import com.dy.common.mw.protocol.*; |
| | | import com.dy.common.mw.protocol.p206V1_0_0.CodeV1_0_1; |
| | | import com.dy.common.mw.protocol.p206V1_0_0.CommonV1_0_1; |
| | | import com.dy.common.mw.protocol.p206V1_0_0.ParseParamsForDownV1_0_1; |
| | | import com.dy.common.mw.protocol.p206V1_0_0.ProtocolConstantV206V1_0_0; |
| | | import com.dy.common.mw.protocol.p206V1_0_0.parse.global.GlCreate; |
| | | import com.dy.common.util.ByteUtil; |
| | | |
| | | /** |
| | | * @Author liurunyu |
| | | * @Date 2024/4/10 18:51 |
| | | * @LastEditTime 2024/4/10 18:51 |
| | | * @Description |
| | | */ |
| | | @AnnotationCodeDown(ifAny={ |
| | | CodeV1_0_1.cd_69 |
| | | }) |
| | | public class Cd_69_Down implements CodeParse { |
| | | |
| | | @Override |
| | | public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback) throws Exception { |
| | | ParseParamsForDownV1_0_1 para = (ParseParamsForDownV1_0_1) params ; |
| | | byte[] bs = this.doParse(para) ; |
| | | |
| | | MidResultToRtu midRs = new MidResultToRtu() ; |
| | | midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ;//rtuè¿åå½ä»¤ç»æ ååç®çå°web URL |
| | | midRs.protocolName = para.protocolName ;//åè®®åç§° |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtuå°åï¼çµä¿¡å¹³å°è®¾å¤IMEIï¼ |
| | | midRs.commandId = para.commandId ;//å½ä»¤IDï¼åèµ·å½ä»¤ç客æ·ç«¯(web端)çæï¼ä»¥å¹é
å½ä»¤ç»æ |
| | | midRs.downCode = para.commandCode ;//ä¸è¡å½ä»¤åè½ç ; |
| | | midRs.downBuffer = bs ;//ä¸è¡å½ä»¤æ°æ® |
| | | midRs.downBufHex = ByteUtil.bytes2Hex(bs, true) ;//ä¸è¡å½ä»¤æ°æ®åå
è¿å¶å½¢å¼ |
| | | midRs.hasResponse = true ;//æ¯å¦æåºç |
| | | midRs.maxSendTimes = null ;//å½ä»¤æå¤§å鿬¡æ°(彿¶ä¸å°åºçæ¶ï¼å°éå)ï¼å¦æä¸è®¾ç½®ï¼å½ä»¤ç¼åå¨è¿è¡è¡¥å
设置 |
| | | midRs.isCachForOffLine = false ;//RTUä¸å¨çº¿ï¼å½ä»¤æ¯å¦ç¼åï¼ä½åèæ¶ä¸ºtrue |
| | | |
| | | if(isLowPower != null && isLowPower.booleanValue()){ |
| | | //ä½åèæ¶ï¼å°½å¿«åé |
| | | midRs.isQuickSend = true ; |
| | | } |
| | | |
| | | return new MidResult[]{midRs} ; |
| | | } |
| | | |
| | | /** |
| | | * æé ä¸è¡æ°æ® |
| | | * @param para åæ° |
| | | * @return åèæ°ç» |
| | | * @throws Exception å¼å¸¸ |
| | | */ |
| | | public byte[] doParse(ParseParamsForDownV1_0_1 para) throws Exception { |
| | | CommonV1_0_1 commonV1_0_1 = new CommonV1_0_1() ; |
| | | byte[] bytes ; |
| | | byte[] bsHead = new byte[ProtocolConstantV206V1_0_0.lenHead2Code] ; |
| | | byte index = 0 ; |
| | | bsHead[index] = ProtocolConstantV206V1_0_0.P_Head_Byte ; |
| | | |
| | | index++ ; |
| | | bsHead[index] = 0 ;//帧é¿åº¦ |
| | | |
| | | index++ ; |
| | | bsHead[index] = ProtocolConstantV206V1_0_0.P_Head_Byte ; |
| | | |
| | | index++ ; |
| | | bsHead[index] = commonV1_0_1.createCtrl((byte)0, (byte)0) ; |
| | | |
| | | index++ ; |
| | | GlCreate.createRtuAddr(para.rtuAddr, bsHead, index); |
| | | index += 5 ; |
| | | |
| | | ByteUtil.hex2Bytes(para.commandCode, bsHead, index) ; |
| | | |
| | | bytes = bsHead ; |
| | | |
| | | GlCreate.createLen(bytes);//é¿åº¦æ¾åèæ°ç»ä¸ |
| | | |
| | | byte[] bsTail = GlCreate.createCrcTail(bytes) ;//CRCåå°¾å å åèæ°ç»ä¸ |
| | | |
| | | bytes = ByteUtil.bytesMerge(bytes, bsTail) ; |
| | | |
| | | return bytes ; |
| | | } |
| | | |
| | | } |
New file |
| | |
| | | package com.dy.common.mw.protocol.p206V1_0_0.parse; |
| | | |
| | | import com.dy.common.mw.protocol.*; |
| | | import com.dy.common.mw.protocol.p206V1_0_0.*; |
| | | import com.dy.common.util.ByteUtilUnsigned; |
| | | import org.apache.logging.log4j.LogManager; |
| | | import org.apache.logging.log4j.Logger; |
| | | |
| | | /** |
| | | * @Author liurunyu |
| | | * @Date 2024/4/10 18:42 |
| | | * @LastEditTime 2024/4/10 18:42 |
| | | * @Description |
| | | */ |
| | | @AnnotationCodeUp(ifAny={ |
| | | CodeV1_0_1.cd_69 |
| | | }) |
| | | public class Cd_69_Up implements CodeParse { |
| | | |
| | | private static final Logger log = LogManager.getLogger(Cd_69_Up.class); |
| | | |
| | | /** |
| | | * åæä¸è¡æ°æ® |
| | | */ |
| | | @Override |
| | | public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback)throws Exception { |
| | | ParseParamsForUpV1_0_1 para = (ParseParamsForUpV1_0_1)params ; |
| | | int bsLen = new CommonV1_0_1().parseDataLen(para.upBuffer) ; |
| | | if(bsLen > 0){ |
| | | this.doParse(para.upBuffer, |
| | | bsLen, |
| | | para.upCode, |
| | | para.data) ; |
| | | } |
| | | log.info("åæå½ä»¤åºçæ°æ®<" + CodeV1_0_1.getCodeName(para.upCode) + " RTUå°å=" + para.rtuAddr + ">:\n" + para.data.toString()); |
| | | |
| | | MidResultFromRtu midRs = new MidResultFromRtu() ; |
| | | midRs.protocolName = para.protocolName ;//åè®®åç§° |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtuå°å |
| | | midRs.upCode = para.upCode ;//ä¸è¡æ°æ®ä¸çåè½ç |
| | | midRs.upHex = para.upHex ;//ä¸è¡æ°æ®åå
è¿å¶å½¢å¼ |
| | | midRs.upBuffer = para.upBuffer ;//ä¸è¡æ°æ®åèæ°ç» |
| | | midRs.data = para.data ;//è§£æåçæ°æ® |
| | | |
| | | midRs.reportOrResponse_trueOrFalse = false ;//å½ä»¤åºç |
| | | |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | return new MidResult[]{midRs} ; |
| | | } |
| | | /** |
| | | * æ§è¡åæ |
| | | * @param bs åèæ°ç» |
| | | * @param bsLen åèé¿åº¦ï¼æ»å
é¿ï¼å
æ¬å
头åå
å°¾ï¼ |
| | | * @param dataCode åè½ç |
| | | * @param data æ°æ® |
| | | * @throws Exception å¼å¸¸ |
| | | */ |
| | | protected void doParse(byte[] bs, int bsLen, String dataCode, Data data) throws Exception { |
| | | DataV1_0_1 dV1 = (DataV1_0_1)data.getSubData() ; |
| | | DataCd39And69Vo cdData = new DataCd39And69Vo() ; |
| | | dV1.subData = cdData ; |
| | | int alarm = ByteUtilUnsigned.bytes2Short_LE(bs, ProtocolConstantV206V1_0_0.dataIndex) ; |
| | | cdData.batteryVoltAlarm = alarm/100.0D ; |
| | | } |
| | | |
| | | } |
New file |
| | |
| | | package com.dy.common.mw.protocol.p206V1_0_0.parse; |
| | | |
| | | import com.dy.common.mw.protocol.*; |
| | | import com.dy.common.mw.protocol.p206V1_0_0.CodeV1_0_1; |
| | | import com.dy.common.mw.protocol.p206V1_0_0.CommonV1_0_1; |
| | | import com.dy.common.mw.protocol.p206V1_0_0.ParseParamsForDownV1_0_1; |
| | | import com.dy.common.mw.protocol.p206V1_0_0.ProtocolConstantV206V1_0_0; |
| | | import com.dy.common.mw.protocol.p206V1_0_0.parse.global.GlCreate; |
| | | import com.dy.common.util.ByteUtil; |
| | | |
| | | /** |
| | | * @Author liurunyu |
| | | * @Date 2024/4/10 18:51 |
| | | * @LastEditTime 2024/4/10 18:51 |
| | | * @Description |
| | | */ |
| | | @AnnotationCodeDown(ifAny={ |
| | | CodeV1_0_1.cd_6A |
| | | }) |
| | | public class Cd_6A_Down implements CodeParse { |
| | | |
| | | @Override |
| | | public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback) throws Exception { |
| | | ParseParamsForDownV1_0_1 para = (ParseParamsForDownV1_0_1) params ; |
| | | byte[] bs = this.doParse(para) ; |
| | | |
| | | MidResultToRtu midRs = new MidResultToRtu() ; |
| | | midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ;//rtuè¿åå½ä»¤ç»æ ååç®çå°web URL |
| | | midRs.protocolName = para.protocolName ;//åè®®åç§° |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtuå°åï¼çµä¿¡å¹³å°è®¾å¤IMEIï¼ |
| | | midRs.commandId = para.commandId ;//å½ä»¤IDï¼åèµ·å½ä»¤ç客æ·ç«¯(web端)çæï¼ä»¥å¹é
å½ä»¤ç»æ |
| | | midRs.downCode = para.commandCode ;//ä¸è¡å½ä»¤åè½ç ; |
| | | midRs.downBuffer = bs ;//ä¸è¡å½ä»¤æ°æ® |
| | | midRs.downBufHex = ByteUtil.bytes2Hex(bs, true) ;//ä¸è¡å½ä»¤æ°æ®åå
è¿å¶å½¢å¼ |
| | | midRs.hasResponse = true ;//æ¯å¦æåºç |
| | | midRs.maxSendTimes = null ;//å½ä»¤æå¤§å鿬¡æ°(彿¶ä¸å°åºçæ¶ï¼å°éå)ï¼å¦æä¸è®¾ç½®ï¼å½ä»¤ç¼åå¨è¿è¡è¡¥å
设置 |
| | | midRs.isCachForOffLine = false ;//RTUä¸å¨çº¿ï¼å½ä»¤æ¯å¦ç¼åï¼ä½åèæ¶ä¸ºtrue |
| | | |
| | | if(isLowPower != null && isLowPower.booleanValue()){ |
| | | //ä½åèæ¶ï¼å°½å¿«åé |
| | | midRs.isQuickSend = true ; |
| | | } |
| | | |
| | | return new MidResult[]{midRs} ; |
| | | } |
| | | |
| | | /** |
| | | * æé ä¸è¡æ°æ® |
| | | * @param para åæ° |
| | | * @return åèæ°ç» |
| | | * @throws Exception å¼å¸¸ |
| | | */ |
| | | public byte[] doParse(ParseParamsForDownV1_0_1 para) throws Exception { |
| | | CommonV1_0_1 commonV1_0_1 = new CommonV1_0_1() ; |
| | | byte[] bytes ; |
| | | byte[] bsHead = new byte[ProtocolConstantV206V1_0_0.lenHead2Code] ; |
| | | byte index = 0 ; |
| | | bsHead[index] = ProtocolConstantV206V1_0_0.P_Head_Byte ; |
| | | |
| | | index++ ; |
| | | bsHead[index] = 0 ;//帧é¿åº¦ |
| | | |
| | | index++ ; |
| | | bsHead[index] = ProtocolConstantV206V1_0_0.P_Head_Byte ; |
| | | |
| | | index++ ; |
| | | bsHead[index] = commonV1_0_1.createCtrl((byte)0, (byte)0) ; |
| | | |
| | | index++ ; |
| | | GlCreate.createRtuAddr(para.rtuAddr, bsHead, index); |
| | | index += 5 ; |
| | | |
| | | ByteUtil.hex2Bytes(para.commandCode, bsHead, index) ; |
| | | |
| | | bytes = bsHead ; |
| | | |
| | | GlCreate.createLen(bytes);//é¿åº¦æ¾åèæ°ç»ä¸ |
| | | |
| | | byte[] bsTail = GlCreate.createCrcTail(bytes) ;//CRCåå°¾å å åèæ°ç»ä¸ |
| | | |
| | | bytes = ByteUtil.bytesMerge(bytes, bsTail) ; |
| | | |
| | | return bytes ; |
| | | } |
| | | |
| | | } |
New file |
| | |
| | | package com.dy.common.mw.protocol.p206V1_0_0.parse; |
| | | |
| | | import com.dy.common.mw.protocol.*; |
| | | import com.dy.common.mw.protocol.p206V1_0_0.*; |
| | | import com.dy.common.util.ByteUtilUnsigned; |
| | | import org.apache.logging.log4j.LogManager; |
| | | import org.apache.logging.log4j.Logger; |
| | | |
| | | /** |
| | | * @Author liurunyu |
| | | * @Date 2024/4/10 18:42 |
| | | * @LastEditTime 2024/4/10 18:42 |
| | | * @Description |
| | | */ |
| | | @AnnotationCodeUp(ifAny={ |
| | | CodeV1_0_1.cd_6A |
| | | }) |
| | | public class Cd_6A_Up implements CodeParse { |
| | | |
| | | private static final Logger log = LogManager.getLogger(Cd_6A_Up.class); |
| | | |
| | | /** |
| | | * åæä¸è¡æ°æ® |
| | | */ |
| | | @Override |
| | | public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback)throws Exception { |
| | | ParseParamsForUpV1_0_1 para = (ParseParamsForUpV1_0_1)params ; |
| | | int bsLen = new CommonV1_0_1().parseDataLen(para.upBuffer) ; |
| | | if(bsLen > 0){ |
| | | this.doParse(para.upBuffer, |
| | | bsLen, |
| | | para.upCode, |
| | | para.data) ; |
| | | } |
| | | log.info("åæå½ä»¤åºçæ°æ®<" + CodeV1_0_1.getCodeName(para.upCode) + " RTUå°å=" + para.rtuAddr + ">:\n" + para.data.toString()); |
| | | |
| | | MidResultFromRtu midRs = new MidResultFromRtu() ; |
| | | midRs.protocolName = para.protocolName ;//åè®®åç§° |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtuå°å |
| | | midRs.upCode = para.upCode ;//ä¸è¡æ°æ®ä¸çåè½ç |
| | | midRs.upHex = para.upHex ;//ä¸è¡æ°æ®åå
è¿å¶å½¢å¼ |
| | | midRs.upBuffer = para.upBuffer ;//ä¸è¡æ°æ®åèæ°ç» |
| | | midRs.data = para.data ;//è§£æåçæ°æ® |
| | | |
| | | midRs.reportOrResponse_trueOrFalse = false ;//å½ä»¤åºç |
| | | |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | return new MidResult[]{midRs} ; |
| | | } |
| | | /** |
| | | * æ§è¡åæ |
| | | * @param bs åèæ°ç» |
| | | * @param bsLen åèé¿åº¦ï¼æ»å
é¿ï¼å
æ¬å
头åå
å°¾ï¼ |
| | | * @param dataCode åè½ç |
| | | * @param data æ°æ® |
| | | * @throws Exception å¼å¸¸ |
| | | */ |
| | | protected void doParse(byte[] bs, int bsLen, String dataCode, Data data) throws Exception { |
| | | DataV1_0_1 dV1 = (DataV1_0_1)data.getSubData() ; |
| | | DataCd3AAnd6AVo cdData = new DataCd3AAnd6AVo() ; |
| | | dV1.subData = cdData ; |
| | | Long alarm = ByteUtilUnsigned.bytes2Int_LE(bs, ProtocolConstantV206V1_0_0.dataIndex, true) ; |
| | | cdData.current = alarm/1000.0D ; |
| | | } |
| | | |
| | | } |
New file |
| | |
| | | package com.dy.common.mw.protocol.p206V1_0_0.parse; |
| | | |
| | | import com.dy.common.mw.protocol.*; |
| | | import com.dy.common.mw.protocol.p206V1_0_0.CodeV1_0_1; |
| | | import com.dy.common.mw.protocol.p206V1_0_0.CommonV1_0_1; |
| | | import com.dy.common.mw.protocol.p206V1_0_0.ParseParamsForDownV1_0_1; |
| | | import com.dy.common.mw.protocol.p206V1_0_0.ProtocolConstantV206V1_0_0; |
| | | import com.dy.common.mw.protocol.p206V1_0_0.parse.global.GlCreate; |
| | | import com.dy.common.util.ByteUtil; |
| | | |
| | | /** |
| | | * @Author liurunyu |
| | | * @Date 2024/4/10 18:51 |
| | | * @LastEditTime 2024/4/10 18:51 |
| | | * @Description |
| | | */ |
| | | @AnnotationCodeDown(ifAny={ |
| | | CodeV1_0_1.cd_6B |
| | | }) |
| | | public class Cd_6B_Down implements CodeParse { |
| | | |
| | | @Override |
| | | public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback) throws Exception { |
| | | ParseParamsForDownV1_0_1 para = (ParseParamsForDownV1_0_1) params ; |
| | | byte[] bs = this.doParse(para) ; |
| | | |
| | | MidResultToRtu midRs = new MidResultToRtu() ; |
| | | midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ;//rtuè¿åå½ä»¤ç»æ ååç®çå°web URL |
| | | midRs.protocolName = para.protocolName ;//åè®®åç§° |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtuå°åï¼çµä¿¡å¹³å°è®¾å¤IMEIï¼ |
| | | midRs.commandId = para.commandId ;//å½ä»¤IDï¼åèµ·å½ä»¤ç客æ·ç«¯(web端)çæï¼ä»¥å¹é
å½ä»¤ç»æ |
| | | midRs.downCode = para.commandCode ;//ä¸è¡å½ä»¤åè½ç ; |
| | | midRs.downBuffer = bs ;//ä¸è¡å½ä»¤æ°æ® |
| | | midRs.downBufHex = ByteUtil.bytes2Hex(bs, true) ;//ä¸è¡å½ä»¤æ°æ®åå
è¿å¶å½¢å¼ |
| | | midRs.hasResponse = true ;//æ¯å¦æåºç |
| | | midRs.maxSendTimes = null ;//å½ä»¤æå¤§å鿬¡æ°(彿¶ä¸å°åºçæ¶ï¼å°éå)ï¼å¦æä¸è®¾ç½®ï¼å½ä»¤ç¼åå¨è¿è¡è¡¥å
设置 |
| | | midRs.isCachForOffLine = false ;//RTUä¸å¨çº¿ï¼å½ä»¤æ¯å¦ç¼åï¼ä½åèæ¶ä¸ºtrue |
| | | |
| | | if(isLowPower != null && isLowPower.booleanValue()){ |
| | | //ä½åèæ¶ï¼å°½å¿«åé |
| | | midRs.isQuickSend = true ; |
| | | } |
| | | |
| | | return new MidResult[]{midRs} ; |
| | | } |
| | | |
| | | /** |
| | | * æé ä¸è¡æ°æ® |
| | | * @param para åæ° |
| | | * @return åèæ°ç» |
| | | * @throws Exception å¼å¸¸ |
| | | */ |
| | | public byte[] doParse(ParseParamsForDownV1_0_1 para) throws Exception { |
| | | CommonV1_0_1 commonV1_0_1 = new CommonV1_0_1() ; |
| | | byte[] bytes ; |
| | | byte[] bsHead = new byte[ProtocolConstantV206V1_0_0.lenHead2Code] ; |
| | | byte index = 0 ; |
| | | bsHead[index] = ProtocolConstantV206V1_0_0.P_Head_Byte ; |
| | | |
| | | index++ ; |
| | | bsHead[index] = 0 ;//帧é¿åº¦ |
| | | |
| | | index++ ; |
| | | bsHead[index] = ProtocolConstantV206V1_0_0.P_Head_Byte ; |
| | | |
| | | index++ ; |
| | | bsHead[index] = commonV1_0_1.createCtrl((byte)0, (byte)0) ; |
| | | |
| | | index++ ; |
| | | GlCreate.createRtuAddr(para.rtuAddr, bsHead, index); |
| | | index += 5 ; |
| | | |
| | | ByteUtil.hex2Bytes(para.commandCode, bsHead, index) ; |
| | | |
| | | bytes = bsHead ; |
| | | |
| | | GlCreate.createLen(bytes);//é¿åº¦æ¾åèæ°ç»ä¸ |
| | | |
| | | byte[] bsTail = GlCreate.createCrcTail(bytes) ;//CRCåå°¾å å åèæ°ç»ä¸ |
| | | |
| | | bytes = ByteUtil.bytesMerge(bytes, bsTail) ; |
| | | |
| | | return bytes ; |
| | | } |
| | | |
| | | } |
New file |
| | |
| | | package com.dy.common.mw.protocol.p206V1_0_0.parse; |
| | | |
| | | import com.dy.common.mw.protocol.*; |
| | | import com.dy.common.mw.protocol.p206V1_0_0.*; |
| | | import com.dy.common.util.ByteUtilUnsigned; |
| | | import org.apache.logging.log4j.LogManager; |
| | | import org.apache.logging.log4j.Logger; |
| | | |
| | | /** |
| | | * @Author liurunyu |
| | | * @Date 2024/4/10 18:42 |
| | | * @LastEditTime 2024/4/10 18:42 |
| | | * @Description |
| | | */ |
| | | @AnnotationCodeUp(ifAny={ |
| | | CodeV1_0_1.cd_6B |
| | | }) |
| | | public class Cd_6B_Up implements CodeParse { |
| | | |
| | | private static final Logger log = LogManager.getLogger(Cd_6B_Up.class); |
| | | |
| | | /** |
| | | * åæä¸è¡æ°æ® |
| | | */ |
| | | @Override |
| | | public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback)throws Exception { |
| | | ParseParamsForUpV1_0_1 para = (ParseParamsForUpV1_0_1)params ; |
| | | int bsLen = new CommonV1_0_1().parseDataLen(para.upBuffer) ; |
| | | if(bsLen > 0){ |
| | | this.doParse(para.upBuffer, |
| | | bsLen, |
| | | para.upCode, |
| | | para.data) ; |
| | | } |
| | | log.info("åæå½ä»¤åºçæ°æ®<" + CodeV1_0_1.getCodeName(para.upCode) + " RTUå°å=" + para.rtuAddr + ">:\n" + para.data.toString()); |
| | | |
| | | MidResultFromRtu midRs = new MidResultFromRtu() ; |
| | | midRs.protocolName = para.protocolName ;//åè®®åç§° |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtuå°å |
| | | midRs.upCode = para.upCode ;//ä¸è¡æ°æ®ä¸çåè½ç |
| | | midRs.upHex = para.upHex ;//ä¸è¡æ°æ®åå
è¿å¶å½¢å¼ |
| | | midRs.upBuffer = para.upBuffer ;//ä¸è¡æ°æ®åèæ°ç» |
| | | midRs.data = para.data ;//è§£æåçæ°æ® |
| | | |
| | | midRs.reportOrResponse_trueOrFalse = false ;//å½ä»¤åºç |
| | | |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | return new MidResult[]{midRs} ; |
| | | } |
| | | /** |
| | | * æ§è¡åæ |
| | | * @param bs åèæ°ç» |
| | | * @param bsLen åèé¿åº¦ï¼æ»å
é¿ï¼å
æ¬å
头åå
å°¾ï¼ |
| | | * @param dataCode åè½ç |
| | | * @param data æ°æ® |
| | | * @throws Exception å¼å¸¸ |
| | | */ |
| | | protected void doParse(byte[] bs, int bsLen, String dataCode, Data data) throws Exception { |
| | | DataV1_0_1 dV1 = (DataV1_0_1)data.getSubData() ; |
| | | DataCd3BAnd6BVo cdData = new DataCd3BAnd6BVo() ; |
| | | dV1.subData = cdData ; |
| | | int alarm = ByteUtilUnsigned.bytes2Short_LE(bs, ProtocolConstantV206V1_0_0.dataIndex) ; |
| | | cdData.second = alarm ; |
| | | } |
| | | |
| | | } |
New file |
| | |
| | | package com.dy.common.mw.protocol.p206V1_0_0.parse; |
| | | |
| | | import com.dy.common.mw.protocol.*; |
| | | import com.dy.common.mw.protocol.p206V1_0_0.CodeV1_0_1; |
| | | import com.dy.common.mw.protocol.p206V1_0_0.CommonV1_0_1; |
| | | import com.dy.common.mw.protocol.p206V1_0_0.ParseParamsForDownV1_0_1; |
| | | import com.dy.common.mw.protocol.p206V1_0_0.ProtocolConstantV206V1_0_0; |
| | | import com.dy.common.mw.protocol.p206V1_0_0.parse.global.GlCreate; |
| | | import com.dy.common.util.ByteUtil; |
| | | import com.dy.common.util.ByteUtilUnsigned; |
| | | |
| | | /** |
| | | * @Author liurunyu |
| | | * @Date 2024/4/10 18:51 |
| | | * @LastEditTime 2024/4/10 18:51 |
| | | * @Description |
| | | */ |
| | | @AnnotationCodeDown(ifAny={ |
| | | CodeV1_0_1.cd_6C |
| | | }) |
| | | public class Cd_6C_Down implements CodeParse { |
| | | |
| | | @Override |
| | | public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback) throws Exception { |
| | | ParseParamsForDownV1_0_1 para = (ParseParamsForDownV1_0_1) params ; |
| | | byte[] bs = this.doParse(para) ; |
| | | |
| | | MidResultToRtu midRs = new MidResultToRtu() ; |
| | | midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ;//rtuè¿åå½ä»¤ç»æ ååç®çå°web URL |
| | | midRs.protocolName = para.protocolName ;//åè®®åç§° |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtuå°åï¼çµä¿¡å¹³å°è®¾å¤IMEIï¼ |
| | | midRs.commandId = para.commandId ;//å½ä»¤IDï¼åèµ·å½ä»¤ç客æ·ç«¯(web端)çæï¼ä»¥å¹é
å½ä»¤ç»æ |
| | | midRs.downCode = para.commandCode ;//ä¸è¡å½ä»¤åè½ç ; |
| | | midRs.downBuffer = bs ;//ä¸è¡å½ä»¤æ°æ® |
| | | midRs.downBufHex = ByteUtil.bytes2Hex(bs, true) ;//ä¸è¡å½ä»¤æ°æ®åå
è¿å¶å½¢å¼ |
| | | midRs.hasResponse = true ;//æ¯å¦æåºç |
| | | midRs.maxSendTimes = null ;//å½ä»¤æå¤§å鿬¡æ°(彿¶ä¸å°åºçæ¶ï¼å°éå)ï¼å¦æä¸è®¾ç½®ï¼å½ä»¤ç¼åå¨è¿è¡è¡¥å
设置 |
| | | midRs.isCachForOffLine = false ;//RTUä¸å¨çº¿ï¼å½ä»¤æ¯å¦ç¼åï¼ä½åèæ¶ä¸ºtrue |
| | | |
| | | if(isLowPower != null && isLowPower.booleanValue()){ |
| | | //ä½åèæ¶ï¼å°½å¿«åé |
| | | midRs.isQuickSend = true ; |
| | | } |
| | | |
| | | return new MidResult[]{midRs} ; |
| | | } |
| | | |
| | | /** |
| | | * æé ä¸è¡æ°æ® |
| | | * @param para åæ° |
| | | * @return åèæ°ç» |
| | | * @throws Exception å¼å¸¸ |
| | | */ |
| | | public byte[] doParse(ParseParamsForDownV1_0_1 para) throws Exception { |
| | | CommonV1_0_1 commonV1_0_1 = new CommonV1_0_1() ; |
| | | byte[] bytes ; |
| | | byte[] bsHead = new byte[ProtocolConstantV206V1_0_0.lenHead2Code] ; |
| | | byte index = 0 ; |
| | | bsHead[index] = ProtocolConstantV206V1_0_0.P_Head_Byte ; |
| | | |
| | | index++ ; |
| | | bsHead[index] = 0 ;//帧é¿åº¦ |
| | | |
| | | index++ ; |
| | | bsHead[index] = ProtocolConstantV206V1_0_0.P_Head_Byte ; |
| | | |
| | | index++ ; |
| | | bsHead[index] = commonV1_0_1.createCtrl((byte)0, (byte)0) ; |
| | | |
| | | index++ ; |
| | | GlCreate.createRtuAddr(para.rtuAddr, bsHead, index); |
| | | index += 5 ; |
| | | |
| | | ByteUtil.hex2Bytes(para.commandCode, bsHead, index) ; |
| | | |
| | | bytes = bsHead ; |
| | | |
| | | GlCreate.createLen(bytes);//é¿åº¦æ¾åèæ°ç»ä¸ |
| | | |
| | | byte[] bsTail = GlCreate.createCrcTail(bytes) ;//CRCåå°¾å å åèæ°ç»ä¸ |
| | | |
| | | bytes = ByteUtil.bytesMerge(bytes, bsTail) ; |
| | | |
| | | return bytes ; |
| | | } |
| | | |
| | | } |
New file |
| | |
| | | package com.dy.common.mw.protocol.p206V1_0_0.parse; |
| | | |
| | | import com.dy.common.mw.protocol.*; |
| | | import com.dy.common.mw.protocol.p206V1_0_0.*; |
| | | import com.dy.common.util.ByteUtilUnsigned; |
| | | import org.apache.logging.log4j.LogManager; |
| | | import org.apache.logging.log4j.Logger; |
| | | |
| | | /** |
| | | * @Author liurunyu |
| | | * @Date 2024/4/10 18:42 |
| | | * @LastEditTime 2024/4/10 18:42 |
| | | * @Description |
| | | */ |
| | | @AnnotationCodeUp(ifAny={ |
| | | CodeV1_0_1.cd_6C |
| | | }) |
| | | public class Cd_6C_Up implements CodeParse { |
| | | |
| | | private static final Logger log = LogManager.getLogger(Cd_6C_Up.class); |
| | | |
| | | /** |
| | | * åæä¸è¡æ°æ® |
| | | */ |
| | | @Override |
| | | public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback)throws Exception { |
| | | ParseParamsForUpV1_0_1 para = (ParseParamsForUpV1_0_1)params ; |
| | | int bsLen = new CommonV1_0_1().parseDataLen(para.upBuffer) ; |
| | | if(bsLen > 0){ |
| | | this.doParse(para.upBuffer, |
| | | bsLen, |
| | | para.upCode, |
| | | para.data) ; |
| | | } |
| | | log.info("åæå½ä»¤åºçæ°æ®<" + CodeV1_0_1.getCodeName(para.upCode) + " RTUå°å=" + para.rtuAddr + ">:\n" + para.data.toString()); |
| | | |
| | | MidResultFromRtu midRs = new MidResultFromRtu() ; |
| | | midRs.protocolName = para.protocolName ;//åè®®åç§° |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtuå°å |
| | | midRs.upCode = para.upCode ;//ä¸è¡æ°æ®ä¸çåè½ç |
| | | midRs.upHex = para.upHex ;//ä¸è¡æ°æ®åå
è¿å¶å½¢å¼ |
| | | midRs.upBuffer = para.upBuffer ;//ä¸è¡æ°æ®åèæ°ç» |
| | | midRs.data = para.data ;//è§£æåçæ°æ® |
| | | |
| | | midRs.reportOrResponse_trueOrFalse = false ;//å½ä»¤åºç |
| | | |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | return new MidResult[]{midRs} ; |
| | | } |
| | | /** |
| | | * æ§è¡åæ |
| | | * @param bs åèæ°ç» |
| | | * @param bsLen åèé¿åº¦ï¼æ»å
é¿ï¼å
æ¬å
头åå
å°¾ï¼ |
| | | * @param dataCode åè½ç |
| | | * @param data æ°æ® |
| | | * @throws Exception å¼å¸¸ |
| | | */ |
| | | protected void doParse(byte[] bs, int bsLen, String dataCode, Data data) throws Exception { |
| | | DataV1_0_1 dV1 = (DataV1_0_1)data.getSubData() ; |
| | | DataCd6CVo cdData = new DataCd6CVo() ; |
| | | dV1.subData = cdData ; |
| | | int priceInt = ByteUtilUnsigned.bytes2Short_LE(bs, ProtocolConstantV206V1_0_0.dataIndex) ; |
| | | cdData.price = priceInt/100.0D; |
| | | } |
| | | |
| | | } |
| | |
| | | protected void doParse(byte[] bs, int bsLen, String dataCode, Data data) throws Exception { |
| | | DataV1_0_1 dV1 = (DataV1_0_1)data.getSubData() ; |
| | | DataCd71Vo cdData = new DataCd71Vo() ; |
| | | dV1.dataCd71Vo = cdData ; |
| | | dV1.subData = cdData ; |
| | | cdData.state = bs[ProtocolConstantV206V1_0_0.dataIndex] ; |
| | | if(cdData.state == 0){ |
| | | cdData.stateName = "éé¨å
³é" ; |
| | |
| | | protected void doParse(byte[] bs, int bsLen, String dataCode, Data data) throws Exception { |
| | | DataV1_0_1 dV1 = (DataV1_0_1)data.getSubData() ; |
| | | DataCd81Vo cdData = new DataCd81Vo() ; |
| | | dV1.dataCd81Vo = cdData ; |
| | | dV1.subData = cdData ; |
| | | |
| | | short index = ProtocolConstantV206V1_0_0.dataIndex ; |
| | | |
| | |
| | | private void doParseOpen(byte opType, byte[] bs, int bsLen, String dataCode, Data data) throws Exception { |
| | | DataV1_0_1 dV1 = (DataV1_0_1)data.getSubData() ; |
| | | DataCd83OpenVo cdData = new DataCd83OpenVo() ; |
| | | dV1.dataCd83OpenVo = cdData ; |
| | | dV1.subData = cdData ; |
| | | |
| | | cdData.type = opType ; |
| | | |
| | |
| | | private void doParseClose(byte opType, byte[] bs, int bsLen, String dataCode, Data data) throws Exception { |
| | | DataV1_0_1 dV1 = (DataV1_0_1)data.getSubData() ; |
| | | DataCd83CloseVo cdData = new DataCd83CloseVo() ; |
| | | dV1.dataCd83CloseVo = cdData ; |
| | | dV1.subData = cdData ; |
| | | |
| | | cdData.type = opType ; |
| | | |
| | |
| | | protected void doParse(byte[] bs, int bsLen, String dataCode, Data data) throws Exception { |
| | | DataV1_0_1 dV1 = (DataV1_0_1)data.getSubData() ; |
| | | DataCd84Vo cdData = new DataCd84Vo() ; |
| | | dV1.dataCd84Vo = cdData ; |
| | | dV1.subData = cdData ; |
| | | |
| | | short index = ProtocolConstantV206V1_0_0.dataIndex ; |
| | | //ç¨æ°´æ·å·æ°æ®æ ¼å¼ï¼5åèBCDç ä½ä½å¨åé«ä½å¨åã |
New file |
| | |
| | | package com.dy.common.mw.protocol.p206V1_0_0.parse; |
| | | |
| | | import com.dy.common.mw.protocol.*; |
| | | import com.dy.common.mw.protocol.p206V1_0_0.CodeV1_0_1; |
| | | import com.dy.common.mw.protocol.p206V1_0_0.CommonV1_0_1; |
| | | import com.dy.common.mw.protocol.p206V1_0_0.ParseParamsForDownV1_0_1; |
| | | import com.dy.common.mw.protocol.p206V1_0_0.ProtocolConstantV206V1_0_0; |
| | | import com.dy.common.mw.protocol.p206V1_0_0.parse.global.GlCreate; |
| | | import com.dy.common.util.ByteUtil; |
| | | import com.dy.common.util.ByteUtilUnsigned; |
| | | |
| | | /** |
| | | * @Author liurunyu |
| | | * @Date 2024/4/10 18:26 |
| | | * @LastEditTime 2024/4/10 18:26 |
| | | * @Description 设置水价 |
| | | */ |
| | | @AnnotationCodeDown(ifAny={ |
| | | CodeV1_0_1.cd_91 |
| | | }) |
| | | public class Cd_91_Down implements CodeParse { |
| | | |
| | | @Override |
| | | public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback) throws Exception { |
| | | ParseParamsForDownV1_0_1 para = (ParseParamsForDownV1_0_1) params ; |
| | | byte[] bs = this.doParse(para) ; |
| | | |
| | | MidResultToRtu midRs = new MidResultToRtu() ; |
| | | midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ;//rtuè¿åå½ä»¤ç»æ ååç®çå°web URL |
| | | midRs.protocolName = para.protocolName ;//åè®®åç§° |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtuå°åï¼çµä¿¡å¹³å°è®¾å¤IMEIï¼ |
| | | midRs.commandId = para.commandId ;//å½ä»¤IDï¼åèµ·å½ä»¤ç客æ·ç«¯(web端)çæï¼ä»¥å¹é
å½ä»¤ç»æ |
| | | midRs.downCode = para.commandCode ;//ä¸è¡å½ä»¤åè½ç ; |
| | | midRs.downBuffer = bs ;//ä¸è¡å½ä»¤æ°æ® |
| | | midRs.downBufHex = ByteUtil.bytes2Hex(bs, true) ;//ä¸è¡å½ä»¤æ°æ®åå
è¿å¶å½¢å¼ |
| | | midRs.hasResponse = true ;//æ¯å¦æåºç |
| | | midRs.maxSendTimes = null ;//å½ä»¤æå¤§å鿬¡æ°(彿¶ä¸å°åºçæ¶ï¼å°éå)ï¼å¦æä¸è®¾ç½®ï¼å½ä»¤ç¼åå¨è¿è¡è¡¥å
设置 |
| | | midRs.isCachForOffLine = false ;//RTUä¸å¨çº¿ï¼å½ä»¤æ¯å¦ç¼åï¼ä½åèæ¶ä¸ºtrue |
| | | |
| | | if(isLowPower != null && isLowPower.booleanValue()){ |
| | | //ä½åèæ¶ï¼å°½å¿«åé |
| | | midRs.isQuickSend = true ; |
| | | } |
| | | |
| | | return new MidResult[]{midRs} ; |
| | | } |
| | | |
| | | /** |
| | | * æé ä¸è¡æ°æ® |
| | | * @param para åæ° |
| | | * @return åèæ°ç» |
| | | * @throws Exception å¼å¸¸ |
| | | */ |
| | | public byte[] doParse(ParseParamsForDownV1_0_1 para) throws Exception { |
| | | CommonV1_0_1 commonV1_0_1 = new CommonV1_0_1() ; |
| | | byte[] bytes ; |
| | | byte[] bsHead = new byte[ProtocolConstantV206V1_0_0.lenHead2Code] ; |
| | | byte index = 0 ; |
| | | bsHead[index] = ProtocolConstantV206V1_0_0.P_Head_Byte ; |
| | | |
| | | index++ ; |
| | | bsHead[index] = 0 ;//帧é¿åº¦ |
| | | |
| | | index++ ; |
| | | bsHead[index] = ProtocolConstantV206V1_0_0.P_Head_Byte ; |
| | | |
| | | index++ ; |
| | | bsHead[index] = commonV1_0_1.createCtrl((byte)0, (byte)0) ; |
| | | |
| | | index++ ; |
| | | GlCreate.createRtuAddr(para.rtuAddr, bsHead, index); |
| | | index += 5 ; |
| | | |
| | | ByteUtil.hex2Bytes(para.commandCode, bsHead, index) ; |
| | | |
| | | if(para.param == null){ |
| | | throw new Exception("æªæä¾å½ä»¤åæ°æ°æ®ï¼ä¸è½æé åè½ç 为" + para.commandCode + "çä¸è¡å½ä»¤") ; |
| | | }else{ |
| | | index = 0 ; |
| | | byte[] bs = new byte[8] ; |
| | | GlCreate.createPw(bs, index); |
| | | index += 2 ; |
| | | GlCreate.createTp(bs, index); |
| | | bytes = ByteUtil.bytesMerge(bsHead, bs) ; |
| | | } |
| | | |
| | | GlCreate.createLen(bytes);//é¿åº¦æ¾åèæ°ç»ä¸ |
| | | |
| | | byte[] bsTail = GlCreate.createCrcTail(bytes) ;//CRCåå°¾å å åèæ°ç»ä¸ |
| | | |
| | | bytes = ByteUtil.bytesMerge(bytes, bsTail) ; |
| | | |
| | | return bytes ; |
| | | } |
| | | |
| | | } |
New file |
| | |
| | | package com.dy.common.mw.protocol.p206V1_0_0.parse; |
| | | |
| | | import com.dy.common.mw.protocol.*; |
| | | import com.dy.common.mw.protocol.p206V1_0_0.*; |
| | | import org.apache.logging.log4j.LogManager; |
| | | import org.apache.logging.log4j.Logger; |
| | | |
| | | @AnnotationCodeUp(ifAny={ |
| | | CodeV1_0_1.cd_91 |
| | | }) |
| | | @SuppressWarnings("unused") |
| | | public class Cd_91_Up implements CodeParse { |
| | | |
| | | private static final Logger log = LogManager.getLogger(Cd_91_Up.class); |
| | | |
| | | /** |
| | | * åæä¸è¡æ°æ® |
| | | */ |
| | | @Override |
| | | public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback)throws Exception { |
| | | ParseParamsForUpV1_0_1 para = (ParseParamsForUpV1_0_1)params ; |
| | | int bsLen = new CommonV1_0_1().parseDataLen(para.upBuffer) ; |
| | | if(bsLen > 0){ |
| | | this.doParse(para.upBuffer, |
| | | bsLen, |
| | | para.upCode, |
| | | para.data) ; |
| | | } |
| | | log.info("åæä¸è¡æ°æ®<" + CodeV1_0_1.getCodeName(para.upCode) + " RTUå°å=" + para.rtuAddr + ">:\n" + para.data.toString()); |
| | | |
| | | MidResultFromRtu midRs = new MidResultFromRtu() ; |
| | | midRs.protocolName = para.protocolName ;//åè®®åç§° |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtuå°å |
| | | midRs.upCode = para.upCode ;//ä¸è¡æ°æ®ä¸çåè½ç |
| | | midRs.upHex = para.upHex ;//ä¸è¡æ°æ®åå
è¿å¶å½¢å¼ |
| | | midRs.upBuffer = para.upBuffer ;//ä¸è¡æ°æ®åèæ°ç» |
| | | midRs.data = para.data ;//è§£æåçæ°æ® |
| | | |
| | | midRs.reportOrResponse_trueOrFalse = false ;//主å¨ä¸æ¥ |
| | | |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | return new MidResult[]{midRs} ; |
| | | } |
| | | /** |
| | | * æ§è¡åæ |
| | | * @param bs åèæ°ç» |
| | | * @param bsLen åèé¿åº¦ï¼æ»å
é¿ï¼å
æ¬å
头åå
å°¾ï¼ |
| | | * @param dataCode åè½ç |
| | | * @param data æ°æ® |
| | | * @throws Exception å¼å¸¸ |
| | | */ |
| | | protected void doParse(byte[] bs, int bsLen, String dataCode, Data data) throws Exception { |
| | | //没æå
·ä½æ°æ® |
| | | } |
| | | } |
| | |
| | | protected void doParse(byte[] bs, int bsLen, String dataCode, Data data) throws Exception { |
| | | DataV1_0_1 dV1 = (DataV1_0_1)data.getSubData() ; |
| | | DataCd92Vo cdData = new DataCd92Vo() ; |
| | | dV1.dataCd92Vo = cdData ; |
| | | dV1.subData = cdData ; |
| | | String bin = ByteUtil.byte2Binary(bs[ProtocolConstantV206V1_0_0.dataIndex]); |
| | | if(bin.startsWith("1010")){ |
| | | cdData.success = true ; |
| | |
| | | protected void doParse(byte[] bs, int bsLen, String dataCode, Data data) throws Exception { |
| | | DataV1_0_1 dV1 = (DataV1_0_1)data.getSubData() ; |
| | | DataCd93Vo cdData = new DataCd93Vo() ; |
| | | dV1.dataCd93Vo = cdData ; |
| | | dV1.subData = cdData ; |
| | | String bin = ByteUtil.byte2Binary(bs[ProtocolConstantV206V1_0_0.dataIndex]); |
| | | if(bin.startsWith("1010")){ |
| | | cdData.success = true ; |
| | |
| | | */ |
| | | String param = (String)para.param ; |
| | | if(param == null || param.trim().equals("")){ |
| | | throw new Exception("æªæä¾å½ä»¤åæ°æ°æ®ï¼ä¸è½æé åè½ç 为" + CodeV1_0_1.cd_97 + "çä¸è¡å½ä»¤") ; |
| | | throw new Exception("æªæä¾å½ä»¤åæ°æ°æ®ï¼ä¸è½æé åè½ç 为" + para.commandCode + "çä¸è¡å½ä»¤") ; |
| | | }else{ |
| | | String[] params = ((String)para.param).split(",") ; |
| | | if(params == null || params.length != 3){ |
| | | throw new Exception("å½ä»¤åæ°æ°æ®ä¸æ£ç¡®ï¼ä¸è½æé åè½ç 为" + CodeV1_0_1.cd_97 + "çä¸è¡å½ä»¤") ; |
| | | throw new Exception("å½ä»¤åæ°æ°æ®ä¸æ£ç¡®ï¼ä¸è½æé åè½ç 为" + para.commandCode + "çä¸è¡å½ä»¤") ; |
| | | }else{ |
| | | byte index1 = 0 ; |
| | | byte[] bs = new byte[11] ; |
| | |
| | | protected void doParse(byte[] bs, int bsLen, String dataCode, Data data) throws Exception { |
| | | DataV1_0_1 dV1 = (DataV1_0_1)data.getSubData() ; |
| | | DataCd97Vo cdData = new DataCd97Vo() ; |
| | | dV1.dataCd97Vo = cdData ; |
| | | dV1.subData = cdData ; |
| | | //èæå¡å· |
| | | cdData.cardNo = ByteUtil.BCD2String_LE(bs, ProtocolConstantV206V1_0_0.dataIndex, ProtocolConstantV206V1_0_0.dataIndex+4) ; |
| | | if(bs[ProtocolConstantV206V1_0_0.dataIndex + 5] == (byte)0xAA){ |
| | |
| | | åæ°æ ¼å¼ï¼ èæå¡å· |
| | | */ |
| | | if(para.param == null ||((String)para.param).trim().equals("")){ |
| | | throw new Exception("æªæä¾å½ä»¤åæ°æ°æ®ï¼ä¸è½æé åè½ç 为" + CodeV1_0_1.cd_98 + "çä¸è¡å½ä»¤") ; |
| | | throw new Exception("æªæä¾å½ä»¤åæ°æ°æ®ï¼ä¸è½æé åè½ç 为" + para.commandCode + "çä¸è¡å½ä»¤") ; |
| | | }else{ |
| | | byte[] bs = new byte[5] ; |
| | | ByteUtil.string2BCD_LE(bs, ((String)para.param).trim(), 0) ; |
| | |
| | | protected void doParse(byte[] bs, int bsLen, String dataCode, Data data) throws Exception { |
| | | DataV1_0_1 dV1 = (DataV1_0_1)data.getSubData() ; |
| | | DataCd98Vo cdData = new DataCd98Vo() ; |
| | | dV1.dataCd98Vo = cdData ; |
| | | dV1.subData = cdData ; |
| | | //èæå¡å· |
| | | cdData.cardNo = ByteUtil.BCD2String_LE(bs, ProtocolConstantV206V1_0_0.dataIndex, ProtocolConstantV206V1_0_0.dataIndex+4) ; |
| | | if(bs[ProtocolConstantV206V1_0_0.dataIndex + 5] == (byte)0xAA){ |
| | |
| | | protected void doParse(byte[] bs, int bsLen, String dataCode, Data data) throws Exception { |
| | | DataV1_0_1 dV1 = (DataV1_0_1)data.getSubData() ; |
| | | DataCdC0Vo cdData = new DataCdC0Vo() ; |
| | | dV1.dataCdC0Vo = cdData ; |
| | | dV1.subData = cdData ; |
| | | |
| | | boolean hasWaterAmount = false ;//æ¯å¦ææµéæ°æ® |
| | | boolean hasWaterPress = false ;//æ¯å¦ææ°´åæ°æ® |
| | |
| | | tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ; |
| | | index++ ; |
| | | cdData.batteryVolt += tpInt; |
| | | //太é³è½çµåï¼4åèBCDç ï¼åå¼èå´0~99.99ï¼åä½ä¸ºVã |
| | | tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ; |
| | | index++ ; |
| | | cdData.sunVolt += tpInt/100.0 ; |
| | | tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ; |
| | | index++ ; |
| | | cdData.sunVolt += tpInt; |
| | | // //太é³è½çµåï¼4åèBCDç ï¼åå¼èå´0~99.99ï¼åä½ä¸ºVã |
| | | // tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ; |
| | | // index++ ; |
| | | // cdData.sunVolt += tpInt/100.0 ; |
| | | // tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ; |
| | | // index++ ; |
| | | // cdData.sunVolt += tpInt; |
| | | } |
| | | if(hasSignal){ |
| | | //ä¿¡å·å¼ºåº¦ï¼1åèBCDç ï¼åå¼èå´0~99ã |
| | |
| | | index++ ; |
| | | dt = ByteUtil.BCD2String_BE(bs, index, index) + " " + dt ;//æ¥ |
| | | index++ ; |
| | | bs[index] = (byte)(bs[index] & 0x10); |
| | | //bs[index] = (byte)(bs[index] & 0x10); |
| | | dt = ByteUtil.BCD2String_BE(bs, index, index) + "-" + dt ;//æ |
| | | index++ ; |
| | | dt = "20" + ByteUtil.BCD2String_BE(bs, index, index) + "-" + dt ;//å¹´ |
New file |
| | |
| | | 鳿»ç¦»èåï¼åºå
è°äºæé¡¹ç®è¦æ±ï¼æ
§å¾ï¼ï¼åäºéä¿¡å议修æ¹ï¼ |
| | | å¨ä»ç¦»èåï¼ä»é©æå¤å¾å°ææ°åè®®ï¼å¹¶åäºé¨åå议软件å®ç°ä¿®æ¹ï¼ |
| | | åç°æ°åè®®ä¸æä¸äºåè®®å®ä¹æéå¤ï¼ä¹æé误çï¼æä»¥è¿çæ¬åè®®æªå
¨é¨å®ç°ï¼ |
| | | ä½å®ç°çé¨åå¯ä»¥ç¨æ¥æµè¯æµæ§ä¸ä½éï¼ä¸æ®µå¿å¼ºä¸èµ·æµè¯è¿ï¼ã |
| | | ç®åæ
åµä¸ï¼è¿çæ¬åè®®å®ç°ä¸è½åºç¨äºå®é
项ç®ä¸ï¼å¦æå¿
é¡»å®ç°ï¼ |
| | | è¿éè¦ç»å硬件åè®®å
·ä½å®ç°å
容åå®ç°éä¿¡ä¸é´ä»¶çå议解æä¸æé é¨åï¼ |
| | | è¿éè¦å®ç°ä¸è¡æ°æ®å¤ç任塿 é¨åã |
| | |
| | | |
| | | import com.baomidou.mybatisplus.annotation.*; |
| | | import com.fasterxml.jackson.annotation.JsonFormat; |
| | | import lombok.Data; |
| | | import org.apache.ibatis.type.JdbcType; |
| | | |
| | | import java.io.Serializable; |
| | | import java.util.Date; |
| | | |
| | | /** |
| | |
| | | throw new Exception("byte2Intæ¶æ°ç»è¶ç"); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * å°ç«¯æ¨¡å¼ãæ°æ®ä½ä½å¨æ°ç»ä½åèã |
| | | * 䏿¹æ³bytes2Intç®æ³ä¸æ ·ï¼åªæ¯æé¡ºåºåè¿æ¥ |
| | | * @param bs åèæ°ç» |
| | | * @param from åèæ°ç»èµ·å§ä½ç½® |
| | | * @param has3Byte æ¯å¦å
嫿°æ®ä¸æ 为3çåèï¼å¦æä¸å
å«å®é
å¤ççæ¯3åèçæ´æ° |
| | | * @return |
| | | */ |
| | | public static long bytes2Int_LE(byte[] bs, int from, boolean has3Byte) throws Exception { |
| | | boolean b = isOutOfArrLength(bs.length, (from - 1) + 4); |
| | | if (!b) { |
| | | long s = 0; |
| | | long s0 = bs[from + 0] & 0xFF ;// æ°æ®çæä½ä½å¨ä½åè |
| | | long s1 = bs[from + 1] & 0xFF ; |
| | | long s2 = bs[from + 2] & 0xFF ; |
| | | long s3 = 0L ; |
| | | if(!has3Byte){ |
| | | s3 = bs[from + 3] & 0xFF ; |
| | | } |
| | | |
| | | |
| | | // S0ä¸å |
| | | s1 <<= 8; |
| | | s2 <<= 16; |
| | | s3 <<= 24; |
| | | s = s0 | s1 | s2 | s3; |
| | | if(s < 0){ |
| | | //s = Integer.MAX_VALUE -s ; |
| | | s = Integer.MAX_VALUE * 2 + 1 + s + 1 ; |
| | | } |
| | | return s; |
| | | } else { |
| | | throw new Exception("byte2Intæ¶æ°ç»è¶ç"); |
| | | } |
| | | } |
| | | /** |
| | | * 大端模å¼ãæ°æ®ä½ä½å¨æ°ç»é«åèã |
| | | * æ 符å·shortç±»åè½¬æ¢æ2ä½byteæ°ç» |
| | |
| | | public class CRC8_for_2_0 { |
| | | |
| | | @SuppressWarnings("unused") |
| | | // public int CRC8(byte[] b, int from , int end){ |
| | | // int crc = 0; |
| | | // for(int i = from ; i <= end ; i++){ |
| | | // crc = crc ^ (b[i]); |
| | | // for(int j = 0; j < 8; j++) { |
| | | // if((crc & 0x80)!=0) { |
| | | // crc ^= 0xe5; |
| | | // } |
| | | // crc *= 2; |
| | | // } |
| | | // } |
| | | // return crc; |
| | | // } |
| | | |
| | | public int CRC8(byte[] b, int from , int end){ |
| | | int crc = 0; |
| | | for(int i = from ; i <= end ; i++){ |
| | | crc = crc ^ (b[i]); |
| | | for(int j = 0; j < 8; j++) { |
| | | if((crc & 0x80)!=0) { |
| | | crc ^= 0xe5; |
| | | } |
| | | crc *= 2; |
| | | int crc = 0; |
| | | for(int i = from ; i <= end ; i++){ |
| | | crc = crc ^ (b[i]); |
| | | for(int j = 0; j < 8; j++) { |
| | | if((crc & 0x80)!=0) { |
| | | crc *= 2; |
| | | crc ^= 0xe5; |
| | | }else{ |
| | | crc *= 2; |
| | | } |
| | | } |
| | | } |
| | | return crc; |
| | | } |
| | | } |
| | | return crc; |
| | | } |
| | | |
| | | } |
| | |
| | | com.dy.common.apiDoc.SpringApiConfig.class |
| | | }) }) |
| | | //@ComponentScan(basePackages = {"com.dy.common", "com.dy.pipIrrGlobal", "com.dy.aceMw"}) |
| | | @MapperScan(basePackages={"com.dy.pipIrrGlobal.test","com.dy.pipIrrGlobal.daoRm"}) |
| | | @MapperScan(basePackages={"com.dy.pipIrrGlobal"}) |
| | | public class PipIrrMwAcceptApplication implements CommandLineRunner { |
| | | |
| | | public static void main(String[] args) { |
| | |
| | | log.error("严éé误ï¼RTUä¸è¡æ°æ®ä¸ºç©ºï¼" ); |
| | | }else{ |
| | | if(data instanceof Data){ |
| | | this.toNextTasks(data); |
| | | //this.toNextTasks(data); |
| | | }else{ |
| | | log.error("严éé误ï¼è¯¥æ°æ®ç±»åï¼" + data.getClass().getName() + "ï¼ï¼æ¥æ¶æ°æ®ä»»å¡è¿æªå®ç°ï¼" ); |
| | | } |
| | |
| | | |
| | | @Service() |
| | | public class RtuSv { |
| | | @Autowired |
| | | public TestPo0Mapper dao0 ; |
| | | @Autowired |
| | | public TestPo1Mapper dao1 ; |
| | | @Autowired |
| | | public TestPo2Mapper dao2 ; |
| | | @Autowired |
| | | public TestPo3Mapper dao3 ; |
| | | @Autowired |
| | | public TestPo4Mapper dao4 ; |
| | | @Autowired |
| | | public TestPo5Mapper dao5 ; |
| | | @Autowired |
| | | public TestPo6Mapper dao6 ; |
| | | @Autowired |
| | | public TestPo7Mapper dao7 ; |
| | | @Autowired |
| | | public TestPo8Mapper dao8 ; |
| | | @Autowired |
| | | public TestPo9Mapper dao9 ; |
| | | |
| | | @Autowired |
| | | @Lazy |
| | | private RtuSv sv ; |
| | | |
| | | public int save(Data data){ |
| | | int count = 0 ; |
| | | if(data != null && data.getSubData() != null){ |
| | | Object obj = data.getSubData() ; |
| | | if(obj != null && obj instanceof DataV1_0_1){ |
| | | DataV1_0_1 dataV1_0_1 = (DataV1_0_1)obj ; |
| | | if(dataV1_0_1 != null && dataV1_0_1.dataCdC0Vo != null){ |
| | | //è§https://blog.csdn.net/qq_32590703/article/details/109320381 |
| | | //this.save0(dataV1_0_1)è¿ç§è°ç¨æ¹æ³save0ï¼save0ä¸ç注解ä¸çæï¼å 为éç¨AOPåï¼ä¼ç产代çç±»æ¥è¿è¡ |
| | | //count += ((RtuSv)AopContext.currentProxy()).save0(dataV1_0_1); |
| | | //count += ((RtuSv)AopContext.currentProxy()).save1(dataV1_0_1); |
| | | |
| | | count += sv.save0(dataV1_0_1); |
| | | count += sv.save1(dataV1_0_1); |
| | | count += sv.save2(dataV1_0_1); |
| | | count += sv.save3(dataV1_0_1); |
| | | count += sv.save4(dataV1_0_1); |
| | | count += sv.save5(dataV1_0_1); |
| | | count += sv.save6(dataV1_0_1); |
| | | count += sv.save7(dataV1_0_1); |
| | | count += sv.save8(dataV1_0_1); |
| | | count += sv.save9(dataV1_0_1); |
| | | } |
| | | } |
| | | } |
| | | return count ; |
| | | } |
| | | |
| | | @DataSourceSingle() |
| | | @Transactional |
| | | public int save0(DataV1_0_1 dataV1_0_1){ |
| | | TestPo0 po = new TestPo0() ; |
| | | po.rtuAddr = dataV1_0_1.rtuAddr ; |
| | | po.dt = new Date() ; |
| | | po.content = dataV1_0_1.dataCdC0Vo.toString() ; |
| | | return dao0.putin(po) ; |
| | | } |
| | | |
| | | @DataSourceSingle() |
| | | @Transactional |
| | | public int save1(DataV1_0_1 dataV1_0_1){ |
| | | TestPo1 po = new TestPo1() ; |
| | | po.rtuAddr = dataV1_0_1.rtuAddr ; |
| | | po.dt = new Date() ; |
| | | po.content = dataV1_0_1.dataCdC0Vo.toString() ; |
| | | return dao1.putin(po) ; |
| | | } |
| | | |
| | | @DataSourceSingle() |
| | | @Transactional |
| | | public int save2(DataV1_0_1 dataV1_0_1){ |
| | | TestPo2 po = new TestPo2() ; |
| | | po.rtuAddr = dataV1_0_1.rtuAddr ; |
| | | po.dt = new Date() ; |
| | | po.content = dataV1_0_1.dataCdC0Vo.toString() ; |
| | | return dao2.putin(po) ; |
| | | } |
| | | |
| | | @DataSourceSingle() |
| | | @Transactional |
| | | public int save3(DataV1_0_1 dataV1_0_1){ |
| | | TestPo3 po = new TestPo3() ; |
| | | po.rtuAddr = dataV1_0_1.rtuAddr ; |
| | | po.dt = new Date() ; |
| | | po.content = dataV1_0_1.dataCdC0Vo.toString() ; |
| | | return dao3.putin(po) ; |
| | | } |
| | | |
| | | @DataSourceSingle() |
| | | @Transactional |
| | | public int save4(DataV1_0_1 dataV1_0_1){ |
| | | TestPo4 po = new TestPo4() ; |
| | | po.rtuAddr = dataV1_0_1.rtuAddr ; |
| | | po.dt = new Date() ; |
| | | po.content = dataV1_0_1.dataCdC0Vo.toString() ; |
| | | return dao4.putin(po) ; |
| | | } |
| | | |
| | | @DataSourceSingle() |
| | | @Transactional |
| | | public int save5(DataV1_0_1 dataV1_0_1){ |
| | | TestPo5 po = new TestPo5() ; |
| | | po.rtuAddr = dataV1_0_1.rtuAddr ; |
| | | po.dt = new Date() ; |
| | | po.content = dataV1_0_1.dataCdC0Vo.toString() ; |
| | | return dao5.putin(po) ; |
| | | } |
| | | |
| | | @DataSourceSingle() |
| | | @Transactional |
| | | public int save6(DataV1_0_1 dataV1_0_1){ |
| | | TestPo6 po = new TestPo6() ; |
| | | po.rtuAddr = dataV1_0_1.rtuAddr ; |
| | | po.dt = new Date() ; |
| | | po.content = dataV1_0_1.dataCdC0Vo.toString() ; |
| | | return dao6.putin(po) ; |
| | | } |
| | | |
| | | @DataSourceSingle() |
| | | @Transactional |
| | | public int save7(DataV1_0_1 dataV1_0_1){ |
| | | TestPo7 po = new TestPo7() ; |
| | | po.rtuAddr = dataV1_0_1.rtuAddr ; |
| | | po.dt = new Date() ; |
| | | po.content = dataV1_0_1.dataCdC0Vo.toString() ; |
| | | return dao7.putin(po) ; |
| | | } |
| | | |
| | | @DataSourceSingle() |
| | | @Transactional |
| | | public int save8(DataV1_0_1 dataV1_0_1){ |
| | | TestPo8 po = new TestPo8() ; |
| | | po.rtuAddr = dataV1_0_1.rtuAddr ; |
| | | po.dt = new Date() ; |
| | | po.content = dataV1_0_1.dataCdC0Vo.toString() ; |
| | | return dao8.putin(po) ; |
| | | } |
| | | |
| | | @DataSourceSingle() |
| | | @Transactional |
| | | public int save9(DataV1_0_1 dataV1_0_1){ |
| | | TestPo9 po = new TestPo9() ; |
| | | po.rtuAddr = dataV1_0_1.rtuAddr ; |
| | | po.dt = new Date() ; |
| | | po.content = dataV1_0_1.dataCdC0Vo.toString() ; |
| | | return dao9.putin(po) ; |
| | | } |
| | | // @Autowired |
| | | // public TestPo0Mapper dao0 ; |
| | | // @Autowired |
| | | // public TestPo1Mapper dao1 ; |
| | | // @Autowired |
| | | // public TestPo2Mapper dao2 ; |
| | | // @Autowired |
| | | // public TestPo3Mapper dao3 ; |
| | | // @Autowired |
| | | // public TestPo4Mapper dao4 ; |
| | | // @Autowired |
| | | // public TestPo5Mapper dao5 ; |
| | | // @Autowired |
| | | // public TestPo6Mapper dao6 ; |
| | | // @Autowired |
| | | // public TestPo7Mapper dao7 ; |
| | | // @Autowired |
| | | // public TestPo8Mapper dao8 ; |
| | | // @Autowired |
| | | // public TestPo9Mapper dao9 ; |
| | | // |
| | | // @Autowired |
| | | // @Lazy |
| | | // private RtuSv sv ; |
| | | // |
| | | // public int save(Data data){ |
| | | // int count = 0 ; |
| | | // if(data != null && data.getSubData() != null){ |
| | | // Object obj = data.getSubData() ; |
| | | // if(obj != null && obj instanceof DataV1_0_1){ |
| | | // DataV1_0_1 dataV1_0_1 = (DataV1_0_1)obj ; |
| | | // if(dataV1_0_1 != null && dataV1_0_1.dataCdC0Vo != null){ |
| | | // //è§https://blog.csdn.net/qq_32590703/article/details/109320381 |
| | | // //this.save0(dataV1_0_1)è¿ç§è°ç¨æ¹æ³save0ï¼save0ä¸ç注解ä¸çæï¼å 为éç¨AOPåï¼ä¼ç产代çç±»æ¥è¿è¡ |
| | | // //count += ((RtuSv)AopContext.currentProxy()).save0(dataV1_0_1); |
| | | // //count += ((RtuSv)AopContext.currentProxy()).save1(dataV1_0_1); |
| | | // |
| | | // count += sv.save0(dataV1_0_1); |
| | | // count += sv.save1(dataV1_0_1); |
| | | // count += sv.save2(dataV1_0_1); |
| | | // count += sv.save3(dataV1_0_1); |
| | | // count += sv.save4(dataV1_0_1); |
| | | // count += sv.save5(dataV1_0_1); |
| | | // count += sv.save6(dataV1_0_1); |
| | | // count += sv.save7(dataV1_0_1); |
| | | // count += sv.save8(dataV1_0_1); |
| | | // count += sv.save9(dataV1_0_1); |
| | | // } |
| | | // } |
| | | // } |
| | | // return count ; |
| | | // } |
| | | // |
| | | // @DataSourceSingle() |
| | | // @Transactional |
| | | // public int save0(DataV1_0_1 dataV1_0_1){ |
| | | // TestPo0 po = new TestPo0() ; |
| | | // po.rtuAddr = dataV1_0_1.rtuAddr ; |
| | | // po.dt = new Date() ; |
| | | // po.content = dataV1_0_1.dataCdC0Vo.toString() ; |
| | | // return dao0.putin(po) ; |
| | | // } |
| | | // |
| | | // @DataSourceSingle() |
| | | // @Transactional |
| | | // public int save1(DataV1_0_1 dataV1_0_1){ |
| | | // TestPo1 po = new TestPo1() ; |
| | | // po.rtuAddr = dataV1_0_1.rtuAddr ; |
| | | // po.dt = new Date() ; |
| | | // po.content = dataV1_0_1.dataCdC0Vo.toString() ; |
| | | // return dao1.putin(po) ; |
| | | // } |
| | | // |
| | | // @DataSourceSingle() |
| | | // @Transactional |
| | | // public int save2(DataV1_0_1 dataV1_0_1){ |
| | | // TestPo2 po = new TestPo2() ; |
| | | // po.rtuAddr = dataV1_0_1.rtuAddr ; |
| | | // po.dt = new Date() ; |
| | | // po.content = dataV1_0_1.dataCdC0Vo.toString() ; |
| | | // return dao2.putin(po) ; |
| | | // } |
| | | // |
| | | // @DataSourceSingle() |
| | | // @Transactional |
| | | // public int save3(DataV1_0_1 dataV1_0_1){ |
| | | // TestPo3 po = new TestPo3() ; |
| | | // po.rtuAddr = dataV1_0_1.rtuAddr ; |
| | | // po.dt = new Date() ; |
| | | // po.content = dataV1_0_1.dataCdC0Vo.toString() ; |
| | | // return dao3.putin(po) ; |
| | | // } |
| | | // |
| | | // @DataSourceSingle() |
| | | // @Transactional |
| | | // public int save4(DataV1_0_1 dataV1_0_1){ |
| | | // TestPo4 po = new TestPo4() ; |
| | | // po.rtuAddr = dataV1_0_1.rtuAddr ; |
| | | // po.dt = new Date() ; |
| | | // po.content = dataV1_0_1.dataCdC0Vo.toString() ; |
| | | // return dao4.putin(po) ; |
| | | // } |
| | | // |
| | | // @DataSourceSingle() |
| | | // @Transactional |
| | | // public int save5(DataV1_0_1 dataV1_0_1){ |
| | | // TestPo5 po = new TestPo5() ; |
| | | // po.rtuAddr = dataV1_0_1.rtuAddr ; |
| | | // po.dt = new Date() ; |
| | | // po.content = dataV1_0_1.dataCdC0Vo.toString() ; |
| | | // return dao5.putin(po) ; |
| | | // } |
| | | // |
| | | // @DataSourceSingle() |
| | | // @Transactional |
| | | // public int save6(DataV1_0_1 dataV1_0_1){ |
| | | // TestPo6 po = new TestPo6() ; |
| | | // po.rtuAddr = dataV1_0_1.rtuAddr ; |
| | | // po.dt = new Date() ; |
| | | // po.content = dataV1_0_1.dataCdC0Vo.toString() ; |
| | | // return dao6.putin(po) ; |
| | | // } |
| | | // |
| | | // @DataSourceSingle() |
| | | // @Transactional |
| | | // public int save7(DataV1_0_1 dataV1_0_1){ |
| | | // TestPo7 po = new TestPo7() ; |
| | | // po.rtuAddr = dataV1_0_1.rtuAddr ; |
| | | // po.dt = new Date() ; |
| | | // po.content = dataV1_0_1.dataCdC0Vo.toString() ; |
| | | // return dao7.putin(po) ; |
| | | // } |
| | | // |
| | | // @DataSourceSingle() |
| | | // @Transactional |
| | | // public int save8(DataV1_0_1 dataV1_0_1){ |
| | | // TestPo8 po = new TestPo8() ; |
| | | // po.rtuAddr = dataV1_0_1.rtuAddr ; |
| | | // po.dt = new Date() ; |
| | | // po.content = dataV1_0_1.dataCdC0Vo.toString() ; |
| | | // return dao8.putin(po) ; |
| | | // } |
| | | // |
| | | // @DataSourceSingle() |
| | | // @Transactional |
| | | // public int save9(DataV1_0_1 dataV1_0_1){ |
| | | // TestPo9 po = new TestPo9() ; |
| | | // po.rtuAddr = dataV1_0_1.rtuAddr ; |
| | | // po.dt = new Date() ; |
| | | // po.content = dataV1_0_1.dataCdC0Vo.toString() ; |
| | | // return dao9.putin(po) ; |
| | | // } |
| | | } |
| | |
| | | if(dV1_0_1 != null){ |
| | | //dV1_0_1.dataCd81Vo ä¸ dV1_0_1.dataCdC0Vo ä¸ä¼åæ¶æå¼ |
| | | try{ |
| | | if(dV1_0_1.dataCd81Vo != null){ |
| | | if(dV1_0_1.dataCd81Vo.alarmVo != null || dV1_0_1.dataCd81Vo.stateVo != null){ |
| | | Object[] objs = this.getTaskResults(TkPreGenObjs.taskId) ; |
| | | DbSv sv = (DbSv)objs[0] ; |
| | | PrController controller = (PrController)objs[1] ; |
| | | this.saveOrUpdateLast(sv, controller, d.getRtuAddr(), dV1_0_1.dataCd81Vo.rtuDt, dV1_0_1, dV1_0_1.dataCd81Vo.alarmVo, dV1_0_1.dataCd81Vo.stateVo) ; |
| | | this.saveHistory(sv, controller, d.getRtuAddr(), dV1_0_1.dataCd81Vo.rtuDt, dV1_0_1, dV1_0_1.dataCd81Vo.alarmVo, dV1_0_1.dataCd81Vo.stateVo) ; |
| | | } |
| | | } else if(dV1_0_1.dataCdC0Vo != null){ |
| | | if(dV1_0_1.dataCdC0Vo.alarmVo != null || dV1_0_1.dataCdC0Vo.stateVo != null){ |
| | | Object[] objs = this.getTaskResults(TkPreGenObjs.taskId) ; |
| | | DbSv sv = (DbSv)objs[0] ; |
| | | PrController controller = (PrController)objs[1] ; |
| | | this.saveOrUpdateLast(sv, controller, d.getRtuAddr(), dV1_0_1.dataCdC0Vo.rtuDt, dV1_0_1, dV1_0_1.dataCdC0Vo.alarmVo, dV1_0_1.dataCdC0Vo.stateVo) ; |
| | | this.saveHistory(sv, controller, d.getRtuAddr(), dV1_0_1.dataCdC0Vo.rtuDt, dV1_0_1, dV1_0_1.dataCdC0Vo.alarmVo, dV1_0_1.dataCdC0Vo.stateVo) ; |
| | | } |
| | | } |
| | | // if(dV1_0_1.dataCd81Vo != null){ |
| | | // if(dV1_0_1.dataCd81Vo.alarmVo != null || dV1_0_1.dataCd81Vo.stateVo != null){ |
| | | // Object[] objs = this.getTaskResults(TkPreGenObjs.taskId) ; |
| | | // DbSv sv = (DbSv)objs[0] ; |
| | | // PrController controller = (PrController)objs[1] ; |
| | | // this.saveOrUpdateLast(sv, controller, d.getRtuAddr(), dV1_0_1.dataCd81Vo.rtuDt, dV1_0_1, dV1_0_1.dataCd81Vo.alarmVo, dV1_0_1.dataCd81Vo.stateVo) ; |
| | | // this.saveHistory(sv, controller, d.getRtuAddr(), dV1_0_1.dataCd81Vo.rtuDt, dV1_0_1, dV1_0_1.dataCd81Vo.alarmVo, dV1_0_1.dataCd81Vo.stateVo) ; |
| | | // } |
| | | // } else if(dV1_0_1.dataCdC0Vo != null){ |
| | | // if(dV1_0_1.dataCdC0Vo.alarmVo != null || dV1_0_1.dataCdC0Vo.stateVo != null){ |
| | | // Object[] objs = this.getTaskResults(TkPreGenObjs.taskId) ; |
| | | // DbSv sv = (DbSv)objs[0] ; |
| | | // PrController controller = (PrController)objs[1] ; |
| | | // this.saveOrUpdateLast(sv, controller, d.getRtuAddr(), dV1_0_1.dataCdC0Vo.rtuDt, dV1_0_1, dV1_0_1.dataCdC0Vo.alarmVo, dV1_0_1.dataCdC0Vo.stateVo) ; |
| | | // this.saveHistory(sv, controller, d.getRtuAddr(), dV1_0_1.dataCdC0Vo.rtuDt, dV1_0_1, dV1_0_1.dataCdC0Vo.alarmVo, dV1_0_1.dataCdC0Vo.stateVo) ; |
| | | // } |
| | | // } |
| | | }catch (Exception e){ |
| | | log.error("ä¿åæ§å¶å¨æ¥è¦åç¶ææ°æ®æ¶åçå¼å¸¸", e); |
| | | } |
| | |
| | | Object subD = d.getSubData(); |
| | | if (subD != null) { |
| | | DataV1_0_1 dV1_0_1 = (DataV1_0_1) subD; |
| | | if (dV1_0_1 != null && dV1_0_1.dataCdC0Vo != null) { |
| | | Object[] objs = this.getTaskResults(TkPreGenObjs.taskId) ; |
| | | DbSv sv = (DbSv)objs[0] ; |
| | | PrController controller = (PrController)objs[1] ; |
| | | try{ |
| | | this.saveOrUpdateLast(sv, controller, d.getRtuAddr(), dV1_0_1, dV1_0_1.dataCdC0Vo) ; |
| | | this.saveHistory(sv, controller, d.getRtuAddr(),dV1_0_1, dV1_0_1.dataCdC0Vo) ; |
| | | }catch (Exception e){ |
| | | log.error("ä¿åæ§å¶å¨èªæ¥æ°æ®æ¶åçå¼å¸¸", e); |
| | | } |
| | | } |
| | | // if (dV1_0_1 != null && dV1_0_1.dataCdC0Vo != null) { |
| | | // Object[] objs = this.getTaskResults(TkPreGenObjs.taskId) ; |
| | | // DbSv sv = (DbSv)objs[0] ; |
| | | // PrController controller = (PrController)objs[1] ; |
| | | // try{ |
| | | // this.saveOrUpdateLast(sv, controller, d.getRtuAddr(), dV1_0_1, dV1_0_1.dataCdC0Vo) ; |
| | | // this.saveHistory(sv, controller, d.getRtuAddr(),dV1_0_1, dV1_0_1.dataCdC0Vo) ; |
| | | // }catch (Exception e){ |
| | | // log.error("ä¿åæ§å¶å¨èªæ¥æ°æ®æ¶åçå¼å¸¸", e); |
| | | // } |
| | | // } |
| | | } |
| | | } |
| | | /** |
| | |
| | | Object subD = d.getSubData(); |
| | | if (subD != null) { |
| | | DataV1_0_1 dV1_0_1 = (DataV1_0_1) subD; |
| | | if (dV1_0_1 != null && dV1_0_1.dataCd83CloseVo != null) { |
| | | Object[] objs = this.getTaskResults(TkPreGenObjs.taskId) ; |
| | | DbSv sv = (DbSv)objs[0] ; |
| | | PrController controller = (PrController)objs[1] ; |
| | | try{ |
| | | this.doDeal(sv, controller, d.getRtuAddr(), dV1_0_1, dV1_0_1.dataCd83CloseVo) ; |
| | | }catch (Exception e){ |
| | | log.error("ä¿åæ§å¶å¨å
³é䏿¥æ¶åçå¼å¸¸", e); |
| | | } |
| | | } |
| | | // if (dV1_0_1 != null && dV1_0_1.dataCd83CloseVo != null) { |
| | | // Object[] objs = this.getTaskResults(TkPreGenObjs.taskId) ; |
| | | // DbSv sv = (DbSv)objs[0] ; |
| | | // PrController controller = (PrController)objs[1] ; |
| | | // try{ |
| | | // this.doDeal(sv, controller, d.getRtuAddr(), dV1_0_1, dV1_0_1.dataCd83CloseVo) ; |
| | | // }catch (Exception e){ |
| | | // log.error("ä¿åæ§å¶å¨å
³é䏿¥æ¶åçå¼å¸¸", e); |
| | | // } |
| | | // } |
| | | } |
| | | } |
| | | /** |
| | |
| | | private void doDeal(DbSv sv, PrController controller, String rtuAddr, DataV1_0_1 dV1_0_1, DataCd83CloseVo dataCd83CloseVo) throws Exception { |
| | | RmOpenCloseValveLast poLast = sv.getRmOpenCloseValveLast(rtuAddr) ; |
| | | if(poLast == null){ |
| | | //é¦å
çæææ°æ°æ®åå岿°æ®ï¼å¹¶å
ä¿åå岿°æ® |
| | | //æ°æ®åºä¸ä¸åå¨è¯¥æ§å¶å¨çå¼å
³éæ°æ® |
| | | //é¦å
çæææ°æ°æ®åå岿°æ®ï¼å¹¶å
ä¿å |
| | | poLast = this.newRmOpenCloseValveLast(controller, rtuAddr, dV1_0_1, dataCd83CloseVo); |
| | | this.newHistoryDataDeal(sv, controller, rtuAddr, dV1_0_1, dataCd83CloseVo, poLast); |
| | | //ä¿åææ°æ°æ® |
| | | sv.saveRmOpenCloseValveLast(poLast); |
| | | }else{ |
| | | //if(DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dataCd83CloseVo.closeDt).equals(poLast.closeDt)){ |
| | | // //æ¶é´ä¸è´ï¼éå¤ä¸æ¥æ°æ®ï¼ä¸è¿è¡ä»»ä½å¤ç |
| | | //}else{ |
| | | if(poLast.clType == null){ |
| | | //åè®°å½ä¸åå¨å
³éæ°æ®ï¼æä»¥å½åå
³é䏿¥æ¯æ°ç䏿¬¡å
³éï¼ä¿çåè®°å½å¼éæ°æ® |
| | | this.updateCloseValve(controller, poLast, null, dV1_0_1, dataCd83CloseVo, false) ; |
| | | if(poLast.opType == null){ |
| | | //åè®°å½ä¸ä¸åå¨å¼éæ°æ®ï¼æ²¡åè¿è¡å¹é
|
| | | //çæå¹¶ä¿åæ°çå
³é䏿¥å岿°æ®è®°å½ |
| | | this.newHistoryDataDeal(sv, controller, rtuAddr, dV1_0_1, dataCd83CloseVo, poLast); |
| | | }else{ |
| | | //åè®°å½ä¸åå¨å¼éæ°æ®ï¼è¿è¡å岿°æ®å¹é
|
| | | RmOpenCloseValveHistory poHistory = null ; |
| | | if(poLast.lastHistoryId != null){ |
| | | poHistory = sv.getRmOpenCloseValveHistory(poLast.lastHistoryId) ; |
| | | if(poHistory != null){ |
| | | sv.updateRmOpenCloseValveHistory(poHistory); |
| | | }else{ |
| | | //没æå岿°æ®ï¼çæå¹¶ä¿åæ°çå
³é䏿¥å岿°æ®è®°å½ |
| | | this.newHistoryDataDeal(sv, controller, rtuAddr, dV1_0_1, dataCd83CloseVo, poLast); |
| | | } |
| | | if(poLast.clType == null){ |
| | | //åè®°å½ä¸åå¨å
³éæ°æ®ï¼æä»¥å½åå
³é䏿¥æ¯æ°ç䏿¬¡å
³éï¼ä¿çåè®°å½ä¸çå¼éæ°æ® |
| | | this.updateCloseValve(controller, poLast, null, dV1_0_1, dataCd83CloseVo, false) ; |
| | | if(poLast.opType == null){ |
| | | //åè®°å½ä¸ä¸åå¨å¼éæ°æ®ï¼æ²¡åæ³è¿è¡å¹é
|
| | | //çæå¹¶ä¿åæ°çå
³é䏿¥å岿°æ®è®°å½ |
| | | this.newHistoryDataDeal(sv, controller, rtuAddr, dV1_0_1, dataCd83CloseVo, poLast); |
| | | }else{ |
| | | //åè®°å½ä¸åå¨å¼éæ°æ®ï¼è¿è¡å岿°æ®å¹é
|
| | | RmOpenCloseValveHistory poHistory = null ; |
| | | if(poLast.lastHistoryId != null){ |
| | | poHistory = sv.getRmOpenCloseValveHistory(poLast.lastHistoryId) ; |
| | | if(poHistory != null){ |
| | | sv.updateRmOpenCloseValveHistory(poHistory); |
| | | }else{ |
| | | //没æå岿°æ®ï¼çæå¹¶ä¿åæ°çå
³é䏿¥å岿°æ®è®°å½ |
| | | this.newHistoryDataDeal(sv, controller, rtuAddr, dV1_0_1, dataCd83CloseVo, poLast); |
| | | } |
| | | } |
| | | }else if(poLast.opType != null){ |
| | | //åè®°å½åå¨å
³éæ°æ®ï¼ä¹åå¨å¼éæ°æ®ï¼é¦å
è¿è¡å¼å
³éæ¶é´å¯¹æ¯ |
| | | if(poLast.closeDt != null && poLast.closeDt.after(DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dataCd83CloseVo.closeDt))){ |
| | | //è¡¥æ¥ç许ä¹
ä¹åçæ°æ®ï¼ä¸è¿è¡å¤ç |
| | | }else if(poLast.closeDt != null && poLast.closeDt.equals(DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dataCd83CloseVo.closeDt))){ |
| | | //éå¤ä¸æ¥äºï¼ä¸è¿è¡å¤ç |
| | | }else { |
| | | //å½å䏿¥çå
³éæ°æ®æäºåæ¥çå
³éæ°æ®ï¼æ¯æ°ç䏿¥å
³éæ°æ® |
| | | }else{ |
| | | //没æå岿°æ®ï¼çæå¹¶ä¿åæ°çå
³é䏿¥å岿°æ®è®°å½ |
| | | this.newHistoryDataDeal(sv, controller, rtuAddr, dV1_0_1, dataCd83CloseVo, poLast); |
| | | } |
| | | }else{ |
| | | //if(po.opType == null) |
| | | //åè®°å½ä¸åå¨å¼éæ°æ®ä¹ä¸åå¨å
³éæ°æ®ï¼è¿ç§æ
åµä¸åå¨ï¼ä½ä¸ºå®å
¨ä¹è¿è¡å¤ç |
| | | this.updateCloseValve(controller,poLast, null, dV1_0_1, dataCd83CloseVo, false) ; |
| | | //çæå¹¶ä¿åæ°çå
³é䏿¥å岿°æ®è®°å½ |
| | | } |
| | | }else if(poLast.opType != null){ |
| | | //åè®°å½åå¨å
³éæ°æ®ï¼ä¹åå¨å¼éæ°æ®ï¼é¦å
è¿è¡å¼å
³éæ¶é´å¯¹æ¯ |
| | | if(poLast.closeDt != null && poLast.closeDt.after(DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dataCd83CloseVo.closeDt))){ |
| | | //è¡¥æ¥ç许ä¹
ä¹åçæ°æ®ï¼ä¸è¿è¡å¤ç |
| | | }else if(poLast.closeDt != null && poLast.closeDt.equals(DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dataCd83CloseVo.closeDt))){ |
| | | //éå¤ä¸æ¥äºï¼ä¸è¿è¡å¤ç |
| | | }else { |
| | | //å½å䏿¥çå
³éæ°æ®æäºåæ¥çå
³éæ°æ®ï¼æ¯æ°ç䏿¥å
³éæ°æ® |
| | | this.newHistoryDataDeal(sv, controller, rtuAddr, dV1_0_1, dataCd83CloseVo, poLast); |
| | | } |
| | | }else{ |
| | | //if(po.opType == null) |
| | | //åè®°å½ä¸åå¨å¼éæ°æ®ä¹ä¸åå¨å
³éæ°æ®ï¼è¿ç§æ
åµä¸åå¨ï¼ä½ä¸ºå®å
¨ä¹è¿è¡å¤ç |
| | | this.updateCloseValve(controller,poLast, null, dV1_0_1, dataCd83CloseVo, false) ; |
| | | //çæå¹¶ä¿åæ°çå
³é䏿¥å岿°æ®è®°å½ |
| | | this.newHistoryDataDeal(sv, controller, rtuAddr, dV1_0_1, dataCd83CloseVo, poLast); |
| | | } |
| | | |
| | | sv.updateRmOpenCloseValveLast(poLast); |
| | | //} |
| | | sv.updateRmOpenCloseValveLast(poLast); |
| | | } |
| | | } |
| | | |
| | |
| | | Object subD = d.getSubData(); |
| | | if (subD != null) { |
| | | DataV1_0_1 dV1_0_1 = (DataV1_0_1) subD; |
| | | if (dV1_0_1 != null && dV1_0_1.dataCdC0Vo != null) { |
| | | Object[] objs = this.getTaskResults(TkPreGenObjs.taskId); |
| | | DbSv sv = (DbSv) objs[0]; |
| | | PrController controller = (PrController) objs[1]; |
| | | try { |
| | | this.doDeal(sv, controller, d.getRtuAddr(), dV1_0_1, dV1_0_1.dataCdC0Vo); |
| | | } catch (Exception e) { |
| | | log.error("ä¿åæ§å¶å¨å¼é䏿¥æ¶åçå¼å¸¸", e); |
| | | } |
| | | } |
| | | // if (dV1_0_1 != null && dV1_0_1.dataCdC0Vo != null) { |
| | | // Object[] objs = this.getTaskResults(TkPreGenObjs.taskId); |
| | | // DbSv sv = (DbSv) objs[0]; |
| | | // PrController controller = (PrController) objs[1]; |
| | | // try { |
| | | // this.doDeal(sv, controller, d.getRtuAddr(), dV1_0_1, dV1_0_1.dataCdC0Vo); |
| | | // } catch (Exception e) { |
| | | // log.error("ä¿åæ§å¶å¨å¼é䏿¥æ¶åçå¼å¸¸", e); |
| | | // } |
| | | // } |
| | | } |
| | | } |
| | | |
| | |
| | | private void doDeal(DbSv sv, PrController controller, String rtuAddr, DataV1_0_1 dV1_0_1, DataCdC0Vo dataCdC0Vo) throws Exception { |
| | | RmLossLast poLast = sv.getRmLossLast(rtuAddr); |
| | | if (poLast == null) { |
| | | //é¦å
çæå岿°æ®ï¼å¹¶ä¿å |
| | | //æ°æ®åºä¸ä¸åå¨è¯¥æ§å¶å¨çæ¼ææ°æ® |
| | | //é¦å
çæææ°æ°æ®åå岿°æ®ï¼å¹¶å
ä¿å |
| | | poLast = this.newRmLossLast(controller, rtuAddr, dV1_0_1, dataCdC0Vo); |
| | | this.newAndSaveHistoryDataDeal(sv, controller, rtuAddr, dV1_0_1, dataCdC0Vo, poLast); |
| | | sv.saveRmLossLast(poLast); |
| | |
| | | } |
| | | if(DateTime.dateFrom_yyyy_MM_dd1(dV1_0_1.dt).equals(poLast.dt)){ |
| | | //åä¸å¤©æ°æ® |
| | | poLast.lossAmount = (poLast.lossAmount == null?0.0:poLast.lossAmount) + (dataCdC0Vo.lossAmount == null?0.0:dataCdC0Vo.lossAmount) ; |
| | | poLast.lossAmount = dataCdC0Vo.lossAmount ; |
| | | poLast.dtLast = DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dV1_0_1.dt) ; |
| | | poLast.dtRtu = DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dataCdC0Vo.rtuDt) ; |
| | | sv.updateRmLossLast(poLast); |
| | | |
| | | poHistory.lossAmount = (poLast.lossAmount == null?0.0:poLast.lossAmount) + (dataCdC0Vo.lossAmount == null?0.0:dataCdC0Vo.lossAmount) ; |
| | | poHistory.lossAmount = dataCdC0Vo.lossAmount ; |
| | | poHistory.dtLast = DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dV1_0_1.dt) ; |
| | | poHistory.dtRtu = DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dataCdC0Vo.rtuDt) ; |
| | | sv.updateRmLossHistory(poHistory); |
| | |
| | | Object subD = d.getSubData(); |
| | | if (subD != null) { |
| | | DataV1_0_1 dV1_0_1 = (DataV1_0_1) subD; |
| | | if (dV1_0_1 != null && dV1_0_1.dataCd83OpenVo != null) { |
| | | Object[] objs = this.getTaskResults(TkPreGenObjs.taskId) ; |
| | | DbSv sv = (DbSv)objs[0] ; |
| | | PrController controller = (PrController)objs[1] ; |
| | | try{ |
| | | this.doDeal(sv, controller, d.getRtuAddr(), dV1_0_1, dV1_0_1.dataCd83OpenVo) ; |
| | | }catch (Exception e){ |
| | | log.error("ä¿åæ§å¶å¨å¼é䏿¥æ¶åçå¼å¸¸", e); |
| | | } |
| | | } |
| | | // if (dV1_0_1 != null && dV1_0_1.dataCd83OpenVo != null) { |
| | | // Object[] objs = this.getTaskResults(TkPreGenObjs.taskId) ; |
| | | // DbSv sv = (DbSv)objs[0] ; |
| | | // PrController controller = (PrController)objs[1] ; |
| | | // try{ |
| | | // this.doDeal(sv, controller, d.getRtuAddr(), dV1_0_1, dV1_0_1.dataCd83OpenVo) ; |
| | | // }catch (Exception e){ |
| | | // log.error("ä¿åæ§å¶å¨å¼é䏿¥æ¶åçå¼å¸¸", e); |
| | | // } |
| | | // } |
| | | } |
| | | } |
| | | /** |
| | |
| | | private void doDeal(DbSv sv, PrController controller, String rtuAddr, DataV1_0_1 dV1_0_1, DataCd83OpenVo dataCd83OpenVo) throws Exception { |
| | | RmOpenCloseValveLast poLast = sv.getRmOpenCloseValveLast(rtuAddr) ; |
| | | if(poLast == null){ |
| | | //é¦å
çæå岿°æ®ï¼å¹¶ä¿å |
| | | //æ°æ®åºä¸ä¸åå¨è¯¥æ§å¶å¨çå¼å
³éæ°æ® |
| | | //é¦å
çæææ°æ°æ®åå岿°æ®ï¼å¹¶å
ä¿å |
| | | poLast = this.newRmOpenCloseValveLast(controller, rtuAddr, dV1_0_1, dataCd83OpenVo); |
| | | this.newHistoryDataDeal(sv, controller, rtuAddr, dV1_0_1, dataCd83OpenVo, poLast); |
| | | sv.saveRmOpenCloseValveLast(poLast); |
| | | }else{ |
| | | //æ°æ®åºä¸åå¨è¯¥æ§å¶å¨çå¼å
³éæ°æ® |
| | | if(DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dataCd83OpenVo.openDt).equals(poLast.openDt)){ |
| | | //æ¶é´ä¸è´ï¼éå¤ä¸æ¥æ°æ®ï¼ä¸è¿è¡ä»»ä½å¤ç |
| | | }else{ |
| | |
| | | sv.updateRmOpenCloseValveHistory(poHistory); |
| | | } |
| | | }else if(poLast.closeDt != null && poLast.closeDt.before(DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dataCd83OpenVo.openDt))){ |
| | | //å½å䏿¥æ¯æ°çå¼éæ°æ® |
| | | //å½å䏿¥æ¯æ°çå¼éæ°æ®ï¼æææ°æ°æ®ä¸çå
³éå
容æ¸
空 |
| | | this.updateOpenValve(controller, poLast, null, dV1_0_1, dataCd83OpenVo, true) ; |
| | | //çæå¹¶ä¿åæ°çå¼é䏿¥å岿°æ®è®°å½ |
| | | this.newHistoryDataDeal(sv, controller, rtuAddr, dV1_0_1, dataCd83OpenVo, poLast); |
| | |
| | | Object subD = d.getSubData(); |
| | | if (subD != null) { |
| | | DataV1_0_1 dV1_0_1 = (DataV1_0_1) subD; |
| | | if (dV1_0_1 != null && dV1_0_1.dataCd84Vo != null) { |
| | | Object[] objs = this.getTaskResults(TkPreGenObjs.taskId) ; |
| | | DbSv sv = (DbSv)objs[0] ; |
| | | PrController controller = (PrController)objs[1] ; |
| | | try{ |
| | | this.doDeal(sv, controller, d.getRtuAddr(), dV1_0_1, dV1_0_1.dataCd84Vo) ; |
| | | }catch (Exception e){ |
| | | log.error("ä¿åæ§å¶å¨éå¼å·¥ä½æ¥æ¶åçå¼å¸¸", e); |
| | | } |
| | | } |
| | | // if (dV1_0_1 != null && dV1_0_1.dataCd84Vo != null) { |
| | | // Object[] objs = this.getTaskResults(TkPreGenObjs.taskId) ; |
| | | // DbSv sv = (DbSv)objs[0] ; |
| | | // PrController controller = (PrController)objs[1] ; |
| | | // try{ |
| | | // this.doDeal(sv, controller, d.getRtuAddr(), dV1_0_1, dV1_0_1.dataCd84Vo) ; |
| | | // }catch (Exception e){ |
| | | // log.error("ä¿åæ§å¶å¨éå¼å·¥ä½æ¥æ¶åçå¼å¸¸", e); |
| | | // } |
| | | // } |
| | | } |
| | | } |
| | | /** |
New file |
| | |
| | | package com.dy.aceMw.server.rtuData.p206V1_0_0; |
| | | |
| | | import com.dy.aceMw.server.rtuData.TaskSurpport; |
| | | import com.dy.common.mw.protocol.Data; |
| | | import org.apache.logging.log4j.LogManager; |
| | | import org.apache.logging.log4j.Logger; |
| | | |
| | | /** |
| | | * @Author liurunyu |
| | | * @Date 2024/4/2 13:44 |
| | | * @LastEditTime 2024/4/2 13:44 |
| | | * @Description è¯å«å½ä»¤ååºä¸æ¥ |
| | | */ |
| | | public class TkFindComResponse extends TaskSurpport { |
| | | |
| | | private static final Logger log = LogManager.getLogger(TkFindComResponse.class.getName()) ; |
| | | |
| | | //ç±»IDï¼ä¸å®ä¸Tree.xmlé
ç½®æä»¶ä¸é
ç½®ä¸è´ |
| | | public static final String taskId = "TkFindComResponse" ; |
| | | |
| | | /** |
| | | * æ§è¡èç¹ä»»å¡ |
| | | * @param data éè¦å¤ççæ°æ® |
| | | */ |
| | | @Override |
| | | public void execute(Object data) { |
| | | Data d = (Data)data ; |
| | | if(d.getCommandId() != null && d.getCommandId().trim().equals("")){ |
| | | //æ å½ä»¤ID |
| | | this.toNextTasks(data); |
| | | } |
| | | } |
| | | } |
New file |
| | |
| | | package com.dy.aceMw.server.rtuData.p206V1_0_0; |
| | | |
| | | import com.dy.aceMw.server.rtuData.TaskSurpport; |
| | | import com.dy.common.mw.protocol.Data; |
| | | import com.dy.common.mw.protocol.p206V1_0_0.DataV1_0_1; |
| | | import org.apache.logging.log4j.LogManager; |
| | | import org.apache.logging.log4j.Logger; |
| | | |
| | | /** |
| | | * @Author liurunyu |
| | | * @Date 2024/4/2 13:45 |
| | | * @LastEditTime 2024/4/2 13:45 |
| | | * @Description å¤çå½ä»¤ååºä¸æ¥ |
| | | */ |
| | | public class TkRtuDealCommandResponse extends TaskSurpport { |
| | | |
| | | private static final Logger log = LogManager.getLogger(TkRtuDealCommandResponse.class.getName()) ; |
| | | |
| | | //ç±»IDï¼ä¸å®ä¸Tree.xmlé
ç½®æä»¶ä¸é
ç½®ä¸è´ |
| | | public static final String taskId = "TkRtuDealCommandResponse" ; |
| | | |
| | | /** |
| | | * æ§è¡èç¹ä»»å¡ï¼å¤çå½ä»¤ååºä¸æ¥ |
| | | * @param data éè¦å¤ççæ°æ® |
| | | */ |
| | | @Override |
| | | public void execute(Object data) { |
| | | Data d = (Data) data; |
| | | Object subD = d.getSubData(); |
| | | if (subD != null) { |
| | | DataV1_0_1 dV1_0_1 = (DataV1_0_1) subD; |
| | | // if (dV1_0_1 != null && dV1_0_1.dataCdC0Vo != null) { |
| | | // Object[] objs = this.getTaskResults(TkPreGenObjs.taskId) ; |
| | | // DbSv sv = (DbSv)objs[0] ; |
| | | // PrController controller = (PrController)objs[1] ; |
| | | // try{ |
| | | // this.saveOrUpdateLast(sv, controller, d.getRtuAddr(), dV1_0_1, dV1_0_1.dataCdC0Vo) ; |
| | | // this.saveHistory(sv, controller, d.getRtuAddr(),dV1_0_1, dV1_0_1.dataCdC0Vo) ; |
| | | // }catch (Exception e){ |
| | | // log.error("ä¿åæ§å¶å¨èªæ¥æ°æ®æ¶åçå¼å¸¸", e); |
| | | // } |
| | | // } |
| | | } |
| | | } |
| | | } |
| | |
| | | import com.dy.common.webUtil.BaseResponseUtils; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.http.MediaType; |
| | | import org.springframework.web.bind.annotation.PostMapping; |
| | | import org.springframework.web.bind.annotation.RequestBody; |
| | | import org.springframework.web.bind.annotation.RequestMapping; |
| | | import org.springframework.web.bind.annotation.RestController; |
| | | import org.springframework.web.bind.annotation.*; |
| | | |
| | | |
| | | /** |
| | |
| | | @SuppressWarnings("unchecked")//javaçæ¬è¶é«ï¼å¯¹æ³å约æè¶ä¸¥ï¼æä»¥é
ç½®SuppressWarnings("unchecked") |
| | | public class CommandCtrl { |
| | | |
| | | @GetMapping(path = "test") |
| | | public BaseResponse<String> test(){ |
| | | return BaseResponseUtils.buildSuccess("ok"); |
| | | } |
| | | |
| | | @PostMapping(path = "send", consumes = MediaType.APPLICATION_JSON_VALUE) |
| | | public BaseResponse<Command> send(@RequestBody Command com) { |
| | | log.info("æ¶å°webç³»ç»åæ¥çå½ä»¤ï¼\n" + com.toString()) ; |
| | |
| | | <task id="TkDealAlarmStatus" name="æ§å¶å¨æ¥è¦ä¸ç¶ææ°æ®" enable="true" class="com.dy.aceMw.server.rtuData.p206V1_0_0.TkDealAlarmStatus" /> |
| | | <task id="TkDealAutoReport" name="æ§å¶å¨èªæ¥æ°æ®ï¼æ´ç¹æ¥ï¼" enable="true" class="com.dy.aceMw.server.rtuData.p206V1_0_0.TkDealAutoReport" /> |
| | | <task id="TkDealWorkReport" name="æ§å¶å¨éå¼å·¥ä½ä¸æ¥" enable="true" class="com.dy.aceMw.server.rtuData.p206V1_0_0.TkDealWorkReport" /> |
| | | <task id="TkDealOpenValveReport" name="æ§å¶å¨å¼é䏿¥ï¼å¾
æ°åè®®åºæ¥åä¿®æ¹å®ç°ï¼" enable="true" class="com.dy.aceMw.server.rtuData.p206V1_0_0.TkDealOpenValveReport" /> |
| | | <task id="TkDealCloseValveReport" name="æ§å¶å¨å
³é䏿¥ï¼å¾
æ°åè®®åºæ¥åä¿®æ¹å®ç°ï¼" enable="true" class="com.dy.aceMw.server.rtuData.p206V1_0_0.TkDealCloseValveReport" /> |
| | | <task id="TkDealOpenValveReport" name="æ§å¶å¨å¼é䏿¥" enable="true" class="com.dy.aceMw.server.rtuData.p206V1_0_0.TkDealOpenValveReport" /> |
| | | <task id="TkDealCloseValveReport" name="æ§å¶å¨å
³é䏿¥" enable="true" class="com.dy.aceMw.server.rtuData.p206V1_0_0.TkDealCloseValveReport" /> |
| | | <task id="TkDealLoss" name="æ§å¶å¨æ¼æç»è®¡ï¼å¾
æ°åè®®åºæ¥åä¿®æ¹å®ç°ï¼" enable="true" class="com.dy.aceMw.server.rtuData.p206V1_0_0.TkDealLoss" /> |
| | | </task> |
| | | <!-- è¯å«å½ä»¤ååºæ°æ® --> |