在广告中使用BluetoothLEAdvertisementDataSection时,广告有效负载无效

时间:2017-06-04 20:04:00

标签: c# bluetooth-lowenergy windows-10-universal beacon

我是BLE新手。我正在使用运行Windows 10 Iot Core的Raspberry Pi 3来发送一些广告包。

仅发送制造商数据时,它完全正常。但是当我尝试在数据部分中发送数据时,它会给我以下错误。

  

数据无效。检测到无效的广告有效负载

这是代码

仅使用制造商数据

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();
    }

使用数据部分和制造商数据

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();
    }

这会抛出无效数据异常。

如果我做错了,请告诉我。

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:1)

此异常的原因是广告有效负载长度超出限制(官方状态此值为~20字节)。您可以查看here

根据我的测试,广告有效负载的最大长度为25个字节,包括BluetoothLEManufacturerDataBluetoothLEAdvertisementDataSection