2017-04-20 11 views
0

UWPアプリで複数の広告を公開しようとしています。私は1つの出版社に2つのmanufactorデータを追加することができ、それらは送信されます。しかし、より多くのデータを公開したい場合、データは不可能です。これも可能ですか?UWPアプリで複数の広告を表示する

サンプルコードは、これまで:

var publisher = new BluetoothLEAdvertisementPublisher(); 
publisher.Advertisement.ManufacturerData.Add(CreateData("Test"); 
publisher.Advertisement.ManufacturerData.Add(CreateData("AnotherTest"); 
publisher.start(); 

BluetoothLEManufacturerData CreateData(string data) 
{ 
    var dataWriter = new DataWriter(); 
    dataWriter.WriteInt32(data.Length); 
    dataWriter.WriteString(data); 

    return new BluetoothLEManufacturerData(0xFFFE, dataWriter.DetachBuffer()); 
} 

は別のmanufactorデータを追加しようとしましたが、私は は、複数のBluetoothアダプタが、Windowsが第二のアダプターを開始していないよう試みた例外を取得します。 複数のWindows.Devices.Bluetooth.Advertisement.BluetoothLEAdvertisementPublisherも試してみましたが、それでもやりません。

答えて

1

複数のメーカーデータを1つのBluetoothLE Advertisementに入れることができます。ただし、広告のペイロードの最大長は31バイトであることに注意してください。

文献広告とSCAN応答データフォーマット(BLUETOOTH仕様バージョン4.0 [VOL 3]ページ375)

広告データとスキャン応答データのフォーマットを図 11.1に示されています。データは重要な部分と重要でない部分で構成されています。 重要な部分には、一連のAD構造が含まれています。各AD構造は、長さ値を含む1オクテットの長さフィールドと、長さオクテットのデータ フィールドとを有するものとする。 。データフィールドの最初のオクテットには、ADタイプフィールドが含まれています。データフィールドの残りの長さ - 1オクテットの内容は、ADタイプフィールドの値に依存し、ADデータと呼ばれる。重要でない部分は、必要に応じて広告とスキャン応答のデータを拡張し、すべて0のオクテットを含む とする。 enter image description here

BluetoothLEManufacturerData ADタイプが0xFFあるこれらのAD構造の一つです。
最初のメーカデータについてenter image description here

CreateData("Test")、その長さは12バイトであり、1(な長さ)+ 1(タイプ)+ 2(会社同上)+ 8(特定のデータ)です。また、第2メーカのデータでは、その長さは19(1 + 1 + 2 + 15)バイトです。これらの2つのメーカーデータでは、広告のペイロードはすでに31バイトです。そのため、別のメーカーデータを追加しようとすると例外が発生します。実際には、たとえばの代わりにCreateData("Test=")を使用して、日付に1文字を追加すると、Invalid advertisement payload detectedというエラーも発生します。

だから、をバッファー長が広告ペイロードに収まるようにしてください。長さが31バイト未満であれば、複数の製造元データを置くことができます。

var publisher = new BluetoothLEAdvertisementPublisher(); 
publisher.Advertisement.ManufacturerData.Add(CreateData("T")); 
publisher.Advertisement.ManufacturerData.Add(CreateData("A")); 
publisher.Advertisement.ManufacturerData.Add(CreateData("S")); 
publisher.start(); 
+0

ありがとうございます!ペイロードが31バイトを超えるか、または並列に複数の広告用ペイロードをブロードキャストする方法を知っていますか? – user7895198

+0

@ user7895198 [Bluetooth.Advertisement](https://msdn.microsoft.com/library/windows/apps/windows.devices.bluetooth.advertisement.aspx)は、Bluetooth Low Energy Advertisementビーコンに使用されます。大量のデータをブロードキャストするようには設計されていません。あなたの本当のシナリオは何か分かりません。あなたの実際のシナリオで新しい質問をすることをお勧めします。他の人があなたにいくつかの有用な提案を与えるかもしれません。 –

+0

ご返信ありがとうございます。元の記事で述べたように、しかし私は十分にはっきりしていなかったかもしれませんが、私は1つのUWPアプリから複数のBLE広告を同時に公開できるようにしたいと考えています。 – user7895198

関連する問題