【实例简介】ModbusRtuConnect例子

【实例截图】

【核心代码】

package com.modbusconnect;

import android.os.Bundle;

import android.support.v7.app.AppCompatActivity;

import android.view.View;

import android.widget.Button;

import android.widget.EditText;

import android.widget.TextView;

import android.widget.ToggleButton;

import com.modbusconnect.rtuwrapper.connection.ModbusRtuConnection;

import com.modbusconnect.rtuwrapper.io.ModbusRtuTransaction;

import com.modbusconnect.rtuwrapper.messaging.ModbusException;

import com.modbusconnect.rtuwrapper.messaging.ReadCoilRequest;

import com.modbusconnect.rtuwrapper.messaging.ReadCoilResponse;

import com.modbusconnect.rtuwrapper.messaging.ReadRegisterRequest;

import com.modbusconnect.rtuwrapper.messaging.ReadRegisterResponse;

import com.modbusconnect.rtuwrapper.messaging.WriteCoilRequest;

import com.modbusconnect.rtuwrapper.messaging.WriteCoilResponse;

import com.modbusconnect.rtuwrapper.messaging.WriteRegisterRequest;

import com.modbusconnect.rtuwrapper.messaging.WriteRegisterResponse;

import static com.modbusconnect.rtuwrapper.ModbusConstants.VENDOR_ID;

public class MainActivity extends AppCompatActivity {

TextView textView;

EditText etRegNum;

EditText etRegVal;

EditText editText;

ToggleButton toggleButton;

Button buttonWriteRegister;

Button buttonWriteCoil;

Button buttonSetAllCoils;

Button buttonReadRegs;

Button buttonReadCoils;

ModbusRtuConnection connection;

ModbusRtuTransaction transaction;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

textView = (TextView) findViewById(R.id.textView);

editText = (EditText) findViewById(R.id.editText);

toggleButton = (ToggleButton) findViewById(R.id.toggleButton);

etRegNum = (EditText) findViewById(R.id.etRegNum);

etRegVal = (EditText) findViewById(R.id.etRegVal);

System.out.println(etRegNum.getText().toString());

Button buttonConnect = (Button) findViewById(R.id.buttonConnect);

buttonConnect.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

connect();

}

});

buttonWriteRegister = (Button) findViewById(R.id.buttonWriteRegister);

buttonWriteRegister.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

int address = Integer.parseInt(etRegNum.getText().toString());

int value = Integer.parseInt(etRegVal.getText().toString());

WriteRegisterRequest request = new WriteRegisterRequest(address, value);

WriteRegisterResponse response;

try {

transaction.execute(request);

response = (WriteRegisterResponse) transaction.getResponse();

log("reg " address " = " response.getValue());

} catch (ModbusException e) {

e.printStackTrace();

}

}

});

buttonWriteCoil = (Button) findViewById(R.id.buttonWriteCoil);

buttonWriteCoil.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

int address = Integer.parseInt(editText.getText().toString());

boolean value = toggleButton.isChecked();

WriteCoilRequest request = new WriteCoilRequest(address, value);

WriteCoilResponse response;

try {

transaction.execute(request);

response = (WriteCoilResponse) transaction.getResponse();

log("coil " address " = " response.getValue());

} catch (ModbusException e) {

e.printStackTrace();

}

}

});

buttonSetAllCoils = (Button) findViewById(R.id.buttonWriteAllCoils);

buttonSetAllCoils.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

setAllCoilsOnOff();

}

});

buttonReadRegs = (Button) findViewById(R.id.buttonReadRegs);

buttonReadRegs.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

ReadRegisterRequest request = new ReadRegisterRequest();

ReadRegisterResponse response;

for (int i = 0; i < 7; i ) {

request.setData(i, 0);

try {

transaction.execute(request);

} catch (ModbusException e) {

e.printStackTrace();

}

try {

response = (ReadRegisterResponse) transaction.getResponse();

log("reg " i " = " response.getValue());

} catch (ModbusException e) {

e.printStackTrace();

}

}

}

});

