首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >BluetoothLEAdvertisementDataSection (ArgumentException)

BluetoothLEAdvertisementDataSection (ArgumentException)
EN

Stack Overflow用户
提问于 2016-02-10 16:26:06
回答 1查看 340关注 0票数 3

我试图为一个Eddystone信标做广告,但是我的代码在ArgumentException上的advertisementData.Data上失败了

值不属于预期范围。

对发生了什么有什么想法吗?

代码语言:javascript
复制
// ...
using (var memoryStream = new MemoryStream())
{
    byte messageLengthByte = Convert.ToByte(message.Length);
    memoryStream.WriteByte(messageLengthByte);

    memoryStream.Write(message, 0, message.Length);

    fullMessage = memoryStream.ToArray();
}

while (fullMessage.Length < 32)
{
    byte[] newArray = new byte[fullMessage.Length + 1];
    fullMessage.CopyTo(newArray, 0);
    newArray[fullMessage.Length] = 0x00;
    fullMessage = newArray;
}

var writer = new DataWriter();
writer.WriteBytes(fullMessage);

var advertisementData = new BluetoothLEAdvertisementDataSection();
advertisementData.Data = writer.DetachBuffer(); // Error!
publisher.Advertisement.DataSections.Add(advertisementData);
publisher.Start();
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-02-19 14:43:21

最有可能的是,您正试图容纳比BLE数据包所允许的更多的字节。最大大小为32个字节,但这包括:

  • “标志”数据部分的3个字节,我认为这是强制性的,并且可能由Windows 10 BLE API自动设置
  • 对于每一个额外的节,1字节表示节的长度,1字节表示节的类型。

如果您只广播了一个区段,那么该部分的实际有效负载只剩下27个字节。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35320586

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档