def handler(signum, frame): end_time = datetime.datetime.now() global running running = False print( '\n--------------------------------------\nProgram ended with signal %d \n--------------------------------------' % signum) print("Resetting devices") events = [] for s in states: try: e = Event() events.append(e) s.device.on_disconnect = lambda s: e.set() libmetawear.mbl_mw_debug_reset(s.device.board) except: print(s.device.address + "Disconnected") pass for e in events: try: e.wait() except: pass for s in states: print("Total Samples Received %s->%d" % (s.device.address, s.samples)) time_data_collect = (end_time - data_start_time).total_seconds() print("Total Time of Data Collection %fs" % time_data_collect) sys.exit()
def setup_dc_event(device): # Setup disconnect event to blink the blue led 10x when fired dc_event = libmetawear.mbl_mw_settings_get_disconnect_event(device.board) libmetawear.mbl_mw_event_record_commands(dc_event) #libmetawear.mbl_mw_led_write_pattern(device.board, byref(pattern), LedColor.BLUE) #libmetawear.mbl_mw_led_play(device.board) libmetawear.mbl_mw_debug_reset(device.board) libmetawear.mbl_mw_event_end_record(dc_event, getStatusFn_handler_fn)
received_unhandled_entry = cast(None, FnVoid_VoidP_DataP)) def data_handler(p): global read_count read_count += 2 #print("{epoch: %d, value: %s}" % (p.contents.epoch, parse_value(p))) callback = FnVoid_VoidP_DataP(lambda ctx, p: data_handler(p)) print("Subscribe to logger") libmetawear.mbl_mw_logger_subscribe(logger, None, callback) print("Download data") dl_time = time.time() libmetawear.mbl_mw_logging_download(d.board, 0, byref(download_handler)) e.wait() dl_time = time.time() - dl_time print("Entry Read Count: %d" % (read_count)) print("Entry Read Rate: %0.1f entries/s" % (read_count / dl_time)) except RuntimeError as err: print(err) finally: print("Resetting device") e = Event() d.on_disconnect = lambda status: e.set() print("Debug reset") libmetawear.mbl_mw_debug_reset(d.board) e.wait()
def startTracking(self, macAddress, location, patientID, led_on, target_angle): path_MAC = macAddress.replace(":", "-") m = Mobitrack() m.data_folder = os.path.join( Path(os.path.dirname(__file__)).parents[2], "data") m.patientID = patientID m.wearLocation = location minROM_slack = 5 m.minROM = target_angle - minROM_slack m.minROM_raw = target_angle if m.minROM <= 5.: min.ROM = 5. if m.minROM >= 120.: min.ROM = 120. device = MetaWear(macAddress) state = State(device, m) state.led = led_on try: # Create lock file lock_folder = os.path.join( Path(os.path.dirname(__file__)).parents[2], "lock") if not os.path.exists(lock_folder): os.mkdir(lock_folder) lock_file = os.path.join(lock_folder, path_MAC + "_lock.txt") if os.path.isfile(lock_file): raise ValueError('Device %s already in use' % (macAddress)) # Connect to device self.update_state(state='CONNECTING') print("Connecting to " + macAddress) device.connect() print("Configuring %s" % (macAddress)) state.setup() print("Connected to " + macAddress) self.update_state(state='CONNECTED') # Create lock file if not os.path.isfile(lock_file): with open(lock_file, 'x'): os.utime(lock_file, None) print('Starting wearing session for patient %s on device %s' % (patientID, macAddress)) state.start() while (os.path.isfile(lock_file)): pass self.update_state(state='DISCONNECTING') print("Disconnecting device") state.stop() event = Event() state.device.on_disconnect = lambda s: event.set() libmetawear.mbl_mw_debug_reset(state.device.board) event.wait() m.endSession() m.writeData() m.plotDataAccel() m.plotDataGyro() m.plotRawData() m.plotSmoothData() self.update_state(state='DISCONNECTED') print("Disconnected") except (Exception, ArithmeticError) as e: template = "An exception of type {0} occurred. Arguments:\n{1!r}" message = template.format(type(e).__name__, e.args) print(message) print("Exception occured: ") self.update_state(state='DISCONNECTING') state.stop() print("Disconnecting device") event = Event() state.device.on_disconnect = lambda s: event.set() libmetawear.mbl_mw_debug_reset(state.device.board) event.wait() stopTracking(macAddress) self.update_state(state='DISCONNECTED') print("Disconnected") return 1
libmetawear.mbl_mw_gyro_bmi160_start(self.device.board) libmetawear.mbl_mw_acc_start(self.device.board) for i in range(len(argv) - 1): d = MetaWear(argv[i + 1]) d.connect() print("Connected to " + d.address) states.append(State(d)) for s in states: print("Configuring %s" % (s.device.address)) s.setup() for s in states: s.start() sleep(10.0) print("Resetting devices") events = [] for s in states: e = Event() events.append(e) s.device.on_disconnect = lambda s: e.set() libmetawear.mbl_mw_debug_reset(s.device.board) for e in events: e.wait()
ax2.set_ylabel('angular velocity (degree/s)') #sliding window ax2.set_xlim(left=max(0, len(gyroX) - 400), right=len(gyroX) + 1) fig = plt.figure() ax1 = fig.add_subplot(2, 1, 1) ax2 = fig.add_subplot(2, 1, 2) ani = FuncAnimation( fig, animate, interval=20) #change the interval if it doesn't run smoothly #full screen figManager = plt.get_current_fig_manager() figManager.full_screen_toggle() plt.show() print("Resetting devices") events = [] for s in states: e = Event() events.append(e) s.device.on_disconnect = lambda s: e.set( ) #Register a handler for disconnect events libmetawear.mbl_mw_debug_reset(s.device.board) #Issues a soft reset for e in events: e.wait()
def reset_device(self): libmetawear.mbl_mw_debug_reset(self.device.board) logging.info('device reset')
def __exit__(self, type, value, traceback): libmetawear.mbl_mw_debug_reset(self.device.board)
def mobitrack_connect(e): global mobitrack_status global states global sensor_data last_mobitrack_status = False logging.debug('Connecting to Mobitrack...') while (True): # starting session if (last_mobitrack_status == False and mobitrack_status == True): logging.debug('Starting Mobitrack Session...') d = MetaWear("F7:83:98:15:21:07") d.connect() print("Connected to " + d.address) states.append(State(d)) for s in states: print("Configuring %s" % (s.device.address)) s.setup() for s in states: s.start() # during session # while(mobitrack_status): # logging.debug('processStep()') # last_mobitrack_status = True # time.sleep(0.5) # end session if (last_mobitrack_status == True and mobitrack_status == False): logging.debug('endSession()') m.endSession() m.plotData() m.clear() print("Resetting devices") events = [] for s in states: e = Event() events.append(e) s.device.on_disconnect = lambda s: e.set() libmetawear.mbl_mw_debug_reset(s.device.board) for e in events: e.wait() if not os.path.exists(data_folder_name): os.mkdir(data_folder_name) print("Directory ", data_folder_name, " created ") else: print("Directory ", data_folder_name, " already exists") #print(sensor_data) # Log data to file with open(os.path.join(data_folder_name, 'data_' + filename), 'w') as f: print(filename) f.write( 'timestamp, accel_x, accel_y, accel_z, gyro_x, gyro_y, gyro_z\n' ) f.write('\n'.join(sensor_data)) last_mobitrack_status = mobitrack_status time.sleep(0.5)