【发布时间】: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