gpt4 book ai didi

Swift Sensortag 2.0 将位写入 BLE

转载 作者:搜寻专家 更新时间:2023-11-01 06:37:05 25 4
gpt4 key购买 nike

这里是非常基本的问题:

我目前正在尝试通过 Swift 3.0 控制 sensortag 2.0。

我正在尝试同时打开加速器、陀螺仪和磁力计。

根据 Texas Instruments 文档,以下内容适用于 IMU:

轴启用位:gyro-z=0,gyro-y,gyro-x,acc-z=3,acc-y,acc-x,mag=6 范围:bit 8,9

我已经按照下面的方式写了“0x023F”,它成功地打开了陀螺仪和加速度计。

                let value = OperationDataHolder(data:[0x023F])
var parameter = 0x023F
let data = NSData(bytes: &parameter, length: 2)
self.sensorTagPeripheral.writeValue(data as Data, for: thisCharacteristic, type: CBCharacteristicWriteType.withResponse)

但是,我无法计算出要写入的值以同时打开所有 3 个单元。有人能为我提供这个值(value)吗?

谢谢!

最佳答案

当您将当前使用的值 (0x023F) 转换为二进制时,您会得到 0b1000111111。每个位代表给定传感器组件的开/关 (on=1/off=0) 状态。

如果您从从右到左读取二进制数,并引用下表映射每一位,您将看到陀螺仪 z/y/x 和加速度计 z/y/x全部启用。如果您想启用磁力计,只需将“第 6 位”更改为“1”并将该二进制数转换为十六进制数即可。

因此,Google 说:0b1001111111 是十六进制的 0x027F

映射:
位 0 => 陀螺仪 z 轴
位 1 => 陀螺仪 y 轴
位 2 => 陀螺仪 x 轴
位 3 => acc z 轴
位 4 => acc y 轴
位 5 => acc x 轴
bit 6 => mag(启用所有轴)
位 7 => 运动唤醒启用
位 8 和 9 => 加速度计范围
位 10-15 => 未使用

有关映射的更多信息(即第 8 位和第 9 位的作用),请参阅 Sensor Tag Wiki Page

关于Swift Sensortag 2.0 将位写入 BLE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40251993/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com