Mensagem#
Introdução#
Dois robôs de programação VEX AIM podem ser ligados para que comuniquem durante um projeto. Os blocos de mensagens permitem que um robô envie uma mensagem ao outro. Uma mensagem pode incluir apenas texto ou texto com um número.
As mensagens recebidas são armazenadas numa fila FIFO (first in, first out). Isto significa que a primeira mensagem recebida será a primeira a ser lida.
Utilize um bloco obter mensagem mais recente para armazenar a próxima mensagem recebida. De seguida, utilize o bloco de relatório mensagem mais recente para ler o texto armazenado. Se a mensagem também incluir um número, utilize obter mensagem mais recente com dados para armazenar ambos os valores e, em seguida, utilize mensagem mais recente e dados mais recentes para os ler.
Nota: Para que as mensagens sejam enviadas e recebidas, ambos os robots têm de estar ligados e ambos têm de estar a executar projetos que utilizem blocos de mensagens.
Segue abaixo a lista de todos os blocos:
Valores — Ler informação da mensagem ou verificar o estado da mensagem e da ligação.
última mensagem — Reporta a mensagem de texto armazenada mais recentemente.
dados mais recentes — Reporta o número armazenado mais recentemente.
a mensagem está disponível? — Informa se uma mensagem está disponível para leitura.
está ligado? — Reporta se o robô está ligado com outro robô.
nome do robô ligado — Reporta o nome do robô ligado.
Ações — Enviar ou armazenar mensagens recebidas.
enviar mensagem — Envia texto para o robô ligado.
enviar mensagem com dados — Envia texto e um número para o robô ligado.
obter mensagem mais recente — Armazena a próxima mensagem de texto recebida.
obter mensagem mais recente com dados — Armazena a próxima mensagem de texto recebida e o número.
Valores#
última mensagem#
O bloco de relatório última mensagem reporta a mensagem de texto armazenada mais recentemente. Este bloco não obtém uma nova mensagem por si só. Utilize primeiro obter última mensagem ou obter última mensagem com dados, depois utilize última mensagem para apresentar o texto armazenado ou utilize-o noutro bloco.
(última mensagem)
Parâmetros |
Descrição |
|---|---|
Este bloco não possui parâmetros. |
Exemplo
Robot 1
quando tela [pressionado v]
[Code for Robot 1.]
[Press the screen to send a message to Robot 2.]
imprimir [Robot 1] na tela ▶
enviar mensagem [Hello, Robot 2!]
Robot 2
quando iniciar
[Code for Robot 2.]
[Display the message Robot 1 sends.]
imprimir [Robot 2] na tela ▶
mover cursor para a próxima linha na tela
aguardar até <mensagem disponível?>
obter última mensagem
imprimir (última mensagem) na tela ▶
dados mais recentes#
O bloco de relatório dados mais recentes reporta o número armazenado mais recentemente de uma mensagem que incluía dados. Este bloco não obtém um novo número por si só. Utilize primeiro obter mensagem mais recente com dados, depois utilize dados mais recentes noutro bloco, como a distância percorrida, a direção da curva ou o valor da velocidade.
(últimos dados)
Parâmetros |
Descrição |
|---|---|
Este bloco não possui parâmetros. |
Exemplo
Robot 1
quando iniciar
[Code for Robot 1.]
[Continuously send the current heading to Robot 2.]
imprimir [Robot 1] na tela ▶
para sempre
enviar mensagem [heading] com dados (direção em graus)
fim
Robot 2
quando iniciar
[Code for Robot 2.]
[Turn to match Robot 1's heading.]
imprimir [Robot 2] na tela ▶
para sempre
se <mensagem disponível?> então
obter última mensagem com dados
virar para a direção (últimos dados) graus ▶
fim
fim
A mensagem está disponível?#
O bloco booleano is message available? informa se uma mensagem está à espera na fila de mensagens. Utilize este bloco antes de get latest message ou get latest message with data para que o robô recetor só tente armazenar uma mensagem depois de uma ter chegado.
Verdadeiro — Existe uma mensagem disponível para leitura.
Falso — Não existem mensagens disponíveis para leitura.
<mensagem disponível?>
Parâmetros |
Descrição |
|---|---|
Este bloco não possui parâmetros. |
Exemplo
Robot 1
quando tela [pressionado v]
[Code for Robot 1.]
[Press the screen to send a message to Robot 2.]
imprimir [Robot 1] na tela ▶
enviar mensagem [message]
Robot 2
quando iniciar
[Code for Robot 2.]
[Display a message when Robot 1 sends a message.]
imprimir [Robot 2] na tela ▶
mover cursor para a próxima linha na tela
aguardar até <mensagem disponível?>
imprimir [Received!] na tela ▶
Está ligado?#
O bloco booleano está ligado? informa se o robô está ligado a outro robô. Utilize este bloco antes de enviar ou aguardar mensagens caso o projeto necessite de verificar se a ligação entre robôs está pronta.
Verdadeiro — O robô está ligado a outro robô.
Falso — O robô não está ligado a outro robô.
<conectado?>
Parâmetros |
Descrição |
|---|---|
Este bloco não possui parâmetros. |
Exemplo
quando iniciar
[Turn off one of the linked robots to see the message change.]
para sempre
limpar tela
imprimir <conectado?> na tela ▶
fim
nome do robô ligado#
O bloco de relatório nome do robô ligado informa o nome do robô ligado. Utilize este bloco para mostrar qual o robô que está ligado antes de enviar ou receber mensagens. Se nenhum robô estiver ligado, este bloco informará Nenhum.
(nome do robô vinculado)
Parâmetros |
Descrição |
|---|---|
Este bloco não possui parâmetros. |
Exemplo
quando iniciar
[Display the name of the robot that is linked.]
imprimir (nome do robô vinculado) na tela ▶
Ações#
enviar mensagem#
O bloco de pilha enviar mensagem envia texto para o robô ligado. Utilize este bloco num robô quando o outro robô necessitar de receber um comando, sinal ou uma pequena informação. No robô recetor, utilize mensagem disponível? para verificar se uma mensagem chegou e, em seguida, utilize obter mensagem mais recente antes de a ler com mensagem mais recente.
enviar mensagem [message]
Parâmetro |
Descrição |
|---|---|
mensagem |
O texto a enviar para o robô ligado. |
Exemplo
Robot 1
quando tela [pressionado v]
[Code for Robot 1.]
[Press the screen to send a message to Robot 2.]
imprimir [Robot 1] na tela ▶
enviar mensagem [Hello, Robot 2!]
Robot 2
quando iniciar
[Code for Robot 2.]
[Display the message Robot 1 sends.]
imprimir [Robot 2] na tela ▶
mover cursor para a próxima linha na tela
aguardar até <mensagem disponível?>
obter última mensagem
imprimir (última mensagem) na tela ▶
enviar mensagem com dados#
O bloco de pilha enviar mensagem com dados envia texto e um número para o robô ligado. Utilize este bloco quando a mensagem necessitar de um rótulo e de um número, como por exemplo enviar direção com o valor da direção atual do robô. No robô recetor, utilize mensagem disponível? para verificar se uma mensagem chegou, depois utilize obter mensagem mais recente com dados antes de ler o texto com mensagem mais recente e o número com dados mais recentes.
enviar mensagem [message] com dados [0]
Parâmetro |
Descrição |
|---|---|
mensagem |
O texto a enviar para o robô ligado. |
dados |
O número a enviar com a mensagem. |
Exemplo
Robot 1
quando iniciar
[Code for Robot 1.]
[Continuously send the current heading to Robot 2.]
imprimir [Robot 1] na tela ▶
para sempre
enviar mensagem [heading] com dados (direção em graus)
fim
Robot 2
quando iniciar
[Code for Robot 2.]
[Turn to match Robot 1's heading.]
imprimir [Robot 2] na tela ▶
para sempre
se <mensagem disponível?> então
obter última mensagem com dados
virar para a direção (últimos dados) graus ▶
fim
fim
Receba a mensagem mais recente#
O bloco de pilha obter mensagem mais recente recebe a próxima mensagem de texto recebida da fila de mensagens e armazena-a para que o projeto a possa utilizar. Utilize este bloco depois de mensagem disponível? ter devolvido Verdadeiro e antes de utilizar mensagem mais recente. Isto ajuda o robô recetor a guardar a mensagem antes de tentar exibi-la, compará-la ou utilizá-la noutro bloco.
Utilize enviar mensagem no outro robô para enviar uma mensagem apenas de texto.
obter última mensagem
Parâmetros |
Descrição |
|---|---|
Este bloco não possui parâmetros. |
Exemplo
Robot 1
quando tela [pressionado v]
[Code for Robot 1.]
[Press the screen to send a message to Robot 2.]
imprimir [Robot 1] na tela ▶
enviar mensagem [Hello, Robot 2!]
Robot 2
quando iniciar
[Code for Robot 2.]
[Display the message Robot 1 sends.]
imprimir [Robot 2] na tela ▶
mover cursor para a próxima linha na tela
aguardar até <mensagem disponível?>
obter última mensagem
imprimir (última mensagem) na tela ▶
Receba as mensagens mais recentes com dados.#
O bloco de pilha obter mensagem mais recente com dados recebe a próxima mensagem recebida da fila de mensagens e armazena ambas as partes da mesma: a mensagem de texto e o número enviado com a mesma. Utilize este bloco depois de mensagem disponível? ter devolvido Verdadeiro e antes de utilizar mensagem mais recente ou dados mais recentes. Isto ajuda o robô recetor a guardar ambos os valores antes de os utilizar, como quando se vira para uma direção enviada por outro robô.
Utilize enviar mensagem com dados no outro robô para enviar o texto e o número em conjunto.
obter última mensagem com dados
Parâmetros |
Descrição |
|---|---|
Este bloco não possui parâmetros. |
Exemplo
Robot 1
quando iniciar
[Code for Robot 1.]
[Continuously send the current heading to Robot 2.]
imprimir [Robot 1] na tela ▶
para sempre
enviar mensagem [heading] com dados (direção em graus)
fim
Robot 2
quando iniciar
[Code for Robot 2.]
[Turn to match Robot 1's heading.]
imprimir [Robot 2] na tela ▶
para sempre
se <mensagem disponível?> então
obter última mensagem com dados
virar para a direção (últimos dados) graus ▶
fim
fim