Android端使用Modbus協(xié)議的簡單方法
Modbus用于設(shè)備之間的通信,同樣在正常App開發(fā)中用的也很少
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 讀取的數(shù)據(jù)長度 */
ModbusReq.getInstance().readHoldingRegisters(object : OnRequestBack<ShortArray> {
@SuppressLint("SetTextI18n")
override fun onSuccess(t: ShortArray?) {//這個就是讀取到的數(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())
各個功能的用法都基本上差不多,就是方法名和功能碼不一樣,讀的時候都是傳入從站的id和開始的位置,還有要讀取的長度,寫的時候也是傳入一個從站地址,開始的位置和一個數(shù)組,依次將數(shù)組的值從開始的位置寫入
2.4 回收Master
ModbusReq.getInstance().destory()
3、基于 TCP/IP 的 Modbus Salve/服務(wù)端
啟動服務(wù)
var modbusSlave=TcpSlave(502,false)//默認端口502,不開啟壓縮兒 modbusSlave.addProcessImage(BasicProcessImage(1))//初始化數(shù)據(jù)存儲的鏡像, 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)文章
Android?掃碼槍輸入時屏蔽軟鍵盤和頂部狀態(tài)欄的解決方案
在Android設(shè)備上,使用掃碼槍時常遇到軟鍵盤和頂部狀態(tài)欄顯示問題,本文介紹了在Android 7.1.2版本上,如何通過設(shè)置inputType為none屏蔽軟鍵盤,以及通過hideStatusBar和NoActionBar方法隱藏頂部狀態(tài)欄,以優(yōu)化掃碼槍使用界面,這些方法有助于提升使用掃碼槍場景的用戶體驗2024-10-10
Android判斷網(wǎng)絡(luò)類型的方法(2g,3g還是wifi)
這篇文章主要介紹了Android判斷網(wǎng)絡(luò)類型的方法,可實現(xiàn)判斷2g,3g還是wifi的功能,結(jié)合實例形式分析了Android針對網(wǎng)絡(luò)類型的相關(guān)判定技巧,需要的朋友可以參考下2016-02-02
Android 詳解ThreadLocal及InheritableThreadLocal
這篇文章主要介紹了Android 詳解ThreadLocal及InheritableThreadLocal的相關(guān)資料,需要的朋友可以參考下2017-01-01
Android如何跳轉(zhuǎn)到應(yīng)用商店的APP詳情頁面
最近做項目遇到這樣的需求,要求從App內(nèi)部點擊按鈕或鏈接,跳轉(zhuǎn)到應(yīng)用商店的某個APP的詳情頁面,怎么實現(xiàn)此功能呢?下面小編給大家分享Android如何跳轉(zhuǎn)到應(yīng)用商店的APP詳情頁面,需要的朋友參考下2017-01-01
詳解Android開啟OTG功能/USB?Host?API功能
這篇文章主要介紹了Android開啟OTG功能/USB?Host?API功能,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-07-07

