Skip to content
This repository was archived by the owner on Jul 20, 2025. It is now read-only.

Commit e76e8ce

Browse files
committed
examples: add magnetometer streaming example.
1 parent 6536793 commit e76e8ce

File tree

1 file changed

+69
-0
lines changed

1 file changed

+69
-0
lines changed

examples/stream_mag.py

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
# usage: python3 stream_mag.py [mac1] [mac2] ... [mac(n)]
2+
from __future__ import print_function
3+
from mbientlab.metawear import MetaWear, libmetawear, parse_value
4+
from mbientlab.metawear.cbindings import *
5+
from time import sleep
6+
from threading import Event
7+
8+
import platform
9+
import sys
10+
11+
if sys.version_info[0] == 2:
12+
range = xrange
13+
14+
class State:
15+
# init
16+
def __init__(self, device):
17+
self.device = device
18+
self.samples = 0
19+
self.magCallback = FnVoid_VoidP_DataP(self.mag_data_handler)
20+
21+
# mag callback
22+
def mag_data_handler(self, ctx, data):
23+
print("MAG: %s -> %s" % (self.device.address, parse_value(data)))
24+
self.samples+= 1
25+
26+
states = []
27+
28+
# connect
29+
for i in range(len(sys.argv) - 1):
30+
d = MetaWear(sys.argv[i + 1])
31+
d.connect()
32+
print("Connected to %s over %s" % (d.address, "USB" if d.usb.is_connected else "BLE"))
33+
states.append(State(d))
34+
35+
# configure
36+
for s in states:
37+
print("Configuring device")
38+
libmetawear.mbl_mw_settings_set_connection_parameters(s.device.board, 7.5, 7.5, 0, 6000)
39+
sleep(1.5)
40+
41+
# setup mag
42+
libmetawear.mbl_mw_mag_bmm150_stop(s.device.board)
43+
libmetawear.mbl_mw_mag_bmm150_set_preset(s.device.board, MagBmm150Preset.REGULAR)
44+
45+
# get mag and subscribe
46+
mag = libmetawear.mbl_mw_mag_bmm150_get_b_field_data_signal(s.device.board)
47+
libmetawear.mbl_mw_datasignal_subscribe(mag, None, s.magCallback)
48+
49+
# start mag
50+
libmetawear.mbl_mw_mag_bmm150_enable_b_field_sampling(s.device.board)
51+
libmetawear.mbl_mw_mag_bmm150_start(s.device.board)
52+
53+
# sleep
54+
sleep(10.0)
55+
56+
# stop
57+
for s in states:
58+
libmetawear.mbl_mw_mag_bmm150_stop(s.device.board)
59+
libmetawear.mbl_mw_mag_bmm150_disable_b_field_sampling(s.device.board)
60+
61+
mag = libmetawear.mbl_mw_mag_bmm150_get_b_field_data_signal(s.device.board)
62+
libmetawear.mbl_mw_datasignal_unsubscribe(mag)
63+
64+
libmetawear.mbl_mw_debug_disconnect(s.device.board)
65+
66+
# recap
67+
print("Total Samples Received")
68+
for s in states:
69+
print("%s -> %d" % (s.device.address, s.samples))

0 commit comments

Comments
 (0)