欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android端使用Modbus協(xié)議的簡單方法

 更新時(shí)間:2021年11月03日 11:30:38   作者:被遺忘的涼白開  
Modbus協(xié)議是全球第一個(gè)用于工業(yè)現(xiàn)場的總線協(xié)議,與外設(shè)交互可以采用串口通信,tcp等方式,這篇文章主要給大家介紹了關(guān)于Android端使用Modbus協(xié)議的簡單方法,需要的朋友可以參考下

點(diǎn)我了解Modbus協(xié)議

Modbus用于設(shè)備之間的通信,同樣在正常App開發(fā)中用的也很少

1、導(dǎo)入Modbus4Android的庫

gayhub地址:github.com/zgkxzx/Modb

使用Jar包的方式引入可以,也可以直接將這個(gè)項(xiàng)目down到本地,引入這個(gè)項(xiàng)目,我使用是第二種方法

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 讀取的數(shù)據(jù)長度
 */
 ModbusReq.getInstance().readHoldingRegisters(object : OnRequestBack<ShortArray> {
            @SuppressLint("SetTextI18n")
            override fun onSuccess(t: ShortArray?) {//這個(gè)就是讀取到的數(shù)據(jù)
            
            }

            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())

各個(gè)功能的用法都基本上差不多,就是方法名和功能碼不一樣,讀的時(shí)候都是傳入從站的id和開始的位置,還有要讀取的長度,寫的時(shí)候也是傳入一個(gè)從站地址,開始的位置和一個(gè)數(shù)組,依次將數(shù)組的值從開始的位置寫入

2.4 回收Master

ModbusReq.getInstance().destory()

3、基于 TCP/IP 的 Modbus Salve/服務(wù)端

啟動(dòng)服務(wù)

var modbusSlave=TcpSlave(502,false)//默認(rèn)端口502,不開啟壓縮兒
modbusSlave.addProcessImage(BasicProcessImage(1))//初始化數(shù)據(jù)存儲(chǔ)的鏡像,
modbusSlave.start()//關(guān)閉服務(wù) stop方法

4、總結(jié)

到此這篇關(guān)于Android端使用Modbus協(xié)議的文章就介紹到這了,更多相關(guān)Android端使用Modbus協(xié)議內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論