See materjal on loodud Tiigrihüppe Sihtasutuse programmi ProgeTiiger raames.
Nii master kui ka slave Bluetooth programmide juures tuleb faili algusesse lisada järgmine rida.
#include "BluetoothCheck.nxc"
Master seadme programmis tuleb lisada programmi algusesse globaalsed muutujad ja task maini sees peab esmalt käivitama Bluetooth ühenduse algatamise.
Näide. Master NXT kasutamine
//MASTER
#include "BluetoothCheck.nxc"
const byte BTconn=1;
const string SlaveNXTName = "NXT5";
task main()
{
//käivitatakse BT ühenduse kontroll ja/või loomine
//kui ühendamine ei õnnestunud siis väljutakse programmist
if(!BluetoothConnect(BTconn, SlaveNXTName)==NO_ERR)
Stop(TRUE);
//kuvame kasutajale ühe sekundi jooksul teate
Wait(SEC_1);
//siit järgneb programmikood mida soovitakse pärast
//Bluetooth ühnduse loomist käivitada
}
Slave NXT programmis pole vaja globaalseid muutujaid, kuid task maini sees asub Bluetooth-ühenduse kontroll. Fail BluetoothCheck.nxc on tehtud universaalne, st. seda saab kasutadanii masteri kui ka slave’i juures.
Näide. Slave NXT kasutamine
//SLAVE
#include "BluetoothCheck.nxc"
task main ()
{
//käivitatakse BT ühenduse kontroll
//kui ühendamine ei õnnestunud siis väljutakse programmist
if(!BluetoothCheck()==NO_ERR)
Stop(TRUE);
//siit järgneb programmikood mida soovitakse pärast
//Bluetooth ühnduse loomist käivitada
}
Näide. Bluetooth ühenduse abifail BluetoothCheck.NXC
//See on abifail BluetoothCheck.NXC, mida kasutatakse
//NXT-de vahelise ühenduse loomiseks ja kontrollimiseks
const int YhenduseOotamine = 7;
//alamprogramm NXTtootab kuvab kasutajale ootamise lõpuni jäävaid
//sekundeid ning üle ekraani liigub joon vasakult paremale,
//väljendades kasutajale seda, et NXT ikka töötab
task NXTtootab()
{
long Start=CurrentTick();
long Finish;
int i, j, k;
//muutuja speed määrab joone liikumise kiiruse
int speed=20;
while(TRUE)
{
j++;
//k määrab joone lõpppunkti koordinaadi, joone pikkus 20px
k=j-20;
//i määrab joone alguspunkti koordinaadi
i=j%100;
k%=100;
//joone alguspunktid
PointOut(i, 25);
PointOut(i, 27);
PointOut(i, 29);
//joone lõpp-punktid
PointOut(k, 25, DRAW_OPT_CLEAR);
PointOut(k, 27, DRAW_OPT_CLEAR);
PointOut(k, 29, DRAW_OPT_CLEAR);
//ekraanil kuvatakse yhenduse loomise lõpuni jäävad sekundid
NumOut(50, LCD_LINE4, YhenduseOotamine-j/(1000/speed));
//oodatakse ajahetk speed, mis on joone liikumise kiirus
Wait(speed);
//arvutatakse välja seni kulunud alamprogrammi aeg
Finish = (CurrentTick()-Start)/1000;
//kui alamprogramm on käinud kauem kui programmi
//ootamine ette näeb, siis katkestatakse alamprogrammi töö
if(Finish>YhenduseOotamine)
{
ClearScreen();
break;
}
}
}
//Funktsioon Bluetooth paaristab master ja slave NXT-d
//seda funktsiooni kasutatakse MASTER NXT korral
int BluetoothConnect(int conn, string name)
{
//ühenduse loomiseks vajalik struct-muutuja
CommBTConnectionType args;
//Slave NXT nimi millega paaristatakse
args.Name = name;
//Bluetooth ühenduse pordi number
args.ConnectionSlot = conn;
//kas ühendame (TRUE) või mitte (FALSE)
args.Action = TRUE;
//kontrollitakse kas NXT on paaristatud, kui ei ole,
//siis käivitatakse alljärgneva if-lause esimene pool
if (!BluetoothStatus(conn) == NO_ERR)
{
//käivitatakse alamprogramm NXTtootab
StartTask(NXTtootab);
//ekraanil kuvatakse kiri Yhenduse loomine
TextOut(0, LCD_LINE1, "Yhenduse");
TextOut(0, LCD_LINE2, "loomine...");
//Bluetooth paaristamise loomine
SysCommBTConnection(args);
//ühenduse õnnestumiseks ootame 7 sekundit
Wait(YhenduseOotamine*1000);
//ühenduse loomine õnnestumise kohta kuvatakse teade
if (BluetoothStatus(conn) == NO_ERR)
{
TextOut(0, LCD_LINE1, "Yhendatud");
TextOut(0, LCD_LINE2, "edukalt! ");
TextOut(0, LCD_LINE3, name);
return NO_ERR;
}
//kui ühendumine ei õnnestunud, kuvatakse Yhenduses viga
else
{
ClearLine(LCD_LINE2);
TextOut(0, LCD_LINE1, "Yhenduses viga");
NumOut(0, LCD_LINE2, args.Result);
Wait(SEC_1);
return -1;
}
}
//kui ühendus oli juba olemas, kuvatakse Yhendus olemas
else
{
TextOut(0, LCD_LINE1, "Yhendus olemas");
TextOut(0, LCD_LINE2, BTConnectionName(conn));
return NO_ERR;
}
}
//alljärgnev protseduur kontrollib programmi käivitamisel,
//kas Bluetooth ühendus on initsialiseeritud
//seda funktsiooni kasutatakse SLAVE NXT korral
int BluetoothCheck()
{
//SLAVE korral on BTconn alati 0
const byte BTconn=0;
if (!BluetoothStatus(BTconn)==NO_ERR)
{
TextOut(0, LCD_LINE1, "Kaivita esimesena");
TextOut(0, LCD_LINE2, "teine NXT.");
Wait(SEC_3);
return -1;
}
else
{
return NO_ERR;
}
}