我试图为一个Eddystone信标做广告,但是我的代码在ArgumentException上的advertisementData.Data上失败了
值不属于预期范围。
对发生了什么有什么想法吗?
// ...
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();发布于 2016-02-19 14:43:21
最有可能的是,您正试图容纳比BLE数据包所允许的更多的字节。最大大小为32个字节,但这包括:
如果您只广播了一个区段,那么该部分的实际有效负载只剩下27个字节。
https://stackoverflow.com/questions/35320586
复制相似问题