コードを以下のように変更して、前のデータから次のデータまでの差の時間を見てみました。
python
1from bleak import BleakClient
2import asyncio
3import time
4
5address1 = "D8:A0:1D:55:EE:8A"
6UUID1 = "beb5483e-36e1-4688-b7f5-ea07361b26a8"
7
8address2 = "94:B9:7E:93:21:76"
9UUID2 = "beb5483e-36e1-4688-b7f5-ea07361b26a2"
10
11adresses = [address1, address2]
12UUIDs = [UUID1, UUID2]
13
14def run(addresses, UUIDs):
15 loop = asyncio.get_event_loop()
16 task = asyncio.gather(*(connect_to_device(address, UUID) for address, UUID in zip(addresses, UUIDs)))
17 loop.run_until_complete(task)
18
19async def connect_to_device(address, UUID):
20 print("starting", address, "loop")
21 async with BleakClient(address, timeout=5) as client:
22 print("connected to", address)
23 time0 =time.time()
24 while(True):
25 tasks = {client.read_gatt_char(UUID)}
26 done, not_done = await asyncio.wait(tasks, return_when=asyncio.FIRST_COMPLETED)
27 for tasks in done:
28 try:
29 now=time.time()
30 print(now-time0, await tasks)
31 except Exception as e:
32 print(e)
33 not_done.add(tasks)
34 time0=now
35 tasks = not_done
36
37if __name__ == "__main__":
38 run(adresses, UUIDs)
*****pythonスクリプトの出力***********
0.1186833381652832 bytearray(b'A,-0.06,-0.50,10.33,79.84,2.28,286.76')
0.11967945098876953 bytearray(b'A,-0.12,-0.65,10.50,81.29,2.99,288.47')
0.12067699432373047 bytearray(b'A,-0.21,-0.69,10.44,82.81,3.73,290.00')
0.12067699432373047 bytearray(b'A,-0.12,-0.68,10.31,84.44,4.49,291.56')
0.1186823844909668 bytearray(b'A,-0.17,-0.62,10.38,85.82,5.34,293.14')
0.12067770957946777 bytearray(b'A,-0.16,-0.75,10.49,87.51,6.19,294.74')
0.11967945098876953 bytearray(b'A,-0.31,-0.69,10.43,88.90,7.11,-64.47')
2.2290396690368652 bytearray(b'B,-0.07,0.20,10.17,-70.31,-20.39,235.95')
0.12067818641662598 bytearray(b'A,-0.12,-0.72,10.44,90.40,8.03,-62.86')
0.11967921257019043 bytearray(b'A,-0.04,-0.63,10.42,91.93,8.99,-61.23')
おおよそ0.12秒の間隔でM5StickCの一つ、「A」のデータが測定できています。1秒間に20点には届きませんが、何とか使えそうです。
ところが、もう一つのM5StickC「B」のデータは二秒おきぐらいにまばらにしか測定できないのです。
二つのデータが均等に測定できないか、別の質問をお願いしています。
https://teratail.com/questions/edit/345571
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。