Пример #1
0
        private async void Connect(object sender, RoutedEventArgs args)
        {
            int selection = MetawearMacAddresses.SelectedIndex;

            Debug.Print(sensors.ElementAt(selection).Address);
            device = await BluetoothLEDevice.FromIdAsync(sensors.ElementAt(selection).Address);

            board = MbientLab.MetaWear.Win10.Application.GetMetaWearBoard(device);

            ConnectionStatus.Text = "Connecting...";

            await board.InitializeAsync();

            ConnectionStatus.Text = "Connected.";

            ILed led = board.GetModule <ILed>();

            led.EditPattern(MbientLab.MetaWear.Peripheral.Led.Color.Green, MbientLab.MetaWear.Peripheral.Led.Pattern.Blink);
            led.Play();

            ConnectButton.IsEnabled    = false;
            DisconnectButton.IsEnabled = true;

            IAccelerometerBmi160 accelerometer = board.GetModule <IAccelerometerBmi160>();

            accelerometer.Configure(odr: MbientLab.MetaWear.Sensor.AccelerometerBmi160.OutputDataRate._100Hz, range: MbientLab.MetaWear.Sensor.AccelerometerBosch.DataRange._4g);

            await accelerometer.PackedAcceleration.AddRouteAsync(source => source.Stream(async data => await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.High, () =>
            {
                accelerationData.Text = data.Value <Acceleration>().ToString();
            })));

            IGyroBmi160 gyro = board.GetModule <IGyroBmi160>();

            gyro.Configure(odr: MbientLab.MetaWear.Sensor.GyroBmi160.OutputDataRate._100Hz, range: MbientLab.MetaWear.Sensor.GyroBmi160.DataRange._250dps);

            await gyro.PackedAngularVelocity.AddRouteAsync(source => source.Stream(async data => await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.High, () =>
            {
                gyroData.Text = data.Value <AngularVelocity>().ToString();
            })));

            IMagnetometerBmm150 magnetometer = board.GetModule <IMagnetometerBmm150>();

            magnetometer.Configure(preset: MbientLab.MetaWear.Sensor.MagnetometerBmm150.Preset.HighAccuracy);

            await magnetometer.PackedMagneticField.AddRouteAsync(source => source.Stream(async data => await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.High, () =>
            {
                magnetometerData.Text = data.Value <MagneticField>().ToString();
            })));

            accelerometer.PackedAcceleration.Start();
            gyro.PackedAngularVelocity.Start();
            magnetometer.PackedMagneticField.Start();

            accelerometer.Start();
            gyro.Start();
            magnetometer.Start();
        }
Пример #2
0
        public void SetPresetPattern(byte[] expected, Color color, Pattern preset, ushort delay, byte repeat)
        {
            if (delaySupported)
            {
                expected[15] = (byte)((delay >> 8) & 0xff);
                expected[14] = (byte)(delay & 0xff);
            }

            led.EditPattern(color, preset, delay, repeat);

            byte[][] actual = platform.GetCommands();
            Assert.That(new byte[][] { expected }, Is.EqualTo(actual));
        }
Пример #3
0
        static async Task Main(string[] args)
        {
            IMetaWearBoard board   = null;
            bool           succeed = false;
            int            retries = 5;
            //while (!succeed && retries > 0)
            {
                //try
                {
                    board = MbientLab.MetaWear.NetStandard.Application.GetMetaWearBoard(args[0]);
                    //var board = BLEMetawear.Application.GetMetaWearBoard(args[0]);
                    board.TimeForResponse         = 100000;
                    board.OnUnexpectedDisconnect += OnDisconneted;
                    await board.InitializeAsync();

                    succeed = true;
                }
                //catch
                {
                    retries--;
                }
            }

            ILed led = null;
            ISensorFusionBosch sensor = null;

            if (board.IsConnected)
            {
                led = board.GetModule <ILed>();
                led.EditPattern(MbientLab.MetaWear.Peripheral.Led.Color.Green, MbientLab.MetaWear.Peripheral.Led.Pattern.Solid);
                led.Play();

                sensor = board.GetModule <ISensorFusionBosch>();
                sensor.Configure();

                var rout = await sensor.EulerAngles.AddRouteAsync(source =>
                {
                    try
                    {
                        source.Stream(data =>
                        {
                            var value       = data.Value <EulerAngles>();
                            var AngularRead = (int)value.Roll;
                            var OrbitalRead = (int)value.Pitch;
                            //Console.Clear();
                            Console.Write($"\rroll: {value.Roll} pitch:{value.Pitch} Yaw:{value.Yaw}      ");



                            //Rotate(-value.Pitch, 0 , -value.Yaw);
                        });
                    }
                    catch (Exception ex)
                    {
                        Console.Write(ex.Message);
                        //LogException(LoggerCategory, ex, "Could not initialize IMU stream callback");
                        throw;
                    }
                });

                sensor.EulerAngles.Start();
                sensor.Start();
            }
            ConsoleKeyInfo key = new ConsoleKeyInfo();

            while (key.Key != ConsoleKey.Q)
            {
                key = Console.ReadKey();
            }
            if (board.IsConnected)
            {
                if (led != null)
                {
                    led.Stop(true);
                }
                if (sensor != null)
                {
                    sensor.EulerAngles.Stop();
                    sensor.Stop();
                }

                await board.DisconnectAsync();

                //board.TearDown();
            }
        }