private async void BtnConnect_Click(object sender, RoutedEventArgs e)
        {
            d("Button CONNECT clicked.");
            HrDevice = await BleHeartRate.FirstOrDefault();

            if (HrDevice == null)
            {
                d("I was not able to find any HR device!");
                return;
            }

            d("Found device: " + HrDevice.Name + " IsConnected=" + HrDevice.IsConnected);
            // we should always monitor the connection status
            HrDevice.DeviceConnectionStatusChanged -= HrDeviceOnDeviceConnectionStatusChanged;
            HrDevice.DeviceConnectionStatusChanged += HrDeviceOnDeviceConnectionStatusChanged;

            // we can create value parser and listen for parsed values of given characteristic
            HrParser.ConnectWithCharacteristic(HrDevice.HeartRate.HeartRateMeasurement);
            HrParser.ValueChanged -= HrParserOnValueChanged;
            HrParser.ValueChanged += HrParserOnValueChanged;

            // connect also battery level parser to proper characteristic
            BatteryParser.ConnectWithCharacteristic(HrDevice.BatteryService.BatteryLevel);

            // we can monitor raw data notified by BLE device for specific characteristic
            HrDevice.HeartRate.HeartRateMeasurement.ValueChanged -= HeartRateMeasurementOnValueChanged;
            HrDevice.HeartRate.HeartRateMeasurement.ValueChanged += HeartRateMeasurementOnValueChanged;

            // we could force propagation of event with connection status change, to run the callback for initial status
            HrDevice.NotifyConnectionStatus();
        }
Exemple #2
0
        /// <summary>
        /// 获取电池信息
        /// </summary>
        /// <param name="task"></param>
        private void handleBatteryInfo(TaskInfo task)
        {
            string cmd    = "shell dumpsys battery";
            string result = connect.ExecuteAdb(cmd);

            if (!String.IsNullOrEmpty(result) && !result.Contains("daemon started successfully "))
            {
                manager.BatteryParser = BatteryParser.Parser(result);
                if (task.ResultHandler != null)
                {
                    Image  image = manager.BatteryParser.BatteryImage;
                    string info  = manager.BatteryParser.BatteryFormatInfo;
                    task.ResultHandler.Invoke(image, info);
                }
                writeLog(string.Format("获取到电池信息"));
            }
        }
        private async void HrDeviceOnDeviceConnectionStatusChanged(object device, BleDeviceConnectionStatusChangedEventArgs args)
        {
            d("Current connection status is: " + args.ConnectionStatus);
            await RunOnUiThread(async() =>
            {
                bool connected = (args.ConnectionStatus == BluetoothConnectionStatus.Connected);
                if (connected)
                {
                    TxtStatus.Text  = HrDevice.Name + ": connected";
                    byte battery    = await BatteryParser.Read();
                    TxtBattery.Text = String.Format("battery level: {0}%", battery);
                }
                else
                {
                    TxtStatus.Text  = "disconnected";
                    TxtBattery.Text = "battery level: --";
                    TxtHr.Text      = "--";
                }

                BtnStart.IsEnabled    = connected;
                BtnStop.IsEnabled     = connected;
                BtnReadInfo.IsEnabled = connected;
            });
        }
        private async void BtnReadInfo_Click(object sender, RoutedEventArgs e)
        {
            d("Reading DeviceInformation Characteristic ...");
            var firmware = await HrDevice.DeviceInformation.FirmwareRevisionString.ReadAsString();

            var hardware = await HrDevice.DeviceInformation.HardwareRevisionString.ReadAsString();

            var producer = await HrDevice.DeviceInformation.ManufacturerNameString.ReadAsString();

            var serialNumber = await HrDevice.DeviceInformation.SerialNumberString.ReadAsString();

            var modelNumber = await HrDevice.DeviceInformation.ModelNumberString.ReadAsString();

            d($" Producer : {producer}"); d("");
            d($"    Model : {modelNumber}"); d("");
            d($"      S/N : {serialNumber}"); d("");
            d($" Firmware : {firmware}"); d("");
            d($" Hardware : {hardware}"); d("");

            // update also battery
            byte battery = await BatteryParser.Read();

            TxtBattery.Text = $"battery level: {battery}%";
        }