コード例 #1
0
        private void initialized(IntPtr board, int status)
        {
            System.Diagnostics.Debug.WriteLine("Board Initialized!");

            mbl_mw_metawearboard_set_time_for_response(board, 500);
            mbl_mw_acc_set_odr(board, 50f);
            mbl_mw_acc_write_acceleration_config(board);

            var acc_signal = mbl_mw_acc_get_acceleration_data_signal(board);

            dataprocDelegates["ff"] = new Fn_IntPtr(ff => {
                dataprocDelegates["ff_handler"] = new Fn_IntPtr(dataPtr => {
                    System.Diagnostics.Debug.WriteLine("In FreeFall");
                });
                logReadyDelegates[0] = new Fn_IntPtr(logger => {
                    mbl_mw_logger_subscribe(logger, dataprocDelegates["ff_handler"]);
                    System.Diagnostics.Debug.WriteLine("Free Fall logger ready");
                    System.Diagnostics.Debug.WriteLine("Processor Setup Complete");
                });
                mbl_mw_datasignal_log(ff, logReadyDelegates[0]);
            });
            dataprocDelegates["no_ff"] = new Fn_IntPtr(noFF => {
                dataprocDelegates["no_ff_handler"] = new Fn_IntPtr(dataPtr => {
                    System.Diagnostics.Debug.WriteLine("Not in FreeFall");
                });
                logReadyDelegates[1] = new Fn_IntPtr(logger => {
                    mbl_mw_logger_subscribe(logger, dataprocDelegates["no_ff_handler"]);
                    System.Diagnostics.Debug.WriteLine("No Free Fall logger ready");
                });
                mbl_mw_datasignal_log(noFF, logReadyDelegates[1]);
            });
            dataprocDelegates["threshold"] = new Fn_IntPtr(ths => {
                mbl_mw_dataprocessor_comparator_create(ths, Comparator.Operation.EQ, 1, dataprocDelegates["no_ff"]);
                mbl_mw_dataprocessor_comparator_create(ths, Comparator.Operation.EQ, -1, dataprocDelegates["ff"]);
            });
            dataprocDelegates["avg"] = new Fn_IntPtr(avg => {
                mbl_mw_dataprocessor_threshold_create(avg, Threshold.Mode.BINARY, 0.5f, 0,
                                                      dataprocDelegates["threshold"]);
            });
            dataprocDelegates["rss"] = new Fn_IntPtr(rss => {
                mbl_mw_dataprocessor_average_create(rss, 4, dataprocDelegates["avg"]);
            });
            //whoops, wrong fn name
            mbl_mw_dataprocessor_rss_create(acc_signal, dataprocDelegates["rss"]);
        }
コード例 #2
0
        private bool setup_logging_signals()
        {
            try
            {
                mbl_mw_logging_clear_entries(getBoard());
            } catch (Exception e)
            {
                info("failed to clear log on MetaWear device: " + e);
            }
            mbl_mw_metawearboard_set_time_for_response(getBoard(), 500);
            setup_device_counters = 0;

            IntPtr accSignal = getAccSignal(false);

            if (accSignal.ToInt64() == 0)
            {
                return(false);
            }

            IntPtr gyroSignal = getGyroSignal();

            if (gyroSignal.ToInt64() == 0)
            {
                return(false);
            }
            config_acc(accSignal);
            config_gyro(gyroSignal);
            setup_GPIO();

            System.Diagnostics.Debug.WriteLine("GOOD: setup data signals, now registering logger");

            var logAccFn = new Fn_IntPtr((IntPtr _accLogger) =>
            {
                accLogger = _accLogger;
                if (accLogger.ToInt64() != 0)
                {
                    System.Diagnostics.Debug.WriteLine("GOOD: acc-logger ready");
                    mbl_mw_logger_subscribe(accLogger, accDataHandler);
                    failed_to_create_acc_logger = false;
                }
                else
                {
                    System.Diagnostics.Debug.WriteLine("ERROR: failed to create the acc-logger");
                    failed_to_create_acc_logger = true;
                }
                setup_device_counters++;
            });

            var logGyroFn = new Fn_IntPtr((IntPtr _gyroLogger) =>
            {
                gyroLogger = _gyroLogger;
                if (gyroLogger.ToInt64() != 0)
                {
                    System.Diagnostics.Debug.WriteLine("GOOD: gyro-logger ready");
                    mbl_mw_logger_subscribe(gyroLogger, gyroDataHandler);
                    failed_to_create_gyro_logger = false;
                }
                else
                {
                    System.Diagnostics.Debug.WriteLine("ERROR: failed to create the gyro-logger");
                    failed_to_create_gyro_logger = true;
                }
                setup_device_counters++;
            });

            if (useAccel)
            {
                mbl_mw_datasignal_log(accSignal, logAccFn);
            }
            if (useGyro)
            {
                mbl_mw_datasignal_log(gyroSignal, logGyroFn);
            }
            string dir = ApplicationData.Current.LocalFolder.Path;

            this.textBox.Text = "storing data in: " + dir;

            disableOptions();
            return(true);
        }