buttonReadCoils = (Button) findViewById(R.id.buttonReadCoils);

buttonReadCoils.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

ReadCoilRequest request = new ReadCoilRequest();

ReadCoilResponse response;

for (int i = 1000; i < 1007; i ) {

request.setData(i, false);

try {

transaction.execute(request);

} catch (ModbusException e) {

e.printStackTrace();

}

try {

response = (ReadCoilResponse) transaction.getResponse();

log("coil " i " = " response.getValue());

} catch (ModbusException e) {

e.printStackTrace();

}

}

}

});

enableUi(false);

}

@Override

protected void onDestroy() {

if (connection != null) {

connection.disconnect();

}

super.onDestroy();

}

private void enableUi(boolean enable) {

buttonWriteRegister.setEnabled(enable);

buttonWriteCoil.setEnabled(enable);

buttonSetAllCoils.setEnabled(enable);

buttonReadRegs.setEnabled(enable);

buttonReadCoils.setEnabled(enable);

}

private void log(String text) {

textView.setText(textView.getText().toString() " // " text);

}

private void connect() {

connection = new ModbusRtuConnection(getApplicationContext(), VENDOR_ID, false);

connection.connect(new ModbusRtuConnection.OnConnectedToPlcListener() {

@Override

public void onConnected() {

if (connection.isConnected()) {

transaction = new ModbusRtuTransaction(connection);

}

log("Connected - " connection.isConnected());

enableUi(true);

}

});

}

//setCoilsOnOff vals

int current = 1000;

int startAddress = 1000;

int endAddress = 1006;

boolean isUp = true;

private void setAllCoilsOnOff() {

if (connection == null || !connection.isConnected()) return;

WriteCoilRequest request = new WriteCoilRequest();

if (current == endAddress) {

isUp = false;

} else if (current == startAddress) {

isUp = true;

}

try {

if (isUp) {

while (current < endAddress) {

request.setData(current, true);

transaction.execute(request);

current;

}

if (current == endAddress) {

request.setData(current, true);

transaction.execute(request);

}

} else {

while (current > startAddress) {

request.setData(current, false);

transaction.execute(request);

current--;

}

if (current == startAddress) {

request.setData(current, false);

transaction.execute(request);

}

}

} catch (ModbusException e) {

e.printStackTrace();

}

}

}

