Browse Source

对txt文件读取进行修改添加依赖,读取modbus

java8
wenkuan.shi 2 years ago
parent
commit
df26b160d3
  1. 6
      pom.xml
  2. 9
      src/main/java/com/xujie/sys/modules/reader/dao/ModbusCommunicateMapper.java
  3. 17
      src/main/java/com/xujie/sys/modules/reader/entity/ModbusCommunicateEntity.java
  4. 9
      src/main/java/com/xujie/sys/modules/reader/service/ModbusCommunicateService.java
  5. 93
      src/main/java/com/xujie/sys/modules/reader/service/impl/GetInformationForExcelServiceImpl.java
  6. 71
      src/main/java/com/xujie/sys/modules/reader/service/impl/ModbusCommunicateServiceImpl.java
  7. 6
      src/main/resources/mapper/reader/ModbusCommunicateMapper.xml

6
pom.xml

@ -312,6 +312,12 @@
<groupId>org.springframework.boot</groupId> <groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId> <artifactId>spring-boot-starter-mail</artifactId>
</dependency> </dependency>
<!-- j2mod进行Modbus TCP通讯并获取数据-->
<dependency>
<groupId>com.ghgande</groupId>
<artifactId>j2mod</artifactId>
<version>2.7.0</version> <!-- 或者替换为最新版本 -->
</dependency>
</dependencies> </dependencies>
<build> <build>

9
src/main/java/com/xujie/sys/modules/reader/dao/ModbusCommunicateMapper.java

@ -0,0 +1,9 @@
package com.xujie.sys.modules.reader.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.xujie.sys.modules.reader.entity.ModbusCommunicateEntity;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface ModbusCommunicateMapper extends BaseMapper<ModbusCommunicateEntity> {
}

17
src/main/java/com/xujie/sys/modules/reader/entity/ModbusCommunicateEntity.java

@ -0,0 +1,17 @@
package com.xujie.sys.modules.reader.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
@Data
@TableName("Equipment_PLC_location")
public class ModbusCommunicateEntity {
private int id;
private String modbusIp;
private int modbusPort;
private int registerAddress;
private int registerNum;
private int unitId;
}

9
src/main/java/com/xujie/sys/modules/reader/service/ModbusCommunicateService.java

@ -0,0 +1,9 @@
package com.xujie.sys.modules.reader.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.xujie.sys.modules.reader.entity.ModbusCommunicateEntity;
public interface ModbusCommunicateService extends IService<ModbusCommunicateEntity> {
void getInfoByModbus();
}

93
src/main/java/com/xujie/sys/modules/reader/service/impl/GetInformationForExcelServiceImpl.java

