コード例 #1
0
        private async Task <Characteristic> ConvertCharacteristic(CBCharacteristic nativeCharacteristic)
        {
            var device = nativeCharacteristic.Service.Peripheral;

            device.DiscoveredDescriptor += device_DiscoveredDescriptor;

            device.DiscoverDescriptors(nativeCharacteristic);
            await Task.Run(() => _descriptorDiscovered.WaitOne(TimeSpan.FromSeconds(10)));

            device.DiscoveredDescriptor -= device_DiscoveredDescriptor;
            _descriptorDiscovered.Reset();

            var characteristic = new Characteristic()
            {
                Id                   = BluetoothConverter.ConvertBluetoothLeUuid(nativeCharacteristic.UUID.Uuid),
                Descriptors          = nativeCharacteristic.Descriptors.Select(ConvertDescriptor).ToList(),
                NativeCharacteristic = nativeCharacteristic
            };

            foreach (var descriptor in characteristic.Descriptors)
            {
                descriptor.Characteristic = characteristic;
            }
            return(characteristic);
        }
コード例 #2
0
 private Descriptor ConvertDescriptor(CBDescriptor nativeDescriptor)
 {
     return(new Descriptor
     {
         Id = BluetoothConverter.ConvertBluetoothLeUuid(nativeDescriptor.UUID.Uuid),
         NativeDescriptor = nativeDescriptor
     });
 }
 private async Task SendMessage()
 {
     try
     {
         await _bluetoothLeService.WriteCharacteristicValue(_characteristic, BluetoothConverter.ConvertHexString(this.WriteText));
     }
     catch (Exception ex)
     {
     }
 }
コード例 #4
0
        private async Task MapDevice(Device device, CBPeripheral nativeDevice)
        {
            nativeDevice.DiscoveredService += nativeDevice_DiscoveredService;

            nativeDevice.DiscoverServices();
            await Task.Run(() => _servicesDiscovered.WaitOne(TimeSpan.FromSeconds(10)));

            nativeDevice.DiscoveredService -= nativeDevice_DiscoveredService;
            _servicesDiscovered.Reset();

            foreach (var cbService in nativeDevice.Services)
            {
                nativeDevice.DiscoveredCharacteristic += nativeDevice_DiscoveredCharacteristic;

                nativeDevice.DiscoverCharacteristics(cbService);
                await Task.Run(() => _characteristicsDiscovered.WaitOne(TimeSpan.FromSeconds(10)));

                nativeDevice.DiscoveredCharacteristic -= nativeDevice_DiscoveredCharacteristic;
                _characteristicsDiscovered.Reset();

                var service = new Service()
                {
                    Id              = BluetoothConverter.ConvertBluetoothLeUuid(cbService.UUID.Uuid),
                    Device          = device,
                    Characteristics = new List <Characteristic>()
                };

                foreach (var cbCharacteristic in cbService.Characteristics)
                {
                    var characteristic = await ConvertCharacteristic(cbCharacteristic);

                    characteristic.Service = service;
                    service.Characteristics.Add(characteristic);
                }
                service.Device = device;
                device.Services.Add(service);
            }
        }
コード例 #5
0
 public async Task ReadCharacteristic()
 {
     _readValue = BluetoothConverter.ByteArrayToString(_bluetoothSmartService.ReadCharacteristic(_characteristic));
 }