Android端使用Modbus协议的简单方法

 更新时间:2021年11月03日 11:30:38   作者:被遗忘的凉白开  
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 CameraManager类详解

    Android CameraManager类详解

    这篇文章主要为大家详细介绍了Android CameraManager类,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-10-10
  • Android 扫码枪输入时屏蔽软键盘和顶部状态栏的解决方案

    Android 扫码枪输入时屏蔽软键盘和顶部状态栏的解决方案

    在Android设备上,使用扫码枪时常遇到软键盘和顶部状态栏显示问题,本文介绍了在Android 7.1.2版本上,如何通过设置inputType为none屏蔽软键盘,以及通过hideStatusBar和NoActionBar方法隐藏顶部状态栏,以优化扫码枪使用界面,这些方法有助于提升使用扫码枪场景的用户体验
    2024-10-10
  • Android实现粒子漩涡动画

    Android实现粒子漩涡动画

    粒子动画经常用于大画幅的渲染效果,实际上难度并不高,但是在使用粒子动画时,必须要遵循的一些要素,起点,矢量速度和符合运动学公式等,文中有详细的代码示例供大家参考,具有一定的参考价值,需要的朋友可以参考下
    2024-01-01
  • Android亮屏和熄屏控制实例详解

    Android亮屏和熄屏控制实例详解

    这篇文章主要介绍了Android亮屏和熄屏控制的方法,结合实例形式较为详细的分析了Android亮屏与息屏的原理,实现技巧与相关注意事项,需要的朋友可以参考下
    2016-02-02
  • Android判断网络类型的方法(2g,3g还是wifi)

    Android判断网络类型的方法(2g,3g还是wifi)

    这篇文章主要介绍了Android判断网络类型的方法,可实现判断2g,3g还是wifi的功能,结合实例形式分析了Android针对网络类型的相关判定技巧,需要的朋友可以参考下
    2016-02-02
  • Android 详解ThreadLocal及InheritableThreadLocal

    Android 详解ThreadLocal及InheritableThreadLocal

    这篇文章主要介绍了Android 详解ThreadLocal及InheritableThreadLocal的相关资料,需要的朋友可以参考下
    2017-01-01
  • android仿微信联系人索引列表功能

    android仿微信联系人索引列表功能

    这篇文章主要为大家详细介绍了android仿微信联系人索引列表功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-11-11
  • Android如何跳转到应用商店的APP详情页面

    Android如何跳转到应用商店的APP详情页面

    最近做项目遇到这样的需求,要求从App内部点击按钮或链接,跳转到应用商店的某个APP的详情页面,怎么实现此功能呢?下面小编给大家分享Android如何跳转到应用商店的APP详情页面,需要的朋友参考下
    2017-01-01
  • 详解Android开启OTG功能/USB Host API功能

    详解Android开启OTG功能/USB Host API功能

    这篇文章主要介绍了Android开启OTG功能/USB Host API功能,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-07-07
  • Android电量优化提高手机续航

    Android电量优化提高手机续航

    这篇文章主要为大家介绍了Android电量优化提高你的手机续航示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-02-02

最新评论