質問編集履歴

1

個人情報が含まれていました。

2021/11/01 03:34

投稿

raspypy
raspypy

スコア247

test CHANGED
@@ -1 +1 @@
1
- BLE 複数デバイス検出する方法
1
+ デバイス検出する方法
test CHANGED
@@ -4,19 +4,13 @@
4
4
 
5
5
  Python3.7環境です。
6
6
 
7
- 次のプログラムコードで、BLEデバイスをスキャンしています。
7
+ 次のプログラムコードで、デバイスをスキャンしています。
8
8
 
9
- BLEデバイスのMACアドレスを、あらかじめプログラムに登録しておき、検出したらカウントという処理です。
9
+ あらかじめプログラムに登録しておき、検出したらカウントという処理です。
10
10
 
11
11
 
12
12
 
13
13
  ##困っていること
14
-
15
- 6行目でデバイスを登録し、
16
-
17
- 8行目で登録したデバイスが含まれていた場合の処理を実行していますが、
18
-
19
- 複数のデバイスを登録した場合の、記述が分からず困っております.
20
14
 
21
15
  8行目以降のif文ブロックを、もう1ブロック用意すれば良いのでしょうか。
22
16
 
@@ -28,66 +22,4 @@
28
22
 
29
23
  cmd = 'hcitool con'
30
24
 
31
- res = subprocess.check_output(cmd.split())
32
-
33
- print(res.decode())
34
-
35
- #接続(検出対象)デバイスのMACアドレス
36
-
37
- bd = 'XX:XX:CC:46:0A:A7'
38
-
39
- handle = 'handle 0'
40
-
41
- if(bd in res.decode()):
42
-
43
- if(handle in res.decode()):
44
-
45
- pass
46
-
47
- else:
48
-
49
- bltcount += 1
50
-
51
- #含まれている=接続先デバイスとBluetooth接続できている場合
52
-
53
- print(bltcount)
54
-
55
- #5回連続で接続確認できたら記録
56
-
57
- if(bltcount == 5):
58
-
59
- print(record_time + '\n'+ 'MAC Address:'+ bd)
60
-
61
- bltcount = 0
62
-
63
- else:
64
-
65
- pass
66
-
67
- #応答に接続先デバイスのMACアドレスが含まれていない場合は、接続トライ
68
-
69
- else:
70
-
71
- #デバイスと接続
72
-
73
- #echo connect 78:E3:DE:46:0A:A7 | bluetoothctl
74
-
75
- p1 = subprocess.Popen(["echo","connect",bd], stdout=subprocess.PIPE)
76
-
77
- p2 = subprocess.Popen(["bluetoothctl"], stdin=p1.stdout, stdout=subprocess.PIPE)
78
-
79
- p1.stdout.close()
80
-
81
- outs,errs = p2.communicate()
82
-
83
- print('Attempt to connect...')
84
-
85
- bltcount = 0
86
-
87
- #3秒ごとに接続トライ
88
-
89
- time.sleep(3)
90
-
91
- time.sleep(1)
92
-
93
25
  ```