美文网首页
BLE 连接设备与交换数据问题

BLE 连接设备与交换数据问题

作者: 晚安之前 | 来源:发表于2017-06-04 17:46 被阅读0次

最近在进行安卓APP的开发,需要通低功耗蓝牙与设备进行交互,刚刚才可以成功交互数据,在这里记录一些遇到的主要的问题。


之前没有蓝牙开发的经验,所以尝试着用传统蓝牙的方式,用过BluetoothSocket与设备连接,总是报 IOException.

java.io.IOException: read failed, socket might closed or timeout, read ret: -1

低功耗蓝牙与传统蓝牙的连接方式不同,低功耗蓝牙是通过BluetoothGatt,以service和characteristic的方式来交互数据的。


使用Gatt时,想要获取service或者characteristic,都是需要先知道与之对应的Uuid,这个就只能与硬件工程师做好沟通。
在与设备交互时,先要对可接受通知的characteristic a进行setCharacteristicNotification,然后对可写的characteristic b写入数据,设备收到b写入了数据,回调onCharacteristicChanged函数,返回characteristic c给APP,c里包含APP请求的数据。
做好这些事情后,向设备的某一个characteristic写数据时,onCharacteristicWrite函数成功的被回调,但是onCharacteristicChanged函数没有被回掉。这说明虽然成功的在b中写入了数据,但设备并没有调用回调函数。解决办法是在setCharacteristicNotification中订阅这个characteristic的所有descriptor。

for(BluetoothGattDescriptor dp:characteristic.getDescriptors()){
    dp.setValue(BluetoothGattDescriptor.ENABLE_NOTIFICATION_VALUE);
    bluetoothGatt.writeDescriptor(dp);
}

相关文章

  • BLE 连接设备与交换数据问题

    最近在进行安卓APP的开发,需要通低功耗蓝牙与设备进行交互,刚刚才可以成功交互数据,在这里记录一些遇到的主要的问题...

  • Android BLE开发入门到进阶(二)

    通信流程 1.主设备APP扫描,搜索外围智能设备2.建立BLE蓝牙连接3.基于BLE蓝牙连接 进行数据通信 第一步...

  • Android BLE蓝牙连接

    BLE蓝牙连接和经典蓝牙有所区别,BLE的整个连接流程为: 1,扫描设备,获取设备MAC地址 2,发起连接请求 3...

  • [转载]Android GATT 连接过程源码分析

    低功耗蓝牙(BLE)设备的通信基本协议是 GATT, 要操作 BLE 设备,第一步就是要连接设备,其实就是连接 B...

  • android ble开发--手机与ble终端通信

    1. Android手机与BLE终端设备通信结果都是以回调的形式返回: 2. 连接蓝牙BLE终端设备两种方式: ...

  • ionic中实现BLE的基本功能和注意事项

    在项目中安装BLE插件 扫描蓝牙设备 扫描蓝牙只能获取到 连接蓝牙设备 读取特征值有Read的属性的内容 写数据 ...

  • Linux BLE使用说明

    1.启动蓝牙适配器与搜索蓝牙 2.使用gatttool与BLE设备通讯 3.与BLE设备非交互式通讯 4.BLE的...

  • 蓝牙BLE简介

    BLE蓝牙 蓝牙是一种短距的无线通讯技术,可实现固定设备、移动设备之间的数据交换。一般将蓝牙3.0之前的BR/ED...

  • iOS--CBCentralManager实现

    执行通用中心角色任务 在BLE通信中实现中心角色的设备执行一些通用任务,例如:搜索并连接设备,扫描并且和提供数据的...

  • iOS获取Beacon(非iBeacon)广播AdvData

    什么是Beacon 简单的理解,就是一个发送广播的BLE设备,在手机无需和设备进行连接的情况下发送数据,常应用于室...

网友评论

      本文标题:BLE 连接设备与交换数据问题

      本文链接:https://www.haomeiwen.com/subject/btxbfxtx.html