问题标签 [characteristics]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
268 浏览

android - Android getProperties 方法是否返回蓝牙特征的标志字段?

我一直在研究心率测量特性文档,以了解特性的每个字节的含义。我的理解是特征的最低有效字节对应于标志字段。所以这行代码(在 Android 应用程序中)应该返回标志:

此外,从 Android BluetoothGattCharacteristic 文档中,看起来 getProperties 方法也应该返回标志字段。

但是,当我将这两个值都打印到控制台时,它们是不同的。

代码

控制台输出

我注意到只是传感器接触状态位不同。仅仅是这些位不被视为属性吗?还是我的假设不正确?

参考

HR 测量特性: https ://www.bluetooth.com/specifications/gatt/viewer?attributeXmlFile=org.bluetooth.characteristic.heart_rate_measurement.xml

getProperties 方法:https://developer.android.com/reference/android/bluetooth/BluetoothGattCharacteristic.html#getProperties()

0 投票
1 回答
336 浏览

swift - Swift:从数据中提取 Int16 和 Int8

我正在尝试从两个 BLE 特征值中检索数据。它们都包含结构,我也想将这些数据作为结构保存在我的应用程序中。来自第一个 BLE 特征的数据都是 Int16,我能够保存它。但问题是第二个特征同时包含 Int8 和 Int16,我找不到处理它的解决方案。

在我的应用程序中,我为这两个特征创建了两种不同的结构。第一个结构看起来是这样的,都是Int16。

第二种是这样的,有两种类型:

}

当我从第一个特征的特征值中获取数据时,我可以简单地这样做:

但是我怎样才能为第二个特征做呢?同样的方法不起作用,因为它同时具有 Int16 和 Int8,会导致错误。我想,我可以尝试将所有值解释为 Int16,然后转换为 Int8?但这可能是个坏主意?还有其他方法可以从第二个特征中提取数据并将其放入我想要的结构中吗?

0 投票
1 回答
577 浏览

notifications - 低功耗蓝牙通知特性

我只是想弄清楚。如果我有 BLE(cc2541) 和 android APP。BLE具有通知、读取、写入等特性。我可以从 BLE 向通知特征写入值,用 android APP 读取它,然后从 android APP 向 BLE 写入相同的通知特征吗?

0 投票
1 回答
637 浏览

android - Android 蓝牙低功耗 Gatt 服务实现错误

我在我的项目中使用了 android.bluetooth 包,但我尝试实现 IBluetoothGatt 的读写特性。但我有一些问题如下

IBluetoothGatt 界面中的 writeCharacteristic 红色高亮

0 投票
1 回答
558 浏览

android - 比较 UUID 和 GattService 列表

我已经使用了 Android 中的 BluetoothLeGatt 示例,现在我想根据我正在连接的设备的 UUID 加载一个 xml 文件。

我尝试将 UUID 与以下代码进行比较。

具有以下功能:

我究竟做错了什么?

这是错误代码:

0 投票
3 回答
5978 浏览

android - 如何读取我的 BLE 设备的所有特征值?

我正在使用 Android Studio 构建一个可以从设备 BLE 读取值的应用程序。这个设备,有 4 项服务。第四种服务有3个特点。我想阅读这第四项服务的所有特征。

该设备可以发送更多信息,所以我希望应用程序可以存储从设备 BLE 到达的所有信息。

所以这是我的代码:

使用此代码,我可以读取我的服务的第一个特征和第一个特征的一个值。

我想自动读取我的 BLE 设备的所有特性的所有值。我怎样才能改变我的代码来做到这一点?

0 投票
1 回答
2221 浏览

android - BLE 从特性接收 GATT 通知

我想在此特性更改时收到通知Micro:Bit

我正在做的基本上如下:

1)检查系统是否兼容BLE

2)启用蓝牙以防它被禁用

3)连接到唯一一个配对的设备(Micro:Bit)

