oyq28 hace 1 año
padre
commit
d31f144cb4

+ 126 - 8
src/main/java/com/htyg/manger/controller/DataController.java

@@ -4,27 +4,145 @@ import com.alibaba.fastjson.JSONObject;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RestController;
 
+import java.util.HashMap;
+import java.util.Map;
+
 @RestController
 public class DataController {
+    public static Long time=0l;
+    static {
+        time=System.currentTimeMillis();
+    }
 
     @PostMapping("/data")
     public JSONObject getData(){
         JSONObject jsonObject=new JSONObject();
+        Boolean flag=true;
+        Map<String,Integer> map=new HashMap<>();
+
+        //ModbusReader.getData(jsonObject);
+
+        jsonObject.put("1600",0);
+        jsonObject.put("1601",0);
+        jsonObject.put("1602",0);
+        jsonObject.put("1603",0);
+        jsonObject.put("1604",0);
+        jsonObject.put("1605",0);
+        jsonObject.put("1606",0);
+        jsonObject.put("1607",0);
+
+
+        //ph值到浊度值
+        jsonObject.put("ph",jsonObject.get("1600"));
+        jsonObject.put("rjy",jsonObject.get("1601"));
+        jsonObject.put("ddl",jsonObject.get("1602"));
+        jsonObject.put("dzl",jsonObject.get("1603"));
+        jsonObject.put("wdz",jsonObject.get("1604"));
+        jsonObject.put("tds",jsonObject.get("1605"));
+        jsonObject.put("ryz",jsonObject.get("1606"));
+        jsonObject.put("zdz",jsonObject.get("1607"));
+
+
+
+        jsonObject.put("1612",1);
+        jsonObject.put("1613",0);
+        jsonObject.put("1614",0);
+        //设备情况
+        int i = Integer.parseInt(jsonObject.get("1612").toString());
+        int y = Integer.parseInt(jsonObject.get("1613").toString());
+        int z = Integer.parseInt(jsonObject.get("1614").toString());
+        jsonObject.put("slqk",jsonObject.get("1612"));
+        jsonObject.put("pyqk",jsonObject.get("1613"));
+        jsonObject.put("xyqk",jsonObject.get("1614"));
+        
+        if(i==1 || y == 1 || z == 1){
+            flag=false;
+        }
+
+        //出液温度  排液温度
+
+        jsonObject.put("1600",0);
+        jsonObject.put("1601",0);
+        jsonObject.put("1602",0);
+        jsonObject.put("1603",0);
+        jsonObject.put("1604",0);
+        jsonObject.put("1605",0);
+
+        jsonObject.put("cywd",jsonObject.get("1600"));
+        jsonObject.put("pywd",jsonObject.get("1601"));
+        jsonObject.put("pgwd",jsonObject.get("1602"));
+        jsonObject.put("hjwd",jsonObject.get("1603"));
 
 
+        jsonObject.put("1000",2);
+        jsonObject.put("1001",45);
+        jsonObject.put("1002",2);
+        jsonObject.put("1003",45);
+        jsonObject.put("1004",2);
+        jsonObject.put("1005",45);
+        jsonObject.put("1006",2);
+        jsonObject.put("1007",45);
+        jsonObject.put("1008",2);
+        jsonObject.put("1009",45);
+        jsonObject.put("1010",2);
+        jsonObject.put("1011",45);
 
 
-        jsonObject.put("ph","8.970");
-        jsonObject.put("rjy","8.970");
-        jsonObject.put("ddl","8.970");
-        jsonObject.put("dzl","8.970");
-        jsonObject.put("wdz","8.970");
-        jsonObject.put("tds","8.970");
-        jsonObject.put("ryz","8.970");
-        jsonObject.put("zdz","8.970");
+       int wd1600 = Integer.parseInt(jsonObject.get("1600").toString());
+       int wd1000 = Integer.parseInt(jsonObject.get("1000").toString());
+       int wd1001 = Integer.parseInt(jsonObject.get("1001").toString());
+        if(wd1000 <= wd1600 && wd1600 <= wd1001){
+            jsonObject.put("cywdc",0);
+        }else{
+            jsonObject.put("cywdc",1);
+            flag=false;
+        }
 
+        int wd1601 = Integer.parseInt(jsonObject.get("1601").toString());
+        int wd1002 = Integer.parseInt(jsonObject.get("1002").toString());
+        int wd1003 = Integer.parseInt(jsonObject.get("1003").toString());
+        if(wd1002 <= wd1601 && wd1601 <= wd1003){
+            jsonObject.put("pywdc",0);
+        }else{
+            jsonObject.put("pywdc",1);
+            flag=false;
+        }
 
+        int wd1602 = Integer.parseInt(jsonObject.get("1602").toString());
+        int wd1004 = Integer.parseInt(jsonObject.get("1004").toString());
+        int wd1005 = Integer.parseInt(jsonObject.get("1005").toString());
+        if(wd1004 <= wd1602 && wd1602 <= wd1005){
+            jsonObject.put("pgwdc",0);
+        }else{
+            jsonObject.put("pgwdc",1);
+            flag=false;
+        }
 
+        int wd1603 = Integer.parseInt(jsonObject.get("1603").toString());
+        int wd1006 = Integer.parseInt(jsonObject.get("1006").toString());
+        int wd1007 = Integer.parseInt(jsonObject.get("1007").toString());
+        if(wd1006 <= wd1603 && wd1603 <= wd1007){
+            jsonObject.put("hjwdc",0);
+        }else{
+            jsonObject.put("hjwdc",1);
+            flag=false;
+        }
+        
+        
+        //制冷模式 水箱温度
+        jsonObject.put("1610",0);
+        jsonObject.put("1605",20);
+        
+        
+        jsonObject.put("zlms",jsonObject.get("1610"));
+        jsonObject.put("sxwd",jsonObject.get("1605"));
+        
+        jsonObject.put("status",flag);
+        long l = System.currentTimeMillis() - time;
+        double hours = l / 3600000.0; // 将毫秒转换为小时,1小时=3600000毫秒
+        hours = Math.round(hours * 10) / 10.0; // 保留一位小数
+        jsonObject.put("hours",String.valueOf(hours));
+        
 
         return jsonObject;
     }

+ 10 - 1
src/main/java/com/htyg/manger/controller/ModbusReader.java

@@ -1,6 +1,7 @@
 package com.htyg.manger.controller;
 
 
+import com.alibaba.fastjson.JSONObject;
 import com.ghgande.j2mod.modbus.Modbus;
 import com.ghgande.j2mod.modbus.io.ModbusSerialTransaction;
 import com.ghgande.j2mod.modbus.msg.ReadMultipleRegistersRequest;
@@ -8,9 +9,11 @@ import com.ghgande.j2mod.modbus.msg.ReadMultipleRegistersResponse;
 import com.ghgande.j2mod.modbus.net.SerialConnection;
 import com.ghgande.j2mod.modbus.util.SerialParameters;
 
+import java.util.Map;
+
 public class ModbusReader {
 
-    private static final String PORT_NAME = "/dev/ttyUSB0"; // 更改为你的串口名称
+    private static final String PORT_NAME = "COM6"; // 更改为你的串口名称
     private static final int BAUD_RATE = 9600;
     private static final int DATA_BITS = 8;
     private static final int STOP_BITS = 1;
@@ -18,6 +21,11 @@ public class ModbusReader {
     private static final int TIMEOUT = 2000;
 
     public static void main(String[] args) {
+        JSONObject jsonObject=new JSONObject();
+        getData(jsonObject);
+    }
+
+    public static void getData(JSONObject jsonObject) {
         SerialParameters parameters = new SerialParameters();
         parameters.setPortName(PORT_NAME);
         parameters.setBaudRate(BAUD_RATE);
@@ -48,6 +56,7 @@ public class ModbusReader {
                     int value = response.getRegisterValue(i) << 16 | response.getRegisterValue(i + 1);
                     // 处理读取到的数据
                     System.out.println("Register " + (i / 2 + 3000) + ": " + value);
+                    jsonObject.put(Integer.valueOf(i / 2 + 3000).toString(),value);
                 }
             } else {
                 System.out.println("Response is null.");

+ 61 - 0
src/main/java/com/htyg/manger/controller/ModbusReader1.java

@@ -0,0 +1,61 @@
+package com.htyg.manger.controller;
+import com.ghgande.j2mod.modbus.io.ModbusSerialTransaction;
+import com.ghgande.j2mod.modbus.msg.ReadMultipleRegistersRequest;
+import com.ghgande.j2mod.modbus.msg.ReadMultipleRegistersResponse;
+import com.ghgande.j2mod.modbus.net.SerialConnection;
+import com.ghgande.j2mod.modbus.util.SerialParameters;
+
+public class ModbusReader1 {
+
+    private static final String PORT_NAME = "COM6"; // 更改为你的串口名称
+    private static final int BAUD_RATE = 9600;
+    private static final int DATA_BITS = 8;
+    private static final int STOP_BITS = 1;
+    private static final int PARITY = 0; // 无校验位
+
+    //1605 水箱温度
+    public static void main(String[] args) {
+        SerialParameters parameters = new SerialParameters();
+        parameters.setPortName(PORT_NAME);
+        parameters.setBaudRate(BAUD_RATE);
+        parameters.setDatabits(DATA_BITS);
+        parameters.setStopbits(STOP_BITS);
+        parameters.setParity(PARITY);
+
+        SerialConnection connection = new SerialConnection(parameters);
+
+        try {
+            connection.open();
+            ModbusSerialTransaction transaction = new ModbusSerialTransaction(connection);
+            ReadMultipleRegistersRequest request = new ReadMultipleRegistersRequest();
+            request.setUnitID(1); // Modbus设备的ID,通常为1
+            request.setReference(1600); // 寄存器起始地址
+
+            // 读取连续6个单字节(每个字节占用一个寄存器)
+            request.setWordCount(20);
+
+            transaction.setRequest(request);
+            transaction.execute();
+
+            ReadMultipleRegistersResponse response = (ReadMultipleRegistersResponse) transaction.getResponse();
+            if (response != null) {
+                for (int i = 0; i < response.getWordCount(); i++) {
+                    // 每个字节占用一个寄存器,直接读取寄存器值即可
+                    int value = response.getRegisterValue(i);
+                    // 处理读取到的数据
+                    System.out.println("Register " + (i + 1600) + ": " + value);
+                }
+            } else {
+                System.out.println("Response is null.");
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        } finally {
+            if (connection != null) {
+                connection.close();
+            }
+        }
+    }
+}
+
+

+ 61 - 0
src/main/java/com/htyg/manger/controller/ModbusReader2.java

@@ -0,0 +1,61 @@
+package com.htyg.manger.controller;
+import com.ghgande.j2mod.modbus.io.ModbusSerialTransaction;
+import com.ghgande.j2mod.modbus.msg.ReadMultipleRegistersRequest;
+import com.ghgande.j2mod.modbus.msg.ReadMultipleRegistersResponse;
+import com.ghgande.j2mod.modbus.net.SerialConnection;
+import com.ghgande.j2mod.modbus.util.SerialParameters;
+
+public class ModbusReader2 {
+
+    private static final String PORT_NAME = "COM6"; // 更改为你的串口名称
+    private static final int BAUD_RATE = 9600;
+    private static final int DATA_BITS = 8;
+    private static final int STOP_BITS = 1;
+    private static final int PARITY = 0; // 无校验位
+
+    //1605 水箱温度
+    public static void main(String[] args) {
+        SerialParameters parameters = new SerialParameters();
+        parameters.setPortName(PORT_NAME);
+        parameters.setBaudRate(BAUD_RATE);
+        parameters.setDatabits(DATA_BITS);
+        parameters.setStopbits(STOP_BITS);
+        parameters.setParity(PARITY);
+
+        SerialConnection connection = new SerialConnection(parameters);
+
+        try {
+            connection.open();
+            ModbusSerialTransaction transaction = new ModbusSerialTransaction(connection);
+            ReadMultipleRegistersRequest request = new ReadMultipleRegistersRequest();
+            request.setUnitID(1); // Modbus设备的ID,通常为1
+            request.setReference(1000); // 寄存器起始地址
+
+            // 读取连续6个单字节(每个字节占用一个寄存器)
+            request.setWordCount(10);
+
+            transaction.setRequest(request);
+            transaction.execute();
+
+            ReadMultipleRegistersResponse response = (ReadMultipleRegistersResponse) transaction.getResponse();
+            if (response != null) {
+                for (int i = 0; i < response.getWordCount(); i++) {
+                    // 每个字节占用一个寄存器,直接读取寄存器值即可
+                    int value = response.getRegisterValue(i);
+                    // 处理读取到的数据
+                    System.out.println("Register " + (i + 1000) + ": " + value);
+                }
+            } else {
+                System.out.println("Response is null.");
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        } finally {
+            if (connection != null) {
+                connection.close();
+            }
+        }
+    }
+}
+
+

+ 152 - 90
src/main/resources/static/index.html

@@ -156,7 +156,7 @@
 				</div>-->
 			</div>
 			<div class="content_center">
-				<div class="dtuplc" style="position: relative;height: 125px;width: 20%;margin: 8% 20% 0% 10%;    border-radius: 22px;">
+				<!--<div class="dtuplc" style="position: relative;height: 125px;width: 20%;margin: 8% 20% 0% 10%;    border-radius: 22px;">
 					<span class="dtuplcSpan">良好</span>
 				</div>
 				<div style="float: right" class="divTable">
@@ -171,8 +171,6 @@
 				</div>
 
 				<img class="phImg" style="margin: -3% 20% 0% 10%;" src="./images/图片1.png">
-				<!--<div class="dtuplc" style="transform: perspective(200px) rotateX(30deg);float:right;position: relative;height: 19px;width: 20%;margin-top: 21%;margin-right: 4%;box-shadow: inset 5px 10px 30px 30px #2C58A6;">
-				</div>-->
 				<div class="dtuplc" style="float:right;position: relative;height: 65px;width: 20%;margin-top: 23%;margin-right: 4%;box-shadow: inset 5px 10px 30px 30px #2C58A6;">
 					<span class="dtuplcSpan" style="font-size: 30px;">21.5 ℃</span>
 				</div>
@@ -183,97 +181,13 @@
 
 				<div class="dtuplc" style="position: relative;height: 65px;width: 20%;margin: 0 20% 0% 10%;box-shadow: inset 5px 10px 30px 30px #2C58A6;">
 					<span class="dtuplcSpan" style="font-size: 30px;">制冷模式</span>
-				</div>
+				</div>-->
 			</div>
 			<div class="content_right">
-				<div class="dtuplc" style="height: 220px;margin-top: 5%;">
-					<span style="font-size: 33px;">设备状态</span>
-					<table class="device">
-						<tr>
-							<td style="padding-left: 10%;"><sapn class="deviceStatus" >水流情况</sapn></td>
-							<td><sapn class="tdSpan">正常</sapn></td>
-						</tr>
-						<tr>
-							<td style="padding-left: 10%;"><sapn class="deviceStatus">排压情况</sapn></td>
-							<td><sapn class="tdSpan">正常</sapn></td>
-						</tr>
-						<tr>
-							<td style="padding-left: 10%;"><sapn class="deviceStatus">吸压情况</sapn></td>
-							<td><sapn class="tdSpan">正常</sapn></td>
-						</tr>
-					</table>
-				</div>
-				<div class="dtuplc1">
-					<div class="dtu">
-						<div class="container111" id="container1111" style="height: 100%;">
-							<img class="phImg" src="./images/icons8-温度-96.png">
-							<div style="float: right" class="divTable">
-								<table>
-									<tr>
-										<td class="zhi">8.123</td>
-									</tr>
-									<tr class="tr">
-										<td class="ph">出液温度正常</td>
-									</tr>
-								</table>
-							</div>
-						</div>
-					</div>
-				</div>
-				<div class="dtuplc1">
-					<div class="dtu">
-						<div class="container111" id="container1212" style="height: 100%;">
-							<img class="phImg" src="./images/icons8-温度-96-1.png">
-							<div style="float: right" class="divTable">
-								<table>
-									<tr>
-										<td class="zhi">8.123</td>
-									</tr>
-									<tr class="tr">
-										<td class="ph">排液温度正常</td>
-									</tr>
-								</table>
-							</div>
-						</div>
-					</div>
-				</div>
-				<div class="dtuplc1">
-					<div class="dtu">
-						<div class="container111" id="container1313" style="height: 100%;">
-							<img class="phImg" src="./images/icons8-温度-96-2.png">
-							<div style="float: right" class="divTable">
-								<table>
-									<tr>
-										<td class="zhi">8.123</td>
-									</tr>
-									<tr class="tr">
-										<td class="ph">盘管温度正常</td>
-									</tr>
-								</table>
-							</div>
-						</div>
-					</div>
-				</div>
-				<div class="dtuplc1">
-					<div class="dtu">
-						<div class="container111" id="container1414" style="height: 100%;">
-							<img class="phImg" src="./images/icons8-温度-96-3.png">
-							<div style="float: right" class="divTable">
-								<table>
-									<tr>
-										<td class="zhi">8.123</td>
-									</tr>
-									<tr class="tr">
-										<td class="ph">环境温度正常</td>
-									</tr>
-								</table>
-							</div>
-						</div>
-					</div>
-				</div>
-				</div>
+				
 			</div>
 		</div>
+	</div>
 		<!--遮罩层-->
 		<div class="bgPop"></div>
 		<!--弹出框-->
@@ -439,6 +353,8 @@
 	<script type="text/javascript">
 		// 假设设备信息的容器元素是一个 <div> 标签,并具有类名 "data_bottom"
 		const content_left = document.querySelector('.content_left');
+		const content_right = document.querySelector('.content_right');
+		const content_center = document.querySelector('.content_center');
 		function init(){
 
 			callAPI();
@@ -597,7 +513,153 @@
 											</div>
 											`;
 
+					content_center.innerHTML=`<div class="dtuplc" style="position: relative;height: 125px;width: 20%;margin: 8% 20% 0% 10%;    border-radius: 22px;">
+												<span class="dtuplcSpan">${datas.status===true?'良好':'<span style="color: red">异常</span>'}</span>
+												</div>
+												<div style="float: right" class="divTable">
+												<table>
+												<tr>
+												<td class="zhi1">设备正常运行时间:<span class="span">${datas.hours} 小时</span></td>
+												</tr>
+												<tr >
+												<td class="zhi1">设备距离保养时间:<span class="span">1.1 天</span></td>
+												</tr>
+												</table>
+												</div>
+
+												<img class="phImg" style="margin: -3% 20% 0% 10%;" src="./images/图片1.png">
+												<div class="dtuplc" style="float:right;position: relative;height: 65px;width: 20%;margin-top: 23%;margin-right: 4%;box-shadow: inset 5px 10px 30px 30px #2C58A6;">
+												<span class="dtuplcSpan" style="font-size: 30px;">${datas.sxwd} ℃</span>
+												</div>
+												<div style="float:right;margin-right: 27%;margin-top: -12%;">
+												<div class="rectangle"></div>
+												<div class="rectangle" style="margin-top: 1%"></div>
+												</div>
+
+												<div class="dtuplc" style="position: relative;height: 65px;width: 20%;margin: 0 20% 0% 10%;box-shadow: inset 5px 10px 30px 30px #2C58A6;">
+												<span class="dtuplcSpan" style="font-size: 30px;">制${datas.zlms===0?'冷':'热'}模式</span>
+												</div>`;
+
+
+					content_right.innerHTML=`<div class="dtuplc" style="height: 220px;margin-top: 5%;">
+											<span style="font-size: 33px;">设备状态</span>
+											<table class="device">
+											<tr>
+											<td style="padding-left: 10%;"><sapn class="deviceStatus" >水流情况</sapn></td>
+											<td><sapn class="tdSpan">${datas.slqk===0?'正常':'<span style="color: red">异常</span>'}</sapn></td>
+											</tr>
+											<tr>
+											<td style="padding-left: 10%;"><sapn class="deviceStatus">排压情况</sapn></td>
+											<td><sapn class="tdSpan">${datas.pyqk===0?'正常':'<span style="color: red">异常</span>'}</sapn></td>
+											</tr>
+											<tr>
+											<td style="padding-left: 10%;"><sapn class="deviceStatus">吸压情况</sapn></td>
+											<td><sapn class="tdSpan">${datas.xyqk===0?'正常':'<span style="color: red">异常</span>'}</sapn></td>
+											</tr>
+											</table>
+											</div>
+											<div class="dtuplc1">
+											<div class="dtu">
+											<div class="container111" id="container1111" style="height: 100%;">
+											<img class="phImg" src="./images/icons8-温度-96.png">
+											<div style="float: right" class="divTable">
+											<table>
+											<tr>
+											<td class="zhi">${datas.cywd}</td>
+											</tr>
+											<tr class="tr">
+											<td class="ph">${datas.cywdc===0?'出液温度正常':'<span style="color: red">出液温度异常</span>'}</td>
+											</tr>
+											</table>
+											</div>
+											</div>
+											</div>
+											</div>
+											<div class="dtuplc1">
+											<div class="dtu">
+											<div class="container111" id="container1212" style="height: 100%;">
+											<img class="phImg" src="./images/icons8-温度-96-1.png">
+											<div style="float: right" class="divTable">
+											<table>
+											<tr>
+											<td class="zhi">${datas.pywd}</td>
+											</tr>
+											<tr class="tr">
+											<td class="ph">${datas.pywdc===0?'排液温度正常':'<span style="color: red">排液温度异常</span>'}</td>
+											</tr>
+											</table>
+											</div>
+											</div>
+											</div>
+											</div>
+											<div class="dtuplc1">
+											<div class="dtu">
+											<div class="container111" id="container1313" style="height: 100%;">
+											<img class="phImg" src="./images/icons8-温度-96-2.png">
+											<div style="float: right" class="divTable">
+											<table>
+											<tr>
+											<td class="zhi">${datas.pgwd}</td>
+											</tr>
+											<tr class="tr">
+											<td class="ph">${datas.pgwdc===0?'盘管温度正常':'<span style="color: red">盘管温度异常</span>'}</td>
+											</tr>
+											</table>
+											</div>
+											</div>
+											</div>
+											</div>
+											<div class="dtuplc1">
+											<div class="dtu">
+											<div class="container111" id="container1414" style="height: 100%;">
+											<img class="phImg" src="./images/icons8-温度-96-3.png">
+											<div style="float: right" class="divTable">
+											<table>
+											<tr>
+											<td class="zhi">${datas.hjwd}</td>
+											</tr>
+											<tr class="tr">
+											<td class="ph">${datas.hjwdc===0?'环境温度正常':'<span style="color: red">环境温度异常</span>'}</td>
+											</tr>
+											</table>
+											</div>
+											</div>
+											</div>
+											</div>`;
+
+
+					
+					
+					
+					/*content_center.innerHTML=`
+					<div className="dtuplc" style="position: relative;height: 125px;width: 20%;margin: 8% 20% 0% 10%;    border-radius: 22px;">
+						<span className="dtuplcSpan">${datas.status===true?'良好':'<span style="color: red">异常</span>'}</span>
+					</div>
+					<div style="float: right" className="divTable">
+						<table>
+							<tr>
+								<td className="zhi1">设备正常运行时间:<span className="span">${datas.hours} 小时</span></td>
+							</tr>
+							<tr >
+								<td className="zhi1">设备距离保养时间:<span className="span">1.1 天</span></td>
+							</tr>
+						</table>
+					</div>
+
+					<img className="phImg" style="margin: -3% 20% 0% 10%;" src="./images/图片1.png">
+						<!--<div class="dtuplc" style="transform: perspective(200px) rotateX(30deg);float:right;position: relative;height: 19px;width: 20%;margin-top: 21%;margin-right: 4%;box-shadow: inset 5px 10px 30px 30px #2C58A6;">
+                        </div>-->
+						<div className="dtuplc" style="float:right;position: relative;height: 65px;width: 20%;margin-top: 23%;margin-right: 4%;box-shadow: inset 5px 10px 30px 30px #2C58A6;">
+							<span className="dtuplcSpan" style="font-size: 30px;">21.5 ℃</span>
+						</div>
+						<div style="float:right;margin-right: 27%;margin-top: -12%;">
+							<div className="rectangle"></div>
+							<div className="rectangle" style="margin-top: 1%"></div>
+						</div>
 
+						<div className="dtuplc" style="position: relative;height: 65px;width: 20%;margin: 0 20% 0% 10%;box-shadow: inset 5px 10px 30px 30px #2C58A6;">
+							<span className="dtuplcSpan" style="font-size: 30px;">制${datas.zlms===0?'冷':'热'}模式</span>
+						</div>`;*/
 
 
 				}