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字节长,则不会出现错误。
是的,当这个答案没有帮助时,我非常沮丧。
这真的很悲哀…但实际上我算错了加的字节数。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
…