@ -49,7 +49,6 @@ public class GetInformationForExcelServiceImpl extends ServiceImpl<GetInformatio
//创建线程池 //创建线程池
ExecutorService executorService = Executors.newFixedThreadPool(locationList.size());//线程池的最大数量为文件夹的个数 ExecutorService executorService = Executors.newFixedThreadPool(locationList.size());//线程池的最大数量为文件夹的个数
for (EquipmentFolderLocation excel : locationList) { for (EquipmentFolderLocation excel : locationList) {
executorService.submit(() -> { executorService.submit(() -> {
try { try {
//对文件夹下的文件进行读取并保存 //对文件夹下的文件进行读取并保存
@ -57,7 +56,6 @@ public class GetInformationForExcelServiceImpl extends ServiceImpl<GetInformatio
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
} }
}); });
} }
//关闭线程 //关闭线程
@ -83,9 +81,6 @@ public class GetInformationForExcelServiceImpl extends ServiceImpl<GetInformatio
//图片 //图片
List<String> imageFiles = new ArrayList<>(); List<String> imageFiles = new ArrayList<>();
//对图片删除
List<String> deleteFile = new ArrayList<>();
if (fileInfo != null && files != null) { if (fileInfo != null && files != null) {
Path folderPath = Paths.get(folderFiler); Path folderPath = Paths.get(folderFiler);
try (DirectoryStream<Path> stream = Files.newDirectoryStream(folderPath)) { try (DirectoryStream<Path> stream = Files.newDirectoryStream(folderPath)) {
@ -101,23 +96,9 @@ public class GetInformationForExcelServiceImpl extends ServiceImpl<GetInformatio
if (contentType != null && contentType.startsWith("image")) { if (contentType != null && contentType.startsWith("image")) {
// 图片类型文件 // 图片类型文件
// 处理图片文件的逻辑 // 处理图片文件的逻辑
// String timestamp = String.valueOf(System.currentTimeMillis());
// // 指定新的文件名这里示例加上前缀
// Path newFilePath = folderPath.resolve(timestamp + "$" + file.getFileName());
// // 重命名文件
// Files.move(file, newFilePath, StandardCopyOption.REPLACE_EXISTING);
//保存的图片路径
// String name = file.getFileName().toString();
// imageFiles.add(excel.getBackupPhotoPath()+"\\"+timestamp + "$"+name);
// deleteFile.add(newFilePath.toString());
imageFiles.add(file.getFileName().toString()); imageFiles.add(file.getFileName().toString());
} else { } else {
// String timestamp = String.valueOf(System.currentTimeMillis());
// 指定新的文件名这里示例加上前缀
// Path newFilePath = folderPath.resolve(timestamp + "$" + file.getFileName());
// // 重命名文件
// Files.move(file, newFilePath, StandardCopyOption.REPLACE_EXISTING);
excelFiles.add(file.getFileName().toString()); excelFiles.add(file.getFileName().toString());
} }
} }
@ -333,15 +314,33 @@ public class GetInformationForExcelServiceImpl extends ServiceImpl<GetInformatio
equipmentDataDetail.setFileNo(excel.getFileNo()); equipmentDataDetail.setFileNo(excel.getFileNo());
equipmentDataDetail.setCreateDate(new Date()); equipmentDataDetail.setCreateDate(new Date());
equipmentDataDetail.setValue0(data[0]); equipmentDataDetail.setValue0(data[0]);
equipmentDataDetail.setValue1(data[1]);
equipmentDataDetail.setValue2(data[2]);
equipmentDataDetail.setValue3(data[3]);
equipmentDataDetail.setValue4(data[4]);
equipmentDataDetail.setValue5(data[5]);
equipmentDataDetail.setValue6(data[6]);
equipmentDataDetail.setValue7(data[7]);
equipmentDataDetail.setValue8(data[8]);
equipmentDataDetail.setValue9(data[9]);
if (data.length>1){
equipmentDataDetail.setValue1(data[1]);
}
if (data.length>2){
equipmentDataDetail.setValue2(data[2]);
}
if (data.length>3){
equipmentDataDetail.setValue3(data[3]);
}
if (data.length>4){
equipmentDataDetail.setValue4(data[4]);
}
if (data.length>5){
equipmentDataDetail.setValue5(data[5]);
}
if (data.length>6){
equipmentDataDetail.setValue6(data[6]);
}
if (data.length>7){
equipmentDataDetail.setValue7(data[7]);
}
if (data.length>8){
equipmentDataDetail.setValue8(data[8]);
}
if (data.length>9){
equipmentDataDetail.setValue9(data[9]);
}
equipmentDataDetail.setNum(index); equipmentDataDetail.setNum(index);
equipmentDataDetails.add(equipmentDataDetail); equipmentDataDetails.add(equipmentDataDetail);
index++; index++;
@ -431,9 +430,15 @@ public class GetInformationForExcelServiceImpl extends ServiceImpl<GetInformatio
equipmentDataDetail.setFileNo(excel.getFileNo()); equipmentDataDetail.setFileNo(excel.getFileNo());
equipmentDataDetail.setCreateDate(new Date()); equipmentDataDetail.setCreateDate(new Date());
equipmentDataDetail.setValue0(data[0]); equipmentDataDetail.setValue0(data[0]);
equipmentDataDetail.setValue1(data[1]);
equipmentDataDetail.setValue2(data[2]);
equipmentDataDetail.setValue3(data[3]);
if (data.length>1){
equipmentDataDetail.setValue1(data[1]);
}
if (data.length>2){
equipmentDataDetail.setValue2(data[2]);
}
if (data.length>3){
equipmentDataDetail.setValue3(data[3]);
}
equipmentDataDetail.setNum(index); equipmentDataDetail.setNum(index);
detailList.add(equipmentDataDetail); detailList.add(equipmentDataDetail);
index++; index++;
@ -502,31 +507,5 @@ public class GetInformationForExcelServiceImpl extends ServiceImpl<GetInformatio
} }
} }
public static void main(String[] args) {
String folderFile = "E:\\file";
Path folderPath = Paths.get(folderFile);
try (DirectoryStream<Path> stream = Files.newDirectoryStream(folderPath)) {
for (Path file : stream) {
String contentType = Files.probeContentType(file);
if (contentType != null && contentType.startsWith("image")) {
// // 图片类型文件
// // 处理图片文件的逻辑
String timestamp = String.valueOf(System.currentTimeMillis());
// // 指定新的文件名这里示例加上前缀
// Path newFilePath = folderPath.resolve(timestamp + "$" + file.getFileName());
// // 重命名文件
// Files.move(file, newFilePath, StandardCopyOption.REPLACE_EXISTING);
// String s = newFilePath.toString();
Path s = file.getFileName();
System.out.println("新图片名: " + s);
String s1 = file.getFileName().toString();
System.out.println("旧图片名" + timestamp + "$" + s1);
}
}
} catch (IOException | DirectoryIteratorException e) {
e.printStackTrace();
}
}
} }

