2016-10-30 86 views
2

私はpyBluezパッケージと思われるpython import bluetoothのBluetoothモジュールを使用しています。私は接続、送信、およびbluetooth.BluetoothSocketクラスからうまく受信することができますが、私のアプリケーションは、接続の状態になると完全に盲目です。python bluetooth - 接続状態を確認してください

デバイスが切断されているにもかかわらず、特定の機能を無効にしたいのですが、BluetoothSocket.is_connected()メソッドがないようです。私はそれが発生するとすぐにブルートゥースの状態の変化を検出したいと思います。

通常、このような単純なトピックについては複数のトピックがあります。重複しているとお詫び申し上げます。私はこのサイトを何度も検索して答えましたが、Python特有のものは何も見つかりませんでした。

答えて

1

あなたのSOがLinuxの場合は、hcitoolを使用すると、Bluetoothデバイスのステータスがわかります。

あなたのニーズを満たすことができる小さなPythonスニペットを以下で見つけてください。 BluetoothデバイスのMACアドレスを知る必要があります:

import subprocess as sp 

stdoutdata = sp.getoutput("hcitool con") 

if "XX:XX:XX:XX:XX:XX" in stdoutdata.split(): 
    print("Bluetooth device is connected") 

希望します。

1

Linuxを使用している場合は、BluetoothSocketのgetpeername()メソッドを使用してデバイスがまだ利用可能かどうかを確認することもできます。このメソッド(これはPythonのソケットクラスから継承されます)は、ソケットが接続されているリモートアドレスを返します。

デバイスがまだ使用可能である場合:

>>>sock.getpeername() 
('98:C3:32:81:64:DE', 1) 

デバイスが接続されていない場合は、次の

>>>sock.getpeername() 
Traceback (most recent call last): 
    File "<string>", line 3, in getpeername 
_bluetooth.error: (107, 'Transport endpoint is not connected') 

そのため、ソケットはまだ実際のデバイスに接続されているかどうかをテストするために、あなたが使用することができます:

try: 
    sock.getpeername() 
    still_connected = True 
except: 
    still_connected = False 
関連する問題