4) 连接发生变化时激活此代码(¿已连接/已断开连接?)

5) 特性更新时激活此代码¿?

}

我有一个错误,这个 UUID“6E400003B5A3F393E0A9E50E24DCCA9E”格式错误。无论如何,我不知道这是否是订阅特征并接收通知的方式。

0 投票
1 回答
148 浏览

android - 无法更改信标的 UUID 特征。相同的代码更改了信标的名称和其他特征

这是我拥有的代码:

StatusWrite 返回真。相同的代码,我用于更改 NAME 特征。哪个会改变。但是 UUID 保持不变。我究竟做错了什么?PS:我正在使用这种类型的信标

我尝试使用 LightBlue 应用程序,并且确实设法更改了UUID,并且我检查了该特性是“可写的”

这是我认为有问题的地方:

因此,您可以看到我在更改之前采用了该值,并且[B@e20538b转换为:116eadaf568c472a9ee799c6fb7dab9c它当前具有的 UUID。在此之后,我将其更改为916eadaf568c472a9ee799c6fb7dab9c I ask for the value again: [B@57b4ac。但是如果我做同样的事情toHexadecimal(value)而不是得到:“916eadaf568c472a9ee799c6fb7dab9c”我得到“3931366561646166353638633437326139656537393963366662376461623963”。为什么不一致?

这是“toHexadecimal”:

编辑:

我在更改值之前和之后添加了:

它返回这个:

所以我觉得我设置值的方式明显有问题,我需要先转换成十六进制还是什么?我不明白

我还记录了一系列叮咬。初始值为:

在这里,我将 String UUID 更改为已设置的相同值。如果我制作字节数组,它看起来像这样:

完全相同的字符串如何具有 2 个不同的字节数组?我还注意到第一个有很多-,这个没有,为什么?

0 投票
1 回答
10729 浏览

android - 使用 Android BLE 读取特征值

我对 BLE、android 开发和 java 比较陌生。我正在尝试通过 BLE 从微控制器向我的 android 手机发送 20 条数据。使用 nRF 连接应用程序,我知道服务和值是从微控制器正确创建的。

为了在 android 应用程序上阅读它们,我使用了 Android Studio 中提供的模板 BluetoothLeGatt 应用程序。它向我展示了服务和特征(由于某种原因,它展示了比我实际创建的更多的服务),但是只有一个服务最终向我展示了一个不为 NULL 的值。我已经在我的微控制器中编码了值 0x22,Android 日志说给了我以下信息

03-24 17:13:29.498 23696-23696/com.example.android.bluetoothlegatt D/BLE_VALUE_READ: [B@b95cc24

而不是 0x22。这是使用功能

Log.d("BLE_VALUE_READ", String.valueOf(characteristic.getValue()));

我已将命令放在模板应用程序的此函数中。

我怎样才能得到服务/特征中的实际值,即 0x22?我想总共读取 20 个值,然后将它们作为浮点值存储在一个数组中,以便最终将它们用于图像重建。

任何帮助将不胜感激。

谢谢!

0 投票
0 回答
520 浏览

ios - iOS - Swift蓝牙 - 收到的特征值太小

我正在通过 BLE 将图像从 Android 应用程序发送到 iOS 应用程序。根据一些文章,通过 BLE 发送的最大大小为 1 KB,因此我将图像拆分为 1 KB 的块,并以 40 毫秒的延迟将其发送到 Swift 应用程序。

但是,块大小似乎太大了。调试后,我注意到我从 Swift 中读取的特征值最多只能是 187 字节。因此,当我将 Android 中的块大小减少到该数字或更小时,传输成功,否则由于数据被切断,传输不会成功。

有谁知道为什么它限制在这个大小,尽管它应该是 1 KB?或者,如果可配置,我如何增加大小?

这是我的安卓代码:

这是读取它的 Swift 代码:

感谢任何帮助。