Вот что я проверил на данный момент:
- Датчик работоспособен, поскольку он передает данные при подключении к мобильному приложению Movesense.
- Путь, который я использую (например, "/ Meas/ECG/200") является правильным и соответствует документации.
- Команда записи отправляется успешно (подтверждено журналами отладки), уведомления включаются без ошибок.
- UUID для записи и характеристики уведомления верны.
- Добавить задержки до и после отправки команды записи.
- Повторно отправить команду записи несколько раз.
- Проверка того, что датчик не подключен к какому-либо другому устройству во время тестирования.
Кто-нибудь сталкивался с подобной проблемой или что-то не хватает в конфигурации? или последовательность общения? Будем очень признательны за любые идеи и предложения.
Вот код, который я использую.
# -*- coding: utf-8 -*-
"""
Python gatt_sensordata_app client example using the Bleak GATT client.
This example is based on the examples in the Bleak repo: https://github.com/hbldh/bleak
"""
import logging
import asyncio
import platform
import signal
from bleak import BleakClient
from bleak import _logger as logger
from bleak import discover
from functools import reduce
from typing import List
import struct
import sys
WRITE_CHARACTERISTIC_UUID = (
)
NOTIFY_CHARACTERISTIC_UUID = (
)
# https://stackoverflow.com/a/56243296
class DataView:
def __init__(self, array, bytes_per_element=1):
"""
bytes_per_element is the size of each element in bytes.
By default we are assume the array is one byte per element.
"""
self.array = array
self.bytes_per_element = 1
def __get_binary(self, start_index, byte_count, signed=False):
integers = [self.array[start_index + x] for x in range(byte_count)]
_bytes = [integer.to_bytes(
self.bytes_per_element, byteorder='little', signed=signed) for integer in integers]
return reduce(lambda a, b: a + b, _bytes)
def get_uint_16(self, start_index):
bytes_to_read = 2
return int.from_bytes(self.__get_binary(start_index, bytes_to_read), byteorder='little')
def get_uint_8(self, start_index):
bytes_to_read = 1
return int.from_bytes(self.__get_binary(start_index, bytes_to_read), byteorder='little')
def get_uint_32(self, start_index):
bytes_to_read = 4
binary = self.__get_binary(start_index, bytes_to_read)
return struct.unpack('
Подробнее здесь: https://stackoverflow.com/questions/792 ... mobile-app