J'essaie de connecter mon c programme # WPF à un dispositif BLE et c'est le code pour se connecter à l'appareil:C# Bluetooth LE - erreur de configuration écrire - ValueChanged jamais appelé
private async Task ConnectToWatcher(DeviceInformation deviceInfo) {
try {
// get the device
BluetoothLEDevice device = await BluetoothLEDevice.FromIdAsync(deviceInfo.Id);
// get the GATT service
Thread.Sleep(150);
var gattServicesResult = await device.GetGattServicesForUuidAsync(new Guid(RX_SERVICE_UUID));
service = gattServicesResult.Services[0];
// get the GATT characteristic
Thread.Sleep(150);
var gattCharacteristicsResult = await service.GetCharacteristicsForUuidAsync(new Guid(RX_CHAR_UUID));
characteristic = gattCharacteristicsResult.Characteristics[0];
// register for notifications
Thread.Sleep(150);
characteristic.ValueChanged += (sender, args) => {
Debug.WriteLine($"[{device.Name}] Received notification containing {args.CharacteristicValue.Length} bytes");
};
GattWriteResult result =
await characteristic.WriteClientCharacteristicConfigurationDescriptorWithResultAsync(GattClientCharacteristicConfigurationDescriptorValue.Notify);
Debug.WriteLine($"Characteristics write result: status={result.Status}, protocolError={result.ProtocolError}");
} catch (Exception ex) when ((uint)ex.HResult == 0x800710df) {
Debug.WriteLine("bluetooth error 1");
// ERROR_DEVICE_NOT_AVAILABLE because the Bluetooth radio is not on.
}
}
La ligne
Debug.WriteLine($"Characteristics write result: status={result.Status}, protocolError={result.ProtocolError}"
crée la sortie Caractéristiques écrire résultat: status = protocolError, protocolError = 3 Je ne pouvais pas trouver nulle part ce qui est censé vouloir dire. L'effet est la méthode caractéristique.ValueChanged n'est jamais appelé.
Dois-je en faire plus pour que la caractéristique soit configurée? Et quelqu'un a-t-il une idée de la raison pour laquelle la méthode n'est pas appelée ou de ce que signifie ce message d'erreur?
Merci beaucoup.
Bien que ce lien peut répondre à la question, il est préférable d'inclure les éléments essentiels de la réponse ici et de fournir le lien de référence. Les réponses à lien uniquement peuvent devenir invalides si la page liée change. - [Revue] (/ review/low-quality-posts/17707088) –
Bonjour Eriawan, je pense que l'essentiel est d'appeler ** CoInitializeSecurity **. cela seul apporte une solution au problème. En marquant cette réponse négative, vous pourriez faire en sorte que d'autres personnes passent leur temps sur de mauvaises solutions. –