python中的多个BLE连接非常慢(暗淡)

2024-09-26 18:17:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试通过BLE将两个M5 StickC连接到PC,以上传其传感器数据

我使用bleak库编写了一个数据采集python脚本

当我连接两个设备时,数据采集速度非常慢

如何提高脚本上的数据采集率? 我希望每秒获得20个数据

import asyncio
from bleak import BleakClient

address1 = "D8:A0:1D:55:EE:8A"
UUID1 = "beb5483e-36e1-4688-b7f5-ea07361b26a8"

address2 = "94:B9:7E:93:21:76"
UUID2 = "beb5483e-36e1-4688-b7f5-ea07361b26a2"

async def main():
    client1 = BleakClient(address1)
    client2 = BleakClient(address2)
    print(client1.address)
    print(client2.address)
    await client1.connect()
#    await client2.connect()
    while(True):                                     # very slow when comment out client2
        print(await client1.read_gatt_char(UUID1))
#        print(await client2.read_gatt_char(UUID2))

if __name__ == "__main__":
    loop = asyncio.get_event_loop()
    loop.run_until_complete(main())

编辑:

谢谢你的评论

我已经根据ukBaz的链接更新了我的脚本。 数据上传率有了很大的提高,但我几乎只能获得一个单一的KC数据,而另一个数据的可用性很低

我将向荒凉的维护者提出这个问题

from bleak import BleakClient
import asyncio

address1 = "D8:A0:1D:55:EE:8A"
UUID1 = "beb5483e-36e1-4688-b7f5-ea07361b26a8"

address2 = "94:B9:7E:93:21:76"
UUID2 = "beb5483e-36e1-4688-b7f5-ea07361b26a2"

def callback(sender, data):
    print(sender, data)

def run(addresses, UUIDs):
    loop = asyncio.get_event_loop()
    tasks = asyncio.gather(*(connect_to_device(address, UUID) for address, UUID in zip(addresses, UUIDs)))
    loop.run_until_complete(tasks)

async def connect_to_device(address, UUID):
    print("starting", address, "loop")
    async with BleakClient(address, timeout=5.0) as client:
        print("connect to", address)
        while(True):
            try:
                print(await client.read_gatt_char(UUID))
            except Exception as e:
                print(e)

if __name__ == "__main__":
    run([address1, address2], [UUID1, UUID2])


Tags: 数据importloopasyncioaddressconnectawaitprint

热门问题