当前位置:Gxlcms > 数据库问题 > 基于MODBUS-RTU协议的串口编程

基于MODBUS-RTU协议的串口编程

时间:2021-07-01 10:21:17 帮助过:5人阅读

static void main(String[] args) { SerialParameters serialParameters = new SerialParameters(); // 设定MODBUS通讯的串行口 serialParameters.setCommPortId("com6"); // 设定成无奇偶校验 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(); /** * 读的位置从零开始,长度4 * 长度大小是采集器寄存器的数量,寄存器的数量是采集器可接入的电流输入的路数 */ readHoldingRegistersTest(master,SLAVE_ADDRESS,0,4); } catch (ModbusInitException e) { e.printStackTrace(); } finally { master.destroy(); } } 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] + " "); } System.out.println(); int hight = (list[3] - 4000) /160; if(hight <= 0){ System.out.println("水位高度为:0CM"); }else{ System.out.println("水位高度为:" + (hight + 13.5) + "CM"); } } } catch (ModbusTransportException e) { e.printStackTrace(); } }

 最后给大家附上官方jar包,这个资源一般是比较难找到的,特别是对一些刚开始研究的同仁更是如此啦,资源包如下:https://files.cnblogs.com/files/cymiao/modbus.zip

 

基于MODBUS-RTU协议的串口编程

标签:返回   port   register   为什么   ram   col   校验   图片   files   

人气教程排行