1

我正在尝试订阅我的 Adafruit 板的通知功能以获取一些数据。设备成功连接到我的 c# 应用程序。但是,当我尝试执行此操作时:

await characteristic.WriteClientCharacteristicConfigurationDescriptorAsync(GattClientCharacteristicConfigurationDescriptorValue.Notify); 

我得到一个System.ObjectDisposedException对象已关闭。我不知道为什么会发生这种情况......

董事会不断写信给我的应用程序,这会是一个问题吗?我只能在板子开始写之前写一个客户特征描述符吗?或者错误是由其他原因引起的?

该板与 Adafruit 手机应用程序完美配合。

var tmp = await characteristic.WriteClientCharacteristicConfigurationDescriptorAsync(GattClientCharacteristicConfigurationDescriptorValue.Notify);                            
if (tmp == GattCommunicationStatus.Success) 
{ 
    Console.WriteLine("Subscribed"); 
    characteristic.ValueChanged += characteristicValueChanged; 
    break; 
}                            
else 
{ 
    Console.WriteLine(device.ConnectionStatus + " : " + tmp); 
}
4

3 回答 3

2

我在连接到 O6 设备的 UWP 代码中遇到了类似的问题。@GrooverFromHolland 的解决方案对我不起作用。在连接代码中起作用的是较早的。而不是这样的

var result = await DiscoveredBluetoothLEDevice.GetGattServicesAsync();

或这个

var result = await DiscoveredBluetoothLEDevice.GetGattServicesForUuidAsync(gattServiceGuid);

尝试这个

var result = await DiscoveredBluetoothLEDevice.GetGattServicesAsync(BluetoothCacheMode.Uncached);

或这个

var result = await DiscoveredBluetoothLEDevice.GetGattServicesForUuidAsync(gattServiceGuid, BluetoothCacheMode.Uncached);
于 2018-04-25T08:42:30.397 回答
0

在某些windows版本上我遇到了同样的问题,不知道是哪个版本。解决方案是让所有 BLE 对象成为我的应用程序中的一个字段,这样它们就不会受到垃圾收集器的影响。似乎事情被无故处理掉了。

于 2018-04-13T17:08:28.987 回答
0

我有同样的例外,但在使用 BLE 时在 python 中。解决方案只是在我的蓝牙设置中“忘记设备”,然后再次运行该程序。希望在我尝试之前节省您的时间!

于 2021-04-13T08:49:57.777 回答