def start_test(self, time_tests): for device in self.device_list: logger.info_log(f"Start device: {device.device.address}") signal = libmetawear.mbl_mw_acc_get_acceleration_data_signal( device.device.board) libmetawear.mbl_mw_datasignal_subscribe(signal, None, device.callback) libmetawear.mbl_mw_acc_enable_acceleration_sampling( device.device.board) libmetawear.mbl_mw_acc_start(device.device.board) sleep(5.0) sleep(time_tests) for device in self.device_list: libmetawear.mbl_mw_acc_stop(device.device.board) libmetawear.mbl_mw_acc_disable_acceleration_sampling( device.device.board) signal = libmetawear.mbl_mw_acc_get_acceleration_data_signal( device.device.board) libmetawear.mbl_mw_datasignal_unsubscribe(signal) libmetawear.mbl_mw_debug_disconnect(device.device.board) logger.info_log(f"Stop device: {device.device.address}") if DEBUG_STREAM_ACC: start_debug() for s in self.device_list: if BATCH_STORE: self.strage.store(s.data) print("%s -> %d" % (s.device.address, s.samples)) end_debug()
def stop(self): for s in self.states: # Disable acceleration libmetawear.mbl_mw_acc_stop(s.device.board) libmetawear.mbl_mw_acc_disable_acceleration_sampling( s.device.board) signal_acceleration = libmetawear.mbl_mw_acc_get_acceleration_data_signal( s.device.board) libmetawear.mbl_mw_datasignal_unsubscribe(signal_acceleration) # Disable gyro libmetawear.mbl_mw_gyro_bmi160_stop(s.device.board) libmetawear.mbl_mw_gyro_bmi160_disable_rotation_sampling( s.device.board) signal_gyro = libmetawear.mbl_mw_gyro_bmi160_get_rotation_data_signal( s.device.board) libmetawear.mbl_mw_datasignal_unsubscribe(signal_gyro) # Disable magnometer libmetawear.mbl_mw_mag_bmm150_stop(s.device.board) libmetawear.mbl_mw_mag_bmm150_disable_b_field_sampling( s.device.board) # Disconnect board and turn off LED libmetawear.mbl_mw_debug_disconnect(s.device.board) return
def stop_metawears(self): print 'shot has finished' for s in self.mw_states: libmetawear.mbl_mw_acc_stop(s.device.board) libmetawear.mbl_mw_acc_disable_acceleration_sampling( s.device.board) signal = libmetawear.mbl_mw_acc_get_acceleration_data_signal( s.device.board) libmetawear.mbl_mw_datasignal_unsubscribe(signal) # libmetawear.mbl_mw_debug_disconnect(s.device.board) return
def gather_data(self, seconds=3): try: libmetawear.mbl_mw_logging_start(self.device.board, 0) libmetawear.mbl_mw_acc_enable_acceleration_sampling( self.device.board) libmetawear.mbl_mw_acc_start(self.device.board) logging.info('data gathering started') time.sleep(int(seconds)) libmetawear.mbl_mw_acc_stop(self.device.board) libmetawear.mbl_mw_acc_disable_acceleration_sampling( self.device.board) libmetawear.mbl_mw_logging_stop(self.device.board) logging.info('data gathering stopped') except RuntimeError as err: print(err) logging.info('runtime error in gather_data() occurred') return 0 return 1
def download_data(self): libmetawear.mbl_mw_acc_stop(self.device.board) libmetawear.mbl_mw_acc_disable_acceleration_sampling(self.device.board) libmetawear.mbl_mw_logging_stop(self.device.board) e = Event() def progress_update_handler(context, entries_left, total_entries): if (entries_left == 0): e.set() fn_wrapper = FnVoid_VoidP_UInt_UInt(progress_update_handler) download_handler= LogDownloadHandler(context = None, \ received_progress_update = fn_wrapper, \ received_unknown_entry = cast(None, FnVoid_VoidP_UByte_Long_UByteP_UByte), \ received_unhandled_entry = cast(None, FnVoid_VoidP_DataP)) callback = FnVoid_VoidP_DataP(lambda ctx, p: print("%s -> %s" % ( self.device.address, parse_value(p)))) libmetawear.mbl_mw_logger_subscribe(self.logger, None, callback) libmetawear.mbl_mw_logging_download(self.device.board, 0, byref(download_handler)) e.wait()
def stop(self): if self.device == None: self.log("ERROR", "Device not available") return False dev_board = self.device.board self.log("INFO", "Stopping device...") lmw.mbl_mw_acc_stop(dev_board) lmw.mbl_mw_acc_disable_acceleration_sampling(dev_board) lmw.mbl_mw_gyro_bmi160_stop(dev_board) lmw.mbl_mw_gyro_bmi160_disable_rotation_sampling(dev_board) # Unsubscribe from accelerometer data acc = lmw.mbl_mw_acc_get_acceleration_data_signal(dev_board) lmw.mbl_mw_datasignal_unsubscribe(acc) # Unsubscribe from gyro data gyro = lmw.mbl_mw_gyro_bmi160_get_rotation_data_signal(dev_board) lmw.mbl_mw_datasignal_unsubscribe(gyro) self.log("INFO", "Device stopped.") return True
resource="acc_logger") print("Start logging") libmetawear.mbl_mw_logging_start(d.board, 0) print("Start acc") libmetawear.mbl_mw_acc_set_odr(d.board, 400.) libmetawear.mbl_mw_acc_write_acceleration_config(d.board) libmetawear.mbl_mw_acc_enable_acceleration_sampling(d.board) libmetawear.mbl_mw_acc_start(d.board) print("Logging data for 10s") time.sleep(10.0) print("Setop acc") libmetawear.mbl_mw_acc_stop(d.board) libmetawear.mbl_mw_acc_disable_acceleration_sampling(d.board) print("Stop logging") libmetawear.mbl_mw_logging_stop(d.board) print("Flush cache if MMS") libmetawear.mbl_mw_logging_flush_page(d.board) print("Downloading data") libmetawear.mbl_mw_settings_set_connection_parameters( d.board, 7.5, 7.5, 0, 6000) time.sleep(1.0) print("Setup Download handler") e = Event()
libmetawear.mbl_mw_datasignal_subscribe(acc, None, s.callbackax) print("ths ended") libmetawear.mbl_mw_sensor_fusion_enable_data(s.device.board, SensorFusionData.EULER_ANGLE) libmetawear.mbl_mw_sensor_fusion_enable_data(s.device.board, SensorFusionData.LINEAR_ACC) libmetawear.mbl_mw_sensor_fusion_start(s.device.board) print("start streaming") sleep(5.0) for s in states: print("stop streaming") libmetawear.mbl_mw_sensor_fusion_stop(s.device.board) libmetawear.mbl_mw_acc_stop(s.device.board) libmetawear.mbl_mw_acc_disable_acceleration_sampling(s.device.board) print("Unsubscribing.. ") signal = libmetawear.mbl_mw_sensor_fusion_get_data_signal( s.device.board, SensorFusionData.EULER_ANGLE) libmetawear.mbl_mw_datasignal_unsubscribe(signal) acc = libmetawear.mbl_mw_sensor_fusion_get_data_signal( s.device.board, SensorFusionData.LINEAR_ACC) print("ths") ths = libmetawear.mbl_mw_dataprocessor_threshold_create( acc, ThresholdMode.BINARY, 0.2, 0.0, None, s.callbackax) libmetawear.mbl_mw_datasignal_unsubscribe(ths) print("ths ended") libmetawear.mbl_mw_debug_disconnect(s.device.board)
libmetawear.mbl_mw_settings_set_connection_parameters(states[0].device.board, 7.5, 7.5, 0, 6000) sleep(1.5) # start reading in acc data libmetawear.mbl_mw_acc_set_odr(states[0].device.board, 100.0) libmetawear.mbl_mw_acc_set_range(states[0].device.board, 16.0) libmetawear.mbl_mw_acc_write_acceleration_config(states[0].device.board) signal = libmetawear.mbl_mw_acc_get_acceleration_data_signal( states[0].device.board) libmetawear.mbl_mw_datasignal_subscribe(signal, None, states[0].callback) libmetawear.mbl_mw_acc_enable_acceleration_sampling(states[0].device.board) libmetawear.mbl_mw_acc_start(states[0].device.board) # continue running for number of seconds defined by user when running script sleep(int(sys.argv[1])) libmetawear.mbl_mw_acc_stop(states[0].device.board) libmetawear.mbl_mw_acc_disable_acceleration_sampling(states[0].device.board) # unsubscribe from stream and disconnect from device signal = libmetawear.mbl_mw_acc_get_acceleration_data_signal( states[0].device.board) libmetawear.mbl_mw_datasignal_unsubscribe(signal) libmetawear.mbl_mw_debug_disconnect(states[0].device.board) # print total number of samples received print("%s -> %d" % (states[0].device.address, states[0].samples))
libmetawear.mbl_mw_led_play(d.board) #___________________________________________ ''' infinite loop used to run the application ''' root.mainloop() #___________________________________________ ''' Stop the device ''' #Turn of the LED at the end of the measures libmetawear.mbl_mw_led_stop_and_clear(d.board) #Stops the measures for s in states: libmetawear.mbl_mw_acc_stop( s.device.board) #switches the accelerometer to standby mode libmetawear.mbl_mw_acc_disable_acceleration_sampling( s.device.board) #disables acceleration sampling dataSignal = libmetawear.mbl_mw_acc_get_acceleration_data_signal( s.device.board ) #retrieves the data signal representing acceleration data libmetawear.mbl_mw_datasignal_unsubscribe( dataSignal) #unsubscribes from a data stream libmetawear.mbl_mw_debug_disconnect(s.device.board) #print("\nTotal Samples Received") #for s in states: #print("%s -> %d" % (s.device.address, s.samples)) #Creating dataframe