From e0b8deff5a9929e764780505421531f6b2afe69b Mon Sep 17 00:00:00 2001 From: xiaowusky Date: Tue, 21 Nov 2023 12:19:04 +0800 Subject: [PATCH] =?UTF-8?q?desc:=E4=B8=B2=E5=8F=A3=E7=9B=B8=E5=85=B3?= =?UTF-8?q?=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../watcher/constant/Constants.kt | 2 +- .../watcher/port/GasPortUtils.kt | 54 ++++++++----------- .../safetywatcher/watcher/port/ParseHelper.kt | 1 - .../safetywatcher/watcher/port/cmd/CMD.kt | 8 +-- .../safetywatcher/watcher/ui/HomeActivity.kt | 1 - .../easydarwin/video/EasyPlayerClient.java | 2 +- .../com/common/serialport/EasySerialPort.kt | 3 ++ 7 files changed, 31 insertions(+), 40 deletions(-) diff --git a/app/src/main/java/com/yinuo/safetywatcher/watcher/constant/Constants.kt b/app/src/main/java/com/yinuo/safetywatcher/watcher/constant/Constants.kt index a11e214..88c4e99 100644 --- a/app/src/main/java/com/yinuo/safetywatcher/watcher/constant/Constants.kt +++ b/app/src/main/java/com/yinuo/safetywatcher/watcher/constant/Constants.kt @@ -19,7 +19,7 @@ const val DELAY_TIME_OPEN_CAMERA = 30 const val DELAY_TIME_CHECK_CAMERA = DELAY_TIME_OPEN_CAMERA //检测重连传感器延时 -const val DELAY_TIME_CHECK_SENSOR = 5 +const val DELAY_TIME_CHECK_SENSOR = 10 const val NAMESPACE_ANDROID = "http://schemas.android.com/apk/res/android" diff --git a/app/src/main/java/com/yinuo/safetywatcher/watcher/port/GasPortUtils.kt b/app/src/main/java/com/yinuo/safetywatcher/watcher/port/GasPortUtils.kt index 2b08017..79187a3 100644 --- a/app/src/main/java/com/yinuo/safetywatcher/watcher/port/GasPortUtils.kt +++ b/app/src/main/java/com/yinuo/safetywatcher/watcher/port/GasPortUtils.kt @@ -2,32 +2,28 @@ package com.yinuo.safetywatcher.watcher.port import com.common.serialport.ComMultiPortUtils import com.yinuo.safetywatcher.watcher.port.cmd.CMD -import kotlinx.coroutines.DelicateCoroutinesApi -import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.GlobalScope -import kotlinx.coroutines.delay -import kotlinx.coroutines.launch object GasPortUtils { private const val BAUD_RATE = 9600 - private const val PORT_PATH = "/dev/ttyS1" + private const val PORT_PATH = "/dev/ttyS9" const val FULL_MSG_SIZE = 25 const val CHECK_TIME = 10000L private const val READ_MSG_INTERVAL = 250L private var mInitFlag = false + private var readGasMsgThread: Thread? = null; fun initPort() { openPorts() - watchPortFlag() + readGasMsg() } private fun openPorts() { if (!mInitFlag) { + ComMultiPortUtils.releaseAll() ComMultiPortUtils.openPort(PORT_PATH, BAUD_RATE) { mInitFlag = true ParseHelper.parse(it) } - readGasMsg() } } @@ -35,32 +31,26 @@ object GasPortUtils { * 读取气体浓度 */ private fun readGasMsg() { - GlobalScope.launch(Dispatchers.IO) { - while (true) { - // 延时一段时间后,发送指令读取气体数据 - delay(READ_MSG_INTERVAL) - ComMultiPortUtils.sendMsg(PORT_PATH, CMD.O2) - delay(READ_MSG_INTERVAL) - ComMultiPortUtils.sendMsg(PORT_PATH, CMD.CH4) - delay(READ_MSG_INTERVAL) - ComMultiPortUtils.sendMsg(PORT_PATH, CMD.CO) - delay(READ_MSG_INTERVAL) - ComMultiPortUtils.sendMsg(PORT_PATH, CMD.H2S) - } - } - } - - // 监控串口状态 - @OptIn(DelicateCoroutinesApi::class) - private fun watchPortFlag() { - GlobalScope.launch(Dispatchers.Default) { - while (true) { - // 延时一段时间后,尝试重新打开串口 - delay(CHECK_TIME) - launch(Dispatchers.Main) { - openPorts() + if (readGasMsgThread == null) { + readGasMsgThread = Thread { + try { + while (true) { + // 延时一段时间后,发送指令读取气体数据 + Thread.sleep(READ_MSG_INTERVAL) + ComMultiPortUtils.sendMsg(PORT_PATH, CMD.SENSOR_1) + Thread.sleep(READ_MSG_INTERVAL) + ComMultiPortUtils.sendMsg(PORT_PATH, CMD.SENSOR_2) + Thread.sleep(READ_MSG_INTERVAL) + ComMultiPortUtils.sendMsg(PORT_PATH, CMD.SENSOR_3) + Thread.sleep(READ_MSG_INTERVAL) + ComMultiPortUtils.sendMsg(PORT_PATH, CMD.SENSOR_4) + } + } catch (e: Exception) { + e.printStackTrace() } } + readGasMsgThread!!.name = "readGasMsgThread" + readGasMsgThread!!.start() } } } \ No newline at end of file diff --git a/app/src/main/java/com/yinuo/safetywatcher/watcher/port/ParseHelper.kt b/app/src/main/java/com/yinuo/safetywatcher/watcher/port/ParseHelper.kt index af7bae7..27f3e00 100644 --- a/app/src/main/java/com/yinuo/safetywatcher/watcher/port/ParseHelper.kt +++ b/app/src/main/java/com/yinuo/safetywatcher/watcher/port/ParseHelper.kt @@ -35,7 +35,6 @@ object ParseHelper { fun parse(it: ByteArray) { try { if (it.isNotEmpty() && it.size >= GasPortUtils.FULL_MSG_SIZE) { - LogUtils.v("receive msg, ${HexUtils.byteArrToHex(it)}") val gasIndex = it[0].toInt() val status = it[14].toInt() val gasType = getGasTypeEnumByCode(it[19].toInt()) diff --git a/app/src/main/java/com/yinuo/safetywatcher/watcher/port/cmd/CMD.kt b/app/src/main/java/com/yinuo/safetywatcher/watcher/port/cmd/CMD.kt index 06f517d..1cd4207 100644 --- a/app/src/main/java/com/yinuo/safetywatcher/watcher/port/cmd/CMD.kt +++ b/app/src/main/java/com/yinuo/safetywatcher/watcher/port/cmd/CMD.kt @@ -2,9 +2,9 @@ package com.yinuo.safetywatcher.watcher.port.cmd class CMD { companion object { - val O2 = byteArrayOf(GasAddress.ADR_O2.toByte(), 0x03, 0x00, 0x00, 0x00, 0x0A).crc16() - val CH4 = byteArrayOf(GasAddress.ADR_CH4.toByte(), 0x03, 0x00, 0x00, 0x00, 0x0A).crc16() - val CO = byteArrayOf(GasAddress.ADR_CO.toByte(), 0x03, 0x00, 0x00, 0x00, 0x0A).crc16() - val H2S = byteArrayOf(GasAddress.ADR_H2S.toByte(), 0x03, 0x00, 0x00, 0x00, 0x0A).crc16() + val SENSOR_1 = byteArrayOf(0x01, 0x03, 0x00, 0x00, 0x00, 0x0A).crc16() + val SENSOR_2 = byteArrayOf(0x01, 0x03, 0x01, 0x00, 0x00, 0x0A).crc16() + val SENSOR_3 = byteArrayOf(0x01, 0x03, 0x02, 0x00, 0x00, 0x0A).crc16() + val SENSOR_4 = byteArrayOf(0x01, 0x03, 0x03, 0x00, 0x00, 0x0A).crc16() } } \ No newline at end of file diff --git a/app/src/main/java/com/yinuo/safetywatcher/watcher/ui/HomeActivity.kt b/app/src/main/java/com/yinuo/safetywatcher/watcher/ui/HomeActivity.kt index 0317dba..089a823 100644 --- a/app/src/main/java/com/yinuo/safetywatcher/watcher/ui/HomeActivity.kt +++ b/app/src/main/java/com/yinuo/safetywatcher/watcher/ui/HomeActivity.kt @@ -252,7 +252,6 @@ class HomeActivity : NoOptionsActivity() { LogUtils.w("watchSensorRunnable start") AppData.setSensorData(false) changeViewStatus() - GasPortUtils.initPort() watchSensor(DELAY_TIME_CHECK_SENSOR) } diff --git a/library-rtsp/src/main/java/org/easydarwin/video/EasyPlayerClient.java b/library-rtsp/src/main/java/org/easydarwin/video/EasyPlayerClient.java index cba70ca..4a41840 100644 --- a/library-rtsp/src/main/java/org/easydarwin/video/EasyPlayerClient.java +++ b/library-rtsp/src/main/java/org/easydarwin/video/EasyPlayerClient.java @@ -1325,7 +1325,7 @@ public class EasyPlayerClient implements Client.SourceCallBack { if (rr != null) rr.send(RESULT_VIDEO_SIZE, bundle); } } - Log.d(TAG, String.format("queue size :%d", mQueue.size())); +// Log.d(TAG, String.format("queue size :%d", mQueue.size())); try { mQueue.put(frameInfo); } catch (InterruptedException e) { diff --git a/library-serialPort/src/main/java/com/common/serialport/EasySerialPort.kt b/library-serialPort/src/main/java/com/common/serialport/EasySerialPort.kt index 4aafbc0..e63451e 100644 --- a/library-serialPort/src/main/java/com/common/serialport/EasySerialPort.kt +++ b/library-serialPort/src/main/java/com/common/serialport/EasySerialPort.kt @@ -3,6 +3,7 @@ package com.common.serialport import android.util.Log import com.common.queue.TaskScheduler import com.common.serialport.inter.ISerialPortHelper +import com.common.serialport.utils.HexUtils import java.io.IOException class EasySerialPort( @@ -52,6 +53,7 @@ class EasySerialPort( val size = ips?.read(mReadBytes) if (size != null) { if (size > 0) { + Log.i("EasySerialPort", "read msg ${HexUtils.byteArrToHex(mReadBytes)}") mReceiver.invoke(mReadBytes) } } @@ -94,6 +96,7 @@ class EasySerialPort( // task.attachScheduler(mTaskScheduler) // task.enqueue() try { + Log.i("EasySerialPort", "send msg ${HexUtils.byteArrToHex(data)}") val outputStream = helper?.outputStream() outputStream?.write(data) outputStream?.flush()