Polar H10 to RPI Zero W:HR通知在约100秒后停止,无错误消息

2024-04-29 14:13:09 发布

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

我在RPI Zero W上使用pygatt从Polar H10胸带访问HR通知流。目标是让LED随着心率闪烁。通知到达约100秒,然后再也没有到达。调试日志中没有显示任何错误消息或任何(对我来说是可识别的)提示。 非常感谢您的帮助。你知道吗

使用的代码是:

from pygatt.util import uuid16_to_uuid
from pygatt.exceptions import NotConnectedError, NotificationTimeout
import binascii
import time
import logging
import RPi.GPIO as gpio

MAC = 'E7:17:FD:20:B1:AA'   # MAC address of the Polar H10 belt
HR = 0
RRi1 = 0
RRi2 = 0
LED_On_time = 0.15       # seconds
GPIO_port = 19
gpio.setmode(gpio.BCM)
gpio.setup(GPIO_port, gpio.OUT)

logging.basicConfig(filename='/home/pi/python/debug.log',filemode='w',level=logging.DEBUG)
logging.getLogger('pygatt').setLevel(logging.DEBUG)

def callback(handle, measure):
    global HR, RRi1, RRi2

    if handle == 16:
        for i in range(len(measure)):
            if i == 1:
                print('Heart rate = ',measure[1],' bpm')
                HR = measure[1]
            if i == 2:
                RRi1 = round((measure[2] + 256*measure[3])/1024,2)
                print('RR intervall = %.2f' % RRi1,' s')
            if i == 4:
                RRi2 = round((measure[4] + 256*measure[5])/1024,2)
                print('RR intervall = %.2f' % RRi2,' s')


def Init():

    adapter = pygatt.GATTToolBackend()
    adapter.start()

    try:
        """ connect to bluetooth MAC addres with 5 seconds timeout"""
        device = adapter.connect(MAC, address_type=pygatt.BLEAddressType.random)
        device.bond()

        """ generate characteristics uuid's  """
        uuid_heart_service = uuid16_to_uuid(0x2A37)
        """ discover all characteristics uuid's"""
        device.discover_characteristics()


        device.subscribe(uuid_heart_service, callback, True)

    except NotConnectedError:
        print('No connection established ')
        quit()



Init()
t = time.time()    # Initialite with a reasonable value
while(1):
    gpio.output(GPIO_port, gpio.HIGH)
    time.sleep(LED_On_time)
    gpio.output(GPIO_port, gpio.LOW)
    time.sleep(max(0, 60/max(HR,30) - (time.time() - t)))    
    t = time.time()```

Tags: importgpioifuuidtimeportmaclogging