の特性の値を読み取ることができませんが、セットアップです:QtのBLE:カスタムサービスのためにここで
同僚は、カスタムサービス内でカスタム特性の値を変更し、小さなファームウェア(非標準のユニークな128ビットのUUIDを作成しました)毎秒約1回。送信に使用されるデバイスは、BLE(Bluetooth低電力)実装を使用します。
私はこの値を監視するために小さなアプリケーション(実際の例としてのみ)を実装する必要がありました。しかし、私は小さな問題に遭遇しました。私はここで説明follwedました:http://doc.qt.io/qt-5/qtbluetooth-le-overview.htmlを、私はこのコードを使用して(私は私たちにUUIDを取得)サービスを発見し、「それを読む」ためにうまく管理しました:今、これはサービスの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);
}
}
が、値のバイト配列のサイズはゼロです。別の(プライベートApp)を使用すると、そのサービスの特性の値フィールドが実際に変化することがわかります。さらに、サービスのオブジェクトの特性に変更が加えられたとしても、その信号は決してトリガーされません。特性値を読み取ることができないためです。
私の質問です:考えられないコードに問題はありますか? Qt Bluetoothの現在のBLE実装でカスタムサービスや特性を監視することは不可能ですか?
PD:私はあなたがクライアントの特徴的なコンフィギュレーションディスクリプタ(CCCD)への書き込みは0x01によってchracteristic通知を有効にする必要があります
あなたはディスクリプタを読む必要がありますか?特性や記述子にデータを書き込むgattサーバですか? – 7383
特徴。これは明示的にcharcteristicと書かれているコードにXML定義として記述されているためです。この特性には、変更プロパティと読み取りプロパティがあります。 – aarelovich