私はAndroid用のQTクイックコントロール2アプリケーションと、デバイスとの通信にQt Bluetoothを使用しています。 ボタンをクリックすると(onClicked()
信号を使用)、アプリケーションはBluetooth通信のためのC++クラスの関数を呼び出します。コマンドをデバイスに送信し、応答を待ちます。これまでのところうまくいきます。QT qmlボタンは、無効になっているにもかかわらずクリックされた信号を送信します。
今私の問題: クリックしたとき、私は、答えを待っている間に複数のクリックを防ぐために、もう一度ボタンを有効にする、Bluetooth機能を呼び出して、ボタンを無効にするが、そのが待っている間しかし、ボタンがonClicked()
信号を発しますenabledプロパティはfalseです。
Bluetoothダイアログが終了したらボタンを有効にしないと、(期待どおり)一度しかクリックすることはできませんが、再度有効にします。
信号が複数回放射されると、ハードウェアバックエンドに関連する問題が発生します。
これを修正する方法はありますか?
onClickedボタン()シグナル:
bEdit.onClicked: {
bEdit.enabled = false;
btConnect.fill("1", "30");
bEdit.enabled = true;
}
Bluetoothの書き込みと読み込み:
unsigned int Bluetooth::fill(QString slot, QString volume)
{
QString output = ("CK Fill " + slot + " " + volume + "\r\n");
QByteArray baOutput = output.toLatin1();
static const QString serviceUuid(QStringLiteral("00001101-0000-1000-8000-00805F9B34FB"));
socket->connectToService(QBluetoothAddress("98:d3:32:20:46:b9"), QBluetoothUuid(serviceUuid), QIODevice::ReadWrite);
socket->write(baOutput);
QString input = "";
while(input == "")
{
input = socket->readAll();
}
qDebug() << input;
return 0;
}
コードをお知らせください。ブルートゥース機能がブロックされていない可能性が高く、すぐに戻る。 – derM
不可能:https://stackoverflow.com/a/46767460/5068056 – aghilpro
@aghilpro可能性があります、私はデバッガで私のコードを通過しました。 –