呼び出されることはありませんので、私はBLEデバイスに私のC#のWPFプログラムを接続しようと、これはデバイスに接続するためのコードです:のC#のBluetooth LE - 設定エラーを書く - にValueChanged
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.
}
}
ライン
それが意味することになっていただきました!私はどこにも見つけることができませんでしたステータス=はProtocolError、はProtocolError = 3 :Debug.WriteLine($"Characteristics write result: status={result.Status}, protocolError={result.ProtocolError}"
は出力を作成します 特性結果を書き込みます。効果はメソッドの特性です.ValueChangedは呼び出されません。
特性を構成するためには、もっと多くのことを行う必要がありますか?なぜメソッドが呼び出されないのか、そのエラーメッセージが何を意味するのか、誰にも分かりません。
ありがとうございます。
このリンクは質問に答えるかもしれないが、ここでは答えの重要な部分が含まれており、参考のためにリンクを提供することをお勧めします。リンクされたページが変更された場合、リンクのみの回答は無効になります。 - [レビューから](レビュー/低品質の投稿/ 17707088) –
こんにちはEriawan、私は不可欠な情報が** CoInitializeSecurity **を呼び出すことだと思います。それだけで問題を解決することができます。この回答を否定すると、他の人が間違った解決策に費やす可能性があります。 –