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