Mensaje#

Introducción#

Se pueden vincular dos robots de codificación VEX AIM para que se comuniquen durante un proyecto. Mediante mensajes, los robots pueden enviar y recibir información para coordinar sus acciones.

Nota: Para que se envíen y reciban mensajes, ambos robots deben estar ejecutando proyectos que manejen mensajes al mismo tiempo.

A continuación se muestra una lista de los métodos disponibles:

Acciones – Enviar mensajes entre robots.

  • send_message – Envía una cadena y hasta tres números al otro robot vinculado.

Getters: verifica los mensajes recibidos y el estado de la conexión.

  • get_message – Recupera la cadena más reciente recibida.

  • get_message_and_data – Recupera la cadena y los números más recientes recibidos como una tupla.

  • is_connected – Devuelve un valor booleano que indica si el robot está vinculado con otro robot.

  • is_message_available – Devuelve un valor booleano que indica si el otro robot vinculado alguna vez envió un mensaje.

Devoluciones de llamadas: ejecutan funciones cuando ocurren eventos.

  • handle_message – Registra una función que se llamará cuando se reciba un mensaje específico.

  • conectado – Registra una función que se llamará cuando el robot esté conectado con otro robot.

  • desconectado – Registra una función que se llamará cuando el robot se desconecte de otro robot.

Comportamiento#

send_message#

send_message envía una cadena y hasta tres números al otro robot vinculado.

Uso:
robot.link.send_message(message, arg1, arg2, arg3)

Parámetro

Descripción

message

La cadena que se enviará al otro robot vinculado.

arg1

Opcional. Un valor flotante o entero para enviar al otro robot vinculado.

arg2

Opcional. Un segundo flotante o entero para enviar al otro robot vinculado.

arg3

Opcional. Un tercer flotante o entero para enviar al otro robot vinculado.

# Send a message when the screen is pressed
def robot_send_message():
    robot.link.send_message("message")

robot.screen.pressed(robot_send_message)

# Display when a message is received
while not robot.link.is_message_available():
    wait(5, MSEC)
robot.screen.print("Received!")

# Send the current heading to the other robot
def robot_send_message():
    robot.link.send_message("message", robot.inertial.get_heading())

robot.screen.pressed(robot_send_message)

# Turn to match the other robot's heading
while True:
    if robot.link.is_message_available():
        message, heading = robot.link.get_message_and_data()
        robot.turn_to(heading)   
    wait(5, MSEC)

Captadores#

get_message#

get_message devuelve la cadena más reciente recibida del otro robot vinculado.

Uso:
robot.link.get_message(timeout)

Parámetros

Descripción

timeout

Opcional. El tiempo máximo (en milisegundos) que la función esperará un mensaje antes de continuar sin él. El valor predeterminado es 1000.

# Send a message when the screen is pressed
def robot_send_message():
    robot.link.send_message("VEXcode!")

robot.screen.pressed(robot_send_message)

# Display when a message is received
while True:
    if robot.link.is_message_available():
        response = robot.link.get_message()
        robot.screen.print(response)
    wait(5, MSEC)

get_message_and_data#

get_message_and_data devuelve la cadena y los números más recientes recibidos del otro robot vinculado y los devuelve como una tupla.

Uso:
robot.link.get_message_and_data(timeout)

Parámetros

Descripción

timeout

Opcional. El tiempo máximo (en milisegundos) que la función esperará un mensaje antes de continuar sin él. El valor predeterminado es 1000.

# Send the current heading to the other robot
def robot_send_message():
    robot.link.send_message("message", robot.inertial.get_heading())

robot.screen.pressed(robot_send_message)

# Turn to match the other robot's heading
while True:
    if robot.link.is_message_available():
        message, heading = robot.link.get_message_and_data()
        robot.turn_to(heading)    
    wait(5, MSEC)

is_connected#

is_connected devuelve un valor booleano que indica si el robot está actualmente vinculado con otro robot.

  • True - El robot está vinculado con otro robot.

  • False - El robot no está vinculado con otro robot.

Uso:
robot.link.is_connected()

Parámetros

Descripción

Este método no tiene parámetros.

# Turn off one of the linked robots to see the message change
while True:
    robot.screen.clear_screen(1, 1)
    robot.screen.print(robot.link.is_connected())
    wait(5, MSEC)

is_message_available#

is_message_available devuelve un valor booleano que indica si el otro robot vinculado alguna vez usó send_message en el proyecto actual.

  • True - send_message ha sido utilizado por el otro robot vinculado en el proyecto actual.

  • False - send_message nunca ha sido utilizado por el otro robot vinculado en el proyecto actual.

Uso:
robot.link.is_message_available()

Parámetros

Descripción

Este método no tiene parámetros.

# Send a message when the screen is pressed
def robot_send_message():
    robot.link.send_message("message")

robot.screen.pressed(robot_send_message)

# Display when a message is received
while not robot.link.is_message_available():
    wait(5, MSEC)
robot.screen.print("Received!")

Devoluciones de llamadas#

handle_message#

handle_message registra un método que se ejecuta cuando el robot recibe una cadena de mensaje específica.

Uso:
robot.link.handle_message(callback, message)

Parámetros

Descripción

callback

Una función previamente definida que se llama cuando el mensaje recibido coincide con la cadena especificada.

message

Cadena con la que se comparan los mensajes entrantes. Si coincide, se ejecuta la devolución de llamada callback

# Show a smiling emoji
def robot_smile():
    robot.screen.show_emoji(HAPPY)

# If the message says "smile", show a smile
robot.link.handle_message(robot_smile, "smile")

# Send a message when the screen is pressed
def robot_send_message():
    # Change the message to not show the emoji
    robot.link.send_message("smile")

robot.screen.pressed(robot_send_message)

connected#

connected registra una función que se llamará cuando el robot esté vinculado a otro robot.

Uso:
robot.link.connected(callback, args)

Parámetros

Descripción

callback

Una función previamente definida que se llama cuando el robot está vinculado a otro robot.

args

Opcional. Una tupla que contiene los argumentos que se pasarán a la función de devolución de llamada. Consulte Uso de funciones con parámetros para obtener más información.

# Show a happy face when connected
def robot_smile():
    robot.screen.show_emoji(HAPPY)

# Show a sad face when disconnected
def robot_sad():
    robot.screen.show_emoji(SAD)

# Register both callbacks
# Turn off a robot to change the emoji
robot.link.connected(robot_smile)
robot.link.disconnected(robot_sad)

disconnected#

disconnected registra una función que se llamará cuando el robot no esté vinculado a otro robot.

Uso:
robot.link.disconnected(callback, args)

Parámetros

Descripción

callback

Una función previamente definida que se llama cuando el robot no está vinculado a otro robot.

args

Opcional. Una tupla que contiene los argumentos que se pasarán a la función de devolución de llamada. Consulte Uso de funciones con parámetros para obtener más información.

# Show a happy face when connected
def robot_smile():
    robot.screen.show_emoji(HAPPY)

# Show a sad face when disconnected
def robot_sad():
    robot.screen.show_emoji(SAD)

# Register both callbacks
# Turn off a robot to change the emoji
robot.link.connected(robot_smile)
robot.link.disconnected(robot_sad)