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.

Ações — Enviar ou armazenar mensagens recebidas.

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 do repórter bloqueado#
(última mensagem)

Parâmetros

Descrição

Este bloco não possui parâmetros.

Exemplo

Robot 1

Ao pressionar o ecrã, envia uma mensagem para o Robot 2.#
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

Ao ser iniciado, apresenta a última mensagem armazenada.#
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.

bloco de relatório de dados mais recente#
(últimos dados)

Parâmetros

Descrição

Este bloco não possui parâmetros.

Exemplo

Robot 1

Quando é iniciado, envia continuamente a direção do Robô 1 para o Robô 2.#
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

Ao ser iniciado, o sistema ajusta-se para corresponder aos dados armazenados mais recentes.#
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.

A mensagem está disponível? Bloco booleano#
<mensagem disponível?>

Parâmetros

Descrição

Este bloco não possui parâmetros.

Exemplo

Robot 1

Ao pressionar o ecrã, envia uma mensagem para o Robot 2.#
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

Ao ser iniciado, apresenta uma mensagem quando o Robot 1 envia uma mensagem.#
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ô.

Está ligado? Bloco booleano#
<conectado?>

Parâmetros

Descrição

Este bloco não possui parâmetros.

Exemplo

Ao ser iniciado, apresenta se o robô está ligado.#
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.

bloco de relatório de nome de robô ligado#
(nome do robô vinculado)

Parâmetros

Descrição

Este bloco não possui parâmetros.

Exemplo

Ao ser iniciado, apresenta o nome do robô ligado.#
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 bloco de pilha de mensagens#
enviar mensagem [message]

Parâmetro

Descrição

mensagem

O texto a enviar para o robô ligado.

Exemplo

Robot 1

Ao pressionar o ecrã, envia uma mensagem para o Robot 2.#
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

Ao ser iniciado, apresenta a mensagem enviada pelo Robot 1.#
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 com bloco de pilha de dados#
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 é iniciado, envia continuamente a direção do Robô 1 para o Robô 2.#
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

Ao ser iniciado, roda para corresponder à direção enviada pelo Robot 1.#
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 o bloco de pilha de mensagens mais recente#
obter última mensagem

Parâmetros

Descrição

Este bloco não possui parâmetros.

Exemplo

Robot 1

Ao pressionar o ecrã, envia uma mensagem para o Robot 2.#
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 é iniciado, armazena e apresenta a mensagem enviada pelo Robot 1.#
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.

Obtenha a mensagem mais recente com o bloco de pilha de dados#
obter última mensagem com dados

Parâmetros

Descrição

Este bloco não possui parâmetros.

Exemplo

Robot 1

Quando é iniciado, envia continuamente a direção do Robô 1 para o Robô 2.#
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 é iniciado, armazena os dados da mensagem e roda para acompanhar a direção do Robot 1.#
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