2017-06-04 36 views
0

私はBLE初心者です。私はいくつかの広告パケットを送信するために、Windows 10のIOTコアを実行している私のラズベリーパイ3を使用しています。AdvertisementでBluetoothLEAdvertisementDataSectionを使用した場合、無効な広告ペイロード

メーカーデータのみを送信する場合、正常に動作します。しかし、データセクションでデータを送信しようとすると、次のエラーが表示されます。

データが無効です。無効な広告ペイロードはここ

を検出したメーカーのデータ

private void StartPublishWithDataSection() 
    { 
     string data = "SHASHWAT"; 
     DataWriter writer = new DataWriter(); 
     writer.WriteInt32(data.Length); 
     writer.WriteString(data); 
     var adv = new BluetoothLEAdvertisement(); 

     var manufacturerData = new BluetoothLEManufacturerData(
      0x0006, writer.DetachBuffer()); 

     adv.ManufacturerData.Add(manufacturerData); 

     DataWriter writer2 = new DataWriter(); 
     writer2.WriteString("Hello Shashwat"); 
     var dataSection = new BluetoothLEAdvertisementDataSection(); 
     dataSection.Data = writer2.DetachBuffer(); 
     adv.DataSections.Add(dataSection); 

     var publisher = new BluetoothLEAdvertisementPublisher(adv); 

     publisher.Start(); 
    } 

これは、無効なデータ例外がスローされますと一緒にデータ・セクションを使用した唯一のメーカーのデータ

private void StartPublish() 
    { 
     string data = "SHASHWAT"; 
     DataWriter writer = new DataWriter(); 
     writer.WriteInt32(data.Length); 
     writer.WriteString(data); 
     var adv = new BluetoothLEAdvertisement(); 

     var manufacturerData = new BluetoothLEManufacturerData(
      0x0006, writer.DetachBuffer()); 

     adv.ManufacturerData.Add(manufacturerData); 

     var publisher = new BluetoothLEAdvertisementPublisher(adv); 

     publisher.Start(); 
    } 

を使用してコード

です。

私が間違っているかどうか教えてください。

ご協力いただければ幸いです。

答えて

1

この例外の理由は、広告のペイロードの長さが制限を超えているためです(公式の状態では、この値は〜20バイトです)。 hereを確認することができます。

私のテストに基づいて、広告ペイロードの最大長はBluetoothLEManufacturerDataBluetoothLEAdvertisementDataSectionを含む25バイトです。

+0

ご回答ありがとうございます。私は長さが問題だとは思わない。私は[link](https://docs.microsoft.com/en-us/uwp/api/windows.devices.bluetooth.advertisement.bluetoothleadvertisementpublisher)を確認しましたが、システム予約されている広告タイプについて言及しています。私はこれらとは異なるタイプを設定していました。 – shashwat12

+0

どのようなタイプを設定していますか?そして、何バイトを送るのですか? –

+0

タイプは0x66でした。私はデータを同じにしました。製造業者データの「Shashwat」とデータセクションの0x66タイプのデータの「Hello Shashwat」。 – shashwat12

関連する問題