#python #windows #bluetooth-lowenergy #esp32 #sampling
Вопрос:
Я успешно подключил свое устройство BLE (плата ESP32 IMU) к компьютеру с Windows, используя одну из двух библиотек ниже:
- Библиотека Пигатта (https://github.com/peplin/pygatt)
- Мрачная библиотека (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. Пытались использовать уведомления вместо чтения в цикле?