diff --git a/app/src/main/java/com/casic/app/safetreecontroller/extensions/ByteArray.kt b/app/src/main/java/com/casic/app/safetreecontroller/extensions/ByteArray.kt
index 09edcf3..85cb963 100644
--- a/app/src/main/java/com/casic/app/safetreecontroller/extensions/ByteArray.kt
+++ b/app/src/main/java/com/casic/app/safetreecontroller/extensions/ByteArray.kt
@@ -14,6 +14,17 @@
return String(hexChars)
}
+/**
+ * ByteArray转ASCII中文字符
+ * */
+fun ByteArray.toAsciiCode(): String {
+ val builder = StringBuilder()
+ this.forEach {
+ builder.append(Char(it.toInt()))
+ }
+ return builder.toString()
+}
+
fun ByteArray.handleGasConcentration(): Long {
/**
* [1, 0, 0, 0, 13, 14]
diff --git a/app/src/main/java/com/casic/app/safetreecontroller/extensions/ByteArray.kt b/app/src/main/java/com/casic/app/safetreecontroller/extensions/ByteArray.kt
index 09edcf3..85cb963 100644
--- a/app/src/main/java/com/casic/app/safetreecontroller/extensions/ByteArray.kt
+++ b/app/src/main/java/com/casic/app/safetreecontroller/extensions/ByteArray.kt
@@ -14,6 +14,17 @@
return String(hexChars)
}
+/**
+ * ByteArray转ASCII中文字符
+ * */
+fun ByteArray.toAsciiCode(): String {
+ val builder = StringBuilder()
+ this.forEach {
+ builder.append(Char(it.toInt()))
+ }
+ return builder.toString()
+}
+
fun ByteArray.handleGasConcentration(): Long {
/**
* [1, 0, 0, 0, 13, 14]
diff --git a/app/src/main/java/com/casic/app/safetreecontroller/fragments/BaseSettingsFragment.kt b/app/src/main/java/com/casic/app/safetreecontroller/fragments/BaseSettingsFragment.kt
index ea9ecbe..81f921b 100644
--- a/app/src/main/java/com/casic/app/safetreecontroller/fragments/BaseSettingsFragment.kt
+++ b/app/src/main/java/com/casic/app/safetreecontroller/fragments/BaseSettingsFragment.kt
@@ -12,6 +12,7 @@
import android.view.LayoutInflater
import android.view.ViewGroup
import com.casic.app.safetreecontroller.databinding.FragmentBaseSettingsBinding
+import com.casic.app.safetreecontroller.service.SocketConnectionService
import com.casic.app.safetreecontroller.utils.LocaleConstant
import com.pengxh.kt.lite.base.KotlinBaseFragment
import com.pengxh.kt.lite.extensions.getSystemService
@@ -88,12 +89,25 @@
}
override fun initEvent() {
-
+ binding.queryBoardConfigButton.setOnClickListener {
+ SocketConnectionService.weakReferenceHandler?.sendEmptyMessage(LocaleConstant.QUERY_BOARD_CONFIG_CODE)
+ }
}
override fun handleMessage(msg: Message): Boolean {
- if (msg.what == LocaleConstant.DEVICE_RESPONSE_CODE) {
- binding.deviceCodeView.text = msg.obj as String
+ when (msg.what) {
+ LocaleConstant.DEVICE_RESPONSE_CODE -> {
+ binding.deviceCodeView.text = msg.obj as String
+ }
+
+ LocaleConstant.BOARD_CONFIG_RESPONSE_CODE -> {
+ val data = msg.obj as String
+ //分割数据
+ val list = data.split(",")
+ binding.boardHostView.text = list[0]
+ binding.boardMaskView.text = list[1]
+ binding.gatewayView.text = list[2].trim()
+ }
}
return true
}
diff --git a/app/src/main/java/com/casic/app/safetreecontroller/extensions/ByteArray.kt b/app/src/main/java/com/casic/app/safetreecontroller/extensions/ByteArray.kt
index 09edcf3..85cb963 100644
--- a/app/src/main/java/com/casic/app/safetreecontroller/extensions/ByteArray.kt
+++ b/app/src/main/java/com/casic/app/safetreecontroller/extensions/ByteArray.kt
@@ -14,6 +14,17 @@
return String(hexChars)
}
+/**
+ * ByteArray转ASCII中文字符
+ * */
+fun ByteArray.toAsciiCode(): String {
+ val builder = StringBuilder()
+ this.forEach {
+ builder.append(Char(it.toInt()))
+ }
+ return builder.toString()
+}
+
fun ByteArray.handleGasConcentration(): Long {
/**
* [1, 0, 0, 0, 13, 14]
diff --git a/app/src/main/java/com/casic/app/safetreecontroller/fragments/BaseSettingsFragment.kt b/app/src/main/java/com/casic/app/safetreecontroller/fragments/BaseSettingsFragment.kt
index ea9ecbe..81f921b 100644
--- a/app/src/main/java/com/casic/app/safetreecontroller/fragments/BaseSettingsFragment.kt
+++ b/app/src/main/java/com/casic/app/safetreecontroller/fragments/BaseSettingsFragment.kt
@@ -12,6 +12,7 @@
import android.view.LayoutInflater
import android.view.ViewGroup
import com.casic.app.safetreecontroller.databinding.FragmentBaseSettingsBinding
+import com.casic.app.safetreecontroller.service.SocketConnectionService
import com.casic.app.safetreecontroller.utils.LocaleConstant
import com.pengxh.kt.lite.base.KotlinBaseFragment
import com.pengxh.kt.lite.extensions.getSystemService
@@ -88,12 +89,25 @@
}
override fun initEvent() {
-
+ binding.queryBoardConfigButton.setOnClickListener {
+ SocketConnectionService.weakReferenceHandler?.sendEmptyMessage(LocaleConstant.QUERY_BOARD_CONFIG_CODE)
+ }
}
override fun handleMessage(msg: Message): Boolean {
- if (msg.what == LocaleConstant.DEVICE_RESPONSE_CODE) {
- binding.deviceCodeView.text = msg.obj as String
+ when (msg.what) {
+ LocaleConstant.DEVICE_RESPONSE_CODE -> {
+ binding.deviceCodeView.text = msg.obj as String
+ }
+
+ LocaleConstant.BOARD_CONFIG_RESPONSE_CODE -> {
+ val data = msg.obj as String
+ //分割数据
+ val list = data.split(",")
+ binding.boardHostView.text = list[0]
+ binding.boardMaskView.text = list[1]
+ binding.gatewayView.text = list[2].trim()
+ }
}
return true
}
diff --git a/app/src/main/java/com/casic/app/safetreecontroller/service/SocketConnectionService.kt b/app/src/main/java/com/casic/app/safetreecontroller/service/SocketConnectionService.kt
index 7c11e9f..8d718f9 100644
--- a/app/src/main/java/com/casic/app/safetreecontroller/service/SocketConnectionService.kt
+++ b/app/src/main/java/com/casic/app/safetreecontroller/service/SocketConnectionService.kt
@@ -7,6 +7,7 @@
import android.os.Message
import android.util.Log
import com.casic.app.safetreecontroller.extensions.handleGasConcentration
+import com.casic.app.safetreecontroller.extensions.toAsciiCode
import com.casic.app.safetreecontroller.extensions.toHex
import com.casic.app.safetreecontroller.fragments.BaseSettingsFragment
import com.casic.app.safetreecontroller.fragments.MethaneMonitorFragment
@@ -77,6 +78,10 @@
LocaleConstant.CLOSE_DEVICE_STATE_TIPS_CODE -> {
tcpClient.sendMessage(CommandCreator.createCloseVoiceTipsCommand())
}
+
+ LocaleConstant.QUERY_BOARD_CONFIG_CODE -> {
+ tcpClient.sendMessage(CommandCreator.createControlBoardConfigCommand())
+ }
}
return true
}
@@ -101,10 +106,12 @@
override fun onConnected() {
ForegroundRunningService.weakReferenceHandler?.sendEmptyMessage(2024110501)
- //定时查询甲烷浓度
- weakReferenceHandler?.post(methaneRunnable)
//查询一次激光芯片温度
tcpClient.sendMessage(CommandCreator.createCpuTemperatureCommand())
+ //查询主控板IP、子网掩码、网关IP
+ tcpClient.sendMessage(CommandCreator.createControlBoardConfigCommand())
+ //定时查询甲烷浓度
+ weakReferenceHandler?.post(methaneRunnable)
}
override fun onDisconnected() {
@@ -117,44 +124,51 @@
weakReferenceHandler?.removeCallbacks(methaneRunnable)
}
+ /**
+ * 激光开返回:[7, 32, 0, 1, 0, 1, -69, 1, 0, -111, 1, 0, -109]
+ *
+ * 激光关返回:[7, 32, 0, 1, 0, 1, -69, 1, 0, -111, 0, 0, -110]
+ *
+ * 甲烷浓度返回:[7, 32, 0, 1, 0, 1, -86, 1, 0, 0, 0, 13, 14]
+ *
+ * 激光温度返回:[7, 32, 0, 1, 0, 1, -52, 1, 0, -106, 1, 96, -8]
+ *
+ * 音量加返回:[7, 32, 0, 1, 0, 1, -69, 1, 0, -104, 1, 0, -102]
+ *
+ * 音量减返回:[7, 32, 0, 1, 0, 1, -69, 1, 0, -104, 0, 0, -103]
+ *
+ * 语音源切换到本地返回:[7, 32, 0, 1, 0, 1, -69, 1, 0, -112, 1, 0, -110]
+ *
+ * 语音源切换到远程返回:[7, 32, 0, 1, 0, 1, -69, 1, 0, -112, 0, 0, -111]
+ *
+ * 设备状态开语音提示返回:[7, 32, 0, 1, 0, 1, -69, 1, 0, -105, 1, 0, -103]
+ *
+ * 设备状态关语音提示返回:[7, 32, 0, 1, 0, 1, -69, 1, 0, -105, 0, 0, -104]
+ *
+ * 安全树主控板IP地址、子网掩码、网关IP查询返回:
+ *
+ * [71, 101, 116, 68, 97, 116, 97, 58, 49, 44, 49, 57, 50, 46, 49, 54, 56, 46, 49, 48, 46, 53, 49, 44, 50, 53, 53, 46, 50, 53, 53, 46, 50, 53, 53, 46, 48, 44, 49, 57, 50, 46, 49, 54, 56, 46, 49, 48, 46, 49, 48, 13, 10]
+ * */
override fun onMessageReceived(bytes: ByteArray?) {
if (bytes == null) {
return
}
Log.d(kTag, bytes.contentToString())
+ if (bytes.size == 13) {
+ //取前6位解析设备编号
+ val deviceCode = bytes.take(6).toByteArray().toHex()
+ if (BaseSettingsFragment.weakReferenceHandler != null) {
+ val weakReferenceHandler = BaseSettingsFragment.weakReferenceHandler!!
+ val message = weakReferenceHandler.obtainMessage()
+ message.what = LocaleConstant.DEVICE_RESPONSE_CODE
+ message.obj = deviceCode
+ weakReferenceHandler.sendMessage(message)
+ }
- /**
- * 激光开返回:[7, 32, 0, 1, 0, 1, -69, 1, 0, -111, 1, 0, -109]
- * 激光关返回:[7, 32, 0, 1, 0, 1, -69, 1, 0, -111, 0, 0, -110]
- * 甲烷浓度返回:[7, 32, 0, 1, 0, 1, -86, 1, 0, 0, 0, 13, 14]
- * 激光温度返回:[7, 32, 0, 1, 0, 1, -52, 1, 0, -106, 1, 96, -8]
- * 音量加返回:[7, 32, 0, 1, 0, 1, -69, 1, 0, -104, 1, 0, -102]
- * 音量减返回:[7, 32, 0, 1, 0, 1, -69, 1, 0, -104, 0, 0, -103]
- * 语音源切换到本地返回:[7, 32, 0, 1, 0, 1, -69, 1, 0, -112, 1, 0, -110]
- * 语音源切换到远程返回:[7, 32, 0, 1, 0, 1, -69, 1, 0, -112, 0, 0, -111]
- * 设备状态开语音提示返回:[7, 32, 0, 1, 0, 1, -69, 1, 0, -105, 1, 0, -103]
- * 设备状态关语音提示返回:[7, 32, 0, 1, 0, 1, -69, 1, 0, -105, 0, 0, -104]
- * */
- if (bytes.size < 6) {
- Log.d(kTag, "onMessageReceived: 数据异常,长度不够")
- return
- }
-
- //取前6位解析设备编号
- val deviceCode = bytes.take(6).toByteArray().toHex()
- if (BaseSettingsFragment.weakReferenceHandler != null) {
- val weakReferenceHandler = BaseSettingsFragment.weakReferenceHandler!!
- val message = weakReferenceHandler.obtainMessage()
- message.what = LocaleConstant.DEVICE_RESPONSE_CODE
- message.obj = deviceCode
- weakReferenceHandler.sendMessage(message)
- }
-
- //取数据类型标志位,根据标志位解析不同的数据
- when ((bytes[6].toInt() and 0xFF).toString(16).uppercase()) {
- "AA" -> {
- //甲烷浓度
- if (bytes.size == 13) {
+ //取数据类型标志位,根据标志位解析不同的数据
+ when ((bytes[6].toInt() and 0xFF).toString(16).uppercase()) {
+ "AA" -> {
+ //甲烷浓度
val dataArray = bytes.copyOfRange(7, bytes.size)
val concentration = dataArray.handleGasConcentration()
val weakReferenceHandler = MethaneMonitorFragment.weakReferenceHandler ?: return
@@ -163,10 +177,8 @@
message.obj = concentration
weakReferenceHandler.sendMessage(message)
}
- }
- "BB" -> {
- if (bytes.size == 13) {
+ "BB" -> {
when ((bytes[9].toInt() and 0xFF).toString(16).uppercase()) {
"90" -> {
//语音源模式
@@ -214,11 +226,9 @@
}
}
}
- }
- "CC" -> {
- //激光温度
- if (bytes.size == 13) {
+ "CC" -> {
+ //激光温度
val dataArray = bytes.copyOfRange(10, bytes.size)
val temperature = (dataArray[0] * 256 + dataArray[1]) / 10f
val weakReferenceHandler = MethaneMonitorFragment.weakReferenceHandler ?: return
@@ -228,6 +238,24 @@
weakReferenceHandler.sendMessage(message)
}
}
+ } else {
+ val dataHeadArray = bytes.copyOfRange(0, 7)
+ if (dataHeadArray.toAsciiCode() == "GetData") {
+ //判断类型
+ when (Char(bytes[10].toInt())) {
+ '1' -> {
+ val dataArray = bytes.copyOfRange(10, bytes.size)
+ val data = dataArray.toAsciiCode()
+ if (BaseSettingsFragment.weakReferenceHandler != null) {
+ val weakReferenceHandler = BaseSettingsFragment.weakReferenceHandler!!
+ val message = weakReferenceHandler.obtainMessage()
+ message.what = LocaleConstant.BOARD_CONFIG_RESPONSE_CODE
+ message.obj = data
+ weakReferenceHandler.sendMessage(message)
+ }
+ }
+ }
+ }
}
}
diff --git a/app/src/main/java/com/casic/app/safetreecontroller/extensions/ByteArray.kt b/app/src/main/java/com/casic/app/safetreecontroller/extensions/ByteArray.kt
index 09edcf3..85cb963 100644
--- a/app/src/main/java/com/casic/app/safetreecontroller/extensions/ByteArray.kt
+++ b/app/src/main/java/com/casic/app/safetreecontroller/extensions/ByteArray.kt
@@ -14,6 +14,17 @@
return String(hexChars)
}
+/**
+ * ByteArray转ASCII中文字符
+ * */
+fun ByteArray.toAsciiCode(): String {
+ val builder = StringBuilder()
+ this.forEach {
+ builder.append(Char(it.toInt()))
+ }
+ return builder.toString()
+}
+
fun ByteArray.handleGasConcentration(): Long {
/**
* [1, 0, 0, 0, 13, 14]
diff --git a/app/src/main/java/com/casic/app/safetreecontroller/fragments/BaseSettingsFragment.kt b/app/src/main/java/com/casic/app/safetreecontroller/fragments/BaseSettingsFragment.kt
index ea9ecbe..81f921b 100644
--- a/app/src/main/java/com/casic/app/safetreecontroller/fragments/BaseSettingsFragment.kt
+++ b/app/src/main/java/com/casic/app/safetreecontroller/fragments/BaseSettingsFragment.kt
@@ -12,6 +12,7 @@
import android.view.LayoutInflater
import android.view.ViewGroup
import com.casic.app.safetreecontroller.databinding.FragmentBaseSettingsBinding
+import com.casic.app.safetreecontroller.service.SocketConnectionService
import com.casic.app.safetreecontroller.utils.LocaleConstant
import com.pengxh.kt.lite.base.KotlinBaseFragment
import com.pengxh.kt.lite.extensions.getSystemService
@@ -88,12 +89,25 @@
}
override fun initEvent() {
-
+ binding.queryBoardConfigButton.setOnClickListener {
+ SocketConnectionService.weakReferenceHandler?.sendEmptyMessage(LocaleConstant.QUERY_BOARD_CONFIG_CODE)
+ }
}
override fun handleMessage(msg: Message): Boolean {
- if (msg.what == LocaleConstant.DEVICE_RESPONSE_CODE) {
- binding.deviceCodeView.text = msg.obj as String
+ when (msg.what) {
+ LocaleConstant.DEVICE_RESPONSE_CODE -> {
+ binding.deviceCodeView.text = msg.obj as String
+ }
+
+ LocaleConstant.BOARD_CONFIG_RESPONSE_CODE -> {
+ val data = msg.obj as String
+ //分割数据
+ val list = data.split(",")
+ binding.boardHostView.text = list[0]
+ binding.boardMaskView.text = list[1]
+ binding.gatewayView.text = list[2].trim()
+ }
}
return true
}
diff --git a/app/src/main/java/com/casic/app/safetreecontroller/service/SocketConnectionService.kt b/app/src/main/java/com/casic/app/safetreecontroller/service/SocketConnectionService.kt
index 7c11e9f..8d718f9 100644
--- a/app/src/main/java/com/casic/app/safetreecontroller/service/SocketConnectionService.kt
+++ b/app/src/main/java/com/casic/app/safetreecontroller/service/SocketConnectionService.kt
@@ -7,6 +7,7 @@
import android.os.Message
import android.util.Log
import com.casic.app.safetreecontroller.extensions.handleGasConcentration
+import com.casic.app.safetreecontroller.extensions.toAsciiCode
import com.casic.app.safetreecontroller.extensions.toHex
import com.casic.app.safetreecontroller.fragments.BaseSettingsFragment
import com.casic.app.safetreecontroller.fragments.MethaneMonitorFragment
@@ -77,6 +78,10 @@
LocaleConstant.CLOSE_DEVICE_STATE_TIPS_CODE -> {
tcpClient.sendMessage(CommandCreator.createCloseVoiceTipsCommand())
}
+
+ LocaleConstant.QUERY_BOARD_CONFIG_CODE -> {
+ tcpClient.sendMessage(CommandCreator.createControlBoardConfigCommand())
+ }
}
return true
}
@@ -101,10 +106,12 @@
override fun onConnected() {
ForegroundRunningService.weakReferenceHandler?.sendEmptyMessage(2024110501)
- //定时查询甲烷浓度
- weakReferenceHandler?.post(methaneRunnable)
//查询一次激光芯片温度
tcpClient.sendMessage(CommandCreator.createCpuTemperatureCommand())
+ //查询主控板IP、子网掩码、网关IP
+ tcpClient.sendMessage(CommandCreator.createControlBoardConfigCommand())
+ //定时查询甲烷浓度
+ weakReferenceHandler?.post(methaneRunnable)
}
override fun onDisconnected() {
@@ -117,44 +124,51 @@
weakReferenceHandler?.removeCallbacks(methaneRunnable)
}
+ /**
+ * 激光开返回:[7, 32, 0, 1, 0, 1, -69, 1, 0, -111, 1, 0, -109]
+ *
+ * 激光关返回:[7, 32, 0, 1, 0, 1, -69, 1, 0, -111, 0, 0, -110]
+ *
+ * 甲烷浓度返回:[7, 32, 0, 1, 0, 1, -86, 1, 0, 0, 0, 13, 14]
+ *
+ * 激光温度返回:[7, 32, 0, 1, 0, 1, -52, 1, 0, -106, 1, 96, -8]
+ *
+ * 音量加返回:[7, 32, 0, 1, 0, 1, -69, 1, 0, -104, 1, 0, -102]
+ *
+ * 音量减返回:[7, 32, 0, 1, 0, 1, -69, 1, 0, -104, 0, 0, -103]
+ *
+ * 语音源切换到本地返回:[7, 32, 0, 1, 0, 1, -69, 1, 0, -112, 1, 0, -110]
+ *
+ * 语音源切换到远程返回:[7, 32, 0, 1, 0, 1, -69, 1, 0, -112, 0, 0, -111]
+ *
+ * 设备状态开语音提示返回:[7, 32, 0, 1, 0, 1, -69, 1, 0, -105, 1, 0, -103]
+ *
+ * 设备状态关语音提示返回:[7, 32, 0, 1, 0, 1, -69, 1, 0, -105, 0, 0, -104]
+ *
+ * 安全树主控板IP地址、子网掩码、网关IP查询返回:
+ *
+ * [71, 101, 116, 68, 97, 116, 97, 58, 49, 44, 49, 57, 50, 46, 49, 54, 56, 46, 49, 48, 46, 53, 49, 44, 50, 53, 53, 46, 50, 53, 53, 46, 50, 53, 53, 46, 48, 44, 49, 57, 50, 46, 49, 54, 56, 46, 49, 48, 46, 49, 48, 13, 10]
+ * */
override fun onMessageReceived(bytes: ByteArray?) {
if (bytes == null) {
return
}
Log.d(kTag, bytes.contentToString())
+ if (bytes.size == 13) {
+ //取前6位解析设备编号
+ val deviceCode = bytes.take(6).toByteArray().toHex()
+ if (BaseSettingsFragment.weakReferenceHandler != null) {
+ val weakReferenceHandler = BaseSettingsFragment.weakReferenceHandler!!
+ val message = weakReferenceHandler.obtainMessage()
+ message.what = LocaleConstant.DEVICE_RESPONSE_CODE
+ message.obj = deviceCode
+ weakReferenceHandler.sendMessage(message)
+ }
- /**
- * 激光开返回:[7, 32, 0, 1, 0, 1, -69, 1, 0, -111, 1, 0, -109]
- * 激光关返回:[7, 32, 0, 1, 0, 1, -69, 1, 0, -111, 0, 0, -110]
- * 甲烷浓度返回:[7, 32, 0, 1, 0, 1, -86, 1, 0, 0, 0, 13, 14]
- * 激光温度返回:[7, 32, 0, 1, 0, 1, -52, 1, 0, -106, 1, 96, -8]
- * 音量加返回:[7, 32, 0, 1, 0, 1, -69, 1, 0, -104, 1, 0, -102]
- * 音量减返回:[7, 32, 0, 1, 0, 1, -69, 1, 0, -104, 0, 0, -103]
- * 语音源切换到本地返回:[7, 32, 0, 1, 0, 1, -69, 1, 0, -112, 1, 0, -110]
- * 语音源切换到远程返回:[7, 32, 0, 1, 0, 1, -69, 1, 0, -112, 0, 0, -111]
- * 设备状态开语音提示返回:[7, 32, 0, 1, 0, 1, -69, 1, 0, -105, 1, 0, -103]
- * 设备状态关语音提示返回:[7, 32, 0, 1, 0, 1, -69, 1, 0, -105, 0, 0, -104]
- * */
- if (bytes.size < 6) {
- Log.d(kTag, "onMessageReceived: 数据异常,长度不够")
- return
- }
-
- //取前6位解析设备编号
- val deviceCode = bytes.take(6).toByteArray().toHex()
- if (BaseSettingsFragment.weakReferenceHandler != null) {
- val weakReferenceHandler = BaseSettingsFragment.weakReferenceHandler!!
- val message = weakReferenceHandler.obtainMessage()
- message.what = LocaleConstant.DEVICE_RESPONSE_CODE
- message.obj = deviceCode
- weakReferenceHandler.sendMessage(message)
- }
-
- //取数据类型标志位,根据标志位解析不同的数据
- when ((bytes[6].toInt() and 0xFF).toString(16).uppercase()) {
- "AA" -> {
- //甲烷浓度
- if (bytes.size == 13) {
+ //取数据类型标志位,根据标志位解析不同的数据
+ when ((bytes[6].toInt() and 0xFF).toString(16).uppercase()) {
+ "AA" -> {
+ //甲烷浓度
val dataArray = bytes.copyOfRange(7, bytes.size)
val concentration = dataArray.handleGasConcentration()
val weakReferenceHandler = MethaneMonitorFragment.weakReferenceHandler ?: return
@@ -163,10 +177,8 @@
message.obj = concentration
weakReferenceHandler.sendMessage(message)
}
- }
- "BB" -> {
- if (bytes.size == 13) {
+ "BB" -> {
when ((bytes[9].toInt() and 0xFF).toString(16).uppercase()) {
"90" -> {
//语音源模式
@@ -214,11 +226,9 @@
}
}
}
- }
- "CC" -> {
- //激光温度
- if (bytes.size == 13) {
+ "CC" -> {
+ //激光温度
val dataArray = bytes.copyOfRange(10, bytes.size)
val temperature = (dataArray[0] * 256 + dataArray[1]) / 10f
val weakReferenceHandler = MethaneMonitorFragment.weakReferenceHandler ?: return
@@ -228,6 +238,24 @@
weakReferenceHandler.sendMessage(message)
}
}
+ } else {
+ val dataHeadArray = bytes.copyOfRange(0, 7)
+ if (dataHeadArray.toAsciiCode() == "GetData") {
+ //判断类型
+ when (Char(bytes[10].toInt())) {
+ '1' -> {
+ val dataArray = bytes.copyOfRange(10, bytes.size)
+ val data = dataArray.toAsciiCode()
+ if (BaseSettingsFragment.weakReferenceHandler != null) {
+ val weakReferenceHandler = BaseSettingsFragment.weakReferenceHandler!!
+ val message = weakReferenceHandler.obtainMessage()
+ message.what = LocaleConstant.BOARD_CONFIG_RESPONSE_CODE
+ message.obj = data
+ weakReferenceHandler.sendMessage(message)
+ }
+ }
+ }
+ }
}
}
diff --git a/app/src/main/java/com/casic/app/safetreecontroller/utils/CommandCreator.kt b/app/src/main/java/com/casic/app/safetreecontroller/utils/CommandCreator.kt
index d4179eb..a9e5b05 100644
--- a/app/src/main/java/com/casic/app/safetreecontroller/utils/CommandCreator.kt
+++ b/app/src/main/java/com/casic/app/safetreecontroller/utils/CommandCreator.kt
@@ -67,6 +67,13 @@
}
/**
+ * 查询主控板主控板IP、子网掩码、网关IP指令
+ * */
+ fun createControlBoardConfigCommand(): ByteArray {
+ return "GetData:1\r\n".toByteArray()
+ }
+
+ /**
* 音量增大指令
* */
fun createIncreaseVoiceCommand(): ByteArray {
diff --git a/app/src/main/java/com/casic/app/safetreecontroller/extensions/ByteArray.kt b/app/src/main/java/com/casic/app/safetreecontroller/extensions/ByteArray.kt
index 09edcf3..85cb963 100644
--- a/app/src/main/java/com/casic/app/safetreecontroller/extensions/ByteArray.kt
+++ b/app/src/main/java/com/casic/app/safetreecontroller/extensions/ByteArray.kt
@@ -14,6 +14,17 @@
return String(hexChars)
}
+/**
+ * ByteArray转ASCII中文字符
+ * */
+fun ByteArray.toAsciiCode(): String {
+ val builder = StringBuilder()
+ this.forEach {
+ builder.append(Char(it.toInt()))
+ }
+ return builder.toString()
+}
+
fun ByteArray.handleGasConcentration(): Long {
/**
* [1, 0, 0, 0, 13, 14]
diff --git a/app/src/main/java/com/casic/app/safetreecontroller/fragments/BaseSettingsFragment.kt b/app/src/main/java/com/casic/app/safetreecontroller/fragments/BaseSettingsFragment.kt
index ea9ecbe..81f921b 100644
--- a/app/src/main/java/com/casic/app/safetreecontroller/fragments/BaseSettingsFragment.kt
+++ b/app/src/main/java/com/casic/app/safetreecontroller/fragments/BaseSettingsFragment.kt
@@ -12,6 +12,7 @@
import android.view.LayoutInflater
import android.view.ViewGroup
import com.casic.app.safetreecontroller.databinding.FragmentBaseSettingsBinding
+import com.casic.app.safetreecontroller.service.SocketConnectionService
import com.casic.app.safetreecontroller.utils.LocaleConstant
import com.pengxh.kt.lite.base.KotlinBaseFragment
import com.pengxh.kt.lite.extensions.getSystemService
@@ -88,12 +89,25 @@
}
override fun initEvent() {
-
+ binding.queryBoardConfigButton.setOnClickListener {
+ SocketConnectionService.weakReferenceHandler?.sendEmptyMessage(LocaleConstant.QUERY_BOARD_CONFIG_CODE)
+ }
}
override fun handleMessage(msg: Message): Boolean {
- if (msg.what == LocaleConstant.DEVICE_RESPONSE_CODE) {
- binding.deviceCodeView.text = msg.obj as String
+ when (msg.what) {
+ LocaleConstant.DEVICE_RESPONSE_CODE -> {
+ binding.deviceCodeView.text = msg.obj as String
+ }
+
+ LocaleConstant.BOARD_CONFIG_RESPONSE_CODE -> {
+ val data = msg.obj as String
+ //分割数据
+ val list = data.split(",")
+ binding.boardHostView.text = list[0]
+ binding.boardMaskView.text = list[1]
+ binding.gatewayView.text = list[2].trim()
+ }
}
return true
}
diff --git a/app/src/main/java/com/casic/app/safetreecontroller/service/SocketConnectionService.kt b/app/src/main/java/com/casic/app/safetreecontroller/service/SocketConnectionService.kt
index 7c11e9f..8d718f9 100644
--- a/app/src/main/java/com/casic/app/safetreecontroller/service/SocketConnectionService.kt
+++ b/app/src/main/java/com/casic/app/safetreecontroller/service/SocketConnectionService.kt
@@ -7,6 +7,7 @@
import android.os.Message
import android.util.Log
import com.casic.app.safetreecontroller.extensions.handleGasConcentration
+import com.casic.app.safetreecontroller.extensions.toAsciiCode
import com.casic.app.safetreecontroller.extensions.toHex
import com.casic.app.safetreecontroller.fragments.BaseSettingsFragment
import com.casic.app.safetreecontroller.fragments.MethaneMonitorFragment
@@ -77,6 +78,10 @@
LocaleConstant.CLOSE_DEVICE_STATE_TIPS_CODE -> {
tcpClient.sendMessage(CommandCreator.createCloseVoiceTipsCommand())
}
+
+ LocaleConstant.QUERY_BOARD_CONFIG_CODE -> {
+ tcpClient.sendMessage(CommandCreator.createControlBoardConfigCommand())
+ }
}
return true
}
@@ -101,10 +106,12 @@
override fun onConnected() {
ForegroundRunningService.weakReferenceHandler?.sendEmptyMessage(2024110501)
- //定时查询甲烷浓度
- weakReferenceHandler?.post(methaneRunnable)
//查询一次激光芯片温度
tcpClient.sendMessage(CommandCreator.createCpuTemperatureCommand())
+ //查询主控板IP、子网掩码、网关IP
+ tcpClient.sendMessage(CommandCreator.createControlBoardConfigCommand())
+ //定时查询甲烷浓度
+ weakReferenceHandler?.post(methaneRunnable)
}
override fun onDisconnected() {
@@ -117,44 +124,51 @@
weakReferenceHandler?.removeCallbacks(methaneRunnable)
}
+ /**
+ * 激光开返回:[7, 32, 0, 1, 0, 1, -69, 1, 0, -111, 1, 0, -109]
+ *
+ * 激光关返回:[7, 32, 0, 1, 0, 1, -69, 1, 0, -111, 0, 0, -110]
+ *
+ * 甲烷浓度返回:[7, 32, 0, 1, 0, 1, -86, 1, 0, 0, 0, 13, 14]
+ *
+ * 激光温度返回:[7, 32, 0, 1, 0, 1, -52, 1, 0, -106, 1, 96, -8]
+ *
+ * 音量加返回:[7, 32, 0, 1, 0, 1, -69, 1, 0, -104, 1, 0, -102]
+ *
+ * 音量减返回:[7, 32, 0, 1, 0, 1, -69, 1, 0, -104, 0, 0, -103]
+ *
+ * 语音源切换到本地返回:[7, 32, 0, 1, 0, 1, -69, 1, 0, -112, 1, 0, -110]
+ *
+ * 语音源切换到远程返回:[7, 32, 0, 1, 0, 1, -69, 1, 0, -112, 0, 0, -111]
+ *
+ * 设备状态开语音提示返回:[7, 32, 0, 1, 0, 1, -69, 1, 0, -105, 1, 0, -103]
+ *
+ * 设备状态关语音提示返回:[7, 32, 0, 1, 0, 1, -69, 1, 0, -105, 0, 0, -104]
+ *
+ * 安全树主控板IP地址、子网掩码、网关IP查询返回:
+ *
+ * [71, 101, 116, 68, 97, 116, 97, 58, 49, 44, 49, 57, 50, 46, 49, 54, 56, 46, 49, 48, 46, 53, 49, 44, 50, 53, 53, 46, 50, 53, 53, 46, 50, 53, 53, 46, 48, 44, 49, 57, 50, 46, 49, 54, 56, 46, 49, 48, 46, 49, 48, 13, 10]
+ * */
override fun onMessageReceived(bytes: ByteArray?) {
if (bytes == null) {
return
}
Log.d(kTag, bytes.contentToString())
+ if (bytes.size == 13) {
+ //取前6位解析设备编号
+ val deviceCode = bytes.take(6).toByteArray().toHex()
+ if (BaseSettingsFragment.weakReferenceHandler != null) {
+ val weakReferenceHandler = BaseSettingsFragment.weakReferenceHandler!!
+ val message = weakReferenceHandler.obtainMessage()
+ message.what = LocaleConstant.DEVICE_RESPONSE_CODE
+ message.obj = deviceCode
+ weakReferenceHandler.sendMessage(message)
+ }
- /**
- * 激光开返回:[7, 32, 0, 1, 0, 1, -69, 1, 0, -111, 1, 0, -109]
- * 激光关返回:[7, 32, 0, 1, 0, 1, -69, 1, 0, -111, 0, 0, -110]
- * 甲烷浓度返回:[7, 32, 0, 1, 0, 1, -86, 1, 0, 0, 0, 13, 14]
- * 激光温度返回:[7, 32, 0, 1, 0, 1, -52, 1, 0, -106, 1, 96, -8]
- * 音量加返回:[7, 32, 0, 1, 0, 1, -69, 1, 0, -104, 1, 0, -102]
- * 音量减返回:[7, 32, 0, 1, 0, 1, -69, 1, 0, -104, 0, 0, -103]
- * 语音源切换到本地返回:[7, 32, 0, 1, 0, 1, -69, 1, 0, -112, 1, 0, -110]
- * 语音源切换到远程返回:[7, 32, 0, 1, 0, 1, -69, 1, 0, -112, 0, 0, -111]
- * 设备状态开语音提示返回:[7, 32, 0, 1, 0, 1, -69, 1, 0, -105, 1, 0, -103]
- * 设备状态关语音提示返回:[7, 32, 0, 1, 0, 1, -69, 1, 0, -105, 0, 0, -104]
- * */
- if (bytes.size < 6) {
- Log.d(kTag, "onMessageReceived: 数据异常,长度不够")
- return
- }
-
- //取前6位解析设备编号
- val deviceCode = bytes.take(6).toByteArray().toHex()
- if (BaseSettingsFragment.weakReferenceHandler != null) {
- val weakReferenceHandler = BaseSettingsFragment.weakReferenceHandler!!
- val message = weakReferenceHandler.obtainMessage()
- message.what = LocaleConstant.DEVICE_RESPONSE_CODE
- message.obj = deviceCode
- weakReferenceHandler.sendMessage(message)
- }
-
- //取数据类型标志位,根据标志位解析不同的数据
- when ((bytes[6].toInt() and 0xFF).toString(16).uppercase()) {
- "AA" -> {
- //甲烷浓度
- if (bytes.size == 13) {
+ //取数据类型标志位,根据标志位解析不同的数据
+ when ((bytes[6].toInt() and 0xFF).toString(16).uppercase()) {
+ "AA" -> {
+ //甲烷浓度
val dataArray = bytes.copyOfRange(7, bytes.size)
val concentration = dataArray.handleGasConcentration()
val weakReferenceHandler = MethaneMonitorFragment.weakReferenceHandler ?: return
@@ -163,10 +177,8 @@
message.obj = concentration
weakReferenceHandler.sendMessage(message)
}
- }
- "BB" -> {
- if (bytes.size == 13) {
+ "BB" -> {
when ((bytes[9].toInt() and 0xFF).toString(16).uppercase()) {
"90" -> {
//语音源模式
@@ -214,11 +226,9 @@
}
}
}
- }
- "CC" -> {
- //激光温度
- if (bytes.size == 13) {
+ "CC" -> {
+ //激光温度
val dataArray = bytes.copyOfRange(10, bytes.size)
val temperature = (dataArray[0] * 256 + dataArray[1]) / 10f
val weakReferenceHandler = MethaneMonitorFragment.weakReferenceHandler ?: return
@@ -228,6 +238,24 @@
weakReferenceHandler.sendMessage(message)
}
}
+ } else {
+ val dataHeadArray = bytes.copyOfRange(0, 7)
+ if (dataHeadArray.toAsciiCode() == "GetData") {
+ //判断类型
+ when (Char(bytes[10].toInt())) {
+ '1' -> {
+ val dataArray = bytes.copyOfRange(10, bytes.size)
+ val data = dataArray.toAsciiCode()
+ if (BaseSettingsFragment.weakReferenceHandler != null) {
+ val weakReferenceHandler = BaseSettingsFragment.weakReferenceHandler!!
+ val message = weakReferenceHandler.obtainMessage()
+ message.what = LocaleConstant.BOARD_CONFIG_RESPONSE_CODE
+ message.obj = data
+ weakReferenceHandler.sendMessage(message)
+ }
+ }
+ }
+ }
}
}
diff --git a/app/src/main/java/com/casic/app/safetreecontroller/utils/CommandCreator.kt b/app/src/main/java/com/casic/app/safetreecontroller/utils/CommandCreator.kt
index d4179eb..a9e5b05 100644
--- a/app/src/main/java/com/casic/app/safetreecontroller/utils/CommandCreator.kt
+++ b/app/src/main/java/com/casic/app/safetreecontroller/utils/CommandCreator.kt
@@ -67,6 +67,13 @@
}
/**
+ * 查询主控板主控板IP、子网掩码、网关IP指令
+ * */
+ fun createControlBoardConfigCommand(): ByteArray {
+ return "GetData:1\r\n".toByteArray()
+ }
+
+ /**
* 音量增大指令
* */
fun createIncreaseVoiceCommand(): ByteArray {
diff --git a/app/src/main/java/com/casic/app/safetreecontroller/utils/LocaleConstant.kt b/app/src/main/java/com/casic/app/safetreecontroller/utils/LocaleConstant.kt
index bf3c4b8..f8f1324 100644
--- a/app/src/main/java/com/casic/app/safetreecontroller/utils/LocaleConstant.kt
+++ b/app/src/main/java/com/casic/app/safetreecontroller/utils/LocaleConstant.kt
@@ -26,6 +26,7 @@
const val CLOSE_METHANE_ALARM_CODE = 20240010
const val OPEN_DEVICE_STATE_TIPS_CODE = 20240011
const val CLOSE_DEVICE_STATE_TIPS_CODE = 20240012
+ const val QUERY_BOARD_CONFIG_CODE = 20240013
/**
* Handler Response Code
@@ -33,6 +34,7 @@
const val QUERY_CPU_TEMPERATURE_RESPONSE_CODE = 20241001
const val QUERY_METHANE_RESPONSE_CODE = 20241002
const val DEVICE_RESPONSE_CODE = 20241003
+ const val BOARD_CONFIG_RESPONSE_CODE = 20241004
/***
* SP Key
diff --git a/app/src/main/java/com/casic/app/safetreecontroller/extensions/ByteArray.kt b/app/src/main/java/com/casic/app/safetreecontroller/extensions/ByteArray.kt
index 09edcf3..85cb963 100644
--- a/app/src/main/java/com/casic/app/safetreecontroller/extensions/ByteArray.kt
+++ b/app/src/main/java/com/casic/app/safetreecontroller/extensions/ByteArray.kt
@@ -14,6 +14,17 @@
return String(hexChars)
}
+/**
+ * ByteArray转ASCII中文字符
+ * */
+fun ByteArray.toAsciiCode(): String {
+ val builder = StringBuilder()
+ this.forEach {
+ builder.append(Char(it.toInt()))
+ }
+ return builder.toString()
+}
+
fun ByteArray.handleGasConcentration(): Long {
/**
* [1, 0, 0, 0, 13, 14]
diff --git a/app/src/main/java/com/casic/app/safetreecontroller/fragments/BaseSettingsFragment.kt b/app/src/main/java/com/casic/app/safetreecontroller/fragments/BaseSettingsFragment.kt
index ea9ecbe..81f921b 100644
--- a/app/src/main/java/com/casic/app/safetreecontroller/fragments/BaseSettingsFragment.kt
+++ b/app/src/main/java/com/casic/app/safetreecontroller/fragments/BaseSettingsFragment.kt
@@ -12,6 +12,7 @@
import android.view.LayoutInflater
import android.view.ViewGroup
import com.casic.app.safetreecontroller.databinding.FragmentBaseSettingsBinding
+import com.casic.app.safetreecontroller.service.SocketConnectionService
import com.casic.app.safetreecontroller.utils.LocaleConstant
import com.pengxh.kt.lite.base.KotlinBaseFragment
import com.pengxh.kt.lite.extensions.getSystemService
@@ -88,12 +89,25 @@
}
override fun initEvent() {
-
+ binding.queryBoardConfigButton.setOnClickListener {
+ SocketConnectionService.weakReferenceHandler?.sendEmptyMessage(LocaleConstant.QUERY_BOARD_CONFIG_CODE)
+ }
}
override fun handleMessage(msg: Message): Boolean {
- if (msg.what == LocaleConstant.DEVICE_RESPONSE_CODE) {
- binding.deviceCodeView.text = msg.obj as String
+ when (msg.what) {
+ LocaleConstant.DEVICE_RESPONSE_CODE -> {
+ binding.deviceCodeView.text = msg.obj as String
+ }
+
+ LocaleConstant.BOARD_CONFIG_RESPONSE_CODE -> {
+ val data = msg.obj as String
+ //分割数据
+ val list = data.split(",")
+ binding.boardHostView.text = list[0]
+ binding.boardMaskView.text = list[1]
+ binding.gatewayView.text = list[2].trim()
+ }
}
return true
}
diff --git a/app/src/main/java/com/casic/app/safetreecontroller/service/SocketConnectionService.kt b/app/src/main/java/com/casic/app/safetreecontroller/service/SocketConnectionService.kt
index 7c11e9f..8d718f9 100644
--- a/app/src/main/java/com/casic/app/safetreecontroller/service/SocketConnectionService.kt
+++ b/app/src/main/java/com/casic/app/safetreecontroller/service/SocketConnectionService.kt
@@ -7,6 +7,7 @@
import android.os.Message
import android.util.Log
import com.casic.app.safetreecontroller.extensions.handleGasConcentration
+import com.casic.app.safetreecontroller.extensions.toAsciiCode
import com.casic.app.safetreecontroller.extensions.toHex
import com.casic.app.safetreecontroller.fragments.BaseSettingsFragment
import com.casic.app.safetreecontroller.fragments.MethaneMonitorFragment
@@ -77,6 +78,10 @@
LocaleConstant.CLOSE_DEVICE_STATE_TIPS_CODE -> {
tcpClient.sendMessage(CommandCreator.createCloseVoiceTipsCommand())
}
+
+ LocaleConstant.QUERY_BOARD_CONFIG_CODE -> {
+ tcpClient.sendMessage(CommandCreator.createControlBoardConfigCommand())
+ }
}
return true
}
@@ -101,10 +106,12 @@
override fun onConnected() {
ForegroundRunningService.weakReferenceHandler?.sendEmptyMessage(2024110501)
- //定时查询甲烷浓度
- weakReferenceHandler?.post(methaneRunnable)
//查询一次激光芯片温度
tcpClient.sendMessage(CommandCreator.createCpuTemperatureCommand())
+ //查询主控板IP、子网掩码、网关IP
+ tcpClient.sendMessage(CommandCreator.createControlBoardConfigCommand())
+ //定时查询甲烷浓度
+ weakReferenceHandler?.post(methaneRunnable)
}
override fun onDisconnected() {
@@ -117,44 +124,51 @@
weakReferenceHandler?.removeCallbacks(methaneRunnable)
}
+ /**
+ * 激光开返回:[7, 32, 0, 1, 0, 1, -69, 1, 0, -111, 1, 0, -109]
+ *
+ * 激光关返回:[7, 32, 0, 1, 0, 1, -69, 1, 0, -111, 0, 0, -110]
+ *
+ * 甲烷浓度返回:[7, 32, 0, 1, 0, 1, -86, 1, 0, 0, 0, 13, 14]
+ *
+ * 激光温度返回:[7, 32, 0, 1, 0, 1, -52, 1, 0, -106, 1, 96, -8]
+ *
+ * 音量加返回:[7, 32, 0, 1, 0, 1, -69, 1, 0, -104, 1, 0, -102]
+ *
+ * 音量减返回:[7, 32, 0, 1, 0, 1, -69, 1, 0, -104, 0, 0, -103]
+ *
+ * 语音源切换到本地返回:[7, 32, 0, 1, 0, 1, -69, 1, 0, -112, 1, 0, -110]
+ *
+ * 语音源切换到远程返回:[7, 32, 0, 1, 0, 1, -69, 1, 0, -112, 0, 0, -111]
+ *
+ * 设备状态开语音提示返回:[7, 32, 0, 1, 0, 1, -69, 1, 0, -105, 1, 0, -103]
+ *
+ * 设备状态关语音提示返回:[7, 32, 0, 1, 0, 1, -69, 1, 0, -105, 0, 0, -104]
+ *
+ * 安全树主控板IP地址、子网掩码、网关IP查询返回:
+ *
+ * [71, 101, 116, 68, 97, 116, 97, 58, 49, 44, 49, 57, 50, 46, 49, 54, 56, 46, 49, 48, 46, 53, 49, 44, 50, 53, 53, 46, 50, 53, 53, 46, 50, 53, 53, 46, 48, 44, 49, 57, 50, 46, 49, 54, 56, 46, 49, 48, 46, 49, 48, 13, 10]
+ * */
override fun onMessageReceived(bytes: ByteArray?) {
if (bytes == null) {
return
}
Log.d(kTag, bytes.contentToString())
+ if (bytes.size == 13) {
+ //取前6位解析设备编号
+ val deviceCode = bytes.take(6).toByteArray().toHex()
+ if (BaseSettingsFragment.weakReferenceHandler != null) {
+ val weakReferenceHandler = BaseSettingsFragment.weakReferenceHandler!!
+ val message = weakReferenceHandler.obtainMessage()
+ message.what = LocaleConstant.DEVICE_RESPONSE_CODE
+ message.obj = deviceCode
+ weakReferenceHandler.sendMessage(message)
+ }
- /**
- * 激光开返回:[7, 32, 0, 1, 0, 1, -69, 1, 0, -111, 1, 0, -109]
- * 激光关返回:[7, 32, 0, 1, 0, 1, -69, 1, 0, -111, 0, 0, -110]
- * 甲烷浓度返回:[7, 32, 0, 1, 0, 1, -86, 1, 0, 0, 0, 13, 14]
- * 激光温度返回:[7, 32, 0, 1, 0, 1, -52, 1, 0, -106, 1, 96, -8]
- * 音量加返回:[7, 32, 0, 1, 0, 1, -69, 1, 0, -104, 1, 0, -102]
- * 音量减返回:[7, 32, 0, 1, 0, 1, -69, 1, 0, -104, 0, 0, -103]
- * 语音源切换到本地返回:[7, 32, 0, 1, 0, 1, -69, 1, 0, -112, 1, 0, -110]
- * 语音源切换到远程返回:[7, 32, 0, 1, 0, 1, -69, 1, 0, -112, 0, 0, -111]
- * 设备状态开语音提示返回:[7, 32, 0, 1, 0, 1, -69, 1, 0, -105, 1, 0, -103]
- * 设备状态关语音提示返回:[7, 32, 0, 1, 0, 1, -69, 1, 0, -105, 0, 0, -104]
- * */
- if (bytes.size < 6) {
- Log.d(kTag, "onMessageReceived: 数据异常,长度不够")
- return
- }
-
- //取前6位解析设备编号
- val deviceCode = bytes.take(6).toByteArray().toHex()
- if (BaseSettingsFragment.weakReferenceHandler != null) {
- val weakReferenceHandler = BaseSettingsFragment.weakReferenceHandler!!
- val message = weakReferenceHandler.obtainMessage()
- message.what = LocaleConstant.DEVICE_RESPONSE_CODE
- message.obj = deviceCode
- weakReferenceHandler.sendMessage(message)
- }
-
- //取数据类型标志位,根据标志位解析不同的数据
- when ((bytes[6].toInt() and 0xFF).toString(16).uppercase()) {
- "AA" -> {
- //甲烷浓度
- if (bytes.size == 13) {
+ //取数据类型标志位,根据标志位解析不同的数据
+ when ((bytes[6].toInt() and 0xFF).toString(16).uppercase()) {
+ "AA" -> {
+ //甲烷浓度
val dataArray = bytes.copyOfRange(7, bytes.size)
val concentration = dataArray.handleGasConcentration()
val weakReferenceHandler = MethaneMonitorFragment.weakReferenceHandler ?: return
@@ -163,10 +177,8 @@
message.obj = concentration
weakReferenceHandler.sendMessage(message)
}
- }
- "BB" -> {
- if (bytes.size == 13) {
+ "BB" -> {
when ((bytes[9].toInt() and 0xFF).toString(16).uppercase()) {
"90" -> {
//语音源模式
@@ -214,11 +226,9 @@
}
}
}
- }
- "CC" -> {
- //激光温度
- if (bytes.size == 13) {
+ "CC" -> {
+ //激光温度
val dataArray = bytes.copyOfRange(10, bytes.size)
val temperature = (dataArray[0] * 256 + dataArray[1]) / 10f
val weakReferenceHandler = MethaneMonitorFragment.weakReferenceHandler ?: return
@@ -228,6 +238,24 @@
weakReferenceHandler.sendMessage(message)
}
}
+ } else {
+ val dataHeadArray = bytes.copyOfRange(0, 7)
+ if (dataHeadArray.toAsciiCode() == "GetData") {
+ //判断类型
+ when (Char(bytes[10].toInt())) {
+ '1' -> {
+ val dataArray = bytes.copyOfRange(10, bytes.size)
+ val data = dataArray.toAsciiCode()
+ if (BaseSettingsFragment.weakReferenceHandler != null) {
+ val weakReferenceHandler = BaseSettingsFragment.weakReferenceHandler!!
+ val message = weakReferenceHandler.obtainMessage()
+ message.what = LocaleConstant.BOARD_CONFIG_RESPONSE_CODE
+ message.obj = data
+ weakReferenceHandler.sendMessage(message)
+ }
+ }
+ }
+ }
}
}
diff --git a/app/src/main/java/com/casic/app/safetreecontroller/utils/CommandCreator.kt b/app/src/main/java/com/casic/app/safetreecontroller/utils/CommandCreator.kt
index d4179eb..a9e5b05 100644
--- a/app/src/main/java/com/casic/app/safetreecontroller/utils/CommandCreator.kt
+++ b/app/src/main/java/com/casic/app/safetreecontroller/utils/CommandCreator.kt
@@ -67,6 +67,13 @@
}
/**
+ * 查询主控板主控板IP、子网掩码、网关IP指令
+ * */
+ fun createControlBoardConfigCommand(): ByteArray {
+ return "GetData:1\r\n".toByteArray()
+ }
+
+ /**
* 音量增大指令
* */
fun createIncreaseVoiceCommand(): ByteArray {
diff --git a/app/src/main/java/com/casic/app/safetreecontroller/utils/LocaleConstant.kt b/app/src/main/java/com/casic/app/safetreecontroller/utils/LocaleConstant.kt
index bf3c4b8..f8f1324 100644
--- a/app/src/main/java/com/casic/app/safetreecontroller/utils/LocaleConstant.kt
+++ b/app/src/main/java/com/casic/app/safetreecontroller/utils/LocaleConstant.kt
@@ -26,6 +26,7 @@
const val CLOSE_METHANE_ALARM_CODE = 20240010
const val OPEN_DEVICE_STATE_TIPS_CODE = 20240011
const val CLOSE_DEVICE_STATE_TIPS_CODE = 20240012
+ const val QUERY_BOARD_CONFIG_CODE = 20240013
/**
* Handler Response Code
@@ -33,6 +34,7 @@
const val QUERY_CPU_TEMPERATURE_RESPONSE_CODE = 20241001
const val QUERY_METHANE_RESPONSE_CODE = 20241002
const val DEVICE_RESPONSE_CODE = 20241003
+ const val BOARD_CONFIG_RESPONSE_CODE = 20241004
/***
* SP Key
diff --git a/app/src/main/res/layout/fragment_base_settings.xml b/app/src/main/res/layout/fragment_base_settings.xml
index 68b09c5..919116a 100644
--- a/app/src/main/res/layout/fragment_base_settings.xml
+++ b/app/src/main/res/layout/fragment_base_settings.xml
@@ -42,15 +42,27 @@
android:layout_marginVertical="@dimen/dp_5"
android:background="#CCC" />
-
+ android:paddingHorizontal="@dimen/dp_20">
+
+
+
+
+
@@ -93,11 +105,11 @@
android:textSize="@dimen/sp_16" />
@@ -118,11 +130,11 @@
android:textSize="@dimen/sp_16" />
@@ -148,7 +160,6 @@
android:layout_height="wrap_content"
android:layout_marginHorizontal="@dimen/dp_20"
android:layout_weight="2.25"
- android:text="YTJ-0001-5G"
android:textColor="@color/black"
android:textSize="@dimen/sp_16" />