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 ...
最新文章
- 如何在Windows Azure VM上的SQL Server和Windows Azure SQL Database两者中做出选择
- Matlab与线性代数 -- 对角矩阵
- visual studio 2017 添加自定义代码片段 .snippet文件
- 在mysql中怎样设置值唯一_mysql怎么设置行值唯一?
- 频繁弹出“受到网络攻击”的消息怎么办,五分钟看懂“僵尸网络”攻击
- LInux命令行参数
- Python学习(七)面向对象 ——封装
- skywalking oap-server 域名配置
- mysql数据库写入数据的语法_mysql数据库插入数据语法
- 使用webpack引入sass全局变量
- 又要头秃?2020 年七大 AI 编程语言大盘点
- 遇见格灵深瞳那一刻,我一见倾心
- 为解决WINDOWS JRE启动外壳,找了好几个方案
- 用Python写的WiFi暴力破解工具(字典),已封装!!
- DPI与DFI技术分析
- 引入echarts 报错xAxis “0“ not found
- 打游戏的利器来了!配置再也不是限制我吃鸡的理由!
- word 编辑过程中变为只读_Word字体无法更改设置不起作用的几种情况
- 基因编辑最新研究成果进展(2021年11月)
- Python极简入门教程
热门文章
- kafka消费速度跟不上生产速度的解决方案!
- leetcode 547. Number of Provinces | 547. 省份数量(图的邻接矩阵 DFS)
- leetcode 448. 找到所有数组中消失的数字(Java版)
- 【Java语法】关于使用new和不使用new的数组值传递还是引用传递的问题
- 一文弄懂String的所有小秘密
- Java HttpClient使用小结
- Codeup墓地-问题 D: 继续畅通工程
- poj 1830 开关问题
- 1.使用适配器模式设计一个仿生机器人:要求机器人可以模拟各种动物行为,在机器人中定义了一系列方法,如机器人发声方法talk(),机器人移动方法move()等。如果希望在不改变已有Bird类代码的基础上
- 磁盘与文件系统管理( 认识磁盘,了解磁盘,文件系统的建立与自动挂载)