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 09fd6c0..580ffaa 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 @@ -15,7 +15,6 @@ import androidx.lifecycle.lifecycleScope import com.casic.app.safetreecontroller.databinding.FragmentBaseSettingsBinding import com.casic.app.safetreecontroller.service.SocketConnectionService -import com.casic.app.safetreecontroller.utils.CommandCreator import com.casic.app.safetreecontroller.utils.LocaleConstant import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.getSystemService @@ -37,6 +36,9 @@ private val kTag = "BaseSettingsFragment" private val broadcastManager by lazy { BroadcastManager(requireContext()) } private val wifi by lazy { requireContext().getSystemService()!! } + private var isGetBoardConfig = false + private var isUseWithAI = false + private var isGetServerConfig = false override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) @@ -97,36 +99,42 @@ override fun setUserVisibleHint(isVisibleToUser: Boolean) { super.setUserVisibleHint(isVisibleToUser) if (isVisibleToUser) { - val weakReferenceHandler = SocketConnectionService.weakReferenceHandler ?: return lifecycleScope.launch(Dispatchers.IO) { - //查询是否配合一体机使用 - weakReferenceHandler.sendEmptyMessage(LocaleConstant.QUERY_IS_USE_AI_CODE) + while (!isGetBoardConfig) { + //查询主控板IP、子网掩码、网关IP + SocketConnectionService.weakReferenceHandler?.sendEmptyMessage(LocaleConstant.QUERY_BOARD_CONFIG_CODE) + delay(2000) + } - delay(500) + while (!isUseWithAI) { + //查询是否配合一体机使用 + SocketConnectionService.weakReferenceHandler?.sendEmptyMessage(LocaleConstant.QUERY_IS_USE_AI_CODE) + delay(1500) + } - //查询主控板IP、子网掩码、网关IP - weakReferenceHandler.sendEmptyMessage(LocaleConstant.QUERY_BOARD_CONFIG_CODE) + while (!isGetServerConfig) { + //查询服务器IP、端口 + SocketConnectionService.weakReferenceHandler?.sendEmptyMessage(LocaleConstant.QUERY_SERVER_CONFIG_CODE) + delay(1000) + } } } } override fun initEvent() { - binding.queryBoardConfigButton.setOnClickListener { - SocketConnectionService.weakReferenceHandler?.sendEmptyMessage(LocaleConstant.QUERY_BOARD_CONFIG_CODE) - } - //TODO binding.configurationButton.setOnClickListener { - val weakReferenceHandler = SocketConnectionService.weakReferenceHandler - ?: return@setOnClickListener - lifecycleScope.launch(Dispatchers.IO) { - - - } - val message = weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.SET_BOARD_WIFI_CONFIG_CODE - message.obj = CommandCreator.createWiFiConfigCommand("YTJ-010002", "zhsz20311hw") - weakReferenceHandler.sendMessage(message) +// val weakReferenceHandler = SocketConnectionService.weakReferenceHandler +// ?: return@setOnClickListener +// lifecycleScope.launch(Dispatchers.IO) { +// +// } +// val message = weakReferenceHandler.obtainMessage() +// message.what = LocaleConstant.SET_BOARD_WIFI_CONFIG_CODE +// message.obj = CommandCreator.createWiFiConfigCommand( +// binding.wifiNameView.text.toString(), binding.passwordView.text.toString() +// ) +// weakReferenceHandler.sendMessage(message) } } @@ -140,20 +148,32 @@ //如果配合一体机使用,该项出厂时配置为0,否则出厂时配置为1 val state = msg.obj as String if (state == "0") { + isUseWithAI = true binding.serverLayout.visibility = View.VISIBLE } else { + isUseWithAI = false binding.serverLayout.visibility = View.GONE } } LocaleConstant.BOARD_CONFIG_RESPONSE_CODE -> { val data = msg.obj as String + isGetBoardConfig = true //分割数据 val list = data.split(",") binding.boardHostView.text = list[0] binding.boardMaskView.text = list[1] binding.gatewayView.text = list[2].trim() } + + LocaleConstant.SERVER_CONFIG_RESPONSE_CODE -> { + val data = msg.obj as String + isGetServerConfig = true + //分割数据 + val list = data.split(",") + binding.serverHostView.setText(list[0]) + binding.serverPortView.setText(list[1].trim()) + } } return true } @@ -161,14 +181,6 @@ override fun onResume() { super.onResume() binding.wifiNameView.text = wifi.connectionInfo.ssid - if (binding.boardHostView.text.isEmpty() || - binding.boardMaskView.text.isEmpty() || - binding.gatewayView.text.isEmpty() - ) { - binding.queryBoardConfigButton.visibility = View.VISIBLE - } else { - binding.queryBoardConfigButton.visibility = View.GONE - } } /** 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 09fd6c0..580ffaa 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 @@ -15,7 +15,6 @@ import androidx.lifecycle.lifecycleScope import com.casic.app.safetreecontroller.databinding.FragmentBaseSettingsBinding import com.casic.app.safetreecontroller.service.SocketConnectionService -import com.casic.app.safetreecontroller.utils.CommandCreator import com.casic.app.safetreecontroller.utils.LocaleConstant import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.getSystemService @@ -37,6 +36,9 @@ private val kTag = "BaseSettingsFragment" private val broadcastManager by lazy { BroadcastManager(requireContext()) } private val wifi by lazy { requireContext().getSystemService()!! } + private var isGetBoardConfig = false + private var isUseWithAI = false + private var isGetServerConfig = false override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) @@ -97,36 +99,42 @@ override fun setUserVisibleHint(isVisibleToUser: Boolean) { super.setUserVisibleHint(isVisibleToUser) if (isVisibleToUser) { - val weakReferenceHandler = SocketConnectionService.weakReferenceHandler ?: return lifecycleScope.launch(Dispatchers.IO) { - //查询是否配合一体机使用 - weakReferenceHandler.sendEmptyMessage(LocaleConstant.QUERY_IS_USE_AI_CODE) + while (!isGetBoardConfig) { + //查询主控板IP、子网掩码、网关IP + SocketConnectionService.weakReferenceHandler?.sendEmptyMessage(LocaleConstant.QUERY_BOARD_CONFIG_CODE) + delay(2000) + } - delay(500) + while (!isUseWithAI) { + //查询是否配合一体机使用 + SocketConnectionService.weakReferenceHandler?.sendEmptyMessage(LocaleConstant.QUERY_IS_USE_AI_CODE) + delay(1500) + } - //查询主控板IP、子网掩码、网关IP - weakReferenceHandler.sendEmptyMessage(LocaleConstant.QUERY_BOARD_CONFIG_CODE) + while (!isGetServerConfig) { + //查询服务器IP、端口 + SocketConnectionService.weakReferenceHandler?.sendEmptyMessage(LocaleConstant.QUERY_SERVER_CONFIG_CODE) + delay(1000) + } } } } override fun initEvent() { - binding.queryBoardConfigButton.setOnClickListener { - SocketConnectionService.weakReferenceHandler?.sendEmptyMessage(LocaleConstant.QUERY_BOARD_CONFIG_CODE) - } - //TODO binding.configurationButton.setOnClickListener { - val weakReferenceHandler = SocketConnectionService.weakReferenceHandler - ?: return@setOnClickListener - lifecycleScope.launch(Dispatchers.IO) { - - - } - val message = weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.SET_BOARD_WIFI_CONFIG_CODE - message.obj = CommandCreator.createWiFiConfigCommand("YTJ-010002", "zhsz20311hw") - weakReferenceHandler.sendMessage(message) +// val weakReferenceHandler = SocketConnectionService.weakReferenceHandler +// ?: return@setOnClickListener +// lifecycleScope.launch(Dispatchers.IO) { +// +// } +// val message = weakReferenceHandler.obtainMessage() +// message.what = LocaleConstant.SET_BOARD_WIFI_CONFIG_CODE +// message.obj = CommandCreator.createWiFiConfigCommand( +// binding.wifiNameView.text.toString(), binding.passwordView.text.toString() +// ) +// weakReferenceHandler.sendMessage(message) } } @@ -140,20 +148,32 @@ //如果配合一体机使用,该项出厂时配置为0,否则出厂时配置为1 val state = msg.obj as String if (state == "0") { + isUseWithAI = true binding.serverLayout.visibility = View.VISIBLE } else { + isUseWithAI = false binding.serverLayout.visibility = View.GONE } } LocaleConstant.BOARD_CONFIG_RESPONSE_CODE -> { val data = msg.obj as String + isGetBoardConfig = true //分割数据 val list = data.split(",") binding.boardHostView.text = list[0] binding.boardMaskView.text = list[1] binding.gatewayView.text = list[2].trim() } + + LocaleConstant.SERVER_CONFIG_RESPONSE_CODE -> { + val data = msg.obj as String + isGetServerConfig = true + //分割数据 + val list = data.split(",") + binding.serverHostView.setText(list[0]) + binding.serverPortView.setText(list[1].trim()) + } } return true } @@ -161,14 +181,6 @@ override fun onResume() { super.onResume() binding.wifiNameView.text = wifi.connectionInfo.ssid - if (binding.boardHostView.text.isEmpty() || - binding.boardMaskView.text.isEmpty() || - binding.gatewayView.text.isEmpty() - ) { - binding.queryBoardConfigButton.visibility = View.VISIBLE - } else { - binding.queryBoardConfigButton.visibility = View.GONE - } } /** diff --git a/app/src/main/java/com/casic/app/safetreecontroller/fragments/MethaneMonitorFragment.kt b/app/src/main/java/com/casic/app/safetreecontroller/fragments/MethaneMonitorFragment.kt index 91adaa5..81c091d 100644 --- a/app/src/main/java/com/casic/app/safetreecontroller/fragments/MethaneMonitorFragment.kt +++ b/app/src/main/java/com/casic/app/safetreecontroller/fragments/MethaneMonitorFragment.kt @@ -5,6 +5,7 @@ import android.os.Message import android.view.LayoutInflater import android.view.ViewGroup +import androidx.lifecycle.lifecycleScope import com.casic.app.safetreecontroller.R import com.casic.app.safetreecontroller.databinding.FragmentMethaneMonitorBinding import com.casic.app.safetreecontroller.extensions.initConfig @@ -22,6 +23,9 @@ import com.pengxh.kt.lite.extensions.timestampToTime import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.delay +import kotlinx.coroutines.launch class MethaneMonitorFragment : KotlinBaseFragment(), Handler.Callback { @@ -39,6 +43,7 @@ //趋势线起点X坐标 private var i = 0 private var isVisibleToUser = false + private var isGetTemperature = false override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) @@ -76,7 +81,12 @@ super.setUserVisibleHint(isVisibleToUser) this.isVisibleToUser = isVisibleToUser if (isVisibleToUser) { - SocketConnectionService.weakReferenceHandler?.sendEmptyMessage(LocaleConstant.QUERY_CPU_TEMPERATURE_CODE) + lifecycleScope.launch(Dispatchers.IO) { + while (!isGetTemperature) { + SocketConnectionService.weakReferenceHandler?.sendEmptyMessage(LocaleConstant.QUERY_CPU_TEMPERATURE_CODE) + delay(1000) + } + } } } @@ -118,6 +128,7 @@ override fun handleMessage(msg: Message): Boolean { when (msg.what) { LocaleConstant.QUERY_CPU_TEMPERATURE_RESPONSE_CODE -> { + isGetTemperature = true binding.cpuTemperatureView.text = "${msg.obj} ℃" } 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 09fd6c0..580ffaa 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 @@ -15,7 +15,6 @@ import androidx.lifecycle.lifecycleScope import com.casic.app.safetreecontroller.databinding.FragmentBaseSettingsBinding import com.casic.app.safetreecontroller.service.SocketConnectionService -import com.casic.app.safetreecontroller.utils.CommandCreator import com.casic.app.safetreecontroller.utils.LocaleConstant import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.getSystemService @@ -37,6 +36,9 @@ private val kTag = "BaseSettingsFragment" private val broadcastManager by lazy { BroadcastManager(requireContext()) } private val wifi by lazy { requireContext().getSystemService()!! } + private var isGetBoardConfig = false + private var isUseWithAI = false + private var isGetServerConfig = false override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) @@ -97,36 +99,42 @@ override fun setUserVisibleHint(isVisibleToUser: Boolean) { super.setUserVisibleHint(isVisibleToUser) if (isVisibleToUser) { - val weakReferenceHandler = SocketConnectionService.weakReferenceHandler ?: return lifecycleScope.launch(Dispatchers.IO) { - //查询是否配合一体机使用 - weakReferenceHandler.sendEmptyMessage(LocaleConstant.QUERY_IS_USE_AI_CODE) + while (!isGetBoardConfig) { + //查询主控板IP、子网掩码、网关IP + SocketConnectionService.weakReferenceHandler?.sendEmptyMessage(LocaleConstant.QUERY_BOARD_CONFIG_CODE) + delay(2000) + } - delay(500) + while (!isUseWithAI) { + //查询是否配合一体机使用 + SocketConnectionService.weakReferenceHandler?.sendEmptyMessage(LocaleConstant.QUERY_IS_USE_AI_CODE) + delay(1500) + } - //查询主控板IP、子网掩码、网关IP - weakReferenceHandler.sendEmptyMessage(LocaleConstant.QUERY_BOARD_CONFIG_CODE) + while (!isGetServerConfig) { + //查询服务器IP、端口 + SocketConnectionService.weakReferenceHandler?.sendEmptyMessage(LocaleConstant.QUERY_SERVER_CONFIG_CODE) + delay(1000) + } } } } override fun initEvent() { - binding.queryBoardConfigButton.setOnClickListener { - SocketConnectionService.weakReferenceHandler?.sendEmptyMessage(LocaleConstant.QUERY_BOARD_CONFIG_CODE) - } - //TODO binding.configurationButton.setOnClickListener { - val weakReferenceHandler = SocketConnectionService.weakReferenceHandler - ?: return@setOnClickListener - lifecycleScope.launch(Dispatchers.IO) { - - - } - val message = weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.SET_BOARD_WIFI_CONFIG_CODE - message.obj = CommandCreator.createWiFiConfigCommand("YTJ-010002", "zhsz20311hw") - weakReferenceHandler.sendMessage(message) +// val weakReferenceHandler = SocketConnectionService.weakReferenceHandler +// ?: return@setOnClickListener +// lifecycleScope.launch(Dispatchers.IO) { +// +// } +// val message = weakReferenceHandler.obtainMessage() +// message.what = LocaleConstant.SET_BOARD_WIFI_CONFIG_CODE +// message.obj = CommandCreator.createWiFiConfigCommand( +// binding.wifiNameView.text.toString(), binding.passwordView.text.toString() +// ) +// weakReferenceHandler.sendMessage(message) } } @@ -140,20 +148,32 @@ //如果配合一体机使用,该项出厂时配置为0,否则出厂时配置为1 val state = msg.obj as String if (state == "0") { + isUseWithAI = true binding.serverLayout.visibility = View.VISIBLE } else { + isUseWithAI = false binding.serverLayout.visibility = View.GONE } } LocaleConstant.BOARD_CONFIG_RESPONSE_CODE -> { val data = msg.obj as String + isGetBoardConfig = true //分割数据 val list = data.split(",") binding.boardHostView.text = list[0] binding.boardMaskView.text = list[1] binding.gatewayView.text = list[2].trim() } + + LocaleConstant.SERVER_CONFIG_RESPONSE_CODE -> { + val data = msg.obj as String + isGetServerConfig = true + //分割数据 + val list = data.split(",") + binding.serverHostView.setText(list[0]) + binding.serverPortView.setText(list[1].trim()) + } } return true } @@ -161,14 +181,6 @@ override fun onResume() { super.onResume() binding.wifiNameView.text = wifi.connectionInfo.ssid - if (binding.boardHostView.text.isEmpty() || - binding.boardMaskView.text.isEmpty() || - binding.gatewayView.text.isEmpty() - ) { - binding.queryBoardConfigButton.visibility = View.VISIBLE - } else { - binding.queryBoardConfigButton.visibility = View.GONE - } } /** diff --git a/app/src/main/java/com/casic/app/safetreecontroller/fragments/MethaneMonitorFragment.kt b/app/src/main/java/com/casic/app/safetreecontroller/fragments/MethaneMonitorFragment.kt index 91adaa5..81c091d 100644 --- a/app/src/main/java/com/casic/app/safetreecontroller/fragments/MethaneMonitorFragment.kt +++ b/app/src/main/java/com/casic/app/safetreecontroller/fragments/MethaneMonitorFragment.kt @@ -5,6 +5,7 @@ import android.os.Message import android.view.LayoutInflater import android.view.ViewGroup +import androidx.lifecycle.lifecycleScope import com.casic.app.safetreecontroller.R import com.casic.app.safetreecontroller.databinding.FragmentMethaneMonitorBinding import com.casic.app.safetreecontroller.extensions.initConfig @@ -22,6 +23,9 @@ import com.pengxh.kt.lite.extensions.timestampToTime import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.delay +import kotlinx.coroutines.launch class MethaneMonitorFragment : KotlinBaseFragment(), Handler.Callback { @@ -39,6 +43,7 @@ //趋势线起点X坐标 private var i = 0 private var isVisibleToUser = false + private var isGetTemperature = false override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) @@ -76,7 +81,12 @@ super.setUserVisibleHint(isVisibleToUser) this.isVisibleToUser = isVisibleToUser if (isVisibleToUser) { - SocketConnectionService.weakReferenceHandler?.sendEmptyMessage(LocaleConstant.QUERY_CPU_TEMPERATURE_CODE) + lifecycleScope.launch(Dispatchers.IO) { + while (!isGetTemperature) { + SocketConnectionService.weakReferenceHandler?.sendEmptyMessage(LocaleConstant.QUERY_CPU_TEMPERATURE_CODE) + delay(1000) + } + } } } @@ -118,6 +128,7 @@ override fun handleMessage(msg: Message): Boolean { when (msg.what) { LocaleConstant.QUERY_CPU_TEMPERATURE_RESPONSE_CODE -> { + isGetTemperature = true binding.cpuTemperatureView.text = "${msg.obj} ℃" } 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 8d76efd..166e63c 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 @@ -87,6 +87,10 @@ tcpClient.sendMessage(CommandCreator.createIsUseAICommand()) } + LocaleConstant.QUERY_SERVER_CONFIG_CODE -> { + tcpClient.sendMessage(CommandCreator.createServerConfigCommand()) + } + LocaleConstant.SET_BOARD_WIFI_CONFIG_CODE -> { val command = msg.obj as ByteArray tcpClient.sendMessage(command) @@ -157,6 +161,10 @@ * 安全树主控板是否连接远程服务器设置与查询返回: * * [71, 101, 116, 68, 97, 116, 97, 58, 52, 44, 48, 13, 10] + * + * 安全树主控板要连接的远程服务器IP、端口号指令返回: + * + * [71, 101, 116, 68, 97, 116, 97, 58, 53, 44, 51, 49, 50, 56, 52, 54, 52, 106, 115, 108, 101, 55, 46, 118, 105, 99, 112, 46, 102, 117, 110, 44, 51, 55, 57, 53, 53, 13, 10] * */ override fun onMessageReceived(bytes: ByteArray?) { if (bytes == null) { @@ -167,30 +175,32 @@ val dataHeadArray = bytes.copyOfRange(0, 7) if (dataHeadArray.contentEquals(byteArrayOf(71, 101, 116, 68, 97, 116, 97))) { //GetData + val dataArray = bytes.copyOfRange(10, bytes.size) + val data = dataArray.toAsciiCode() + + val weakReferenceHandler = BaseSettingsFragment.weakReferenceHandler ?: return + //判断类型 when (Char(bytes[8].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) - } + val message = weakReferenceHandler.obtainMessage() + message.what = LocaleConstant.BOARD_CONFIG_RESPONSE_CODE + message.obj = data + weakReferenceHandler.sendMessage(message) } '4' -> { - 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.QUERY_IS_USE_AI_RESPONSE_CODE - message.obj = data - weakReferenceHandler.sendMessage(message) - } + val message = weakReferenceHandler.obtainMessage() + message.what = LocaleConstant.QUERY_IS_USE_AI_RESPONSE_CODE + message.obj = data + weakReferenceHandler.sendMessage(message) + } + + '5' -> { + val message = weakReferenceHandler.obtainMessage() + message.what = LocaleConstant.SERVER_CONFIG_RESPONSE_CODE + message.obj = data + weakReferenceHandler.sendMessage(message) } } } else if (dataHeadArray.contentEquals(byteArrayOf())) { 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 09fd6c0..580ffaa 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 @@ -15,7 +15,6 @@ import androidx.lifecycle.lifecycleScope import com.casic.app.safetreecontroller.databinding.FragmentBaseSettingsBinding import com.casic.app.safetreecontroller.service.SocketConnectionService -import com.casic.app.safetreecontroller.utils.CommandCreator import com.casic.app.safetreecontroller.utils.LocaleConstant import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.getSystemService @@ -37,6 +36,9 @@ private val kTag = "BaseSettingsFragment" private val broadcastManager by lazy { BroadcastManager(requireContext()) } private val wifi by lazy { requireContext().getSystemService()!! } + private var isGetBoardConfig = false + private var isUseWithAI = false + private var isGetServerConfig = false override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) @@ -97,36 +99,42 @@ override fun setUserVisibleHint(isVisibleToUser: Boolean) { super.setUserVisibleHint(isVisibleToUser) if (isVisibleToUser) { - val weakReferenceHandler = SocketConnectionService.weakReferenceHandler ?: return lifecycleScope.launch(Dispatchers.IO) { - //查询是否配合一体机使用 - weakReferenceHandler.sendEmptyMessage(LocaleConstant.QUERY_IS_USE_AI_CODE) + while (!isGetBoardConfig) { + //查询主控板IP、子网掩码、网关IP + SocketConnectionService.weakReferenceHandler?.sendEmptyMessage(LocaleConstant.QUERY_BOARD_CONFIG_CODE) + delay(2000) + } - delay(500) + while (!isUseWithAI) { + //查询是否配合一体机使用 + SocketConnectionService.weakReferenceHandler?.sendEmptyMessage(LocaleConstant.QUERY_IS_USE_AI_CODE) + delay(1500) + } - //查询主控板IP、子网掩码、网关IP - weakReferenceHandler.sendEmptyMessage(LocaleConstant.QUERY_BOARD_CONFIG_CODE) + while (!isGetServerConfig) { + //查询服务器IP、端口 + SocketConnectionService.weakReferenceHandler?.sendEmptyMessage(LocaleConstant.QUERY_SERVER_CONFIG_CODE) + delay(1000) + } } } } override fun initEvent() { - binding.queryBoardConfigButton.setOnClickListener { - SocketConnectionService.weakReferenceHandler?.sendEmptyMessage(LocaleConstant.QUERY_BOARD_CONFIG_CODE) - } - //TODO binding.configurationButton.setOnClickListener { - val weakReferenceHandler = SocketConnectionService.weakReferenceHandler - ?: return@setOnClickListener - lifecycleScope.launch(Dispatchers.IO) { - - - } - val message = weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.SET_BOARD_WIFI_CONFIG_CODE - message.obj = CommandCreator.createWiFiConfigCommand("YTJ-010002", "zhsz20311hw") - weakReferenceHandler.sendMessage(message) +// val weakReferenceHandler = SocketConnectionService.weakReferenceHandler +// ?: return@setOnClickListener +// lifecycleScope.launch(Dispatchers.IO) { +// +// } +// val message = weakReferenceHandler.obtainMessage() +// message.what = LocaleConstant.SET_BOARD_WIFI_CONFIG_CODE +// message.obj = CommandCreator.createWiFiConfigCommand( +// binding.wifiNameView.text.toString(), binding.passwordView.text.toString() +// ) +// weakReferenceHandler.sendMessage(message) } } @@ -140,20 +148,32 @@ //如果配合一体机使用,该项出厂时配置为0,否则出厂时配置为1 val state = msg.obj as String if (state == "0") { + isUseWithAI = true binding.serverLayout.visibility = View.VISIBLE } else { + isUseWithAI = false binding.serverLayout.visibility = View.GONE } } LocaleConstant.BOARD_CONFIG_RESPONSE_CODE -> { val data = msg.obj as String + isGetBoardConfig = true //分割数据 val list = data.split(",") binding.boardHostView.text = list[0] binding.boardMaskView.text = list[1] binding.gatewayView.text = list[2].trim() } + + LocaleConstant.SERVER_CONFIG_RESPONSE_CODE -> { + val data = msg.obj as String + isGetServerConfig = true + //分割数据 + val list = data.split(",") + binding.serverHostView.setText(list[0]) + binding.serverPortView.setText(list[1].trim()) + } } return true } @@ -161,14 +181,6 @@ override fun onResume() { super.onResume() binding.wifiNameView.text = wifi.connectionInfo.ssid - if (binding.boardHostView.text.isEmpty() || - binding.boardMaskView.text.isEmpty() || - binding.gatewayView.text.isEmpty() - ) { - binding.queryBoardConfigButton.visibility = View.VISIBLE - } else { - binding.queryBoardConfigButton.visibility = View.GONE - } } /** diff --git a/app/src/main/java/com/casic/app/safetreecontroller/fragments/MethaneMonitorFragment.kt b/app/src/main/java/com/casic/app/safetreecontroller/fragments/MethaneMonitorFragment.kt index 91adaa5..81c091d 100644 --- a/app/src/main/java/com/casic/app/safetreecontroller/fragments/MethaneMonitorFragment.kt +++ b/app/src/main/java/com/casic/app/safetreecontroller/fragments/MethaneMonitorFragment.kt @@ -5,6 +5,7 @@ import android.os.Message import android.view.LayoutInflater import android.view.ViewGroup +import androidx.lifecycle.lifecycleScope import com.casic.app.safetreecontroller.R import com.casic.app.safetreecontroller.databinding.FragmentMethaneMonitorBinding import com.casic.app.safetreecontroller.extensions.initConfig @@ -22,6 +23,9 @@ import com.pengxh.kt.lite.extensions.timestampToTime import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.delay +import kotlinx.coroutines.launch class MethaneMonitorFragment : KotlinBaseFragment(), Handler.Callback { @@ -39,6 +43,7 @@ //趋势线起点X坐标 private var i = 0 private var isVisibleToUser = false + private var isGetTemperature = false override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) @@ -76,7 +81,12 @@ super.setUserVisibleHint(isVisibleToUser) this.isVisibleToUser = isVisibleToUser if (isVisibleToUser) { - SocketConnectionService.weakReferenceHandler?.sendEmptyMessage(LocaleConstant.QUERY_CPU_TEMPERATURE_CODE) + lifecycleScope.launch(Dispatchers.IO) { + while (!isGetTemperature) { + SocketConnectionService.weakReferenceHandler?.sendEmptyMessage(LocaleConstant.QUERY_CPU_TEMPERATURE_CODE) + delay(1000) + } + } } } @@ -118,6 +128,7 @@ override fun handleMessage(msg: Message): Boolean { when (msg.what) { LocaleConstant.QUERY_CPU_TEMPERATURE_RESPONSE_CODE -> { + isGetTemperature = true binding.cpuTemperatureView.text = "${msg.obj} ℃" } 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 8d76efd..166e63c 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 @@ -87,6 +87,10 @@ tcpClient.sendMessage(CommandCreator.createIsUseAICommand()) } + LocaleConstant.QUERY_SERVER_CONFIG_CODE -> { + tcpClient.sendMessage(CommandCreator.createServerConfigCommand()) + } + LocaleConstant.SET_BOARD_WIFI_CONFIG_CODE -> { val command = msg.obj as ByteArray tcpClient.sendMessage(command) @@ -157,6 +161,10 @@ * 安全树主控板是否连接远程服务器设置与查询返回: * * [71, 101, 116, 68, 97, 116, 97, 58, 52, 44, 48, 13, 10] + * + * 安全树主控板要连接的远程服务器IP、端口号指令返回: + * + * [71, 101, 116, 68, 97, 116, 97, 58, 53, 44, 51, 49, 50, 56, 52, 54, 52, 106, 115, 108, 101, 55, 46, 118, 105, 99, 112, 46, 102, 117, 110, 44, 51, 55, 57, 53, 53, 13, 10] * */ override fun onMessageReceived(bytes: ByteArray?) { if (bytes == null) { @@ -167,30 +175,32 @@ val dataHeadArray = bytes.copyOfRange(0, 7) if (dataHeadArray.contentEquals(byteArrayOf(71, 101, 116, 68, 97, 116, 97))) { //GetData + val dataArray = bytes.copyOfRange(10, bytes.size) + val data = dataArray.toAsciiCode() + + val weakReferenceHandler = BaseSettingsFragment.weakReferenceHandler ?: return + //判断类型 when (Char(bytes[8].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) - } + val message = weakReferenceHandler.obtainMessage() + message.what = LocaleConstant.BOARD_CONFIG_RESPONSE_CODE + message.obj = data + weakReferenceHandler.sendMessage(message) } '4' -> { - 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.QUERY_IS_USE_AI_RESPONSE_CODE - message.obj = data - weakReferenceHandler.sendMessage(message) - } + val message = weakReferenceHandler.obtainMessage() + message.what = LocaleConstant.QUERY_IS_USE_AI_RESPONSE_CODE + message.obj = data + weakReferenceHandler.sendMessage(message) + } + + '5' -> { + val message = weakReferenceHandler.obtainMessage() + message.what = LocaleConstant.SERVER_CONFIG_RESPONSE_CODE + message.obj = data + weakReferenceHandler.sendMessage(message) } } } else if (dataHeadArray.contentEquals(byteArrayOf())) { 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 1a808c4..fb39a38 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 @@ -81,6 +81,13 @@ } /** + * 安全树主控板要连接的远程服务器IP、端口号指令 + * */ + fun createServerConfigCommand(): ByteArray { + return "GetData:5\r\n".toByteArray() + } + + /** * 设置主控板WiFi指令 * */ fun createWiFiConfigCommand(wifiName: String, password: String): ByteArray { 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 09fd6c0..580ffaa 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 @@ -15,7 +15,6 @@ import androidx.lifecycle.lifecycleScope import com.casic.app.safetreecontroller.databinding.FragmentBaseSettingsBinding import com.casic.app.safetreecontroller.service.SocketConnectionService -import com.casic.app.safetreecontroller.utils.CommandCreator import com.casic.app.safetreecontroller.utils.LocaleConstant import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.getSystemService @@ -37,6 +36,9 @@ private val kTag = "BaseSettingsFragment" private val broadcastManager by lazy { BroadcastManager(requireContext()) } private val wifi by lazy { requireContext().getSystemService()!! } + private var isGetBoardConfig = false + private var isUseWithAI = false + private var isGetServerConfig = false override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) @@ -97,36 +99,42 @@ override fun setUserVisibleHint(isVisibleToUser: Boolean) { super.setUserVisibleHint(isVisibleToUser) if (isVisibleToUser) { - val weakReferenceHandler = SocketConnectionService.weakReferenceHandler ?: return lifecycleScope.launch(Dispatchers.IO) { - //查询是否配合一体机使用 - weakReferenceHandler.sendEmptyMessage(LocaleConstant.QUERY_IS_USE_AI_CODE) + while (!isGetBoardConfig) { + //查询主控板IP、子网掩码、网关IP + SocketConnectionService.weakReferenceHandler?.sendEmptyMessage(LocaleConstant.QUERY_BOARD_CONFIG_CODE) + delay(2000) + } - delay(500) + while (!isUseWithAI) { + //查询是否配合一体机使用 + SocketConnectionService.weakReferenceHandler?.sendEmptyMessage(LocaleConstant.QUERY_IS_USE_AI_CODE) + delay(1500) + } - //查询主控板IP、子网掩码、网关IP - weakReferenceHandler.sendEmptyMessage(LocaleConstant.QUERY_BOARD_CONFIG_CODE) + while (!isGetServerConfig) { + //查询服务器IP、端口 + SocketConnectionService.weakReferenceHandler?.sendEmptyMessage(LocaleConstant.QUERY_SERVER_CONFIG_CODE) + delay(1000) + } } } } override fun initEvent() { - binding.queryBoardConfigButton.setOnClickListener { - SocketConnectionService.weakReferenceHandler?.sendEmptyMessage(LocaleConstant.QUERY_BOARD_CONFIG_CODE) - } - //TODO binding.configurationButton.setOnClickListener { - val weakReferenceHandler = SocketConnectionService.weakReferenceHandler - ?: return@setOnClickListener - lifecycleScope.launch(Dispatchers.IO) { - - - } - val message = weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.SET_BOARD_WIFI_CONFIG_CODE - message.obj = CommandCreator.createWiFiConfigCommand("YTJ-010002", "zhsz20311hw") - weakReferenceHandler.sendMessage(message) +// val weakReferenceHandler = SocketConnectionService.weakReferenceHandler +// ?: return@setOnClickListener +// lifecycleScope.launch(Dispatchers.IO) { +// +// } +// val message = weakReferenceHandler.obtainMessage() +// message.what = LocaleConstant.SET_BOARD_WIFI_CONFIG_CODE +// message.obj = CommandCreator.createWiFiConfigCommand( +// binding.wifiNameView.text.toString(), binding.passwordView.text.toString() +// ) +// weakReferenceHandler.sendMessage(message) } } @@ -140,20 +148,32 @@ //如果配合一体机使用,该项出厂时配置为0,否则出厂时配置为1 val state = msg.obj as String if (state == "0") { + isUseWithAI = true binding.serverLayout.visibility = View.VISIBLE } else { + isUseWithAI = false binding.serverLayout.visibility = View.GONE } } LocaleConstant.BOARD_CONFIG_RESPONSE_CODE -> { val data = msg.obj as String + isGetBoardConfig = true //分割数据 val list = data.split(",") binding.boardHostView.text = list[0] binding.boardMaskView.text = list[1] binding.gatewayView.text = list[2].trim() } + + LocaleConstant.SERVER_CONFIG_RESPONSE_CODE -> { + val data = msg.obj as String + isGetServerConfig = true + //分割数据 + val list = data.split(",") + binding.serverHostView.setText(list[0]) + binding.serverPortView.setText(list[1].trim()) + } } return true } @@ -161,14 +181,6 @@ override fun onResume() { super.onResume() binding.wifiNameView.text = wifi.connectionInfo.ssid - if (binding.boardHostView.text.isEmpty() || - binding.boardMaskView.text.isEmpty() || - binding.gatewayView.text.isEmpty() - ) { - binding.queryBoardConfigButton.visibility = View.VISIBLE - } else { - binding.queryBoardConfigButton.visibility = View.GONE - } } /** diff --git a/app/src/main/java/com/casic/app/safetreecontroller/fragments/MethaneMonitorFragment.kt b/app/src/main/java/com/casic/app/safetreecontroller/fragments/MethaneMonitorFragment.kt index 91adaa5..81c091d 100644 --- a/app/src/main/java/com/casic/app/safetreecontroller/fragments/MethaneMonitorFragment.kt +++ b/app/src/main/java/com/casic/app/safetreecontroller/fragments/MethaneMonitorFragment.kt @@ -5,6 +5,7 @@ import android.os.Message import android.view.LayoutInflater import android.view.ViewGroup +import androidx.lifecycle.lifecycleScope import com.casic.app.safetreecontroller.R import com.casic.app.safetreecontroller.databinding.FragmentMethaneMonitorBinding import com.casic.app.safetreecontroller.extensions.initConfig @@ -22,6 +23,9 @@ import com.pengxh.kt.lite.extensions.timestampToTime import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.delay +import kotlinx.coroutines.launch class MethaneMonitorFragment : KotlinBaseFragment(), Handler.Callback { @@ -39,6 +43,7 @@ //趋势线起点X坐标 private var i = 0 private var isVisibleToUser = false + private var isGetTemperature = false override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) @@ -76,7 +81,12 @@ super.setUserVisibleHint(isVisibleToUser) this.isVisibleToUser = isVisibleToUser if (isVisibleToUser) { - SocketConnectionService.weakReferenceHandler?.sendEmptyMessage(LocaleConstant.QUERY_CPU_TEMPERATURE_CODE) + lifecycleScope.launch(Dispatchers.IO) { + while (!isGetTemperature) { + SocketConnectionService.weakReferenceHandler?.sendEmptyMessage(LocaleConstant.QUERY_CPU_TEMPERATURE_CODE) + delay(1000) + } + } } } @@ -118,6 +128,7 @@ override fun handleMessage(msg: Message): Boolean { when (msg.what) { LocaleConstant.QUERY_CPU_TEMPERATURE_RESPONSE_CODE -> { + isGetTemperature = true binding.cpuTemperatureView.text = "${msg.obj} ℃" } 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 8d76efd..166e63c 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 @@ -87,6 +87,10 @@ tcpClient.sendMessage(CommandCreator.createIsUseAICommand()) } + LocaleConstant.QUERY_SERVER_CONFIG_CODE -> { + tcpClient.sendMessage(CommandCreator.createServerConfigCommand()) + } + LocaleConstant.SET_BOARD_WIFI_CONFIG_CODE -> { val command = msg.obj as ByteArray tcpClient.sendMessage(command) @@ -157,6 +161,10 @@ * 安全树主控板是否连接远程服务器设置与查询返回: * * [71, 101, 116, 68, 97, 116, 97, 58, 52, 44, 48, 13, 10] + * + * 安全树主控板要连接的远程服务器IP、端口号指令返回: + * + * [71, 101, 116, 68, 97, 116, 97, 58, 53, 44, 51, 49, 50, 56, 52, 54, 52, 106, 115, 108, 101, 55, 46, 118, 105, 99, 112, 46, 102, 117, 110, 44, 51, 55, 57, 53, 53, 13, 10] * */ override fun onMessageReceived(bytes: ByteArray?) { if (bytes == null) { @@ -167,30 +175,32 @@ val dataHeadArray = bytes.copyOfRange(0, 7) if (dataHeadArray.contentEquals(byteArrayOf(71, 101, 116, 68, 97, 116, 97))) { //GetData + val dataArray = bytes.copyOfRange(10, bytes.size) + val data = dataArray.toAsciiCode() + + val weakReferenceHandler = BaseSettingsFragment.weakReferenceHandler ?: return + //判断类型 when (Char(bytes[8].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) - } + val message = weakReferenceHandler.obtainMessage() + message.what = LocaleConstant.BOARD_CONFIG_RESPONSE_CODE + message.obj = data + weakReferenceHandler.sendMessage(message) } '4' -> { - 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.QUERY_IS_USE_AI_RESPONSE_CODE - message.obj = data - weakReferenceHandler.sendMessage(message) - } + val message = weakReferenceHandler.obtainMessage() + message.what = LocaleConstant.QUERY_IS_USE_AI_RESPONSE_CODE + message.obj = data + weakReferenceHandler.sendMessage(message) + } + + '5' -> { + val message = weakReferenceHandler.obtainMessage() + message.what = LocaleConstant.SERVER_CONFIG_RESPONSE_CODE + message.obj = data + weakReferenceHandler.sendMessage(message) } } } else if (dataHeadArray.contentEquals(byteArrayOf())) { 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 1a808c4..fb39a38 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 @@ -81,6 +81,13 @@ } /** + * 安全树主控板要连接的远程服务器IP、端口号指令 + * */ + fun createServerConfigCommand(): ByteArray { + return "GetData:5\r\n".toByteArray() + } + + /** * 设置主控板WiFi指令 * */ fun createWiFiConfigCommand(wifiName: String, password: String): 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 0756741..2be459d 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 @@ -28,7 +28,8 @@ const val CLOSE_DEVICE_STATE_TIPS_CODE = 20240012 const val QUERY_BOARD_CONFIG_CODE = 20240013 const val QUERY_IS_USE_AI_CODE = 20240014 - const val SET_BOARD_WIFI_CONFIG_CODE = 20240015 + const val QUERY_SERVER_CONFIG_CODE = 20240015 + const val SET_BOARD_WIFI_CONFIG_CODE = 20240016 /** * Handler Response Code @@ -38,6 +39,7 @@ const val DEVICE_RESPONSE_CODE = 20241003 const val BOARD_CONFIG_RESPONSE_CODE = 20241004 const val QUERY_IS_USE_AI_RESPONSE_CODE = 20241005 + const val SERVER_CONFIG_RESPONSE_CODE = 20240016 /*** * SP Key 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 09fd6c0..580ffaa 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 @@ -15,7 +15,6 @@ import androidx.lifecycle.lifecycleScope import com.casic.app.safetreecontroller.databinding.FragmentBaseSettingsBinding import com.casic.app.safetreecontroller.service.SocketConnectionService -import com.casic.app.safetreecontroller.utils.CommandCreator import com.casic.app.safetreecontroller.utils.LocaleConstant import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.getSystemService @@ -37,6 +36,9 @@ private val kTag = "BaseSettingsFragment" private val broadcastManager by lazy { BroadcastManager(requireContext()) } private val wifi by lazy { requireContext().getSystemService()!! } + private var isGetBoardConfig = false + private var isUseWithAI = false + private var isGetServerConfig = false override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) @@ -97,36 +99,42 @@ override fun setUserVisibleHint(isVisibleToUser: Boolean) { super.setUserVisibleHint(isVisibleToUser) if (isVisibleToUser) { - val weakReferenceHandler = SocketConnectionService.weakReferenceHandler ?: return lifecycleScope.launch(Dispatchers.IO) { - //查询是否配合一体机使用 - weakReferenceHandler.sendEmptyMessage(LocaleConstant.QUERY_IS_USE_AI_CODE) + while (!isGetBoardConfig) { + //查询主控板IP、子网掩码、网关IP + SocketConnectionService.weakReferenceHandler?.sendEmptyMessage(LocaleConstant.QUERY_BOARD_CONFIG_CODE) + delay(2000) + } - delay(500) + while (!isUseWithAI) { + //查询是否配合一体机使用 + SocketConnectionService.weakReferenceHandler?.sendEmptyMessage(LocaleConstant.QUERY_IS_USE_AI_CODE) + delay(1500) + } - //查询主控板IP、子网掩码、网关IP - weakReferenceHandler.sendEmptyMessage(LocaleConstant.QUERY_BOARD_CONFIG_CODE) + while (!isGetServerConfig) { + //查询服务器IP、端口 + SocketConnectionService.weakReferenceHandler?.sendEmptyMessage(LocaleConstant.QUERY_SERVER_CONFIG_CODE) + delay(1000) + } } } } override fun initEvent() { - binding.queryBoardConfigButton.setOnClickListener { - SocketConnectionService.weakReferenceHandler?.sendEmptyMessage(LocaleConstant.QUERY_BOARD_CONFIG_CODE) - } - //TODO binding.configurationButton.setOnClickListener { - val weakReferenceHandler = SocketConnectionService.weakReferenceHandler - ?: return@setOnClickListener - lifecycleScope.launch(Dispatchers.IO) { - - - } - val message = weakReferenceHandler.obtainMessage() - message.what = LocaleConstant.SET_BOARD_WIFI_CONFIG_CODE - message.obj = CommandCreator.createWiFiConfigCommand("YTJ-010002", "zhsz20311hw") - weakReferenceHandler.sendMessage(message) +// val weakReferenceHandler = SocketConnectionService.weakReferenceHandler +// ?: return@setOnClickListener +// lifecycleScope.launch(Dispatchers.IO) { +// +// } +// val message = weakReferenceHandler.obtainMessage() +// message.what = LocaleConstant.SET_BOARD_WIFI_CONFIG_CODE +// message.obj = CommandCreator.createWiFiConfigCommand( +// binding.wifiNameView.text.toString(), binding.passwordView.text.toString() +// ) +// weakReferenceHandler.sendMessage(message) } } @@ -140,20 +148,32 @@ //如果配合一体机使用,该项出厂时配置为0,否则出厂时配置为1 val state = msg.obj as String if (state == "0") { + isUseWithAI = true binding.serverLayout.visibility = View.VISIBLE } else { + isUseWithAI = false binding.serverLayout.visibility = View.GONE } } LocaleConstant.BOARD_CONFIG_RESPONSE_CODE -> { val data = msg.obj as String + isGetBoardConfig = true //分割数据 val list = data.split(",") binding.boardHostView.text = list[0] binding.boardMaskView.text = list[1] binding.gatewayView.text = list[2].trim() } + + LocaleConstant.SERVER_CONFIG_RESPONSE_CODE -> { + val data = msg.obj as String + isGetServerConfig = true + //分割数据 + val list = data.split(",") + binding.serverHostView.setText(list[0]) + binding.serverPortView.setText(list[1].trim()) + } } return true } @@ -161,14 +181,6 @@ override fun onResume() { super.onResume() binding.wifiNameView.text = wifi.connectionInfo.ssid - if (binding.boardHostView.text.isEmpty() || - binding.boardMaskView.text.isEmpty() || - binding.gatewayView.text.isEmpty() - ) { - binding.queryBoardConfigButton.visibility = View.VISIBLE - } else { - binding.queryBoardConfigButton.visibility = View.GONE - } } /** diff --git a/app/src/main/java/com/casic/app/safetreecontroller/fragments/MethaneMonitorFragment.kt b/app/src/main/java/com/casic/app/safetreecontroller/fragments/MethaneMonitorFragment.kt index 91adaa5..81c091d 100644 --- a/app/src/main/java/com/casic/app/safetreecontroller/fragments/MethaneMonitorFragment.kt +++ b/app/src/main/java/com/casic/app/safetreecontroller/fragments/MethaneMonitorFragment.kt @@ -5,6 +5,7 @@ import android.os.Message import android.view.LayoutInflater import android.view.ViewGroup +import androidx.lifecycle.lifecycleScope import com.casic.app.safetreecontroller.R import com.casic.app.safetreecontroller.databinding.FragmentMethaneMonitorBinding import com.casic.app.safetreecontroller.extensions.initConfig @@ -22,6 +23,9 @@ import com.pengxh.kt.lite.extensions.timestampToTime import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.delay +import kotlinx.coroutines.launch class MethaneMonitorFragment : KotlinBaseFragment(), Handler.Callback { @@ -39,6 +43,7 @@ //趋势线起点X坐标 private var i = 0 private var isVisibleToUser = false + private var isGetTemperature = false override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) @@ -76,7 +81,12 @@ super.setUserVisibleHint(isVisibleToUser) this.isVisibleToUser = isVisibleToUser if (isVisibleToUser) { - SocketConnectionService.weakReferenceHandler?.sendEmptyMessage(LocaleConstant.QUERY_CPU_TEMPERATURE_CODE) + lifecycleScope.launch(Dispatchers.IO) { + while (!isGetTemperature) { + SocketConnectionService.weakReferenceHandler?.sendEmptyMessage(LocaleConstant.QUERY_CPU_TEMPERATURE_CODE) + delay(1000) + } + } } } @@ -118,6 +128,7 @@ override fun handleMessage(msg: Message): Boolean { when (msg.what) { LocaleConstant.QUERY_CPU_TEMPERATURE_RESPONSE_CODE -> { + isGetTemperature = true binding.cpuTemperatureView.text = "${msg.obj} ℃" } 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 8d76efd..166e63c 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 @@ -87,6 +87,10 @@ tcpClient.sendMessage(CommandCreator.createIsUseAICommand()) } + LocaleConstant.QUERY_SERVER_CONFIG_CODE -> { + tcpClient.sendMessage(CommandCreator.createServerConfigCommand()) + } + LocaleConstant.SET_BOARD_WIFI_CONFIG_CODE -> { val command = msg.obj as ByteArray tcpClient.sendMessage(command) @@ -157,6 +161,10 @@ * 安全树主控板是否连接远程服务器设置与查询返回: * * [71, 101, 116, 68, 97, 116, 97, 58, 52, 44, 48, 13, 10] + * + * 安全树主控板要连接的远程服务器IP、端口号指令返回: + * + * [71, 101, 116, 68, 97, 116, 97, 58, 53, 44, 51, 49, 50, 56, 52, 54, 52, 106, 115, 108, 101, 55, 46, 118, 105, 99, 112, 46, 102, 117, 110, 44, 51, 55, 57, 53, 53, 13, 10] * */ override fun onMessageReceived(bytes: ByteArray?) { if (bytes == null) { @@ -167,30 +175,32 @@ val dataHeadArray = bytes.copyOfRange(0, 7) if (dataHeadArray.contentEquals(byteArrayOf(71, 101, 116, 68, 97, 116, 97))) { //GetData + val dataArray = bytes.copyOfRange(10, bytes.size) + val data = dataArray.toAsciiCode() + + val weakReferenceHandler = BaseSettingsFragment.weakReferenceHandler ?: return + //判断类型 when (Char(bytes[8].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) - } + val message = weakReferenceHandler.obtainMessage() + message.what = LocaleConstant.BOARD_CONFIG_RESPONSE_CODE + message.obj = data + weakReferenceHandler.sendMessage(message) } '4' -> { - 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.QUERY_IS_USE_AI_RESPONSE_CODE - message.obj = data - weakReferenceHandler.sendMessage(message) - } + val message = weakReferenceHandler.obtainMessage() + message.what = LocaleConstant.QUERY_IS_USE_AI_RESPONSE_CODE + message.obj = data + weakReferenceHandler.sendMessage(message) + } + + '5' -> { + val message = weakReferenceHandler.obtainMessage() + message.what = LocaleConstant.SERVER_CONFIG_RESPONSE_CODE + message.obj = data + weakReferenceHandler.sendMessage(message) } } } else if (dataHeadArray.contentEquals(byteArrayOf())) { 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 1a808c4..fb39a38 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 @@ -81,6 +81,13 @@ } /** + * 安全树主控板要连接的远程服务器IP、端口号指令 + * */ + fun createServerConfigCommand(): ByteArray { + return "GetData:5\r\n".toByteArray() + } + + /** * 设置主控板WiFi指令 * */ fun createWiFiConfigCommand(wifiName: String, password: String): 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 0756741..2be459d 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 @@ -28,7 +28,8 @@ const val CLOSE_DEVICE_STATE_TIPS_CODE = 20240012 const val QUERY_BOARD_CONFIG_CODE = 20240013 const val QUERY_IS_USE_AI_CODE = 20240014 - const val SET_BOARD_WIFI_CONFIG_CODE = 20240015 + const val QUERY_SERVER_CONFIG_CODE = 20240015 + const val SET_BOARD_WIFI_CONFIG_CODE = 20240016 /** * Handler Response Code @@ -38,6 +39,7 @@ const val DEVICE_RESPONSE_CODE = 20241003 const val BOARD_CONFIG_RESPONSE_CODE = 20241004 const val QUERY_IS_USE_AI_RESPONSE_CODE = 20241005 + const val SERVER_CONFIG_RESPONSE_CODE = 20240016 /*** * 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 61aa059..a8dd188 100644 --- a/app/src/main/res/layout/fragment_base_settings.xml +++ b/app/src/main/res/layout/fragment_base_settings.xml @@ -42,28 +42,15 @@ android:layout_marginVertical="@dimen/dp_5" android:background="#CCC" /> - - - - -