2017-06-04 3 views
0

Je suis un débutant BLE. J'utilise mon Raspberry Pi 3, exécutant Windows 10 Iot Core, pour envoyer des paquets de publicité. Lorsque vous envoyez uniquement les données fabricant, cela fonctionne parfaitement. Mais quand j'essaye d'envoyer des données dans la section de données, il me donne l'erreur suivante.Charge utile d'annonce non valide lors de l'utilisation de BluetoothLEAdvertisementDataSection dans la publicité

Les données ne sont pas valides. charge utile non valide publicité détectée

Voici le code

En utilisant seulement Fabricant de données

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(); 
    } 

En utilisant la section des données ainsi que du fabricant de données

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(); 
    } 

Cela jette exception des données non valides.

S'il vous plaît laissez-moi savoir si je fais quelque chose de mal.

Toute aide serait appréciée.

Répondre

1

La raison de cette exception est que la longueur de la charge utile de l'annonce dépasse la limite (l'état officiel est de ~ 20 octets). Vous pouvez vérifier here. Selon mes tests, la longueur maximale de la charge utile de l'annonce est de 25 octets, y compris BluetoothLEManufacturerData et BluetoothLEAdvertisementDataSection.

+0

Merci pour votre réponse. Je ne pense pas que la longueur est le problème. J'ai vérifié ce [link] (https://docs.microsoft.com/en-us/uwp/api/windows.devices.bluetooth.advertisement.bluetoothleadvertisementpublisher), il mentionne les types de publicité qui sont réservés par le système. J'ai mis un type différent de ceux-ci, et cela a fonctionné. – shashwat12

+0

Quel type définissez-vous? Et combien d'octets envoyez-vous? –

+0

Le type était 0x66, et j'ai gardé les mêmes données. "Shashwat" dans les données du fabricant et "Hello Shashwat" pour les données de type 0x66 dans la section de données. – shashwat12