Пример #1
0
    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()
Пример #2
0
    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
Пример #3
0
    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
Пример #5
0
    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()
Пример #6
0
    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
Пример #7
0
    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()
    read_count = 0
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))
#___________________________________________
''' 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
d = {
    'x-axis (g)': arrayDataX,