Windows 10 API中的蓝牙低功耗广告数据限制

我在Windows 10蓝牙低功耗(BLE)API中遇到BluetoothLEAdvertisementDataSection.BluetoothLEAdvertisementDataSection类问题。

如果我使用此代码检查IBuffer成员Data的长度:

  var myDataSection = new BluetoothLEAdvertisementDataSection(); Debug.WriteLine($"Data Capacity: {myDataSection.Data.Capacity}"); //Looks like SO needs to update for C# 6.0 

我得到了预期的结果:

数据容量:29

有关BLE数据包的更多信息,我build议访问这个伟大的博客文章 。

现在让我们说我已经声明了一个名为myPayloadbyte[] myPayload是29个字节。 以下代码引发exception:

  DataWriter writer = new DataWriter(); writer.WriteBytes(myPayload); myDataSection.Data = writer.DetachBuffer(); //throws ArgumentException 

ArgumentException非常有帮助地表明这一点

“价值不在预期范围内”。

事实上,任何20+字节的 myPayload大小myPayload导致相同的错误。 如果我把它做成19个字节 ,然而,我没有错误。

是的,当这个答案没有帮助时,我非常沮丧。

这真的很伤心,但我实际上错误地计算了我添加的字节数。 29个字节确实有效。 30没有。 这不是一个API问题。

  static readonly byte[] myPayload = {0x01,0x23,0x45,0x67,0x89,0xAB,0xCD,0xEF, //8 bytes 0x01,0x23,0x45,0x67,0x89,0xAB,0xCD,0xEF, //8 bytes 0x01,0x23,0x45,0x67,0x89,0xAB,0xCD,0xEF, //8 bytes 0x00,0x00,0x00,0x00,0x00}; //5 bytes Total:29 bytes 

…会工作得很好。