王先生 2 years ago
parent
commit
a36d59371d

+ 68 - 0
eladmin-system/src/main/java/me/zhengjie/modules/quartz/task/ModbusTask.java

@@ -368,6 +368,74 @@ public class ModbusTask {
 
 
 
+    public void  gainModbusData1() {
+        try {
+            /**
+             * 根据sql查询所有总集合
+             */
+            List<DmModbusDriveDto> dmModbusDriveDtos = dmModbusDriveService.queryAll(null);
+            //进行遍历
+            dmModbusDriveDtos.forEach(drive->{
+                /**
+                 * 获取所有的信道集合  channels.size>0 进行遍历
+                 */
+                Set<DmModbusChannel> channels = drive.getChannels();
+                if (!channels.isEmpty()){
+                    channels.forEach(channel->{
+                        /**
+                         * 获取信道下的所有设备集合  dmModbusDevice.size>0 进行遍历
+                         */
+                        Set<DmModbusDevice> dmModbusDevice = channel.getDmModbusDevice();
+                        if (!dmModbusDevice.isEmpty()){
+                            dmModbusDevice.forEach(device->{
+                                /**
+                                 * 获取设备下的所有分组 dmModbusGroup.size>0 进行遍历
+                                 */
+                                Set<DmModbusGroup> dmModbusGroup = device.getDmModbusGroup();
+                                if (!dmModbusGroup.isEmpty()){
+                                    dmModbusGroup.forEach(group->{
+                                        /**
+                                         * 获取分组下的所有所有数据  dmModbusData.size>0 进行遍历
+                                         */
+                                        List<DmModbusData> dmModbusData = group.getDmModbusData();
+                                        if (!dmModbusData.isEmpty()){
+                                            //已经确认 空气质量统一用3X(Input  Register)  数据类型为short
+                                            dmModbusData.forEach(data->{
+                                                try {
+                                                    switch (data.getSoftwareRegisterType()){
+                                                        default:
+                                                            //默认使用 3X(Input  Register)
+//                                                            log.info("调用读取InputRegisters模拟量数据");
+                                                            // 读取数据 数据类型为 float Integer.valueOf(data.getSoftwareRegisterAddress())
+                                                            Number number = readInputRegisters(Integer.valueOf(data.getSoftwareRegisterAddress())-1, 4, modbusSalveId);
+                                                            //获取点名 例如 1F_CO2
+                                                            String callTheRoll = data.getCallTheRoll();
+//                                                            System.out.println("name:"+callTheRoll+"  lable:"+data.getSoftwareRegisterAddress()+"  value:"+number.toString());
+                                                            log.info("name:{}, lable:{}, value:{}", callTheRoll,data.getSoftwareRegisterAddress(),number.toString());
+                                                            break;
+                                                    }
+                                                }catch (Exception e) {
+                                                    log.error("调用读取InputRegisters模拟量数据,modbus读取数据失败,失败原因:{}",e.getMessage());
+                                                    return;
+                                                }
+                                            });
+                                        }
+                                    });
+                                }
+                            });
+                        }
+                    });
+                }
+            });
+        }catch (Exception e){
+            log.error("modbus获取失败,失败原因:{}",e.getMessage());
+            return;
+        }
+
+
+    }
+
+
     /***
      * 释放资源
      */

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

@@ -43,7 +43,8 @@ public class ModbusController {
 
     @AnonymousGetMapping("get")
     public String getMessage() {
-        modbusTask.gainModbusData();
+//        modbusTask.gainModbusData();
+        modbusTask.gainModbusData1();
         return "消息发送完成";
     }