71
src/main/java/com/xujie/sys/modules/reader/service/impl/ModbusCommunicateServiceImpl.java

@ -0,0 +1,71 @@
package com.xujie.sys.modules.reader.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ghgande.j2mod.modbus.io.ModbusTCPTransaction;
import com.ghgande.j2mod.modbus.msg.ReadInputRegistersRequest;
import com.ghgande.j2mod.modbus.msg.ReadInputRegistersResponse;
import com.ghgande.j2mod.modbus.net.TCPMasterConnection;
import com.ghgande.j2mod.modbus.procimg.InputRegister;
import com.xujie.sys.modules.reader.dao.ModbusCommunicateMapper;
import com.xujie.sys.modules.reader.entity.ModbusCommunicateEntity;
import com.xujie.sys.modules.reader.service.ModbusCommunicateService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.net.InetAddress;
@Service
public class ModbusCommunicateServiceImpl extends ServiceImpl<ModbusCommunicateMapper,ModbusCommunicateEntity> implements ModbusCommunicateService {
@Autowired
private ModbusCommunicateMapper modbusCommunicateMapper;
@Override
public void getInfoByModbus() {
ModbusCommunicateEntity one = this.getOne(new LambdaQueryWrapper<>());
String modbusIp = one.getModbusIp();
int modbusPort = one.getModbusPort();
int registerAddress = one.getRegisterAddress();
int registerNum = one.getRegisterNum();
try {
InetAddress ipAddress = InetAddress.getByName(modbusIp);
// 连接到Modbus设备
TCPMasterConnection connection = new TCPMasterConnection(ipAddress);
connection.setPort(modbusPort);
connection.connect();
// 创建一个Modbus TCP请求
//ReadInputRegistersRequest(寄存器起始地址值,寄存器个数)
ReadInputRegistersRequest request = new ReadInputRegistersRequest(registerAddress, registerNum);
request.setUnitID(1); // 设置Modbus设备的Unit ID
// 创建一个Modbus TCP事务
ModbusTCPTransaction transaction = new ModbusTCPTransaction(connection);
transaction.setRequest(request);
// 执行Modbus TCP事务
transaction.execute();
// 获取响应
ReadInputRegistersResponse response = (ReadInputRegistersResponse) transaction.getResponse();
if (response != null) {
// 处理响应数据
InputRegister[] registers1 = response.getRegisters();
for (InputRegister inputRegister : registers1) {
int value = inputRegister.getValue();
System.out.println("Register value: " + value);
}
} else {
System.out.println("No response received.");
}
// 关闭连接
connection.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}

6
src/main/resources/mapper/reader/ModbusCommunicateMapper.xml

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.xujie.sys.modules.reader.dao.ModbusCommunicateMapper">
</mapper>
Loading…
Cancel
Save