|
@@ -17,6 +17,61 @@
|
|
|
|
|
|
create() 方法会阻塞线程,如果不希望阻塞线程可以使用createByUnBlock(),以工具内的单线程池执行。
|
|
|
|
|
|
+```java
|
|
|
+ ModbusTcpMasterBuilder master = new ModbusTcpMasterBuilder("127.0.0.1", 5001);
|
|
|
+ master.createByUnBlock();
|
|
|
+ TcpSynchronousWaitingRoom.waitTime=5000L;
|
|
|
+ Thread.sleep(3000L);
|
|
|
+ Map<Integer, ModbusDataTypeEnum> map = new HashMap<>();
|
|
|
+//构建一个请求数据的列表 该map代表 取0-120 地址位 , 数据类型为P_AB的 数据 这个根据实际需要进行修改 占用两个寄存器的数据 地址位该数据起始寄存器地址
|
|
|
+ for (int i = 0; i <= 120; i++) {
|
|
|
+ map.put(i , ModbusDataTypeEnum.P_AB);
|
|
|
+ }
|
|
|
+ List<Obj4RequestRegister> ll = ModbusRequestDataUtils.splitModbusRequest(map, 1, FunctionCode.READ_HOLDING_REGISTERS);
|
|
|
+
|
|
|
+ for (; ; ) {
|
|
|
+ try {
|
|
|
+ Map<Integer, IModbusDataType> map1 = ModbusRequestDataUtils.getRegisterData(master, ll);
|
|
|
+ ArrayList<Integer> lll = new ArrayList<Integer>(map1.keySet());
|
|
|
+ Collections.sort(lll);
|
|
|
+ for (Integer i : lll) {
|
|
|
+ if(map1.get(i) instanceof NumericModbusData) {
|
|
|
+ System.out.println(i + " ============ " + ((NumericModbusData) map1.get(i)).getValue());
|
|
|
+ }else {
|
|
|
+ System.out.println(i + " ============ " + JSON.toJSONString(((BooleanModbusDataInRegister) map1.get(i)).getValues()));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ Thread.sleep(3000L);
|
|
|
+ }
|
|
|
+```
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+### SLAVER的创建
|
|
|
+
|
|
|
+```java
|
|
|
+ModbusTcpSlaverBuilder slaverBuilder = new ModbusTcpSlaverBuilder(502);
|
|
|
+ slaverBuilder.createByUnBlock();
|
|
|
+
|
|
|
+ Random random = new Random();
|
|
|
+ boolean f;
|
|
|
+ for (; ; ) {
|
|
|
+ for (int i = 0; i < 10; i++) {
|
|
|
+ //设置地址位 数据类型&值
|
|
|
+ slaverBuilder.getModbusSlaveDataContainer().setRegister(1, i, new BADC(BigDecimal.valueOf(random.nextFloat())));
|
|
|
+ /*f = random.nextBoolean();
|
|
|
+ System.out.println(i + ":" + f);
|
|
|
+ slaverBuilder.getModbusSlaveDataContainer().setCoil(1, i, f);*/
|
|
|
+ }
|
|
|
+ Thread.sleep(2000L);
|
|
|
+ }
|
|
|
+```
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
### 数据的接收
|
|
|
|
|
|
|