【实例简介】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. 大学生应该学习python和linux而不是matlab和windows
  2. Gradle: 警告:编码 GBK 的不可映射字符
  3. lempel ziv matlab,基于Python的LempelZiv算法的熵估计
  4. java avi转mp4_视频转GIF很麻烦?不!只需三步
  5. Linux内核workqueue
  6. 最大最小标准化 数值_分享丨实验数据标准化处理方法
  7. 贺利坚老师汇编课程43笔记:DUP用来数据的重复duplicate
  8. asp.net怎么实现按条件查询_用这个提取函数王中王,制作数据查询表
  9. 企业级监控软件使用zabbix key监控nginx status各种状态
  10. 软件测试工程师简历项目经验怎么写?--1000个已成功入职的软件测试工程师简历范文模板(含真实简历)
  11. 案例分析:传统媒体如何借力微信平台推广
  12. AI 考古比胡八一更高效
  13. 潇洒郎:批量压缩大师——python实现文件批量命名+批量加密码——GUI软件——打包exe文件
  14. WebSocket的那些事(4-Spring中的STOMP支持详解)
  15. CoppeliaSim基础:页面、视图、可视对象(相机/视觉传感器)
  16. 腾讯面试题:64匹马,8个跑道,选出最快的四匹马
  17. 谷歌play 数据接口_如何检查,管理和清除Google Play服务存储的数据/缓存
  18. 学习Linux的常见故障(待更新)
  19. 华硕W519L(win10系统)安装黑苹果全过程(几乎完美,已洗白)
  20. JQuery放大镜效果实现实例

热门文章

  1. 请求的链式处理——职责链模式
  2. 利剑无意之Dubbo 面试题
  3. leetcode 148. Sort List | 148. 排序链表(最优解归并排序,O(1)空间)
  4. leetcode 300. Longest Increasing Subsequence | 300. 最长递增子序列(动态规划)
  5. DevOps运维开发一体化 - 公开课笔记
  6. 【C/C++】从技术学习和实际运用的角度来看,C/C++和Java到底区别在哪?C语言、C++学习路线?
  7. 【JavaWeb】已解决:Resource interpreted as Stylesheet but transferred with MIME type text/html
  8. 在JS中如何判断undefined和null
  9. Spring之装配Bean(一)
  10. spark读取文件源码分析-2