modbus rtu java 通讯_android Modbus Rtu 通讯例子
【实例简介】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 通讯例子相关推荐
- 门子1200plc485 modbus rtu通讯,55条通讯,几百个数据,1s内完成
门子1200plc485 modbus rtu通讯,55条通讯,几百个数据,1s内完成. 最主要的是 别人的485要上升沿 还要写后面的完成和错误变量 又臭又长 我的 每条程序不用写上升沿 也不用管后 ...
- KEPServerEX与Modbus设备通讯TCP和RTU
KEPServerEX 与Modbus设备通讯TCP和RTU 北京东方鼎晨科技有限公司 2022年5月17日 目 录 1. 前言 2. Modbus TCP /IP Ethernet通讯配置 3. M ...
- 串行通讯RS485 Modbus RTU协议控制
一.内容简介 本文主要介绍欧姆龙CP1E做上位与SMC的LECP6电缸 之间串行通讯RS485 Modbus RTU协议程序控制说明. 二.设备简介 硬件:CP1E.CP1W-CIF1 ...
- 三菱FX3G/FX3S+485bd扩展,采用modbus rtu协议,crc校验,通讯控制四台E700变频器,可以实现正反转
三菱FX3G/FX3S 485协议通讯四台三菱E700变频器程序资料 三菱FX3G/FX3S+485bd扩展,采用modbus rtu协议,crc校验,通讯控制四台E700变频器,可以实现正反转,停止 ...
- java 借助modbus协议实现与硬件之间的通讯
首先咱们先讲一下通讯的基础知识: 通讯有模拟通讯和数字通讯,数字量通讯传输的是二进制脉冲信号,抗干扰能力强,数字量信号加密比较安全. 模拟量通讯:比如广播,发送的是一种波,收音机收到广播之后,进行解调 ...
- 以太网PLC无线WIFI跨网段通讯和Modbus仪表数据采集
产品介绍 产品型号:NET50-NAT-W4 使用范围:用于以太网PLC的跨网段无线通讯和仪表的数据采集 产品介绍 工业通讯桥接器(NET50-NAT-W4)用于以太网PLC的通讯扩展,以太网跨网段通 ...
- 485通讯与MODBUS的区别与联系
最近做智能检测的项目,设备.串口之间的通讯比较多,一会儿485,一会儿modbus RTU,有点晕了,这里重新梳理一下RS485.485通讯协议.ModBus通讯协议.Modbus Rtu通讯这几个点 ...
- rs485与modbus流程图_多个modbus主机与从机用RS485通讯,怎么办?-专业自动化论坛-中国工控网论坛...
多个modbus主机 与 从机用RS485 通讯, 怎么办? 在现场用人机界面通讯, 在机房的工控也要通讯 多个主机与一个modbus从机通讯, 有什么解决办法 ? ================= ...
- s7-200与计算机modbus通讯案例,西门子200MODBUS通讯案例.doc
西门子S7-200 Modbus小案例 要求:要使用Modbus协议必须先在STEP 7 Micro/Win上安装指令库 .Modbus主站协议只支持STEP 7 Micro/Win V4.0 SP5 ...
最新文章
- 大学生应该学习python和linux而不是matlab和windows
- Gradle: 警告:编码 GBK 的不可映射字符
- lempel ziv matlab,基于Python的LempelZiv算法的熵估计
- java avi转mp4_视频转GIF很麻烦?不!只需三步
- Linux内核workqueue
- 最大最小标准化 数值_分享丨实验数据标准化处理方法
- 贺利坚老师汇编课程43笔记:DUP用来数据的重复duplicate
- asp.net怎么实现按条件查询_用这个提取函数王中王,制作数据查询表
- 企业级监控软件使用zabbix key监控nginx status各种状态
- 软件测试工程师简历项目经验怎么写?--1000个已成功入职的软件测试工程师简历范文模板(含真实简历)
- 案例分析:传统媒体如何借力微信平台推广
- AI 考古比胡八一更高效
- 潇洒郎:批量压缩大师——python实现文件批量命名+批量加密码——GUI软件——打包exe文件
- WebSocket的那些事(4-Spring中的STOMP支持详解)
- CoppeliaSim基础:页面、视图、可视对象(相机/视觉传感器)
- 腾讯面试题:64匹马,8个跑道,选出最快的四匹马
- 谷歌play 数据接口_如何检查,管理和清除Google Play服务存储的数据/缓存
- 学习Linux的常见故障(待更新)
- 华硕W519L(win10系统)安装黑苹果全过程(几乎完美,已洗白)
- JQuery放大镜效果实现实例
热门文章
- 请求的链式处理——职责链模式
- 利剑无意之Dubbo 面试题
- leetcode 148. Sort List | 148. 排序链表(最优解归并排序,O(1)空间)
- leetcode 300. Longest Increasing Subsequence | 300. 最长递增子序列(动态规划)
- DevOps运维开发一体化 - 公开课笔记
- 【C/C++】从技术学习和实际运用的角度来看,C/C++和Java到底区别在哪?C语言、C++学习路线?
- 【JavaWeb】已解决:Resource interpreted as Stylesheet but transferred with MIME type text/html
- 在JS中如何判断undefined和null
- Spring之装配Bean(一)
- spark读取文件源码分析-2