Android端使用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中button实现onclicklistener事件的两种方式
本文介绍下Android中button实现onclicklistener事件的两种方法,感兴趣的朋友可以参考下2013-04-04Android7.0上某些PopuWindow出现显示位置不正确问题的解决方法
这篇文章主要介绍了Android7.0上某些PopuWindow出现显示位置不正确问题的解决方法,涉及针对Android7.0中PopuWindow属性与方法的相关设置技巧,需要的朋友可以参考下2017-10-10详解Android中的NestedScrolling机制带你玩转嵌套滑动
这篇文章主要给大家详细解析了Android中的NestedScrolling机制,通过介绍该机制带你玩转Android中的嵌套滑动效果,文中给出了详细的示例代码和介绍,需要的朋友们可以参考学习,下面来一起看看吧。2017-05-05
最新评论