Emitter

Constructeur

Emitter (string NodeName)

Construit un nouvel UObject Emetteur, correspondant au périphérique Emitter de Webots. Le paramètre "NodeName" correspond à la valeur du champs "Name", dans le noeud Emitter de Webots.

Functions

send (UrbiVariable)

Ajoute à la file de l'emetteur un paquet correspondant à la donnée contenue dans la variable Urbi UrbiVariable, plus quelques informations sur le type de la variable de manière à ce que celle ci puissent ensuite etre reconstruite par le receveur. Les paquets enfilé sont ensuite envoyés à des receveurs potentiels (et enlevés de la file de l'emetteur), au rythme spécifié par le champs "baudRate" du noeud Emitter de Webots. La fonction retourne 0 si elle réussi. Si la file est actuellement pleine, alors 1 est retourné et le paquet n'est pas ajouté a la file. La file est considérée comme pleine lorsque la somme des octets de tous les paquets enfilés dépasse la taille de buffer spécifiée dans le champs "bufferSize" du noeud Emitter de Webots. NB: il est possible d'emettre tous les types de variable Urbi possible SAUF les variables de type UObject.

Exemple:

var1 = "hello world";
emitter.send (var1);
// va émettre 13 octets:
// '"','h','e','l','l','o',' ','w','o','r','l','d','"'
// Remarquez que les guillemets autour de la chaine sont aussi envoyés
// de manière à ce que le receveur soit capable de reconaitre que la
// données reçue est de type chaine de caractères.
var2=BIN 11;hello world
emitter.send (var2),
// Va émettre 20 octets: 5 octets pour l'entête BIN, 2 octets pour
// la taille de la données contenue, 1 octet pour le ";", et 11 octets
// correspondants à la donnée brute (hello world). L'entête de la variable BIN
// peut augmenter si vous rajoutez des informations dedans, comme par exemple
// pour les variables contenant des images).

Remarquez que si vous attribuez la valeur "true" (vrai) à l'attribut "rawMode", alors le comportement de la fonction send () change. Il s'agit du mode données brute. Dans ce mode vous ne pouvez transmettre que des variables de type BIN, et seulement les données dans la variable BIN seront transmises (sans les informations de type).

var2=BIN 11;hello world
emitter.rawMode = true;
emitter.send (var2);
/// Va emettre 11 octets:
// 'h','e','l','l','o',' ','w','o','r','l','d'
// ie seulement les octets des données contenues dans la variable BIN
// sont transmises.
	  

Veuillez noter que comme aucune information de type n'est envoyée en mode donnée brute, alors un receveur Urbi (Receiver) ne sera pas capable de décoder ce qu'il reçoit pour reconstruire les variables URBI.

Cette fonction utilise les fonctions de Webots suivantes:

int emitter_send_packet  (DeviceTag emitter, const void *data, int size);
	  

Attributs

bufferSize

Permissions: lecture, écriture.

Type: float.

Description: Taille en octets du buffer d'émission. Elle correspond à la valeur spécifiée dans le champs "bufferSize" qui se trouve dans le noeud Emitter du monde Webots. La taille du buffer indique le nombre maximal d'octets de données que la file de l'emitteur peut contenir au total.

Obtenu avec la fonction de Webots suivante:

int emitter_get_buffer_size  (DeviceTag emitter);
	  
channel

Permissions: lecture, écriture.

Type: float.

Description: Canal d'émission. Changez le pour modifier le canal sur lequel emet le périphérique Emitter. Normalement un emetteur ne peut envoyer uniquement qu'à des receveur qui se trouvent sur le même canal. Cependant si vous assignez la valeur -1 à "channel", alors l'emetteur broadcaste les données sur tous les canaux.

Obtenu avec les fonctions de Webots suivantes:

void emitter_set_channel  (DeviceTag emitter, int channel);
int emitter_get_channel (DeviceTag emitter);
	  
range

Permissions: lecture, écriture.

Type: float.

Description: Portée de l'emetteur. Changez la pour modifier la portée du périphérique Emitter, c'est à dire modifier la distance jusqu'à laquelle il peut emettre. La portée d'émission ne peut dépasser la valeur défini dans le champs "maxRange" du noeud Emitter de Webots.

Obtenu et assigné avec les fonctions de Webots suivantes:

void emitter_set_range  (DeviceTag emitter, float range);
float emitter_get_range (DeviceTag emitter);
	  
rawMode

Permissions: lecture, écriture.

Type: float.

Description: Assignez "true" (vrai) à cet attribut pour passer en mode données brutes. Reportez vous à la documentation de la fonction receive () pour plus d'information.