我正在尝试订阅Adafruit董事会的Notify功能以获取一些数据。设备成功连接到我的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);
}
答案 0 :(得分:1)
我在连接到O6设备的UWP代码中遇到了类似的问题。 @ GrooverFromHolland的solution对我不起作用。在连接代码中之前的工作是什么。而不是像这样的东西
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);
答案 1 :(得分:0)
在某些Windows版本上我遇到了同样的问题,不知道它是哪个版本。 解决方案是让所有BLE对象成为我的应用程序中的一个字段,这样它们就不会受到垃圾收集器的影响。事情似乎是没有理由的。
答案 2 :(得分:0)
我有同样的例外,但在使用 BLE 时在 python 中。解决方案只是在我的蓝牙设置中“忘记设备”,然后再次运行程序。 希望能为您节省我尝试之前花费的时间!