Utilisation d'un éditeur Nous allons utiliser le logiciel libre Gedit afin d'écrire nos programmes. Si vous êtes sous Debian ( ou debian-like ) et qu'il n'est pas installé, IL suffit de l'installer via cette commande : sudo apt-get install



Yüklə 0,51 Mb.
səhifə38/43
tarix04.01.2022
ölçüsü0,51 Mb.
#61490
1   ...   35   36   37   38   39   40   41   42   43
Messagerie maître/esclave

On va voir deux programme, un pour le maître, l'un pour l'esclave. Ces programmes de base vont vous apprendre comment un flux continu de messages rapides peut être géré par un réseau sans fil à deux NXT.

Le programme du maître vérifie d'abord si l'esclave est correctement connecté à la ligne 1 (la constante BT_CONN) à l'aide de la fonction BluetoothStatus(conn); puis construit et envoie des messages avec un préfixe M et un nombre croissant avec SendRemoteString(connqueuestring), tandis que l'on reçoit des messages de l'esclave avecReceiveRemoteString(queueclearstring) et affiche les données.

//MAÎTRE

 

#define BT_CONN 1



#define INBOX 1

#define OUTBOX 5

 

sub BTCheck(int conn){



if (!BluetoothStatus(conn)==NO_ERR){

TextOut(5,LCD_LINE2,"Error");

Wait(1000);

Stop(true);

}

}

 



task main(){

string in, out, iStr;

int i = 0;

BTCheck(BT_CONN); //check slave connection

while(true){

iStr = NumToStr(i);

out = StrCat("M",iStr);

TextOut(10,LCD_LINE1,"Master Test");

TextOut(0,LCD_LINE2,"IN:");

TextOut(0,LCD_LINE4,"OUT:");

ReceiveRemoteString(INBOX, true, in);

SendRemoteString(BT_CONN,OUTBOX,out);

TextOut(10,LCD_LINE3,in);

TextOut(10,LCD_LINE5,out);

Wait(100);

i++;


}

}

Le programme esclave est très similaire, mais utilise SendResponseString(queue,string) au lieu de SendRemoteString parce l'esclave doit pouvoir envoyer des messages seulement à son maître, sur la ligne 0.



//ESCLAVE

 

#define BT_CONN 1



#define INBOX 5

#define OUTBOX 1

 

sub BTCheck(int conn){



if (!BluetoothStatus(conn)==NO_ERR){

TextOut(5,LCD_LINE2,"Error");

Wait(1000);

Stop(true);

}

}

 



task main(){

string in, out, iStr;

int i = 0;

BTCheck(0); //teste la connexion avec l'esclave

while(true){

iStr = NumToStr(i);

out = StrCat("S",iStr);

TextOut(10,LCD_LINE1,"Slave Test");

TextOut(0,LCD_LINE2,"IN:");

TextOut(0,LCD_LINE4,"OUT:");

ReceiveRemoteString(INBOX, true, in);

SendResponseString(OUTBOX,out);

TextOut(10,LCD_LINE3,in);

TextOut(10,LCD_LINE5,out);

Wait(100);

i++;


}

}

Vous remarquerez que si un des programmes s'arrête, l'autre continuera à envoyer des messages avec un nombre croissant, sans savoir que tous les messages envoyés seront perdus, car personne ne l'écoute de l'autre côté. Pour éviter ce problème, nous pourrions prévoir un protocole plus fin, avec accusé de réception.




Yüklə 0,51 Mb.

Dostları ilə paylaş:
1   ...   35   36   37   38   39   40   41   42   43




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©muhaz.org 2024
rəhbərliyinə müraciət

gir | qeydiyyatdan keç
    Ana səhifə


yükləyin