BluetoothLEAdvertisementWatcherがサービスデータのUUIDを返さない

ホイッフィー

UWPアプリケーションを作成しています。BluetoothLEAdvertisementWatcherメソッドを使用して、周囲のBLEデバイスから広告をキャプチャしています。これはすべて正常に機能し、BluetoothLEAdvertisementReceivedEventArgs .....をキャプチャすることで、デバイスのリストを作成できます。

private async void LockerAdv_Received(BluetoothLEAdvertisementWatcher sender, BluetoothLEAdvertisementReceivedEventArgs args)
{

    await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, async () => 
    {
        ServiceUuidsFound += args.Advertisement.ServiceUuids.Count;

        Adverts.Add(args);

ただし、広告データで運ばれるServiceData UUID(この場合、バッテリーサービスデータの場合は0x180f、独自のサービスデータの場合は0xb991)をキャプチャしたいと思います。

上記のように広告をキャプチャしてAdvertisement.ServiceUuids.Countを調べると、2つのServiceData UUIDが存在し、Nordic nRFアプリのようなアプリがそれらを見つけて表示していることがわかっていても、カウントは常にゼロです。

また、デバッガーを使用して実行を停止し、Advertisement.ServiceUuidsを調べると、キャプチャされていないように見え、以下に示すように確実にアクセスできませんスクリーンショットへのリンク

使ってみました

ScanningMode = BluetoothLEScanningMode.Active; 

そして

ScanningMode = BluetoothLEScanningMode.Passive; 

そしてそれは違いはありません。

最終的に私が望んでいるのは、アプリケーションに役立つデータが含まれているため、広告データからServiceDataを抽出できることですが、WindowsがUUIDの存在を報告しない場合は、関連付けられたデータを取得できないと確信しています。それ!!

だから、私が知る必要があるのは、私が何か間違ったことをしているということですか?それはWindows10の制限ですか(私は最新バージョンを使用しています)?それとも、使用しているDell Optiflexの問題ですか?

どんな助けでもありがたいことに受け取られるでしょう

GrooverFromHolland

あなたは間違ったことに気づいています。デバッガーとウォッチでは、深く掘り下げてネイティブビューを表示することはできません。必要なアイテムを最初にリストに入れてから、リストにアイテムが含まれているかどうか、さらにアイテムが多い他のコレクションが含まれているかどうかを確認できます。以下はその方法を示す例です。私はそれがすべてのアイテムをカバーしているわけではないと思います、それはあなた次第です:

    private async void OnAdvertisementReceivedAsync(BluetoothLEAdvertisementWatcher watcher,
                                               BluetoothLEAdvertisementReceivedEventArgs eventArgs)
    {
        //we have to stop the watcher to get the data from one advertising device only.           
        var device = await BluetoothLEDevice.FromBluetoothAddressAsync(eventArgs.BluetoothAddress);
        if (device != null)
        /* Check all advertisement items for null!
         * Not all of them are present!
         * Null check is not done in this example!*/
        {
            var TimeStamp = eventArgs.Timestamp.DateTime;
            var LocalName = eventArgs.Advertisement.LocalName;
            var Name = device.Name;
            var BleAdress = eventArgs.BluetoothAddress;//ulong
            var Rssi = eventArgs.RawSignalStrengthInDBm.ToString();
            var ConnectionStatus = device.ConnectionStatus;
            var Access = device.DeviceAccessInformation.CurrentStatus;
            /* Shows advertising flags:
                  LimitedDiscoverableMode = 1,
                  GeneralDiscoverableMode = 2,
                  ClassicNotSupported = 4,
                  DualModeControllerCapable = 8,
                  DualModeHostCapable = 16.
             */
            var flags = eventArgs.Advertisement.Flags.ToString();
            var AdvNumberOfDataSections = eventArgs.Advertisement.DataSections.Count;
            /*AdvDataSections contains the advertisement data */
            List<BluetoothLEAdvertisementDataSection> AdvDataSections = new List<BluetoothLEAdvertisementDataSection>();
            foreach (var item in eventArgs.Advertisement.DataSections)
            {
                AdvDataSections.Add(item);
            }
            List<BluetoothLEManufacturerData> AdvManufacturerData = new List<BluetoothLEManufacturerData>();
            foreach (var item in eventArgs.Advertisement.ManufacturerData)
            {
                AdvManufacturerData.Add(item);
            }
            List<GattDeviceService> ServicesList = new List<GattDeviceService>();
            var services = await device.GetGattServicesAsync(BluetoothCacheMode.Uncached);
            if (services != null)
            {
                foreach (var item in services.Services)
                {
                    ServicesList.Add(item);
                }
            }
        }
      /* Start the watcher again to get other devices or missing services or data */
    }

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Webサービスが正しい形式でデータを返さない

分類Dev

AngularJSがサービスからJSONデータを返さない

分類Dev

残りのWebサービスが結果を返さない

分類Dev

適切なデータを返さないサービスからデータを返す

分類Dev

フォルダの子を取得するDropboxv2 Webサービスが、フォルダの「サイズ」メタデータを返さない

分類Dev

Ionic 4のAPIサービスからデータを返さないのはなぜですか?

分類Dev

PHPの単純なXMLパーサーがデータを返さない

分類Dev

インデックスデータの行サイズが実際のサイズを返さない?

分類Dev

wmiクエリが特定のサーバーのデータを返さない

分類Dev

Angularjs $ http.getサービスが呼び出し元のコントローラー関数にデータを返さない

分類Dev

サービスがデータを返していません

分類Dev

PHPRESTサービスが正しい応答を返さない

分類Dev

サービスデータが更新されていないAngular

分類Dev

415を返すREST Webサービス-サポートされていないメディアタイプ

分類Dev

Angular 2HTTPサービスがpromiseを返さない

分類Dev

AngularJSサービス関数がpromiseを返さない

分類Dev

JavaBLEがサービスを返さない

分類Dev

C#WebAPIサービスデータが保持されない

分類Dev

Angularサービスデータが表示されない

分類Dev

Webサービスから返されたデータがテーブルに表示されないのはなぜですか?

分類Dev

SqliteDBがデータを返さない

分類Dev

Sqliteがデータを返さない

分類Dev

HttpClientがデータを返さない

分類Dev

IonicModalがデータを返さない

分類Dev

MySqlDataReaderがデータを返さない

分類Dev

laraveleloquentがデータを返さない

分類Dev

WebAudioAnalyzerがデータを返さない

分類Dev

Recyclerviewがデータを返さない

分類Dev

Laravelajaxがデータを返さない

Related 関連記事

  1. 1

    Webサービスが正しい形式でデータを返さない

  2. 2

    AngularJSがサービスからJSONデータを返さない

  3. 3

    残りのWebサービスが結果を返さない

  4. 4

    適切なデータを返さないサービスからデータを返す

  5. 5

    フォルダの子を取得するDropboxv2 Webサービスが、フォルダの「サイズ」メタデータを返さない

  6. 6

    Ionic 4のAPIサービスからデータを返さないのはなぜですか?

  7. 7

    PHPの単純なXMLパーサーがデータを返さない

  8. 8

    インデックスデータの行サイズが実際のサイズを返さない?

  9. 9

    wmiクエリが特定のサーバーのデータを返さない

  10. 10

    Angularjs $ http.getサービスが呼び出し元のコントローラー関数にデータを返さない

  11. 11

    サービスがデータを返していません

  12. 12

    PHPRESTサービスが正しい応答を返さない

  13. 13

    サービスデータが更新されていないAngular

  14. 14

    415を返すREST Webサービス-サポートされていないメディアタイプ

  15. 15

    Angular 2HTTPサービスがpromiseを返さない

  16. 16

    AngularJSサービス関数がpromiseを返さない

  17. 17

    JavaBLEがサービスを返さない

  18. 18

    C#WebAPIサービスデータが保持されない

  19. 19

    Angularサービスデータが表示されない

  20. 20

    Webサービスから返されたデータがテーブルに表示されないのはなぜですか?

  21. 21

    SqliteDBがデータを返さない

  22. 22

    Sqliteがデータを返さない

  23. 23

    HttpClientがデータを返さない

  24. 24

    IonicModalがデータを返さない

  25. 25

    MySqlDataReaderがデータを返さない

  26. 26

    laraveleloquentがデータを返さない

  27. 27

    WebAudioAnalyzerがデータを返さない

  28. 28

    Recyclerviewがデータを返さない

  29. 29

    Laravelajaxがデータを返さない

ホットタグ

アーカイブ