SensorTag bluepy更新间隔

时间:2017-10-22 09:47:51

标签: python raspberry-pi3 bluez

我在Raspberry PI 3上使用bluepy从SensorTag收集数据。 无论我设置为tag.waitForNotifications(0.1),更新间隔仍然是1秒。

请您指出正确的功能或文档。

1 个答案:

答案 0 :(得分:0)

一种解决方案可能是设置更新周期:

tag.getCharacteristics(uuid='f000aa83-0451-4000-b000-000000000000')[0].write(struct.pack("B", 0xa))

其中f000aa83-0451-4000-b000-000000000000是运动传感器更新周期的特征(found here)(数十毫秒),0xa是100ms的十六进制表示除以10。 / p>

这是我的完整功能:

import bluepy
from bluepy import sensortag

import sys
import traceback
import struct    

def connect(mac):
  tag = None

  print('connecting to '+mac, end='', flush=True)
  while tag == None:
    try:
      tag = sensortag.SensorTag(mac)
    except (bluepy.btle.BTLEException):
      print('.', end='', flush=True)
    except (Excpetion, e):
      print()
      print(e)
      sys.exit()

  print()
  tag.gyroscope.enable()
  tag.accelerometer.enable()

  # get MovementSensor period characteristic
  gp = tag.getCharacteristics(uuid='f000aa83-0451-4000-b000-000000000000')
  # set 100ms (100ms/10 = 0xa in hex(10))
  gp[0].write(struct.pack("B", 0xa))

  return tag

在这种情况下,更新周期约为100毫秒。还有一种方法可以更改标签固件的源代码。