##やろうとそていること
アクティブなBluetoothデバイスを探索するプログラムを作成しています.
接続先デバイスのBluetoothをONにした状態で,次のコマンドを実行すると,
hcitool con
次の結果が表示されます.
text
1Connections: 2 < ACL xx:xx:xx:xx:xx:xx handle 12 state 1 lm MASTER AUTH ENCRYPT
続いて,接続先デバイスのBluetoothをOFFにした状態で,次のコマンドを実行すると,
hcitool con
次の結果が表示されます.当たり前ですが,デバイスは表示されません.
text
1Connections:
このコマンドを使用して,次のプログラムを作成しましたが,
接続先デバイスのBluetoothをOFFにした状態でも,接続先デバイスが表示されてしまいます,なぜでしょうか?
hcitool conコマンドの応答に,登録デバイス(bd)のアドレスが含まれていたら,10行目のLED点灯を行うようにしています.
このプログラムを実行したときの結果は,
text
1Connections: 2 < ACL xx:xx:xx:xx:xx:xx handle 0 state 5 lm MASTER
handle 0およびstate 5という結果が出ます.
アドレスが含まれているため,LEDが点灯してしまうのですが,handle 0 と state5というのはどういう意味なのでしょうか?
接続先デバイスのbluetoothがoffの状態のままなので,LEDは点灯しないはずなのですが,
点灯してしまうのは,なぜでしょうか?
python
1 while True: 2 cmd = 'hcitool con' 3 res = subprocess.check_output(cmd.split()) 4 print(res.decode()) 5 bd = 'xx:xx:xx:xx:xx:xx' 6 7 if(bd in res.decode()): 8 bltcount += 1 9 #LED点灯 10 GPIO.setup(4, GPIO.OUT) 11 if(bltcount == 5): 12 print(record_time + '\n'+ bd) 13 bltcount = 0 14 else: 15 pass 16 17 else: 18 p1 = subprocess.Popen(["echo","connect",bd], stdout=subprocess.PIPE) 19 p2 = subprocess.Popen(["bluetoothctl"], stdin=p1.stdout, stdout=subprocess.PIPE) 20 p1.stdout.close() 21 outs,errs = p2.communicate() 22 bltcount = 0 23 time.sleep(5)
回答2件
あなたの回答
tips
プレビュー