该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
public class ModbusTCP {
public static void main(String args[]) {
Comm comm=new Comm();
}
}
///
import com.serotonin.modbus4j.ModbusFactory;
import com.serotonin.modbus4j.ModbusMaster;
import com.serotonin.modbus4j.code.DataType;
import com.serotonin.modbus4j.code.RegisterRange;
import com.serotonin.modbus4j.ip.IpParameters;
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
/**
*
* @author xp
*/
public class Comm implements Runnable {
String ip = "10.0.0.1";
Thread thread;
String[] str = new String[100];
int[] data = new int[100];
Comm() {
thread = new Thread(this);
thread.start();
}
public void getValue() {
IpParameters params = new IpParameters();
ModbusFactory modbusFactory = new ModbusFactory();
ModbusMaster mod = null;
params.setHost(ip);
try {
mod = modbusFactory.createTcpMaster(params, true);
mod.init();
Object obj = null;
//从第0个地址位开始出数据,一直到99
for (int i = 0; i < 10; i++) {
//第寄存器里面取数据(设备编号,功能码,地址位,数据类型
//其中功能码为3
obj = mod.getValue(1, RegisterRange.HOLDING_REGISTER, i, DataType.TWO_BYTE_INT_UNSIGNED);
str[i] = String.valueOf(obj);
data[i] = Integer.valueOf(str[i]);
}
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}
@Override
public void run() {
while (thread != null) {
getValue();
try {
for (int i = 0; i < 10; i++) {
System.out.println(i + ":" + data[i]);
}
Thread.sleep(2000);
} catch (Exception e) {
}
}
}
}