java - 如何设置字节中的特定位以进行 BLE 数据传输?

标签 java android bluetooth-lowenergy bit

我正在 Android 操作系统上开发 BLE 应用程序。我必须通过我的应用程序在 BLE 硬件上写入数据。我对必须发送的传输数据的类型感到困惑。下面的图像显示了我必须发送的字节数据。对于每个字节,它具有不同的结构。 Transmission data structure

在 Byte_2 中,我可以发送 0-100 个值,即可以。

在 Byte_3 中,前 4 位具有单个值,然后第 4 和第 5 位具有不同的含义。

在 Byte_4 中,数据分为 2 个相等的部分。

我不确定如何创建这种字节并使用它。

enter image description here

最佳答案

  • 位 0 有 2 个值:0x00 (00000000) 和 0x01 (00000001)
  • 位 1 有 2 个值:0x00 (00000000) 和 0x02 (00000010)
  • 位 2 有 2 个值:0x00 (00000000) 和 0x04 (00000100)
  • 位 3 有 2 个值:0x00 (00000000) 和 0x08 (00001000)
  • 位 4 有 2 个值:0x00 (00000000) 和 0x10 (00010000)
  • 第 5 位有 2 个值:0x00 (00000000) 和 0x20 (00100000)
  • 第 6 位有 2 个值:0x00 (00000000) 和 0x40 (01000000)
  • 位 7 有 2 个值:0x00 (00000000) 和 0x80 (10000000)

理解了这个结构后,就可以使用按位或运算将多个部分组合成1个字节。

以 Byte_3 为例:

  • A 类型 = 1(00100000 -> 0x20)
  • 类型 B = 0(00000000 -> 0x00)
  • B 级 = 3(00000011 -> 0x03)

=> Byte_3 = 0x20 | 0x00 | 0x00 0x03 = 0x23

关于java - 如何设置字节中的特定位以进行 BLE 数据传输?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50016349/

相关文章:

java - 尝试在 JAVA 中处理 InstantiationException,编译器会抛出它

java - 如何从适配器类中的 onClick 方法加载 fragment

java - FileOutputStream 在 Android 中不工作

javascript - JavaScript 中的异步 setter/getter

ios - 子类 CBPeripheral 未转换为正确的类型

java - 如何使用 TDD 方法为简单的购物车示例设计类?

java - 通过 Web 应用程序访问本地文件

android - GcmListenerService.onMessageReceived() 仅在应用程序运行时调用

android - 使 READ、WRITE 和 NOTIFY 在 Android BLE(版本 21 及更高版本)上工作

java - 为什么它不将图像添加到流程 Pane ?