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 |
---|---|
|
La cadena que se enviará al otro robot vinculado. |
|
Opcional. Un valor flotante o entero para enviar al otro robot vinculado. |
|
Opcional. Un segundo flotante o entero para enviar al otro robot vinculado. |
|
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 |
---|---|
|
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 |
---|---|
|
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 |
---|---|
|
Una función previamente definida que se llama cuando el mensaje recibido coincide con la cadena especificada. |
|
Cadena con la que se comparan los mensajes entrantes. Si coincide, se ejecuta la devolución de llamada |
# 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 |
---|---|
|
Una función previamente definida que se llama cuando el robot está vinculado a otro robot. |
|
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 |
---|---|
|
Una función previamente definida que se llama cuando el robot no está vinculado a otro robot. |
|
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)