私.Modbus测试_ZC02_串口方式
生活随笔
收集整理的這篇文章主要介紹了
私.Modbus测试_ZC02_串口方式
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
ZC:另外一些信息在 “Modbus資料 - codeskill_android - 博客園.html”(https://www.cnblogs.com/codeskilla/p/9998416.html)
?
1、文章:modbus4j串口通訊 - u010655348的博客 - CSDN博客.html(https://blog.csdn.net/u010655348/article/details/52665228)
2、包:路徑:"...\ZC_IDE\Java_3rd\modbus_java\01_舊一點的\"
2.1、modbus4J.jar 源碼為:modbus4J-src.zip (版本:應該可能為 1.1)
2.2、seroUtils.jar 源碼為:mlohbihler-sero-utils-0b14066efbbc.zip (版本:不祥)
2.3、RXTXcomm.jar 源碼:沒有 (版本:不祥)
3、代碼:
package com.ModBusZ;import java.util.Arrays;import com.serotonin.io.serial.SerialParameters; 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.msg.ReadDiscreteInputsRequest; import com.serotonin.modbus4j.msg.ReadDiscreteInputsResponse; import com.serotonin.modbus4j.msg.ReadHoldingRegistersRequest; import com.serotonin.modbus4j.msg.ReadHoldingRegistersResponse; import com.serotonin.modbus4j.msg.WriteRegistersRequest; import com.serotonin.modbus4j.msg.WriteRegistersResponse;public class TestModbusDemo {//設定MODBUS網絡上從站地址private final static int SLAVE_ADDRESS = 1;// 串行波特率private final static int BAUD_RATE = 9600;public static void main(String[] args){SerialParameters serialParameters = new SerialParameters();// 設定MODBUS通訊的串行口serialParameters.setCommPortId("COM3");// 設定成無奇偶校驗serialParameters.setParity(0);// 設定成數據位是8位serialParameters.setDataBits(8);// 設定為1個停止位serialParameters.setStopBits(1);// 設定端口名稱serialParameters.setPortOwnerName("Numb nuts");// 設定端口波特率 serialParameters.setBaudRate(BAUD_RATE);// 創建ModbusFactory工廠實例ModbusFactory modbusFactory = new ModbusFactory();// 創建ModbusMaster實例ModbusMaster master = modbusFactory.createRtuMaster(serialParameters);// 初始化try{master.init();readHoldingRegistersTest(master,SLAVE_ADDRESS,0,100);} catch (ModbusInitException e) {e.printStackTrace();} finally {master.destroy();}}// mian(...)/*** 讀開關量型的輸入信號* @param master 主站* @param slaveId 從站地址* @param start 起始偏移量* @param len 待讀的開關量的個數*/private static void readDiscreteInputTest(ModbusMaster master, int slaveId, int start, int len){try{ReadDiscreteInputsRequest request = new ReadDiscreteInputsRequest(slaveId, start, len);ReadDiscreteInputsResponse response = (ReadDiscreteInputsResponse) master.send(request);if (response.isException())System.out.println("Exception response: message=" + response.getExceptionMessage());elseSystem.out.println(Arrays.toString(response.getBooleanData()));}catch (ModbusTransportException e) {e.printStackTrace();}}/*** 讀保持寄存器上的內容* @param master 主站* @param slaveId 從站地址* @param start 起始地址的偏移量* @param len 待讀寄存器的個數*/private static void readHoldingRegistersTest(ModbusMaster master,int slaveId, int start, int len){try{ReadHoldingRegistersRequest request = new ReadHoldingRegistersRequest(slaveId, start, len);ReadHoldingRegistersResponse response =(ReadHoldingRegistersResponse) master.send(request);if (response.isException())System.out.println("Exception response: message="+ response.getExceptionMessage());else{System.out.println(Arrays.toString(response.getShortData()));short[] list = response.getShortData();for(int i = 0; i < list.length; i++)System.out.print(list[i] + " ");}} catch (ModbusTransportException e) {e.printStackTrace();}}/*** 批量寫數據到保持寄存器* @param master 主站* @param slaveId 從站地址* @param start 起始地址的偏移量* @param values 待寫數據*/public static void writeRegistersTest(ModbusMaster master, int slaveId, int start, short[] values){try{WriteRegistersRequest request = new WriteRegistersRequest(slaveId, start, values);WriteRegistersResponse response = (WriteRegistersResponse) master.send(request);if (response.isException())System.out.println("Exception response: message="+ response.getExceptionMessage());elseSystem.out.println("Success");}catch (ModbusTransportException e) {e.printStackTrace();}} }?
4、
5、
?
轉載于:https://www.cnblogs.com/codeskilla/p/10017674.html
總結
以上是生活随笔為你收集整理的私.Modbus测试_ZC02_串口方式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 反编译之将脱壳后的dex文件重新打包成a
- 下一篇: python中协程实现的本质以及两个封装