Modbus协议是全球第一个用于工业现场的总线协议,与外设交互可以采用串口通信,tcp等方式,这篇文章主要给大家介绍了关于Android端使用Modbus协议的简单方法,需要的朋友可以参考下
点我了解Modbus协议
Modbus用于设备之间的通信,同样在正常App开发中用的也很少
1、导入Modbus4Android的库
gayhub地址:github.com/zgkxzx/Modb…
使用Jar包的方式引入可以,也可以直接将这个项目down到本地,引入这个项目,我使用是第二种方法
2、基于 TCP/IP 的 Modbus Master/客户端
2.1、初始化ModbusMaster
ModbusReq.getInstance().setParam(ModbusParam()
.setHost(salveIP)//从站的IP地址
.setPort(salvePort)//从站的端口
.setEncapsulated(false)//
.setKeepAlive(true)
.setTimeout(2000)
.setRetries(0))
.init(object : OnRequestBack<String> {
override fun onSuccess(t: String?) {
}
override fun onFailed(msg: String?) {
}
})
2.2、读写保持寄存器
读保持寄存器
/**
* Function Code 3
* Read Holding Registers
*
* @param onRequestBack callback
* @param slaveId slave id 从站id
* @param start start address 读取保持寄存器的开始位置
* @param len length 读取的数据长度
*/
ModbusReq.getInstance().readHoldingRegisters(object : OnRequestBack<ShortArray> {
@SuppressLint("SetTextI18n")
override fun onSuccess(t: ShortArray?) {//这个就是读取到的数据
}
override fun onFailed(msg: String?) {
}
}, slaveId, shart, len)
写保持寄存器
/**
* Function Code 16
* Write Registers
*
* @param onRequestBack callback
* @param slaveId slave id
* @param start start address
* @param values values
*/
ModbusReq.getInstance().writeRegisters(object : OnRequestBack<String> {
override fun onSuccess(s: String) {
}
override fun onFailed(msg: String) {
}
}, slaveId, start, shortArray)
2.3、读写线圈
读线圈
读线圈
/**
* Function Code 1
* Read Coil Register
*
* @param onRequestBack callback
* @param slaveId slave id
* @param start start address
* @param len length
*/
ModbusReq.getInstance().readCoil(object :OnRequestBack<BooleanArray>{
override fun onSuccess(t: BooleanArray?) {
}
override fun onFailed(msg: String?) {
}
},1,1,10)
写线圈
ModbusReq.getInstance().writeCoils(object :OnRequestBack<String>{
override fun onFailed(msg: String?) {
TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
}
override fun onSuccess(t: String?) {
TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
}
},1,1, arrayOf(true,true,false,false).toBooleanArray())
各个功能的用法都基本上差不多,就是方法名和功能码不一样,读的时候都是传入从站的id和开始的位置,还有要读取的长度,写的时候也是传入一个从站地址,开始的位置和一个数组,依次将数组的值从开始的位置写入
2.4 回收Master
ModbusReq.getInstance().destory()
3、基于 TCP/IP 的 Modbus Salve/服务端
启动服务
var modbusSlave=TcpSlave(502,false)//默认端口502,不开启压缩儿
modbusSlave.addProcessImage(BasicProcessImage(1))//初始化数据存储的镜像,
modbusSlave.start()//关闭服务 stop方法
4、总结
到此这篇关于Android端使用Modbus协议的文章就介绍到这了,更多相关Android端使用Modbus协议内容请搜索编程学习网以前的文章希望大家以后多多支持编程学习网!
织梦狗教程
本文标题为:Android端使用Modbus协议的简单方法
基础教程推荐
猜你喜欢
- Android开发使用RecyclerView添加点击事件实例详解 2023-06-15
- IOS 播放系统提示音使用总结(AudioToolbox) 2023-03-01
- 解决Android Studio突然不显示logcat日志的问题 2023-02-04
- Flutter绘图组件之CustomPaint使用详解 2023-05-12
- Android多返回栈技术 2023-04-15
- Android中的webview监听每次URL变化实例 2023-01-23
- iOS开发教程之XLForm的基本使用方法 2023-05-01
- Flutter手势密码的实现示例(附demo) 2023-04-11
- android studio按钮监听的5种方法实例详解 2023-01-12
- IOS应用内跳转系统设置相关界面的方法 2022-11-20
