From ff3ee157b0d2cce72e3419c65b6eb1a5d53d32e2 Mon Sep 17 00:00:00 2001
From: zhanzhiqin <895896009@qq.com>
Date: 星期四, 04 八月 2022 17:16:26 +0800
Subject: [PATCH] 大气设备
---
ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/frame/inner/request/AtmosphereModifiedDataReqInnerFrame.java | 258 ++++++++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 253 insertions(+), 5 deletions(-)
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/frame/inner/request/AtmosphereModifiedDataReqInnerFrame.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/frame/inner/request/AtmosphereModifiedDataReqInnerFrame.java
index 004522b..c37c8a4 100644
--- a/ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/frame/inner/request/AtmosphereModifiedDataReqInnerFrame.java
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/frame/inner/request/AtmosphereModifiedDataReqInnerFrame.java
@@ -5,6 +5,8 @@
import com.sandu.ximon.admin.manager.iot.rrpc.enums.MQTTConnectTypeEnum;
import com.sandu.ximon.admin.manager.iot.rrpc.util.CRC32Utils;
+import java.math.BigDecimal;
+
/**
* 澶ф皵璁惧淇鏁版嵁
*
@@ -12,81 +14,327 @@
* @date 2022/7/29 10:32
*/
public class AtmosphereModifiedDataReqInnerFrame implements IRequestInnerFrame {
- //TODO
private String functionCode;
+ private String value;
- public AtmosphereModifiedDataReqInnerFrame(String functionType, Double valueOfReal, Double valueOfStandard) {
+ public AtmosphereModifiedDataReqInnerFrame(String functionType, String valueOfReal, String valueOfStandard) {
+ //浼犳劅鍣ㄦ暟鍊�
+ BigDecimal value1;
+ //鏍囧噯鍊�
+ BigDecimal value2;
+ //淇鍊�
+ Double subtract;
+ //鏁存暟
+ int i;
+ //灏忔暟
+ int y;
+
+ int z;
+
switch (functionType) {
//璁剧疆鏁版嵁淇鍊�-娓╁害
case "娓╁害":
functionCode = AtmoFunctionCode.Setting_Data_Correction_temperature.getCode();
+ value1 = new BigDecimal(valueOfReal);
+ value2 = new BigDecimal(valueOfStandard);
+ subtract = value1.subtract(value2).doubleValue();
+
+ i = Integer.valueOf((int) (subtract * 100)) / 100;
+ y = Integer.valueOf((int) (subtract * 100)) % 100;
+
+ if (subtract > 0) {
+ value = hex10To16(i) + hex10To16(y);
+ } else {
+ value = hex10To16(-i + 128) + hex10To16(-y);
+ }
break;
//璁剧疆鏁版嵁淇鍊�-婀垮害
case "婀垮害":
functionCode = AtmoFunctionCode.Setting_Data_Correction_humidity.getCode();
+ value1 = new BigDecimal(valueOfReal);
+ value2 = new BigDecimal(valueOfStandard);
+ subtract = value1.subtract(value2).doubleValue();
+
+ i = Integer.valueOf((int) (subtract * 100)) / 100;
+ y = Integer.valueOf((int) (subtract * 100)) % 100;
+
+ if (subtract > 0) {
+ value = hex10To16(i) + hex10To16(y);
+ } else {
+ value = hex10To16(-i + 128) + hex10To16(-y);
+ }
break;
//璁剧疆鏁版嵁淇鍊�-椋庨��
case "椋庨��":
functionCode = AtmoFunctionCode.Setting_Data_Correction_windSpeed.getCode();
+ value1 = new BigDecimal(valueOfReal);
+ value2 = new BigDecimal(valueOfStandard);
+ subtract = value1.subtract(value2).doubleValue();
+
+ z = Integer.valueOf((int) (subtract * 10));
+
+ if (subtract > 0) {
+ value = hex10To16(z);
+ } else {
+ value = hex10To16(-z + 32768);
+ }
break;
//璁剧疆鏁版嵁淇鍊�-椋庡悜
case "椋庡悜":
functionCode = AtmoFunctionCode.Setting_Data_Correction_windDirection.getCode();
+ //TODO
+ break;
+ //璁剧疆鏁版嵁淇鍊�-椋庡姏
+ case "椋庡姏":
+ functionCode = AtmoFunctionCode.Setting_Data_Correction_windPower.getCode();
+ //TODO
break;
//璁剧疆鏁版嵁淇鍊�-姘斿帇
case "姘斿帇":
functionCode = AtmoFunctionCode.Setting_Data_Correction_airPressure.getCode();
+ value1 = new BigDecimal(valueOfReal);
+ value2 = new BigDecimal(valueOfStandard);
+ subtract = value1.subtract(value2).doubleValue();
+
+ z = Integer.valueOf((int) (subtract * 100));
+
+ if (subtract > 0) {
+ value = hex10To16(z);
+ } else {
+ value = hex10To16(-z + 32768);
+ }
break;
//璁剧疆鏁版嵁淇鍊�-鍏夊己
case "鍏夊己":
functionCode = AtmoFunctionCode.Setting_Data_Correction_lightIntensity.getCode();
+ value1 = new BigDecimal(valueOfReal);
+ value2 = new BigDecimal(valueOfStandard);
+ subtract = value1.subtract(value2).doubleValue();
+
+ z = Integer.valueOf((int) (subtract * 100) / 100);
+
+ if (subtract > 0) {
+ value = hex10To16(z);
+ } else {
+ value = hex10To16(-z + 32768);
+ }
break;
//璁剧疆鏁版嵁淇鍊�-鍣煶
case "鍣煶":
functionCode = AtmoFunctionCode.Setting_Data_Correction_noise.getCode();
+ value1 = new BigDecimal(valueOfReal);
+ value2 = new BigDecimal(valueOfStandard);
+ subtract = value1.subtract(value2).doubleValue();
+
+ z = Integer.valueOf((int) (subtract * 10));
+
+ if (subtract > 0) {
+ value = hex10To16(z);
+ } else {
+ value = hex10To16(-z + 32768);
+ }
break;
//璁剧疆鏁版嵁淇鍊�-PM2.5
case "PM2.5":
functionCode = AtmoFunctionCode.Setting_Data_Correction_PM2_5.getCode();
+ value1 = new BigDecimal(valueOfReal);
+ value2 = new BigDecimal(valueOfStandard);
+ subtract = value1.subtract(value2).doubleValue();
+
+ z = Integer.valueOf((int) (subtract * 100) / 100);
+
+ if (subtract > 0) {
+ value = hex10To16(z);
+ } else {
+ value = hex10To16(-z + 32768);
+ }
break;
//璁剧疆鏁版嵁淇鍊�-PM10
case "PM10":
functionCode = AtmoFunctionCode.Setting_Data_Correction_PM10.getCode();
+ value1 = new BigDecimal(valueOfReal);
+ value2 = new BigDecimal(valueOfStandard);
+ subtract = value1.subtract(value2).doubleValue();
+
+ z = Integer.valueOf((int) (subtract * 100) / 100);
+
+ if (subtract > 0) {
+ value = hex10To16(z);
+ } else {
+ value = hex10To16(-z + 32768);
+ }
+ break;
+ //璁剧疆鏁版嵁淇鍊�-TSP
+ case "TSP":
+ functionCode = AtmoFunctionCode.Setting_Data_Correction_tsp.getCode();
+ value1 = new BigDecimal(valueOfReal);
+ value2 = new BigDecimal(valueOfStandard);
+ subtract = value1.subtract(value2).doubleValue();
+
+ z = Integer.valueOf((int) (subtract * 100) / 100);
+
+ if (subtract > 0) {
+ value = hex10To16(z);
+ } else {
+ value = hex10To16(-z + 32768);
+ }
break;
//璁剧疆鏁版嵁淇鍊�-闆ㄩ噺
case "闆ㄩ噺":
- functionCode = AtmoFunctionCode.Setting_Data_Correction_rainfall.getCode();
+ functionCode = AtmoFunctionCode.Setting_Data_Correction_rain.getCode();
+ value1 = new BigDecimal(valueOfReal);
+ value2 = new BigDecimal(valueOfStandard);
+ subtract = value1.subtract(value2).doubleValue();
+
+ z = Integer.valueOf((int) (subtract * 10));
+
+ if (subtract > 0) {
+ value = hex10To16(z);
+ } else {
+ value = hex10To16(-z + 32768);
+ }
+ break;
+ //璁剧疆鏁版嵁淇鍊�-闆ㄩ噺
+ case "鐢查啗":
+ functionCode = AtmoFunctionCode.Setting_Data_Correction_ech2o.getCode();
+ value1 = new BigDecimal(valueOfReal);
+ value2 = new BigDecimal(valueOfStandard);
+ subtract = value1.subtract(value2).doubleValue();
+
+ z = Integer.valueOf((int) (subtract * 100) / 100);
+
+ if (subtract > 0) {
+ value = hex10To16(z);
+ } else {
+ value = hex10To16(-z + 32768);
+ }
+ break;
+ //璁剧疆鏁版嵁淇鍊�-TVOC
+ case "TVOC":
+ functionCode = AtmoFunctionCode.Setting_Data_Correction_tvoc.getCode();
+ value1 = new BigDecimal(valueOfReal);
+ value2 = new BigDecimal(valueOfStandard);
+ subtract = value1.subtract(value2).doubleValue();
+
+ z = Integer.valueOf((int) (subtract * 100) / 100);
+
+ if (subtract > 0) {
+ value = hex10To16(z);
+ } else {
+ value = hex10To16(-z + 32768);
+ }
+ break;
+ //璁剧疆鏁版嵁淇鍊�-eCO2
+ case "浜屾哀鍖栫⒊":
+ functionCode = AtmoFunctionCode.Setting_Data_Correction_eCO2.getCode();
+ value1 = new BigDecimal(valueOfReal);
+ value2 = new BigDecimal(valueOfStandard);
+ subtract = value1.subtract(value2).doubleValue();
+
+ z = Integer.valueOf((int) (subtract * 100) / 100);
+
+ if (subtract > 0) {
+ value = hex10To16(z);
+ } else {
+ value = hex10To16(-z + 32768);
+ }
break;
//璁剧疆鏁版嵁淇鍊�-SO2浜屾哀鍖栫~
case "浜屾哀鍖栫~":
functionCode = AtmoFunctionCode.Setting_Data_Correction_SO2.getCode();
+ value1 = new BigDecimal(valueOfReal);
+ value2 = new BigDecimal(valueOfStandard);
+ subtract = value1.subtract(value2).doubleValue();
+
+ z = Integer.valueOf((int) (subtract * 100) / 100);
+
+ if (subtract > 0) {
+ value = hex10To16(z);
+ } else {
+ value = hex10To16(-z + 32768);
+ }
break;
//璁剧疆鏁版嵁淇鍊�-NO2浜屾哀鍖栨爱
case "浜屾哀鍖栨爱":
functionCode = AtmoFunctionCode.Setting_Data_Correction_NO2.getCode();
+ value1 = new BigDecimal(valueOfReal);
+ value2 = new BigDecimal(valueOfStandard);
+ subtract = value1.subtract(value2).doubleValue();
+
+ z = Integer.valueOf((int) (subtract * 100) / 100);
+
+ if (subtract > 0) {
+ value = hex10To16(z);
+ } else {
+ value = hex10To16(-z + 32768);
+ }
break;
//璁剧疆鏁版嵁淇鍊�-CO涓�姘у寲纰�
case "涓�姘у寲纰�":
functionCode = AtmoFunctionCode.Setting_Data_Correction_CO.getCode();
+ value1 = new BigDecimal(valueOfReal);
+ value2 = new BigDecimal(valueOfStandard);
+ subtract = value1.subtract(value2).doubleValue();
+
+ z = Integer.valueOf((int) (subtract * 100) / 100);
+
+ if (subtract > 0) {
+ value = hex10To16(z);
+ } else {
+ value = hex10To16(-z + 32768);
+ }
break;
//璁剧疆鏁版嵁淇鍊�-O3鑷哀
case "鑷哀":
functionCode = AtmoFunctionCode.Setting_Data_Correction_O3.getCode();
+ value1 = new BigDecimal(valueOfReal);
+ value2 = new BigDecimal(valueOfStandard);
+ subtract = value1.subtract(value2).doubleValue();
+
+ z = Integer.valueOf((int) (subtract * 100) / 100);
+
+ if (subtract > 0) {
+ value = hex10To16(z);
+ } else {
+ value = hex10To16(-z + 32768);
+ }
break;
//璁剧疆鏁版嵁淇鍊�-F姘熷寲鐗�
case "姘熷寲鐗�":
functionCode = AtmoFunctionCode.Setting_Data_Correction_F.getCode();
+ value1 = new BigDecimal(valueOfReal);
+ value2 = new BigDecimal(valueOfStandard);
+ subtract = value1.subtract(value2).doubleValue();
+
+ z = Integer.valueOf((int) (subtract * 100) / 100);
+
+ if (subtract > 0) {
+ value = hex10To16(z);
+ } else {
+ value = hex10To16(-z + 32768);
+ }
break;
default:
-
}
+
+ System.out.println(value);
}
@Override
public String getEncodeFrame() {
String payloadLength = "0004";
- String payload = "FFFF";
+ String payload = "FFFF" + value;
String frame = functionCode + payloadLength + payload;
return MQTTConnectTypeEnum.SYNCHRONIZATION.getCode() + frame.toUpperCase() + CRC32Utils.getCRC32(frame.toUpperCase());
}
+
+ /**
+ * 鍗佽繘鍒惰浆鍗佸叚杩涘埗
+ *
+ * @param value
+ * @return
+ */
+ private static String hex10To16(int value) {
+ return String.format("%02X", value);
+ }
}
--
Gitblit v1.9.3