Spolupráce více jednotek, Bluetooth komunikace
• párování přístrojů,
• zasílání zpráv,
• příjem a vyhodnocení zprávy.

KURZ: Příjem a vyhodnocení zprávy

Zprávy odeslané pomocí Bluetooth zařízení (popsáno v kapitole Zasílání zpráv pomocí Bluetooth) musí následně druhé připojené zařízení přijmout a vyhodnotit. Přijatá zpráva musí být nejprve uložena. Stejně jako jsou klasické dopisy při přijetí vhozeny do poštovní schránky, existuje i v programování robotické stavebnice schránka, která slouží k přijetí pomocí Bluetooth zasílané zprávy. Následně se vyhodnocuje, zda zpráva byla skutečně přijata je úspěšně připravena ke čtení. Postupně přijaté zprávy se ukládají do fronty, ve které čekají na zpracování. Po zpracování je pouze na uživateli, jak s nimi bude dále nakládáno. Zda budou smazány či nikoliv.

Přijímání zpráv V PROGRAMOVACÍCH PROSTŘEDÍCH

NXT-G

Blok pro příjem zpráv

Rozcestník


UMÍSTĚNÍ BLOKU

Programový blok FPMessageReadDragged Receive Message sloužící k příjmu zprávy pomocí Bluetooth nalezneme v paletě icon completeComplete > SensorHilight Sensor.

Bluetooth receive message

 

POPIS BLOKU

Blok FPMessageWriteDragged Receive Message obsahuje celkem devět konektorů pro propojení s dalšími bloky:

Mailbox Mailbox - schránka určená pro příjem zprávy, která je označována čísly 1-10.

TextIn Text in - zadaná hodnota datového typu Text sloužící k porovnání s hodnotou téhož datového typu přijatou pomocí Bluetooth.

NumberIn Number in - zadaná hodnota datového typu Number sloužící k porovnání s hodnotou téhož datového typu přijatou pomocí Bluetooth.

BooleanIn Logic in - zadaná hodnota datového typu Logic sloužící k porovnání s hodnotou téhož datového typu přijatou pomocí Bluetooth.

