public BleMoCoBusCommService(Ble.IDevice device, Ble.IAdapter adapter) { Debug.WriteLine("Create BleMoCoBusCommService"); _device = device; _adapter = adapter; _adapter.DeviceConnected += AdapterOnDeviceConnected; _adapter.DeviceDisconnected += AdapterOnDeviceDisconnected; }
public void Initialize_BT() { foundDev = new List<IDevice>(); var a = new Robotics.Mobile.Core.Bluetooth.LE.Adapter(); App.SetAdapter(a); Main_Adapter = App.Adapter; Main_Adapter.DeviceDiscovered += (object sender, DeviceDiscoveredEventArgs e) => { Console.WriteLine(String.Format("Device found {0}", e.Device.Name)); Console.WriteLine(String.Format("Name: {0} {1} {2} {3}", e.Device.Name, e.Device.State.ToString(), e.Device.ID.ToString(), e.Device.NativeDevice.ToString())); }; /* Main_Adapter.DeviceDiscovered += (object sender, DeviceDiscoveredEventArgs e) => { Console.WriteLine(String.Format("Device found {0}", e.Device.Name)); };*/ }
private void prepareAdapter() { adapter = App.Adapter; adapter.DeviceConnected += (s, e) => { Loading = false; PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("Loading")); BleDevice = e.Device; BleDevice.ServicesDiscovered += (se, ea) => { Device.BeginInvokeOnMainThread(async() => { foreach (var service in BleDevice.Services) { switch (service.Name) { case "TI SensorTag Barometer": sensors.Add(new Sensor(adapter, BleDevice, service)); PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("Sensors")); await Task.Delay(3000); break; case "TI SensorTag Humidity": sensors.Add(new Sensor(adapter, BleDevice, service)); PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("Sensors")); await Task.Delay(3000); break; case "TI SensorTag Infrared Thermometer": sensors.Add(new Sensor(adapter, BleDevice, service)); PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("Sensors")); await Task.Delay(3000); break; } } }); }; BleDevice.DiscoverServices(); }; }
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(); }
public BluetoothService_Android() { Adapter = new Robotics.Mobile.Core.Bluetooth.LE.Adapter(); }
public static void SetAdapter(ble.IAdapter adapter) { Adapter = adapter; }