public BleMoCoBusCommService(Ble.IDevice device, Ble.IAdapter adapter)
        {
            Debug.WriteLine("Create BleMoCoBusCommService");
            
            _device = device;
            _adapter = adapter;

            _adapter.DeviceConnected += AdapterOnDeviceConnected;
            _adapter.DeviceDisconnected += AdapterOnDeviceDisconnected;
        }
        private void AdapterOnDeviceDisconnected(object sender, Ble.DeviceConnectionEventArgs e)
        {
            Debug.WriteLine("AdapterOnDeviceDisconnected 1");

            if (e.Device.ID != _device.ID)
                return;

            Debug.WriteLine("AdapterOnDeviceDisconnected 2");

            _device = e.Device;

            OnDisconnect();
        }
        private void AdapterOnDeviceConnected(object sender, Ble.DeviceConnectionEventArgs e)
        {
            Debug.WriteLine("AdapterOnDeviceConnected 1");

            if (e.Device.ID != _device.ID)
                return;

            Debug.WriteLine("AdapterOnDeviceConnected 2");

            _device = e.Device;
            _device.ServicesDiscovered += DeviceOnServicesDiscovered;
            _device.DiscoverServices();
        }
Esempio n. 4
0
        public Sensor(ble.IAdapter adapter, ble.IDevice device, ble.IService service)
        {
            BleDevice = device;
            Loading   = true;
            PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("Loading"));
            this.service = service;
            switch (service.Name)
            {
            case "TI SensorTag Barometer":
                ImageId = "Pressure";
                break;

            case "TI SensorTag Humidity":
                ImageId = "Humidity";
                break;

            case "TI SensorTag Infrared Thermometer":
                ImageId = "Thermometer";
                break;
            }
            service.CharacteristicsDiscovered += async(s, e) =>
            {
                foreach (var characteristic in service.Characteristics)
                {
                    if (characteristic.Name.Contains("Data"))
                    {
                        dataChar = await characteristic.ReadAsync();

                        await Task.Delay(1000);
                    }
                    else if (characteristic.Name.Contains("On/Off"))
                    {
                        onOffChar = await characteristic.ReadAsync();

                        onOffChar.Write(new byte[] { 0x01 });
                        await Task.Delay(1000);
                    }
                    else if (characteristic.Name.Contains("Sample Rate"))
                    {
                        sampleChar = await characteristic.ReadAsync();

                        await Task.Delay(1000);
                    }
                }
                if (dataChar.CanUpdate)
                {
                    valueUpdatedHandler = (se, ea) =>
                    {
                        Data = Decode(dataChar);
                        PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("Data"));
                    };
                    dataChar.ValueUpdated += valueUpdatedHandler;
                    dataChar = await dataChar.ReadAsync();

                    await Task.Delay(2000);

                    dataChar.StartUpdates();
                    Loading = false;
                    PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("Loading"));
                }
            };
            service.DiscoverCharacteristics();
        }