modbus rtu java 通讯_android Modbus Rtu 通讯例子相关推荐

  1. 门子1200plc485 modbus rtu通讯,55条通讯,几百个数据,1s内完成

    门子1200plc485 modbus rtu通讯,55条通讯,几百个数据,1s内完成. 最主要的是 别人的485要上升沿 还要写后面的完成和错误变量 又臭又长 我的 每条程序不用写上升沿 也不用管后 ...

  2. KEPServerEX与Modbus设备通讯TCP和RTU

    KEPServerEX 与Modbus设备通讯TCP和RTU 北京东方鼎晨科技有限公司 2022年5月17日 目 录 1. 前言 2. Modbus TCP /IP Ethernet通讯配置 3. M ...

  3. 串行通讯RS485 Modbus RTU协议控制

    一.内容简介 本文主要介绍欧姆龙CP1E做上位与SMC的LECP6电缸 之间串行通讯RS485 Modbus RTU协议程序控制说明. 二.设备简介         硬件:CP1E.CP1W-CIF1 ...

  4. 三菱FX3G/FX3S+485bd扩展,采用modbus rtu协议,crc校验,通讯控制四台E700变频器,可以实现正反转

    三菱FX3G/FX3S 485协议通讯四台三菱E700变频器程序资料 三菱FX3G/FX3S+485bd扩展,采用modbus rtu协议,crc校验,通讯控制四台E700变频器,可以实现正反转,停止 ...

  5. java 借助modbus协议实现与硬件之间的通讯

    首先咱们先讲一下通讯的基础知识: 通讯有模拟通讯和数字通讯,数字量通讯传输的是二进制脉冲信号,抗干扰能力强,数字量信号加密比较安全. 模拟量通讯:比如广播,发送的是一种波,收音机收到广播之后,进行解调 ...

  6. 以太网PLC无线WIFI跨网段通讯和Modbus仪表数据采集

    产品介绍 产品型号:NET50-NAT-W4 使用范围:用于以太网PLC的跨网段无线通讯和仪表的数据采集 产品介绍 工业通讯桥接器(NET50-NAT-W4)用于以太网PLC的通讯扩展,以太网跨网段通 ...

  7. 485通讯与MODBUS的区别与联系

    最近做智能检测的项目,设备.串口之间的通讯比较多,一会儿485,一会儿modbus RTU,有点晕了,这里重新梳理一下RS485.485通讯协议.ModBus通讯协议.Modbus Rtu通讯这几个点 ...

  8. rs485与modbus流程图_多个modbus主机与从机用RS485通讯,怎么办?-专业自动化论坛-中国工控网论坛...

    多个modbus主机 与 从机用RS485 通讯, 怎么办? 在现场用人机界面通讯, 在机房的工控也要通讯 多个主机与一个modbus从机通讯, 有什么解决办法 ? ================= ...

  9. s7-200与计算机modbus通讯案例,西门子200MODBUS通讯案例.doc

    西门子S7-200 Modbus小案例 要求:要使用Modbus协议必须先在STEP 7 Micro/Win上安装指令库 .Modbus主站协议只支持STEP 7 Micro/Win V4.0 SP5 ...

最新文章

  1. 如何在Windows Azure VM上的SQL Server和Windows Azure SQL Database两者中做出选择
  2. Matlab与线性代数 -- 对角矩阵
  3. visual studio 2017 添加自定义代码片段 .snippet文件
  4. 在mysql中怎样设置值唯一_mysql怎么设置行值唯一?
  5. 频繁弹出“受到网络攻击”的消息怎么办,五分钟看懂“僵尸网络”攻击
  6. LInux命令行参数
  7. Python学习(七)面向对象 ——封装
  8. skywalking oap-server 域名配置
  9. mysql数据库写入数据的语法_mysql数据库插入数据语法
  10. 使用webpack引入sass全局变量
  11. 又要头秃?2020 年七大 AI 编程语言大盘点
  12. 遇见格灵深瞳那一刻,我一见倾心
  13. 为解决WINDOWS JRE启动外壳,找了好几个方案
  14. 用Python写的WiFi暴力破解工具(字典),已封装!!
  15. DPI与DFI技术分析
  16. 引入echarts 报错xAxis “0“ not found
  17. 打游戏的利器来了!配置再也不是限制我吃鸡的理由!
  18. word 编辑过程中变为只读_Word字体无法更改设置不起作用的几种情况
  19. 基因编辑最新研究成果进展(2021年11月)
  20. Python极简入门教程

热门文章

  1. kafka消费速度跟不上生产速度的解决方案!
  2. leetcode 547. Number of Provinces | 547. 省份数量(图的邻接矩阵 DFS)
  3. leetcode 448. 找到所有数组中消失的数字(Java版)
  4. 【Java语法】关于使用new和不使用new的数组值传递还是引用传递的问题
  5. 一文弄懂String的所有小秘密
  6. Java HttpClient使用小结
  7. Codeup墓地-问题 D: 继续畅通工程
  8. poj 1830 开关问题
  9. 1.使用适配器模式设计一个仿生机器人:要求机器人可以模拟各种动物行为,在机器人中定义了一系列方法,如机器人发声方法talk(),机器人移动方法move()等。如果希望在不改变已有Bird类代码的基础上
  10. 磁盘与文件系统管理( 认识磁盘,了解磁盘,文件系统的建立与自动挂载)