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

时间:2016-10-24 20:59:58

标签: c# windows bluetooth-lowenergy

我遇到了来自Windows 10蓝牙低功耗(BLE)API的BluetoothLEAdvertisementDataSection.BluetoothLEAdvertisementDataSection class的问题。

如果我使用此代码检查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数据包的详细信息,建议您访问this great blog post

现在让'我说我已经宣布一个名为byte[]的{​​{1}}长度为29个字节。以下代码抛出异常:

myPayload

DataWriter writer = new DataWriter(); writer.WriteBytes(myPayload); myDataSection.Data = writer.DetachBuffer(); //throws ArgumentException 非常有帮助地建议

  

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

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

是的,当this answer没有帮助时,我感到非常沮丧。

1 个答案:

答案 0 :(得分:2)

这真的很难过......但实际上我错误地计算了我添加的字节数。 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            

...会工作得很好。