欢迎访问移动开发之家(rcyd.net),关注移动开发教程。移动开发之家  移动开发问答|  每日更新
页面位置 : > > > 内容正文

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

来源: 开发者 投稿于  被查看 43198 次 评论:113

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


目录
  • 1、导入Modbus4Android的库
  • 2、基于 TCP/IP 的 Modbus Master/客户端
    • 2.1、初始化ModbusMaster
    • 2.2、读写保持寄存器
    • 2.3、读写线圈
    • 2.4 回收Master
  • 3、基于 TCP/IP 的 Modbus Salve/服务端
    • 4、总结

      点我了解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协议内容请搜索3672js教程以前的文章或继续浏览下面的相关文章希望大家以后多多支持3672js教程!

      您可能感兴趣的文章:
      • java利用socket通信实现Modbus-RTU通信协议的示例代码
      • Java实现ModbusTCP通信功能

      用户评论