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

本文关键字:数据 低功耗 API Windows | 更新日期: 2023-09-27 18:14:37

我有一个问题与BluetoothLEAdvertisementDataSection。BluetoothLEAdvertisementDataSection类,来自Windows 10蓝牙低功耗(BLE) API。

如果我使用以下代码检查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数据包的更多信息,我建议访问这篇很棒的博客文章。

现在假设我声明了一个byte[],叫做myPayload,它有29字节长。下面的代码抛出一个异常:

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

ArgumentException非常有用地表明

"值不在预期范围内。"

实际上,myPayload 20+字节的任何大小都会导致相同的错误。但是,如果我将设置为19字节长,则不会出现错误。

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

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

这真的很悲哀…但实际上我算错了加的字节数。29字节可以工作。30则不然。

 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