- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
This question和我的问题类似。但在我的情况下,我有不止一台设备想要为他们捕获更改事件。在字段级创建 GattCharacteristic 和 GattDeviceService 对象的实例解决了问题,但连接的设备数量应该是可变的。
var devices = await DeviceInformation.FindAllAsync(GattDeviceService.GetDeviceSelectorFromUuid(new Guid("00002000-0000-1000-8000-00805f9b34fb")), null);
for (int i = 0; i < devices.Count; i++)
{
GattDeviceService service= await GattDeviceService.FromIdAsync(devices[i].Id);
GattCharacteristic characteristic = service.GetCharacteristics(new Guid("00002001-0000-1000-8000-00805f9b34fb")).FirstOrDefault();
characteristic.ValueChanged += CounterCharacteristic_ValueChanged;
await characteristic.WriteClientCharacteristicConfigurationDescriptorAsync(GattClientCharacteristicConfigurationDescriptorValue.Notify);
}
如果我们像上面那样定义change事件一段时间后它停止运行。如何解决多台设备的问题?
最佳答案
在您的代码示例中,您添加了多个事件处理程序,这是您必须避免的事情。为了防止你可以这样做:
var devices = await DeviceInformation.FindAllAsync(GattDeviceService.GetDeviceSelectorFromUuid(new Guid("00002000-0000-1000-8000-00805f9b34fb")), null);
for (int i = 0; i<devices.Count; i++)
{
GattDeviceService service = await GattDeviceService.FromIdAsync(devices[i].Id);
GattCharacteristic characteristic = service.GetCharacteristics(new Guid("00002001-0000-1000-8000-00805f9b34fb")).FirstOrDefault();
await characteristic.WriteClientCharacteristicConfigurationDescriptorAsync(GattClientCharacteristicConfigurationDescriptorValue.Notify);
AddValueChangedHandler(characteristic);
}
private bool isValueChangedHandlerRegistered = false;//make this a field!
private void AddValueChangedHandler(GattCharacteristic selectedCharacteristic )
{
if (!isValueChangedHandlerRegistered)
{
selectedCharacteristic.ValueChanged += CounterCharacteristic_ValueChanged;
isValueChangedHandlerRegistered = true;
}
}
在你的eventHandler中你可以通过
区分不同的设备if (sender.Service.Device == bluetoothLeDevice_1)
{
//do something
}
if (sender.Service.Device == bluetoothLeDevice_2)
{
//do something
}
关于c# - 是否可以使 GattCharacteristic ValueChange 事件发生在多个设备上?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43247744/
我正在尝试使用 Adafruit Bluefruit LE(蓝牙 4 模块)与 arduino 通信,一切都已设置并配对等等,但我在 GattCharacteristic 上遇到了 ValueChan
我正在尝试连接到 BLE 设备,然后保持连接状态(因为我必须每秒写入大约 1 次特性。虽然我可以成功连接到设备,正如能够看到此日志 System.out.println("dev connected.
This question和我的问题类似。但在我的情况下,我有不止一台设备想要为他们捕获更改事件。在字段级创建 GattCharacteristic 和 GattDeviceService 对象的实例
我在获取特征的描述符时遇到问题,它总是返回 null。我的代码有一小段: public static final String CHARACTERISTIC_UPDATE_NOTIFICATION_D
我是一名优秀的程序员,十分优秀!