質問編集履歴
1
個人情報が含まれていました。
test
CHANGED
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
デバイス検出する方法
|
test
CHANGED
@@ -4,19 +4,13 @@
|
|
4
4
|
|
5
5
|
Python3.7環境です。
|
6
6
|
|
7
|
-
次のプログラムコードで、
|
7
|
+
次のプログラムコードで、デバイスをスキャンしています。
|
8
8
|
|
9
|
-
|
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
|
```
|