赞
踩
【问题描述】
在使用BlePeripheralDevice类的writeCharacteristic方法向蓝牙传输数据,如果数据长度长一点,通过串口工具发现蓝牙设备端是会分包接受数据的各个部分,那么鸿蒙java中有方法可以将数据一次传输给蓝牙设备,从而避免设备分包接受数据的现象吗?
【解决方案】
参考如下链接实现:
1、把代码复制到项目中,但是文档描述BLE设备间通信对数据大小有限制,一次性传输的数据最大不超过20字节,超过部分将无法传输。如下如图所示
2、如果想扩大传输字节,可以对项目代码做出如下的修改,把BleCentralAbilitySlice的java的servicesDiscoveredEvent回调方法里添加如下代码
- @Override
- public void servicesDiscoveredEvent(int status) {
- super.servicesDiscoveredEvent(status);
- if (status == BlePeripheralDevice.OPERATION_SUCC) {
- boolean isok= peripheralDevice.requestBleMtuSize(251);
- HiLog.error(LABEL,"requestBleMtuSize===>>>"+String.valueOf(isok));
- for (GattService service : peripheralDevice.getServices()) {
- checkGattCharacteristic(service);
- }
- }
- }
3、运行效果
外围
中心
欲了解更多更全技术文章,欢迎访问https://developer.huawei.com/consumer/cn/forum/?ha_source=zzh
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。