(别人项目新增功能使用到kotlin)项目需求,要通过modbus去发送相关指令去修改对应的设备(ip)寄存器的地址值,我这边直接使用的是别人的开源库:
https://github.com/licheedev/Modbus4Android,按照里面的方法来添加,相关依赖
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
//modebus
implementation 'com.github.licheedev:Modbus4Android:2.0.2'
在程序最开始的初始化类oncreate
// 启用rtu的crc校验(默认就启用)
ModbusConfig.setEnableRtuCrc(true)
// 打印数据log(默认全禁用)
// System.out: MessagingControl.send: 01030000000305cb
// System.out: MessagingConnection.read: 010306000100020000bd75
ModbusConfig.setEnableDataLog(true, true)
创建单例 ModbusManager :
public class ModbusManager extends ModbusWorker {
private static volatile ModbusManager sInstance;
public static ModbusManager get() {
ModbusManager manager = sInstance;
if (manager == null) {
synchronized (ModbusManager.class) {
manager = sInstance;
if (manager == null) {
manager = new ModbusManager();
sInstance = manager;
}
}
}
return manager;
}
private ModbusManager() {
}
/**
* 释放整个ModbusManager,单例会被置null
*/
public synchronized void release() {
super.release();
sInstance = null;
}
}
代码使用:
var param: ModbusParam<*>? = null
//modbusTcp modbus_offsetadr,:代表操作寄存器地址, modbus_value:最终修改的值
private fun modbus_Runing(modbus_offsetadr: Int, modbus_value: Int ){
// TCP
param = TcpParam.create("192.168.2.10", 502)
.setTimeout(1000)
.setRetries(0)
.setEncapsulated(false)
.setKeepAlive(true)
ModbusManager.get().closeModbusMaster() // 先关闭一下
ModbusManager.get().init(param, object : ModbusCallback<ModbusMaster> {
override fun onSuccess(t: ModbusMaster?) {
Log.i("操作","onSuccess")
}
override fun onFailure(tr: Throwable?) {
Log.i("操作","onFailure")
}
override fun onFinally() {
Log.i("操作","onFinally")
}
})
object : Thread() {
override fun run() {
ModbusManager.get()
.writeSingleRegister(
1,
modbus_offsetadr,
modbus_value,
object : ModbusCallback<WriteRegisterResponse> {
override fun onSuccess(t: WriteRegisterResponse?) {
}
override fun onFailure(tr: Throwable?) {
}
override fun onFinally() {
}
})
}
}.start()
}
使用
modbus_AHURuning(37, 33) 把37相关modebus寄存器首地址的值更改为33
更多使用用法,请参考的项目的想要操作https://github.com/licheedev/Modbus4Android/blob/master/app/src/main/java/com/licheedev/demo/MainActivity.java
这然就可以到达我的需求了,还是很简单的配置使用步骤,如果,你想再优化代码可以参考文章开头进入的项目地址,找到其他链接去学习使用。