Browse Source

测试modbus获取数据

王先生 2 years ago
parent
commit
37bf583c43

+ 45 - 44
eladmin-system/src/main/java/me/zhengjie/modules/quartz/task/ModbusTask.java

@@ -126,8 +126,10 @@ public class ModbusTask {
 //                                               DmEnvHistoryData dmEnvHistoryData = new DmEnvHistoryData();
 //                                              Set<DmEnvHistoryData> dmEnvHistoryDataSet = new HashSet<>();
                                               //已经确认 空气质量统一用3X(Input  Register)  数据类型为short
+
                                               dmModbusData.forEach(data->{
-                                                  switch (data.getSoftwareRegisterType()){
+                                                  try {
+                                                      switch (data.getSoftwareRegisterType()){
 //                                                      case "3X(Input  Register)":
 //                                                          log.info("调用读取InputRegisters模拟量数据");
 //                                                          try {
@@ -169,49 +171,48 @@ public class ModbusTask {
 //                                                              e.printStackTrace();
 //                                                          }
 //                                                          break;
-                                                      default:
-                                                          //默认使用 3X(Input  Register)
-                                                          log.info("调用读取InputRegisters模拟量数据");
-                                                          try {
-                                                              // 读取数据 数据类型为 float Integer.valueOf(data.getSoftwareRegisterAddress())
-                                                              Number number = readInputRegisters(Integer.valueOf(data.getSoftwareRegisterAddress()), 4, modbusSalveId);
-                                                              //获取点名 例如 1F_CO2
-                                                              String callTheRoll = data.getCallTheRoll();
-                                                              // 获取楼层id
-                                                               String F = StringUtils.substringBefore(callTheRoll, "F");
-                                                               // 获取检测的数据名称
-                                                               String dataName = StringUtils.substringAfterLast(callTheRoll, "_");
-                                                               switch (dataName){
-                                                                   case "CHO":
-                                                                       dmEnvHistoryModbusData.setCho(number.toString());
-                                                                       break;
-                                                                   case "CO2":
-                                                                       dmEnvHistoryModbusData.setCo2(number.toString());
-                                                                       break;
-                                                                   case "H":
-                                                                       dmEnvHistoryModbusData.setH(number.toString());
-                                                                       break;
-                                                                   case "PM10":
-                                                                       dmEnvHistoryModbusData.setPm10(number.toString());
-                                                                       break;
-                                                                   case "T":
-                                                                       dmEnvHistoryModbusData.setT(number.toString());
-                                                                       break;
-                                                                   case "VOC":
-                                                                       dmEnvHistoryModbusData.setVoc(number.toString());
-                                                                       break;
-                                                               }
-                                                               //设置关联id
-                                                              dmEnvHistoryModbusData.setDataId(Long.valueOf(F));
-
-                                                          } catch (InterruptedException e) {
-                                                              log.error("调用读取InputRegisters模拟量数据,modbus读取数据失败,失败原因:{}",e.getMessage());
-                                                              return;
-                                                          } catch (ExecutionException e) {
-                                                              log.error("调用读取InputRegisters模拟量数据,modbus读取数据失败,失败原因:{}",e.getMessage());
-                                                              return;
-                                                          }
-                                                          break;
+                                                          default:
+                                                              //默认使用 3X(Input  Register)
+                                                              log.info("调用读取InputRegisters模拟量数据");
+                                                                  // 读取数据 数据类型为 float Integer.valueOf(data.getSoftwareRegisterAddress())
+                                                                  Number number = readInputRegisters(Integer.valueOf(data.getSoftwareRegisterAddress()), 4, modbusSalveId);
+                                                                  //获取点名 例如 1F_CO2
+                                                                  String callTheRoll = data.getCallTheRoll();
+                                                                  log.info("{}寄存器地址:{}",callTheRoll,data.getSoftwareRegisterAddress());
+                                                                  // 获取楼层id
+                                                                  String F = StringUtils.substringBefore(callTheRoll, "F");
+                                                                  // 获取检测的数据名称
+                                                                  String dataName = StringUtils.substringAfterLast(callTheRoll, "_");
+                                                                  switch (dataName){
+                                                                      case "CHO":
+                                                                          dmEnvHistoryModbusData.setCho(number.toString());
+                                                                          break;
+                                                                      case "CO2":
+                                                                          dmEnvHistoryModbusData.setCo2(number.toString());
+                                                                          break;
+                                                                      case "H":
+                                                                          dmEnvHistoryModbusData.setH(number.toString());
+                                                                          break;
+                                                                      case "PM10":
+                                                                          dmEnvHistoryModbusData.setPm10(number.toString());
+                                                                          break;
+                                                                      case "T":
+                                                                          dmEnvHistoryModbusData.setT(number.toString());
+                                                                          break;
+                                                                      case "VOC":
+                                                                          dmEnvHistoryModbusData.setVoc(number.toString());
+                                                                          break;
+                                                                  }
+                                                                  //设置关联id
+                                                                  dmEnvHistoryModbusData.setDataId(Long.valueOf(F));
+                                                                  break;
+                                                      }
+                                                  }catch (InterruptedException e) {
+                                                      log.error("调用读取InputRegisters模拟量数据,modbus读取数据失败,失败原因:{}",e.getMessage());
+                                                      return;
+                                                  } catch (ExecutionException e) {
+                                                      log.error("调用读取InputRegisters模拟量数据,modbus读取数据失败,失败原因:{}",e.getMessage());
+                                                      return;
                                                   }
                                               });
                                               dmEnvHistoryModbusDataService.create(dmEnvHistoryModbusData);

+ 49 - 0
eladmin-system/src/main/java/me/zhengjie/modules/thirdparty/v1/modbus/ModbusController.java

@@ -0,0 +1,49 @@
+/**
+ * Copyright (C), 2022-05-25
+ * FileName: ModbusTest
+ * Author:   wanglongda
+ * Date:     2022/5/25 10:27
+ * Description: modbus测试
+ */
+package me.zhengjie.modules.thirdparty.v1.modbus;/**
+ * Created Name: wanglongda
+ * Created Time: 2022/5/25 10:27
+ * Description: iot-hjjc
+ */
+
+import io.swagger.annotations.Api;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import me.zhengjie.annotation.rest.AnonymousGetMapping;
+import me.zhengjie.annotation.rest.AnonymousPostMapping;
+import me.zhengjie.modules.quartz.task.ModbusTask;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <功能简要> <br>
+ * <modbus测试>
+ *
+ * @Author wanglongda
+ * @createTime 2022/5/25 10:27
+ * @Version 1.0.0
+ */
+@Slf4j
+@RestController
+@RequiredArgsConstructor
+@Api(tags = "modbus接口")
+@RequestMapping("/modbus")
+public class ModbusController {
+
+    @Autowired
+    private ModbusTask modbusTask;
+
+    @AnonymousGetMapping("get")
+    public String getMessage() {
+        modbusTask.gainModbusData();
+        return "消息发送完成";
+    }
+
+}

+ 1 - 0
eladmin-system/src/main/java/me/zhengjie/modules/thirdparty/v1/package-info.java

@@ -0,0 +1 @@
+package me.zhengjie.modules.thirdparty.v1;