MessageReceived Message Received - hodnota logického datového typu vyjadřující, zda byla nebo nebyla přijata zpráva (zda je schránka (Mailbox) prázdná či nikoliv. Výsledkem je True (pravda) - zpráva byla přijata. Výsledkem je False (nepravda) - zráva nebyla přijata.

Boolean Yes/No - port, který vyjadřuje výsledek porovnání hodnoty nastavené jako parametr bloku a hodnoty přijaté ve zprávě pomocí Bluetooth.

Text Text out - výstup pro hodnoty datového typu Text.

Number Number out - výstup pro hodnoty datového typu Number.

Boolean Logic out - výstup pro hodnoty datového typu Logic.

 

PARAMETRY BLOKU

Bluetooth receive message vyber

Pomocí bloku Receive Message je možné přijímat zprávy v podobě textových informací (Text), číselných hodnot (Number) a hodnot True a False logického datového typu (Logic).

 
Bluetooth receive message block
 

Message: pole pro výběr typu příchozí zprávy (Text, Number nebo Logic).

Compare to: pole sloužící k zadání hodnoty, která má být porovnávána s hodnotou přijatou ve zprávě pomocí Bluetooth.

Mailbox: číselná hodnota označujcí číslo schránky, do které bude příchozí zpráva uložena.

RobotC

PŘÍKAZY PRO příjem zpráv pomocí bluetooth

Rozcestník


Příjem nové zprávy

Přijímání zpráv odesílaných pomocí Bluetooth se v programovacím prostředí RobotC provádí pomocí specifických příkazů a proměnných. Jakmile je zpráva přijata zařízením Bluetooth, je její 16 bitová hodnota, která nabývá rozsahu od -32 767 do 32 767, uložena do proměnné Message. Pokud je přijata hodnota, která je rovna 0, je tento výsledek vyhodnocen tak, že nebyla přijata žádná zpráva.

 
Message; //Promenna pro ulozeni 16 bitove hodnoty zpravy prijate pomoci Bluetooth.
 

Ověření přijetí nové zprávy

Během přijímání zpráv zasílaných pomocí Bluetooth budeme někdy potřebovat ověřit, zda byla zpráva úspěšně přijata či nikoliv. Ke zjištění této skutečnosti slouží příkaz cCmdMessageGetSize(), jehož parametrem je ID odesílané zprávy. Návratovou hodnotou je zde počet bitů úspěšně přijaté zprávy.

 
cCmdMessageGetSize(IDzpravy);
 

Ověření existence nezpracovaných zpráv

Pokud přijímáme během kratších časových intervalů více zpráv, tak se tyto zprávy ukládají do fronty. Příkazem bQueuedMsgAvailable(), jehož návratovou hodnotou je hodnota logického datového typu (True nebo False) můžeme zjistit, zda se ve frontě nacházejí nějaké zprávy ke zpracování. Příkaz nám tak umožní ověřit si skutečnost, zda nemáme ve frontě přijato více zpráv ještě předtím, než program automaticky přejde k přečtení poslední přijaté zprávy.

 
bQueuedMsgAvailable(); //Prikaz k overeni existence nezpracovanych zprav ve fronte.
 

Čtení přijaté zprávy

Po přijetí je zpráva pouze uložena v přislušném mailboxu, do kterého jsme ji přiřadili při odesílání. Abychom s ní mohli dále pracovat, musíme ji z něj vyjmout. K tomuto účelu slouží příkaz cCmdMessageRead(nQueueID, nRcvBuffer, nSizeOfMessage). Jeho prvním parametrem je ID zprávy, pod kterým jsme ji odesílali. Druhým parametrem název bufferu, do kterého se zpráva z mailboxu zkopíruje. Třetí parametr definuje počet bitů zprávy, které se mají zkopírovat.

 
cCmdMessageRead(IDzpravy, Buffer, velikost_zpravy); //Vyjmuti prvni zpravy z mailboxu a zkopirovani do bufferu.
 

Smazání přijaté zprávy

V případě, že chceme některou z přijatých zpráv smazat, použijeme příkaz ClearMessage(). Ten smaže vybranou zprávu, kterou nechceme použít.

 
ClearMessage(); //Prikaz k smazani zvolene zpravy.
 

1 1 1 1 1 1 1 1 1 1 Hodnocení 0.00 (0 hodnocení)

KURZ: Zasílání zpráv pomocí Bluetooth

Řídící kostky nebo jiná zařízení obsahující Bluetooth modul mezi sebou mohou komunikovat bez nutnosti propojení pomocí kabelu nebo prostřednictvím počítače. Zprávy zasílané bezdrátově musí být nejprve správně definovány a následně odeslány. Definováním je myšleno zvolení správného datového typu, kterého zpráva, kterou se chystáme odeslat, nabývá. Samotné odeslání je poté realizováno způsobem specifickým pro každé programovací prostředí.

Zasílání zpráv V PROGRAMOVACÍCH PROSTŘEDÍCH

NXT-G

Blok pro zasílání zpráv

Rozcestník


UMÍSTĚNÍ BLOKU
Programový blok FPMessageWriteDraggedSend Message sloužící k odeslání zprávy pomocí Bluetooth nalezneme v paletě icon completeComplete > ActionAction.

Bluetooth send message

 

POPIS BLOKU

Blok FPMessageWriteDragged Send Message obsahuje celkem pět konektorů pro propojení s dalšími bloky:
connect Connection - port označující číslo zařízení, ke kterému je zařízení z něhož je zpráva odesílána, připojeno (0-3).

Mailbox Mailbox - označuje číslo příjemcovy schránky pro vložení zprávy (1-10).

TextIn Text - zpráva v podobě datového typu Text.

NumberIn Number - zpráva v podobě datového typu Number.

BooleanIn Logic - zpráva v podobě datového typu Logic.

 

PARAMETRY BLOKU

Bluetooth send message vyber

Pro odesílání zprávy pomocí Bluetooth v programovacím prostředí NXT-G má uživatel na výběr z tří typů zpráv. Výběr nalezne v sekci Message. Jedná se o možnosti Text, Number a Logic.

  • Text - nabývá datového typu Text (maximální rozsah = 58 znaků).

  • Number - nabývá datového typu Number (možný rozsah -2 147 483 648 - 2 147 483 647).

  • Logic - nabývá datového typu Logic (může nabývat hodnot True (pravda) nebo False (nepravda)).

 
Bluetooth send message block

Connection: sekce pro volbu portu označujícího číslo zařízení, ke kterému je zařízení z něhož je zpráva odesílána, připojeno (0-3).

Message: slouží pro zvolení datového typu odesílané zprávy a zadání jejího obsahu (hodnoty).

Mailbox: sekce pro výběr čísla schránky pro vložení zprávy (1-10).

RobotC

PŘÍKAZY PRO zasílání zpráv pomocí bluetooth

Rozcestník


Odeslání zprávy

K připojenému zařízení s Bluetooth modulem je možné v programovacím prostředí RobotC zaslat zprávu dvěma způsoby. Jednodušším z nich je příkaz sendMessage(). Tento příkaz umožňuje odeslat jednoduchou zprávu o délce 16 bitů. Pro použití vyžaduje zadat do závorky parametr v rozsahu od -32 767 do +32 767. Číslo vyjadřuje ID odesílané zprávy. Při použití je nežádoucí zadávat jako parametr číslo 0. Uvedením tohoto parametru vyjadřujeme, že odesílaná zpráva je prázdná.

 
sendMessage(IDzpravy); //Odesle zpravu pomoci Bluetooth.
 

Širší možnosti skýtá použití příkazu sendMessageWithParm(). Oproti předchozímu příkazu umožňuje odesílat tři hodnoty, každou o maximální délce 16 bitů. Může být využit například při bezdrátovém zasílání hodnot snímaných senzory jinému zařízení. Stejně jako u příkazu sendMessage(), je i zde nežádoucí použít jako parametr číslo 0.

 
sendMessageWithParm(IDzpravy, parametr1, parametr2); //Odesle zpravu o trech hodnotach pomoci Bluetooth.
 

Další funkce k odeslání zprávy

Rozšířenou možností odeslání zprávy pomocí Bluetooth je příkaz cCmdMessageWriteToBluetooth(nQueueID, nXmitBuffer, nSizeOfMessage). Jeho funkce je taková, že odešle zprávu dané délky uloženou v příslušné proměnné, pod vlastním ID mailboxu. Všechny tyto tři aspekty jsou povinnými parametry příkazu.

 
cCmdMessageWriteToBluetooth(IDzpravy, promenna, delka_zpravy); //Rozsirujici prikaz k odesilani zprav pomoci Bluetooth.
 

1 1 1 1 1 1 1 1 1 1 Hodnocení 0.00 (0 hodnocení)

KURZ: Párování přístrojů

Řídící jednotka stavebnice LEGO Mindstorms NXT obsahuje Bluetooth modul, pomocí nějž je možné bezdrátově připojovat jiná zařízení jako další řídící kostky, mobilní telefony a jiné. Umožňuje uživateli také zasílat a přijímat bezdrátově zprávy (více v kapitolách Zasílání zpráv pomocí Bluetooth a Příjem a vyhodnocování zprávy).

Párování přístrojů V PROGRAMOVACÍCH PROSTŘEDÍCH

NXT-G

Blok pro párování dalšími zařízeními

Rozcestník


UMÍSTĚNÍ BLOKU

Programový blok BluetoothDragged Bluetooth, který slouží k párování zařízení pomocí zařízení bluetooth, je umístěn v paletě icon completeComplete > Advanced Advanced.

Bluetooth blok

 

POPIS BLOKU

Blok BluetoothDragged Bluetooth obsahuje celkem čtyři konektory pro propojení s dalšími programovými bloky:

Action Action - port, který vyjadřuje, jakou akci chceme s blokem provádět. Jeho rozsah hodnot je 0-3 (0 = Turn On (zapnout), 1 = Turn Off (vypnout), 2 = Initiate Connection (zahájit připojení), 3 = Close Connection (ukončit připojení).

connect Connect To - označuje název zařízení, ke kterému se chceme pomocí bluetooth připojit (port je aktivní pouze v případě, že je zvolena volba Initiate Connection (zahájit připojení)).

Number Connection Number - číslo (1-3), které chceme připojovanému zařízení přiřadit (slouží k identifikaci zařízení a je aktivní pouze v případě, že je zvolena volba Initiate Connection (zahájit připojení)). 

DisconnectFrom Disconnect From - číslo zařízení (0-3), od kterého se chceme odpojit (ukončit bluetooth komunikaci). 

 

PARAMETRY BLOKU

Zapnutí a vypnutí Bluetooth

Bluetooth turn on

Akce, kterou chceme ze zařízením Bluetooth provádět volíme v sekci Action. Zvolíme-li zapnutí (Turn On) nebo vypnutí (Turn Off), provede se pouze spuštění, či vypnutí zařízení. Žádný jiný parametr nemáme k dispozici.

Bluetooth initiate connection

Vybráním volby pro zahájení připojení (Initiate Connection) se aktivují tři parametry.

Connect To: pole sloužící k zadání volitelného názvu zařízení, ke kterému se budeme pomocí Bluetooth připojovat.

Connection: číslo, které zařízení, ke kterému se budeme připojovat přiřadíme (1-3).

Contacts: pole, ve kterém jsou zobrazena všechna dostupná a spuštěná zařízení, ke kterým je momentálně možné se pomocí Bluetooth připojit.

Bluetooth close connection

U akce, která provádí ukončení připojení (Close Connection), se zobrazí dva další parametry.

Disconnect From: seznam, který obsahuje čísla, pod kterými jsou jiná zařízení připojena (bylo zvoleno během připojování). Vybrání čísla je první možnost, jak identifikovat zařízení, které má být odpojeno.

Connections: pole, ve kterém se zobrazují všechna připojená zařízení (jejich číslo a název). Vybrání zařízení v tomto poli je druhá možnost identifikace odpojovaného zařízení.

RobotC

PŘÍKAZY a metody pro práci s bluetooth

Pro ovládání a využívání Bluetooth v programovacím prostředí RobotC existuje velké množstí příkazů. Ukážeme si několik základních, které nám postačí k vyhledání, připojení a realizaci komumikace dvou zařízení pomocí vestavěného Bluetooth modulu.

Rozcestník


Zapnutí a vypnutí Bluetooth

Aktivovat či deaktivovat Bluetooth modul můžeme v programovacím prostředí RobotC pomocí jediného příkazu. Pro zapnutí využijeme příkaz setBluetoothOn() a naopak pro vypnutí setBluetoothOff(). Zapnutím se modul pouze uvede do pohotovostního režimu, vypnutím dojde k opačnému procesu.

 
setBluetoothOn(); // Zapne Bluetooth.
setBluetoothOff(); // Vypne Bluetooth.
 

Vyhledávání dostupných Bluetooth zařízení

Předtím, než začneme naše zařízení připojovat k jinému pomocí Bluetooth, musíme toto zařízení vyhledat. Během procesu vyhledávání jsou zjišťována všechna dostupná zařízení s Bluetooth. Vyhledávání je realizováno pomocí příkazu btSearch() po dobu 30 sekund.

 
btSearch(); // Vyhleda dostupna Bluetooth zarizen.
 

Připojení zařízení

Po dokončení vyhledávání dostupných zařízení, již můžeme některé z nich k našemu NXT zařízení připojit. Navázání spojení se provádí příkazem btConnect(nPort, sFriendlyName). Příkaz má dva parametry, které musí být zadány. Prvním z nich, je pořadové číslo portu, ke kterému je zařízení připojováno v rozmezí 1-3. Druhý parametr je volitelný a uživatel zde zadává název zařízení ke kterému se připojuje. Název je využíván pouze pro potřeby uživatele a lepší orientaci ve výsledném programu.

 
btConnect(1, "NXT2"); // Pripoji zarizeni k jednotce pojmenovane "NXT2" pod radovym cislem portu 1.
 

Odpojení zařízení

Dokončíme-li práci s Bluetooth zařízením, budeme potřebovat zařízení softwarově odpojit. Programovací prostředí k tomuto procesu nabízí dva příkazy. Prvním z nich je btDisconnect(), jehož parametrem uvedeným v závorce je číslo portu (1-3), ke kterému je zařízení, které chceme odpojit, připojeno. Tento příkaz nám tak umožňuje odpojovat pouze vybrané zařízení pouze pomocí určení portu, ke kterému je připojeno.

Druhý příkaz pro odpojení Bluetooth zařízení řeší případ, kdy k naší NXT jednotce máme připojeno více zařízení a chceme jejich činnost ukončit hromadně. Příkaz se nazývá btDisconnectAll(). Jeho použitím docílíme odpojení veškerých připojených zařízení na všech portech (1-3).

 
btDisconnect(1); // Odpoji zarizeni na portu 1.
btDisconnectAll(); // Odpoji vsechna zarizeni na vsech portech.
 

1 1 1 1 1 1 1 1 1 1 Hodnocení 0.00 (0 hodnocení)

KURZ: Spolupráce více jednotek

Seznam článků kapitoly

  1. Párování přístrojů
  2. Zasílání zpráv pomocí Bluetooth
  3. Příjem a vyhodnocení zprávy

Úvod

Řídící jednotka NXT obsahuje Bluetooth modul, díky němuž můžeme bezdrátově propojit dvě kostky NXT nebo jednotku NXT a jiné zařízení s modulem Bluetooth. V následujících třech kapitolách se nejprve dozvíte, jak probíhá Párování přístrojů, následně co je potřeba, aby správně proběhlo Zasílání zpráv pomocí Bluetooth a na závěr vše potřebné pro Příjem a vyhodnocení zprávy.

1 1 1 1 1 1 1 1 1 1 Hodnocení 5.00 (1 hodnocení)