我是BLE新手。我正在使用运行Windows 10 Iot Core的Raspberry Pi 3来发送一些广告包。
仅发送制造商数据时,它完全正常。但是当我尝试在数据部分中发送数据时,它会给我以下错误。
数据无效。检测到无效的广告有效负载
这是代码
仅使用制造商数据
private void StartPublish()
{
string data = "SHASHWAT";
DataWriter writer = new DataWriter();
writer.WriteInt32(data.Length);
writer.WriteString(data);
var adv = new BluetoothLEAdvertisement();
var manufacturerData = new BluetoothLEManufacturerData(
0x0006, writer.DetachBuffer());
adv.ManufacturerData.Add(manufacturerData);
var publisher = new BluetoothLEAdvertisementPublisher(adv);
publisher.Start();
}
使用数据部分和制造商数据
private void StartPublishWithDataSection()
{
string data = "SHASHWAT";
DataWriter writer = new DataWriter();
writer.WriteInt32(data.Length);
writer.WriteString(data);
var adv = new BluetoothLEAdvertisement();
var manufacturerData = new BluetoothLEManufacturerData(
0x0006, writer.DetachBuffer());
adv.ManufacturerData.Add(manufacturerData);
DataWriter writer2 = new DataWriter();
writer2.WriteString("Hello Shashwat");
var dataSection = new BluetoothLEAdvertisementDataSection();
dataSection.Data = writer2.DetachBuffer();
adv.DataSections.Add(dataSection);
var publisher = new BluetoothLEAdvertisementPublisher(adv);
publisher.Start();
}
这会抛出无效数据异常。
如果我做错了,请告诉我。
任何帮助都将不胜感激。
答案 0 :(得分:1)
此异常的原因是广告有效负载长度超出限制(官方状态此值为~20字节)。您可以查看here。
根据我的测试,广告有效负载的最大长度为25个字节,包括BluetoothLEManufacturerData
和BluetoothLEAdvertisementDataSection
。