Bluez APIドキュメントによると(デバイスインターフェース)このメソッドの戻り値は、Connect()
1つ以上のプロファイルへの成功した接続を表します。
間違った接続()
(ジャンプ)
この方法は、1 つ以上のプロファイルが正常にリンクされた場合の成功を示します。
次のように説明される属性もありますConnected
。
ブール接続[読み取り専用]
リモートデバイスが現在接続されているかどうかを示します。 PropertiesChanged信号はこの状態の変化を示します。
実際には、Connect()
メソッドの戻りとプロパティが設定されたことをプロパティに通知する信号到着の間に数秒の間隔があるようです。PropertiesChanged
Connected
true
bluetoothctlを実行するとき:
[bluetooth]# connect XX:XX:XX:XX:XX:XX
Attempting to connect to XX:XX:XX:XX:XX:XX
[CHG] Device XX:XX:XX:XX:XX:XX Connected: yes
Connection successful
次のメッセージが D-Bus にキャプチャされます。
メソッド呼び出し時間=1646854334.904791 送信者=:1.521 -> 宛先=org.bluez Sequence=50 パス=/org/bluez/hci0/dev_XX_XX_XX_XX_XX_XX;Interface=org.bluez.Device1;Member=Connect 信号時間=1646854336.902736送信者=:1.128 ->宛先=(空の宛先)シーケンス=10521パス=/org/bluez/hci0/dev_XX_XX_XX_XX_XX_XX;Interface=org.freedesktop.DBus.PropertiesMem 文字列 "org.bluez.Device1" 一括[ 辞書項目( 文字列「接続済み」 変形ブール真 ) ] 一括[ ] メソッド戻り時間=1646854339.349113送信者=:1.128 ->宛先=:1.521順序=10522応答順序=50
これは私たちに次のことを伝えます。
- 属性がsignal()によって報告された内容に変更されると、
[CHG] Device XX:XX:XX:XX:XX:XX Connected: yes
画面に表示されます。Connected
true
time=1646854336.902736
Connection successful
このメッセージは、メソッドが()を返したときに表示されます。Connect()
time=1646854339.349113
- これらのイベントは2.4秒間隔で発生します。
問題は、これら2つのイベントの違いは何ですか?実際にBluetoothデバイスが接続されていることを示すイベントは何ですか?
(デバイスの接続を切断すると、Disconnect()
メソッドリターンと信号到着の間に数秒の間隔があります0.003
)。
環境:Linuxカーネル:5.4-179
、Bluez:5.62-r3
、Systemd 249.9
:。