
java jamod实现modbus 如何读取浮点数据
1个回答
2016-09-30 · 做真实的自己 用良心做教育
千锋教育专注HTML5大前端、JavaEE、Python、人工智能、UI&UE、云计算、全栈软件测试、大数据、物联网+嵌入式、Unity游戏开发、网络安全、互联网营销、Go语言等培训教育。
向TA提问
关注

展开全部
package com.zsc;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import com.battery.bean.CommunityExceptionRecord;
import com.serotonin.modbus4j.ModbusFactory;
import com.serotonin.modbus4j.ModbusMaster;
import com.serotonin.modbus4j.exception.ModbusInitException;
import com.serotonin.modbus4j.exception.ModbusTransportException;
import com.serotonin.modbus4j.ip.IpParameters;
import com.serotonin.modbus4j.msg.ModbusRequest;
import com.serotonin.modbus4j.msg.ModbusResponse;
import com.serotonin.modbus4j.msg.ReadHoldingRegistersRequest;
import com.serotonin.modbus4j.msg.WriteRegistersRequest;
import com.serotonin.modbus4j.msg.WriteRegistersResponse;
import com.serotonin.util.queue.ByteQueue;
public class ReadAWriteUtil {
public static void modbusWTCP(String ip, int port, int slaveId, int start, short[] values) {
ModbusFactory modbusFactory = new ModbusFactory();
//
设备
ModbusTCP
的
Ip
与端口,如果不设定端口则默认为
502
IpParameters params = new IpParameters();
params.setHost(ip);
if (502 != port) {
params.setPort(port);
}//
设置端口,默认
502
ModbusMaster tcpMaster = null;
//
参数
1
:
IP
和端口信息参数
2
:保持连接激活
tcpMaster = modbusFactory.createTcpMaster(params, true);
try {
tcpMaster.init();
System.out.println("===============" + 1111111);
} catch (ModbusInitException e) {
// System.out.println("11111111111111=="+"
此处出现问题了啊
!");
//
如果出现了通信异常信息,则保存到数据库中
CommunityExceptionRecord cer = new CommunityExceptionRecord();
cer.setDate(new Date());
cer.setIp(ip);
// cer.setRemark(bgName+"
出现连接异常
");
// batteryGroupRecordService.saveCommunityException(cer);
}
try {
WriteRegistersRequest
request
=
new
WriteRegistersRequest(slaveId,
start,
values);
WriteRegistersResponse
response
=
(WriteRegistersResponse)
tcpMaster.send(request);
if (response.isException())
System.out.println("Exception
response:
message="
+
response.getExceptionMessage());
else
System.out.println("Success");
} catch (ModbusTransportException e) {
e.printStackTrace();
}
}
public static ByteQueue modbusTCP(String ip, int port, int start,int readLenth) {
ModbusFactory modbusFactory = new ModbusFactory();
//
设备
ModbusTCP
的
Ip
与端口,如果不设定端口则默认为
502
IpParameters params = new IpParameters();
params.setHost(ip);
if(502!=port){params.setPort(port);}//
设置端口,默认
502
ModbusMaster tcpMaster = null;
tcpMaster = modbusFactory.createTcpMaster(params, true);
try {
tcpMaster.init();
System.out.println("==============="+1111111);
} catch (ModbusInitException e) {
return null;
}
ModbusRequest modbusRequest=null;
try {
modbusRequest
=
new
ReadHoldingRegistersRequest(1,
start,
readLenth);//
功能码
03
} catch (ModbusTransportException e) {
e.printStackTrace();
}
ModbusResponse modbusResponse=null;
try {
modbusResponse = tcpMaster.send(modbusRequest);
} catch (ModbusTransportException e) {
e.printStackTrace();
ByteQueue byteQueue= new ByteQueue(12);
modbusResponse.write(byteQueue);
System.out.println("
功能码
:"+modbusRequest.getFunctionCode());
System.out.println("
从站地址
:"+modbusRequest.getSlaveId());
System.out.println("
收到的响应信息大小
:"+byteQueue.size());
System.out.println("
收到的响应信息值
:"+byteQueue);
return byteQueue;
}
}
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import com.battery.bean.CommunityExceptionRecord;
import com.serotonin.modbus4j.ModbusFactory;
import com.serotonin.modbus4j.ModbusMaster;
import com.serotonin.modbus4j.exception.ModbusInitException;
import com.serotonin.modbus4j.exception.ModbusTransportException;
import com.serotonin.modbus4j.ip.IpParameters;
import com.serotonin.modbus4j.msg.ModbusRequest;
import com.serotonin.modbus4j.msg.ModbusResponse;
import com.serotonin.modbus4j.msg.ReadHoldingRegistersRequest;
import com.serotonin.modbus4j.msg.WriteRegistersRequest;
import com.serotonin.modbus4j.msg.WriteRegistersResponse;
import com.serotonin.util.queue.ByteQueue;
public class ReadAWriteUtil {
public static void modbusWTCP(String ip, int port, int slaveId, int start, short[] values) {
ModbusFactory modbusFactory = new ModbusFactory();
//
设备
ModbusTCP
的
Ip
与端口,如果不设定端口则默认为
502
IpParameters params = new IpParameters();
params.setHost(ip);
if (502 != port) {
params.setPort(port);
}//
设置端口,默认
502
ModbusMaster tcpMaster = null;
//
参数
1
:
IP
和端口信息参数
2
:保持连接激活
tcpMaster = modbusFactory.createTcpMaster(params, true);
try {
tcpMaster.init();
System.out.println("===============" + 1111111);
} catch (ModbusInitException e) {
// System.out.println("11111111111111=="+"
此处出现问题了啊
!");
//
如果出现了通信异常信息,则保存到数据库中
CommunityExceptionRecord cer = new CommunityExceptionRecord();
cer.setDate(new Date());
cer.setIp(ip);
// cer.setRemark(bgName+"
出现连接异常
");
// batteryGroupRecordService.saveCommunityException(cer);
}
try {
WriteRegistersRequest
request
=
new
WriteRegistersRequest(slaveId,
start,
values);
WriteRegistersResponse
response
=
(WriteRegistersResponse)
tcpMaster.send(request);
if (response.isException())
System.out.println("Exception
response:
message="
+
response.getExceptionMessage());
else
System.out.println("Success");
} catch (ModbusTransportException e) {
e.printStackTrace();
}
}
public static ByteQueue modbusTCP(String ip, int port, int start,int readLenth) {
ModbusFactory modbusFactory = new ModbusFactory();
//
设备
ModbusTCP
的
Ip
与端口,如果不设定端口则默认为
502
IpParameters params = new IpParameters();
params.setHost(ip);
if(502!=port){params.setPort(port);}//
设置端口,默认
502
ModbusMaster tcpMaster = null;
tcpMaster = modbusFactory.createTcpMaster(params, true);
try {
tcpMaster.init();
System.out.println("==============="+1111111);
} catch (ModbusInitException e) {
return null;
}
ModbusRequest modbusRequest=null;
try {
modbusRequest
=
new
ReadHoldingRegistersRequest(1,
start,
readLenth);//
功能码
03
} catch (ModbusTransportException e) {
e.printStackTrace();
}
ModbusResponse modbusResponse=null;
try {
modbusResponse = tcpMaster.send(modbusRequest);
} catch (ModbusTransportException e) {
e.printStackTrace();
ByteQueue byteQueue= new ByteQueue(12);
modbusResponse.write(byteQueue);
System.out.println("
功能码
:"+modbusRequest.getFunctionCode());
System.out.println("
从站地址
:"+modbusRequest.getSlaveId());
System.out.println("
收到的响应信息大小
:"+byteQueue.size());
System.out.println("
收到的响应信息值
:"+byteQueue);
return byteQueue;
}
}
追问
我用的是jamod不是modbus4j
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询