Считывание данных с устройства BLE с очень низкой скоростью

#python #windows #bluetooth-lowenergy #esp32 #sampling

Вопрос:

Я успешно подключил свое устройство BLE (плата ESP32 IMU) к компьютеру с Windows, используя одну из двух библиотек ниже:

  1. Библиотека Пигатта (https://github.com/peplin/pygatt)
  2. Мрачная библиотека (https://github.com/hbldh/bleak)

Я могу получать данные из ИДУ, используя любую из библиотек. Тем не менее, я получаю данные с частотой дискретизации Используя тот же код на моей плате ESP32, я могу получать данные на свой телефон со скоростью 180 Гц.

Почему это происходит? Нужно ли мне изменять библиотеки?

Я прилагаю два сценария.

Спасибо

 "-------PYGATT library---------"


import pygatt
import time

adapter = pygatt.BGAPIBackend(serial_port='COM7')

def handle_data(handle, value):
    """
    handle -- integer, characteristic read handle the data was received on
    value -- bytearray, the data returned in the notification
    """
    print(value.decode("utf-8"))

while True:
    adapter.start()
    device = adapter.connect('D8:A0:1D:46:E0:32')

    device.subscribe("BEB52A37-36E1-4688-B7F5-EA07361B26A8",
                     callback=handle_data)



    time.sleep(6)
 

 import sys
import platform
import asyncio
import time

from bleak import BleakClient


ADDRESS = (
    "D8:A0:1D:46:E0:32"
    if platform.system() != "Darwin"
    else "B9EA5233-37EF-4DD6-87A8-2A875E821C46"
)
if len(sys.argv) == 2:
    ADDRESS = sys.argv[1]


async def run(address, debug=False):

    async with BleakClient(address) as client:
        
    while True:
        value = await client.read_gatt_char("BEB52A37-36E1-4688-B7F5-EA07361B26A8")
        print(value.decode('utf-8'))
                      

if __name__ == "__main__":
    loop = asyncio.get_event_loop()
    loop.set_debug(True)
    loop.run_until_complete(run(ADDRESS, True))
   
 

Комментарии:

1. Пытались использовать уведомления вместо чтения в цикле?