7 changed files with 154 additions and 57 deletions
-
6pom.xml
-
9src/main/java/com/xujie/sys/modules/reader/dao/ModbusCommunicateMapper.java
-
17src/main/java/com/xujie/sys/modules/reader/entity/ModbusCommunicateEntity.java
-
9src/main/java/com/xujie/sys/modules/reader/service/ModbusCommunicateService.java
-
69src/main/java/com/xujie/sys/modules/reader/service/impl/GetInformationForExcelServiceImpl.java
-
71src/main/java/com/xujie/sys/modules/reader/service/impl/ModbusCommunicateServiceImpl.java
-
6src/main/resources/mapper/reader/ModbusCommunicateMapper.xml
@ -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> { |
||||
|
} |
||||
@ -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; |
||||
|
|
||||
|
} |
||||
@ -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(); |
||||
|
} |
||||
@ -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(); |
||||
|
} |
||||
|
|
||||
|
} |
||||
|
} |
||||
@ -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> |
||||
Write
Preview
Loading…
Cancel
Save
Reference in new issue