微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

从蓝牙 BLE 设备检索值

如何解决从蓝牙 BLE 设备检索值

在我的 windows 窗体应用程序中,我开始枚举设备列表,如下所示:

    DeviceWatcher deviceWatcher =
                Deviceinformation.CreateWatcher(
                        BluetoothLEDevice.GetDeviceSelectorFromPairingState(false),requestedProperties,DeviceinformationKind.AssociationEndpoint);
        
    // Register event handlers before starting the watcher.
    // Added,Updated and Removed are required to get all nearby devices
    deviceWatcher.Added += DeviceWatcher_Added;

    // EnumerationCompleted and Stopped are optional to implement.
    deviceWatcher.EnumerationCompleted += DeviceWatcher_EnumerationCompleted;
    deviceWatcher.Stopped += DeviceWatcher_Stopped;

    // Start the watcher.
    deviceWatcher.Start();

找到设备后,我将按如下方式检索服务和特征:

    BluetoothLEDevice btdev;
    List<Deviceinformation> lst = new List<Deviceinformation>();
    GattCharacteristic ch;
    private async void DeviceWatcher_Added(DeviceWatcher sender,Deviceinformation args)
    {
        if (args.Name == "Bluno")
        {
            btdev = await BluetoothLEDevice.FromIdAsync(args.Id);
            GattDeviceServicesResult result = await btdev.GetGattServicesAsync();
            Guid customGuid = new Guid("0000dfb0-0000-1000-8000-00805f9b34fb");
            foreach (GattDeviceService service in result.Services)
            {
                if (customGuid == service.Uuid)
                {
                    GattcharacteristicsResult cresult = await service.GetcharacteristicsAsync();
                    ch = cresult.characteristics.Where(x => x.Uuid == new Guid("0000dfb1-0000-1000-8000-00805f9b34fb")).FirstOrDefault();
                    ch.ValueChanged += Ch_ValueChanged;
                }
            }
        }
    }

问题在于,即使 BLE 设备每秒持续发送多个值,它也不会触发 ValueChanged 事件。 感谢帮助

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。