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í)

Nemáte oprávnění přidat komentář.
Komentáře mohou přidávat pouze registrovaní uživatelé, kteří neporušují pravidla diskuze.