You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android Studio:拆分字符串实现nRF-UART中两类串口数据分别显示

嘿,我之前也改过nRF-UART来适配自定义传感器数据,刚好能给你一套可行的方案,分几步来:

第一步:先和发送端约定好数据格式

想要顺利拆分两种数据,首先得让蓝牙发送端输出有固定分隔规则的字符串,比如两种简单的格式:

  • 键值对分隔(推荐,容错性高):比如发送 temp:24.7,cap:420,用逗号区分不同数据,冒号区分键和值
  • 固定顺序分隔:比如发送 24.7 420,用空格区分,第一个是温度,第二个是电容
第二步:在nRF-UART中实现字符串拆分逻辑

nRF-UART是Android应用,核心逻辑用Kotlin/Java编写,这里以Kotlin为例,给你两种格式的拆分代码:

情况1:键值对格式(比如temp:24.7,cap:420)

// 假设从UART回调拿到的原始数据是receivedString
val receivedString = "temp:24.7,cap:420"

var tempValue = 0.0
var capValue = 0

try {
    // 先按逗号拆分出两个键值对
    val dataItems = receivedString.split(",")
    for (item in dataItems) {
        // 再按冒号拆分键和值
        val keyValue = item.split(":")
        if (keyValue.size != 2) continue // 跳过格式错误的项
        
        when (keyValue[0].trim()) {
            "temp" -> tempValue = keyValue[1].trim().toDouble()
            "cap" -> capValue = keyValue[1].trim().toInt()
        }
    }
} catch (e: Exception) {
    // 处理格式错误、转换失败的情况,比如打印日志
    Log.e("UART_DATA", "数据解析失败: ${e.message}")
}

情况2:固定顺序格式(比如24.7 420)

val receivedString = "24.7 420"
var tempValue = 0.0
var capValue = 0

try {
    val parts = receivedString.split(" ").filter { it.isNotEmpty() } // 过滤空字符串
    if (parts.size >= 2) {
        tempValue = parts[0].toDouble()
        capValue = parts[1].toInt()
    }
} catch (e: Exception) {
    Log.e("UART_DATA", "数据解析失败: ${e.message}")
}
第三步:更新UI组件(温度文本+垂直进度条)

注意Android中更新UI必须在主线程,所以要把UI更新逻辑放到runOnUiThread或者Coroutine里:

// 更新温度静态文本
runOnUiThread {
    temperatureTextView.text = "当前温度: ${String.format("%.1f", tempValue)}℃"
}

// 更新垂直进度条(先确保进度条是垂直方向,设置好最大值)
runOnUiThread {
    // 假设电容值的有效范围是0-500,根据你的传感器实际范围调整
    waterLevelProgressBar.max = 500
    waterLevelProgressBar.progress = capValue
}
额外注意事项
  • 一定要加异常捕获:蓝牙传输可能丢包、乱码,直接解析会导致APP崩溃,用try-catch包裹解析逻辑很重要
  • 如果数据量复杂,也可以用JSON格式传输(比如{"temp":24.7,"cap":420}),然后用Gson/Moshi库解析,可读性和扩展性更好
  • 调试时可以先在nRF-UART的原始数据显示区确认收到的字符串格式是否符合预期,再调整拆分逻辑

内容的提问来源于stack exchange,提问作者Mark Lupas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:47:33