diff --git a/app/src/main/java/com/casic/common/detector/gd/service/SerialPortService.kt b/app/src/main/java/com/casic/common/detector/gd/service/SerialPortService.kt index 99dfdc5..42ad30c 100644 --- a/app/src/main/java/com/casic/common/detector/gd/service/SerialPortService.kt +++ b/app/src/main/java/com/casic/common/detector/gd/service/SerialPortService.kt @@ -21,7 +21,7 @@ private val gpioManager by lazy { GpioManager() } private val serialPorts = BaseApplication.get().getSerialPorts() private val sendExecutor = Executors.newFixedThreadPool(5) - private var executor = Executors.newScheduledThreadPool(2) + private var readExecutor = Executors.newSingleThreadScheduledExecutor() private var outStream: OutputStream? = null private var inStreamFirst: InputStream? = null private var inStreamLast: InputStream? = null @@ -61,13 +61,14 @@ inStreamFirst = serialPorts.first().inputStream inStreamLast = serialPorts.last().inputStream - executor.scheduleAtFixedRate({ + // 使用单线程调度器读取数据 + readExecutor.scheduleAtFixedRate({ if (gpioState.get() == 1) { readData(inStreamFirst!!, listener) } }, 100, 150, TimeUnit.MILLISECONDS) - executor.scheduleAtFixedRate({ + readExecutor.scheduleAtFixedRate({ if (gpioState.get() == 1) { readData(inStreamLast!!, listener) } @@ -80,7 +81,7 @@ private fun readData(inputStream: InputStream, listener: OnSerialPortListener) { try { - val buffer = ByteArray(72) + val buffer = ByteArray(1024) var bytesRead: Int while (inputStream.available() > 0) { bytesRead = inputStream.read(buffer)