From 005e7eae53f45a87bce645ea9f63d6893e348057 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=A9=AC=E5=A2=9E=E9=A3=9E?= <331023091@qq.com> Date: Wed, 6 Aug 2025 19:31:18 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=B2=E5=8F=A3=E6=95=B0=E6=8D=AE=E5=A4=84?= =?UTF-8?q?=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle.kts | 2 +- .../shuwei/intelligent/shelves/HomeActivity.kt | 9 ++++++++- .../shuwei/intelligent/shelves/ShelfActivity.kt | 4 ++++ .../shelves/serial/SerialPortManager.kt | 11 +++++++++-- .../intelligent/shelves/utils/DecToHex.kt | 17 +++++++++++++++++ .../shuwei/intelligent/shelves/utils/UIUtils.kt | 2 +- gradle/libs.versions.toml | 3 ++- gradle/wrapper/gradle-wrapper.properties | 1 + 8 files changed, 43 insertions(+), 6 deletions(-) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index f14f344..8f68f94 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -5,7 +5,7 @@ plugins { android { namespace = "com.shuwei.intelligent.shelves" - compileSdk = 36 + compileSdk = 34 defaultConfig { applicationId = "com.shuwei.intelligent.shelves" diff --git a/app/src/main/java/com/shuwei/intelligent/shelves/HomeActivity.kt b/app/src/main/java/com/shuwei/intelligent/shelves/HomeActivity.kt index 0778d73..74d47c8 100644 --- a/app/src/main/java/com/shuwei/intelligent/shelves/HomeActivity.kt +++ b/app/src/main/java/com/shuwei/intelligent/shelves/HomeActivity.kt @@ -68,10 +68,16 @@ class HomeActivity : BaseActivity() { SerialPortManager.startReceive { data -> runOnUiThread { // 更新UI显示接收数据 - receiveSerialPortData(data) + runCatching { + receiveSerialPortData(data) + }.onFailure { + it.printStackTrace() + } } } SerialPortManager.send(ACTIVE_CMD) + + SerialPortManager.send(DEVICE_INFO_CMD) } } TaskManager.startTask() @@ -117,6 +123,7 @@ class HomeActivity : BaseActivity() { val intent = Intent(ShelfActivity.RECEIVER_DEVICE_INFO) intent.putExtra(ShelfActivity.SHELF_WEIGHT, weightArray[clickIndex]) + intent.putExtra(ShelfActivity.RECEIVER_DEVICE_INFO, data) sendBroadcast(intent) } diff --git a/app/src/main/java/com/shuwei/intelligent/shelves/ShelfActivity.kt b/app/src/main/java/com/shuwei/intelligent/shelves/ShelfActivity.kt index 1cd6e0b..6b4f318 100644 --- a/app/src/main/java/com/shuwei/intelligent/shelves/ShelfActivity.kt +++ b/app/src/main/java/com/shuwei/intelligent/shelves/ShelfActivity.kt @@ -9,6 +9,7 @@ import android.os.Build import android.os.Bundle import android.os.Handler import android.os.Looper +import android.util.Log import androidx.annotation.RequiresApi import androidx.lifecycle.lifecycleScope import androidx.recyclerview.widget.GridLayoutManager @@ -37,6 +38,7 @@ import kotlin.random.Random class ShelfActivity : BaseActivity() { companion object { + private const val TAG = "ShelfActivity" const val SHELF_MODEL = "shelfModel" const val RECEIVER_DEVICE_INFO = "receiverDeviceInfo" const val SHELF_WEIGHT = "shelfWeight" @@ -119,6 +121,8 @@ class ShelfActivity : BaseActivity() { private val receiver = object : BroadcastReceiver() { override fun onReceive(context: Context?, intent: Intent?) { intent?.let { + val data = it.getStringExtra(RECEIVER_DEVICE_INFO) + Log.d(TAG, "onReceive: $data") realWeight = it.getIntExtra(SHELF_WEIGHT, 0) binding.tvFoodWeight.text = "${realWeight}克" } diff --git a/app/src/main/java/com/shuwei/intelligent/shelves/serial/SerialPortManager.kt b/app/src/main/java/com/shuwei/intelligent/shelves/serial/SerialPortManager.kt index 611885c..095a422 100644 --- a/app/src/main/java/com/shuwei/intelligent/shelves/serial/SerialPortManager.kt +++ b/app/src/main/java/com/shuwei/intelligent/shelves/serial/SerialPortManager.kt @@ -1,9 +1,13 @@ package com.shuwei.intelligent.shelves.serial +import com.shuwei.intelligent.shelves.utils.hexToBytes +import com.shuwei.intelligent.shelves.utils.toHexString2 import io.github.jeadyx.jserialport.AndroidSerialPort import io.github.jeadyx.jserialport.SerialPort import io.github.jeadyx.jserialport.SerialPortFactory import kotlinx.coroutines.* +import java.nio.charset.Charset +import java.util.Locale object SerialPortManager { private const val portName: String = "/dev/ttyS1" @@ -34,7 +38,8 @@ object SerialPortManager { // 发送数据 suspend fun send(data: String): Boolean { return try { - serialPort?.write(data.toByteArray()) +// serialPort?.write(data.toByteArray()) + serialPort?.write(data.hexToBytes()) true } catch (e: Exception) { e.printStackTrace() @@ -47,7 +52,9 @@ object SerialPortManager { scope.launch { while (isActive) { serialPort?.read()?.collect { buffer -> - callback(String(buffer)) +// val data = String(buffer) + val data = buffer.toHexString2().toUpperCase() + callback(data) } delay(50) } diff --git a/app/src/main/java/com/shuwei/intelligent/shelves/utils/DecToHex.kt b/app/src/main/java/com/shuwei/intelligent/shelves/utils/DecToHex.kt index c0eafa7..972da96 100644 --- a/app/src/main/java/com/shuwei/intelligent/shelves/utils/DecToHex.kt +++ b/app/src/main/java/com/shuwei/intelligent/shelves/utils/DecToHex.kt @@ -28,3 +28,20 @@ fun hexToDec(hex: String): Int { return result } + + +fun hexStringToByteArray(hex: String): ByteArray { + require(hex.length % 2 == 0) { "Hex string must have even length" } + return hex.chunked(2) + .map { it.toInt(16).toByte() } + .toByteArray() +} + +fun byteArrayToHexString(bytes: ByteArray): String { + return bytes.joinToString("") { "%02x".format(it) } +} + +// 扩展函数版本 +fun String.hexToBytes(): ByteArray = hexStringToByteArray(this) +fun ByteArray.toHexString2(): String = byteArrayToHexString(this) + diff --git a/app/src/main/java/com/shuwei/intelligent/shelves/utils/UIUtils.kt b/app/src/main/java/com/shuwei/intelligent/shelves/utils/UIUtils.kt index a28d006..a90b28d 100644 --- a/app/src/main/java/com/shuwei/intelligent/shelves/utils/UIUtils.kt +++ b/app/src/main/java/com/shuwei/intelligent/shelves/utils/UIUtils.kt @@ -2,7 +2,7 @@ package com.shuwei.intelligent.shelves.utils import android.widget.Toast import com.shuwei.intelligent.shelves.App - +//D6DADEDB0302000001000C06 object UIUtils { fun toast(strRes: Int) { Toast.makeText(App.get(), strRes, Toast.LENGTH_SHORT).show() diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index f13b46a..248ed79 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,5 +1,6 @@ [versions] -agp = "8.11.1" +#agp = "8.11.1" +agp = "8.4.0" kotlin = "2.0.21" coreKtx = "1.10.1" junit = "4.13.2" diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 379cb0f..80c5ac0 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -2,5 +2,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists distributionUrl=https\://services.gradle.org/distributions/gradle-8.13-bin.zip +#distributionUrl=https\://mirrors.cloud.tencent.com/gradle/gradle-8.13-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists