【问题标题】:How to build the right Command Value for writing it into Android BLE Characteristics如何构建正确的命令值以将其写入 Android BLE 特性
【发布时间】:2021-08-14 11:20:08
【问题描述】:

我正在尝试构建具有蓝牙 LE 通信功能的 Android 应用程序。 Kotlin 用于 Android Studio。 发现 Gatt 服务、特征和描述符, 设置 CCCD 通知。

到目前为止,没问题!

现在我需要帮助将正确的命令发送(写入)到特征。

这就是命令的样子 /来自制造商api的信息:

一般命令格式

B0 B1 B2 B3 B4 B5 B6 Bn
Preamble (0xAB) Command ID (low byte) Command ID (high byte) Parameter Byte 0 Parameter Byte 1 Parameter Byte 2 Parameter Byte 3 Parameter Byte (n-3)

命令ID为二字节(16bit)整数,低位占B1,高位 B2 部分。整个协议使用的字节序是little-endian

Command name ID
PCMD_API_GET_INFO 0x01
PCMD_ ... 0x02
... 0x03

变量的正确定义是什么

val PCMD_API_GET_INFO = 0x01

用于

.setValue(value: ????)

功能?

Command ID 是如何组成的/它是如何形成的?

在此先感谢您的努力,希望您能给出好的答案

【问题讨论】:

  • 能否添加制造商 API 的链接?
  • 您查看过链接文档的第 9 页吗?有一个表包含 PCMD_API_GET_INFO 命令的值,包括预期的响应
  • 是的,我在第 9 页看到了命令 ID。它在那里定义为值 0x0001h - 但我只能将此值定义为字符串。不像 Int 或 ByteArray - 不幸的是,我自己做不到。 BLE 设备是否应该在此上下文中处理字符串?我今晚会尝试并提供反馈。
  • 除非我遗漏了什么:setValue 接受一个字节数组

标签: android kotlin variables bluetooth-lowenergy


【解决方案1】:

这是将其写入特征的正确值/格式:

    val PCMD_API_GET_INFO = byteArrayOf(
        0xAB.toByte(),
        0x01.toByte(),
        0x00.toByte(),
        0x00.toByte(),
        0x00.toByte(),
        0x00.toByte()
    )

【讨论】:

    猜你喜欢
    • 2018-02-11
    • 2018-06-13
    • 2023-03-14
    • 1970-01-01
    • 2014-12-10
    • 1970-01-01
    • 1970-01-01
    • 2013-12-01
    • 1970-01-01
    相关资源
    最近更新 更多