From 4e76b9737e036c18e8a9e840dc443615ffcec348 Mon Sep 17 00:00:00 2001
From: zhanzhiqin <895896009@qq.com>
Date: 星期四, 20 十月 2022 12:20:18 +0800
Subject: [PATCH] 大气农耕
---
ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/frame/inner/report/A5C3ErrorCodeReportInnerFrame.java | 59 ++++++++++++++++++++++++++++++++++++++++++++++++++++-------
1 files changed, 52 insertions(+), 7 deletions(-)
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/frame/inner/report/A5C3ErrorCodeReportInnerFrame.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/frame/inner/report/A5C3ErrorCodeReportInnerFrame.java
index 7b4e534..1b26226 100644
--- a/ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/frame/inner/report/A5C3ErrorCodeReportInnerFrame.java
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/frame/inner/report/A5C3ErrorCodeReportInnerFrame.java
@@ -1,16 +1,16 @@
package com.sandu.ximon.admin.manager.iot.frame.inner.report;
+import cn.hutool.core.util.HexUtil;
import cn.hutool.core.util.StrUtil;
import com.sandu.ximon.admin.manager.iot.frame.inner.BaseResponseInnerFrame;
+import com.sandu.ximon.admin.manager.iot.rrpc.enums.C3ErrorEnum;
import com.sandu.ximon.admin.manager.iot.rrpc.util.CRC32Utils;
+import com.sandu.ximon.admin.utils.StringUtil;
import lombok.Data;
import lombok.ToString;
/**
- * @author chenjiantian
- * @date 2021/12/6 14:46
- * A5-81-42
- * 鍗曠伅涓婃姤ampq 鏁呴殰鐮�
+ * C3鍏呯數妗╂晠闅滀笂鎶ュ抚
*/
@Data
@ToString(callSuper = true)
@@ -23,10 +23,11 @@
/**
* 鏁呴殰鐮�
*/
- private String errorCode;
+ private String errorMessage;
@Override
public A5C3ErrorCodeReportInnerFrame transformFrame(String hex) {
+ //F04500080000048E0000001CA2D92F64
if (StrUtil.isBlank(hex)) {
return null;
}
@@ -39,11 +40,55 @@
setDestinationAddress(hex.substring(8, 16));
- setErrorCode(hex.substring(16, hex.length() - 8));
+ //鏁呴殰淇℃伅
+ String errorCodeHex = hex.substring(16, hex.length() - 8);
+ String errorInfo = errorInfo(errorCodeHex);
+ if (!StringUtil.strIsNullOrEmpty(errorInfo)) {
+ setErrorMessage(errorInfo);
+ }
+
setCrc32(hex.substring(hex.length() - 8));
// 鏍¢獙CRC32
- String frame = getFunctionCode() + getPayloadLength() + getDestinationAddress() + getErrorCode();
+ String frame = hex.substring(2,hex.length()-8);
this.setValidate(CRC32Utils.validateFrame(frame, getCrc32()));
return this;
}
+
+ /**
+ * 鏀堕泦鏁呴殰淇℃伅
+ *
+ * @param hexStr
+ * @return
+ */
+ public String errorInfo(String hexStr) {
+ String errorMsg = "";
+ String str = hexStr2BinStr(hexStr);
+
+ int index = str.indexOf("1");
+ while ((index = str.indexOf("1", index)) > 0) {
+ C3ErrorEnum[] values = C3ErrorEnum.values();
+ for (C3ErrorEnum value : values) {
+ if (value.getCode() == index) {
+ errorMsg = errorMsg + value.getMessage() + ";";
+ }
+ }
+ index = index + 1;
+ }
+ return errorMsg;
+ }
+
+ /**
+ * 16杩涘埗瀛楃涓茶浆涓轰簩杩涘埗
+ */
+ public String hexStr2BinStr(String hexStr) {
+ if (hexStr == null || hexStr.length() % 2 != 0) {
+ return null;
+ }
+ String bString = "", tmp;
+ for (int i = 0; i < hexStr.length(); i++) {
+ tmp = "0000" + Integer.toBinaryString(Integer.parseInt(hexStr.substring(i, i + 1), 16));
+ bString += tmp.substring(tmp.length() - 4);
+ }
+ return bString;
+ }
}
--
Gitblit v1.9.3