适用于 Android 的 Qt BLE:无法读取自定义服务的特征值

阿列洛维奇

这是设置:

一位同事创建了一个小型固件,该固件大约每秒一次更改定制服务(非标准唯一的128位UUID)中的定制特征的值。用于传输的设备使用 BLE(蓝牙低功耗)实现。

我需要实现一个小应用程序(仅作为工作示例)来监控所述值。但是我遇到了一个小问题。我已按照此处的说明进行操作:http : //doc.qt.io/qt-5/qtbluetooth-le-overview.html 并且我设法发现了该服务并“阅读它”(我得到了 UUID)使用此代码:

void BLETest::on_stateChanged(QLowEnergyService::ServiceState state){
#ifdef DBUG
    logger->out("Service Monitor State: " + lowEnergyServiceStateToString(state),Logger::LC_ORANGE);
#endif

    if (state == QLowEnergyService::ServiceDiscovered){
        QString chars = "";
        QList<QLowEnergyCharacteristic> clist = monitoredService->characteristics();
        for (int i = 0; i < clist.size(); i++){
            chars = clist.at(i).uuid().toString() + " - " + clist.at(i).name() + ": " + QString(clist.at(i).value());
            chars = chars + ". Value size: " + QString::number(clist.at(i).value().size()) + "<br>";
        }
        if (chars.isEmpty()){
            chars = "No characteristics found";
        }
        logger->out(chars);
    }

}

现在这将打印服务的 UUID,但值字节数组的大小为零。使用另一个(私人应用程序),我们实际上可以看到该服务中特征的值字段发生变化。此外,即使与服务的对象特性更改信号建立了连接,也永远不会触发该信号,我想这是因为无法读取特性值。

我的问题是:你想不到的代码有什么问题吗?或者只是无法使用 Qt 蓝牙的当前 BLE 实现来监控自定义服务和特性?

PD:我使用的是 Qt 5.7.1

AD1170

您必须通过将 0x01 写入客户端特征配置描述符 (CCCD) 来启用特征通知。

foreach(QLowEnergyCharacteristic c, srv->characteristics()){
    QLowEnergyDescriptor d = c.descriptor(QBluetoothUuid::ClientCharacteristicConfiguration);
    if(!c.isValid()){
        continue;
    }
    if(c.properties() & QLowEnergyCharacteristic::Notify){ // enable notification
        srv->writeDescriptor(d, QByteArray::fromHex("0100"));
    }
    if(c.properties() & QLowEnergyCharacteristic::Indicate){ // enable indication
        srv->writeDescriptor(d, QByteArray::fromHex("0200"));
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

适用于Android和OpenSSL的Qt

来自分类Dev

适用于Android的Qt:更改应用程序图标

来自分类Dev

适用于Android的Qt5:不兼容的ABI

来自分类Dev

适用于Android和QCore的Qt发生冲突

来自分类Dev

适用于Android的Qt创建器缺少很多库

来自分类Dev

适用于GPS服务的Android Wakelock

来自分类Dev

适用于Android的自定义XML元素

来自分类Dev

适用于Android应用的自定义键盘

来自分类Dev

适用于React Native的自定义Android模块

来自分类Dev

适用于Android应用的Google Analytics(分析)受众特征

来自分类Dev

适用于Android的Qt:执行步骤“构建Android APK”时,QtCreator构建/部署错误

来自分类Dev

适用于Android的ID蓝色RFID读取器

来自分类Dev

适用于Android Studio的Google Play服务版本

来自分类Dev

适用于iOS和Android的PHP Web服务

来自分类Dev

适用于Android应用程序的RESTful Web服务

来自分类Dev

无法为 arm64-v8a 构建适用于 Android 的 Qt 应用程序,显示 libc++.so.16 not found 错误

来自分类Dev

适用于Android的Mini TV无法识别为设备

来自分类Dev

无法使OnItemClickListener在Java中适用于Android

来自分类Dev

适用于Android / Eclipse的Fabric-无法登录

来自分类Dev

适用于Mono Android的TeeChart无法编译

来自分类Dev

适用于Android的Eclipse ADT无法正常工作

来自分类Dev

适用于Android的Facebook SDK:无法上传视频

来自分类Dev

适用于Android的Firebase Messaging Upstream无法启动

来自分类Dev

适用于Android和iOS的Qt QML在全系统范围内更改颜色

来自分类Dev

适用于Android的Qt-等效的startActivityForResult不起作用

来自分类Dev

需要关于 kivy mapview 的帮助,适用于 Windows,但不适用于 android,应用程序无法启动

来自分类Dev

如何在适用于Android的Xamarin .axml中应用自定义视图

来自分类Dev

如何获得适用于Android的PixlUI自定义字体?

来自分类Dev

自定义TextView字体不适用于从Java Android设置文本

Related 相关文章

  1. 1

    适用于Android和OpenSSL的Qt

  2. 2

    适用于Android的Qt:更改应用程序图标

  3. 3

    适用于Android的Qt5:不兼容的ABI

  4. 4

    适用于Android和QCore的Qt发生冲突

  5. 5

    适用于Android的Qt创建器缺少很多库

  6. 6

    适用于GPS服务的Android Wakelock

  7. 7

    适用于Android的自定义XML元素

  8. 8

    适用于Android应用的自定义键盘

  9. 9

    适用于React Native的自定义Android模块

  10. 10

    适用于Android应用的Google Analytics(分析)受众特征

  11. 11

    适用于Android的Qt:执行步骤“构建Android APK”时,QtCreator构建/部署错误

  12. 12

    适用于Android的ID蓝色RFID读取器

  13. 13

    适用于Android Studio的Google Play服务版本

  14. 14

    适用于iOS和Android的PHP Web服务

  15. 15

    适用于Android应用程序的RESTful Web服务

  16. 16

    无法为 arm64-v8a 构建适用于 Android 的 Qt 应用程序,显示 libc++.so.16 not found 错误

  17. 17

    适用于Android的Mini TV无法识别为设备

  18. 18

    无法使OnItemClickListener在Java中适用于Android

  19. 19

    适用于Android / Eclipse的Fabric-无法登录

  20. 20

    适用于Mono Android的TeeChart无法编译

  21. 21

    适用于Android的Eclipse ADT无法正常工作

  22. 22

    适用于Android的Facebook SDK:无法上传视频

  23. 23

    适用于Android的Firebase Messaging Upstream无法启动

  24. 24

    适用于Android和iOS的Qt QML在全系统范围内更改颜色

  25. 25

    适用于Android的Qt-等效的startActivityForResult不起作用

  26. 26

    需要关于 kivy mapview 的帮助,适用于 Windows,但不适用于 android,应用程序无法启动

  27. 27

    如何在适用于Android的Xamarin .axml中应用自定义视图

  28. 28

    如何获得适用于Android的PixlUI自定义字体?

  29. 29

    自定义TextView字体不适用于从Java Android设置文本

热门标签

归档