C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: Bluetoothとの接続について


(過去ログ 172 を表示中)

[トピック内 4 記事 (1 - 4 表示)]  << 0 >>

■99015 / inTopicNo.1)  Bluetoothとの接続について
  
□投稿者/ 未熟者 (1回)-(2022/01/28(Fri) 17:31:03)
未熟者 さんの Web サイト

分類:[C#] 

現在 C# にて GattCharacteristic を使って Bluetooth との通信を行っています。
どのサイトにも同じような流れで値を取ると書いており、実際に Bluetooth 側から送られてくるデータは取得出来ております。

// マイクロソフトのサンプルコード通りで取得出来た。
characteristic.ValueChanged += Characteristic_ValueChanged;
void Characteristic_ValueChanged(GattCharacteristic sender,
GattValueChangedEventArgs args)
{
var reader = DataReader.FromBuffer(args.CharacteristicValue)
}

今回質問したいのは、GattCharacteristic クラスの WriteValueAsync メソッドについて
ある機器の説明書にコマンドを投げると値を返すと書いており WriteValueAsync メソッドにて値を投げております。
具体的には、値を投げるとシリアル番号を取得するようになっています。

ただ、値を投げても Characteristic_ValueChanged イベントでは値を取得出来ません。
確かに値が変わってる訳ではなく、ただシリアルを取るだけなので、Characteristic_ValueChanged では拾えない?のかもしれません。
WriteValueAsync メソッドでの機器からの返答はどの様に拾えばよいのでしょうか?
投げる値を間違えて、Characteristic_ValueChanged で拾えていないだけでしょうか?

本当に駄文で申し訳ございませんが、どうぞよろしくお願い致します。
引用返信 編集キー/
■99016 / inTopicNo.2)  Re[1]: Bluetoothとの接続について
□投稿者/ 未熟者 (2回)-(2022/01/28(Fri) 18:20:26)
未熟者 さんの Web サイト
No99015 (未熟者 さん) に返信
> 現在 C# にて GattCharacteristic を使って Bluetooth との通信を行っています。
> どのサイトにも同じような流れで値を取ると書いており、実際に Bluetooth 側から送られてくるデータは取得出来ております。
>
> // マイクロソフトのサンプルコード通りで取得出来た。
> characteristic.ValueChanged += Characteristic_ValueChanged;
> void Characteristic_ValueChanged(GattCharacteristic sender,
> GattValueChangedEventArgs args)
> {
> var reader = DataReader.FromBuffer(args.CharacteristicValue)
> }
>
> 今回質問したいのは、GattCharacteristic クラスの WriteValueAsync メソッドについて
> ある機器の説明書にコマンドを投げると値を返すと書いており WriteValueAsync メソッドにて値を投げております。
> 具体的には、値を投げるとシリアル番号を取得するようになっています。
>
> ただ、値を投げても Characteristic_ValueChanged イベントでは値を取得出来ません。
> 確かに値が変わってる訳ではなく、ただシリアルを取るだけなので、Characteristic_ValueChanged では拾えない?のかもしれません。
> WriteValueAsync メソッドでの機器からの返答はどの様に拾えばよいのでしょうか?
> 投げる値を間違えて、Characteristic_ValueChanged で拾えていないだけでしょうか?
>
> 本当に駄文で申し訳ございませんが、どうぞよろしくお願い致します。
解決済み
引用返信 編集キー/
■99017 / inTopicNo.3)  Re[1]: Bluetoothとの接続について
□投稿者/ furu (146回)-(2022/01/28(Fri) 20:06:51)
No99015 (未熟者 さん) に返信
> WriteValueAsync メソッドでの機器からの返答はどの様に拾えばよいのでしょうか?
まったくGattCharacteristicについて知識はありませんが
Writeに対しては単純にRead(ReadValueAsync)では駄目ですか?

引用返信 編集キー/
■99034 / inTopicNo.4)  Re[2]: Bluetoothとの接続について
□投稿者/ ぼーちゃん (33回)-(2022/02/01(Tue) 18:29:38)
自己解決かな?一応...

ValueChangedで値の変化の通知を受けるためには、
1. そのキャラスタリスティックがNotify(もしくはIndicate)をサポートしている
2. WriteClientCharacteristicConfigurationDescriptorAsyncメソッドでNotify(もしくはIndicate)を有効にしてあげる
の2つが必要です。

Notifyをサポートするかどうかは機器の仕様書で確認するか、characteristic.CharacteristicPropertiesのHasFlagで調べます。

https://docs.microsoft.com/ja-jp/windows/uwp/devices-sensors/gatt-client

Notifyをサポートしない場合は、ReadValueAsyncで任意のタイミングで読み取る必要があります


引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -