Message#
Introduction#
Deux robots de codage VEX AIM peuvent être connectés pour communiquer au cours d’un projet. Grâce à la messagerie, un robot peut envoyer un message à l’autre. Un message peut contenir du texte seul ou du texte accompagné d’un maximum de trois chiffres.
Les messages reçus sont stockés dans une file d’attente FIFO (premier entré, premier sorti). Cela signifie que le premier message reçu sera lu en premier.
Utilisez is_message_available pour vérifier si un message est prêt à être lu. Utilisez ensuite get_message pour lire le message suivant. Si le message contient également des chiffres, utilisez get_message_and_data pour lire le texte et les chiffres ensemble.
Remarque : Pour que les messages puissent être envoyés et reçus, les deux robots doivent être liés et exécuter des projets utilisant des méthodes de messagerie.
Vous trouverez ci-dessous la liste de toutes les méthodes :
Action — Envoyer des messages entre robots.
send_message— Envoie du texte et jusqu’à trois numéros au robot lié.
Getters — Lire les messages ou vérifier l’état de la connexion.
get_message— Renvoie le prochain message texte reçu.get_message_and_data— Renvoie le prochain message texte reçu et les numéros.is_connected— Renvoie si le robot est lié à un autre robot.is_message_available— Renvoie si un message est disponible pour la lecture.get_name— Renvoie le nom du robot lié.
Rappels — Exécuter des fonctions lorsque des événements de message se produisent.
handle_message— Exécute une fonction lorsqu’un message spécifique est reçu.connected— Exécute une fonction lorsque le robot est lié à un autre robot.disconnected— Exécute une fonction lorsque le robot n’est plus lié à un autre robot.
Action#
send_message#
La commande send_message envoie du texte et jusqu’à trois nombres au robot connecté. Utilisez cette méthode sur un robot lorsque l’autre doit recevoir une commande, un signal ou une brève information. Envoyez uniquement du texte lorsque le message est suffisant. Ajoutez des nombres lorsque le message nécessite des valeurs associées, par exemple : “heading” suivi de la valeur de cap actuelle du robot.
Sur le robot récepteur, utilisez is_message_available pour vérifier qu’un message est arrivé. Utilisez ensuite get_message pour un message contenant uniquement du texte, ou get_message_and_data pour un message contenant des nombres.
Usage:
robot.link.send_message(message, arg1, arg2, arg3)
Paramètre |
Description |
|---|---|
|
Le texte à envoyer au robot lié. |
|
Facultatif. Un numéro à envoyer avec le message. |
|
Facultatif. Un deuxième numéro à envoyer avec le message. |
|
Facultatif. Un troisième numéro à envoyer avec le message. |
Exemple
Code pour le robot 1
# Press the screen to tell Robot 2 which way to turn
robot.screen.print("Robot 1")
while not robot.screen.pressing():
wait(5, MSEC)
robot.link.send_message("right")
Code pour Robot 2
# Turn in the direction that Robot 1 sends
robot.screen.print("Robot 2")
while not robot.link.is_message_available():
wait(5, MSEC)
direction = robot.link.get_message()
if direction == "left":
robot.turn_for(LEFT, 90)
elif direction == "right":
robot.turn_for(RIGHT, 90)
# Robot 1: continuously send the current heading to Robot 2
robot.screen.print("Robot 1")
while True:
robot.link.send_message("heading", robot.inertial.get_heading())
wait(50, MSEC)
# Robot 2: turn to match Robot 1's heading
robot.screen.print("Robot 2")
while True:
if robot.link.is_message_available():
message, heading = robot.link.get_message_and_data()
robot.turn_to(heading)
wait(50, MSEC)
Getters#
get_message#
get_message returns the next received text message from the message queue. Use this method on the receiving robot when the linked robot sent a text-only message. A common order is to use is_message_available to check that a message has arrived, then use get_message before displaying, comparing, or using the returned text in another method.
Utilisez send_message sur l’autre robot pour envoyer un message uniquement en texte.
Usage:
robot.link.get_message(timeout)
Paramètre |
Description |
|---|---|
|
Facultatif. Délai maximal, en millisecondes, d’attente d’un message avant de poursuivre. La valeur par défaut est |
Exemple
Code pour le robot 1
# Press the screen to send a message to Robot 2
robot.screen.print("Robot 1")
while not robot.screen.pressing():
wait(5, MSEC)
robot.link.send_message("Hello, Robot 2!")
Code pour Robot 2
# Display the message sent by Robot 1
robot.screen.print("Robot 2")
robot.screen.next_row()
while not robot.link.is_message_available():
wait(5, MSEC)
message = robot.link.get_message()
robot.screen.print(message)
get_message_and_data#
get_message_and_data returns the next received text message and numbers from the message queue as a tuple. Use this method on the receiving robot when the linked robot sent text with one or more numbers. A common order is to use is_message_available to check that a message has arrived, then use get_message_and_data before using the returned text and numbers.
Utilisez send_message sur l’autre robot pour envoyer le texte et les nombres ensemble.
Usage:
robot.link.get_message_and_data(timeout)
Paramètre |
Description |
|---|---|
|
Facultatif. Délai maximal, en millisecondes, d’attente d’un message avant de poursuivre. La valeur par défaut est |
Exemple
Code pour le robot 1
# Continuously send the current heading to Robot 2
robot.screen.print("Robot 1")
while True:
robot.link.send_message("heading", robot.inertial.get_heading())
wait(50, MSEC)
Code pour Robot 2
# Turn to match Robot 1's heading
robot.screen.print("Robot 2")
while True:
if robot.link.is_message_available():
message, heading = robot.link.get_message_and_data()
robot.turn_to(heading)
wait(50, MSEC)
is_connected#
La fonction is_connected renvoie is_connected , indiquant si le robot est connecté à un autre robot. Utilisez cette méthode avant d’envoyer ou d’attendre des messages si le projet doit vérifier que la connexion entre robots est établie.
True— Le robot est connecté à un autre robot.False— Le robot n’est pas connecté à un autre robot.
Usage:
robot.link.is_connected()
Paramètres |
Description |
|---|---|
Cette méthode ne comporte aucun paramètre. |
# Display whether the robot is connected
while True:
robot.screen.clear_screen()
robot.screen.set_cursor(1, 1)
robot.screen.print(robot.link.is_connected())
wait(50, MSEC)
is_message_available#
is_message_available returns whether a message is waiting in the message queue. Use this method before get_message or get_message_and_data so the receiving robot only tries to read a message after one has arrived.
True— Un message est disponible pour être lu.False— Aucun message n’est disponible pour la lecture.
Usage:
robot.link.is_message_available()
Paramètres |
Description |
|---|---|
Cette méthode ne comporte aucun paramètre. |
Exemple
Code pour le robot 1
# Press the screen to send a message to Robot 2
robot.screen.print("Robot 1")
while not robot.screen.pressing():
wait(5, MSEC)
robot.link.send_message("Hello, Robot 2!")
Code pour Robot 2
# Wait until a message is available, then display it
robot.screen.print("Robot 2")
robot.screen.next_row()
while not robot.link.is_message_available():
wait(5, MSEC)
message = robot.link.get_message()
robot.screen.print(message)
get_name#
get_name renvoie le nom du robot lié. Utilisez cette méthode pour afficher quel robot est connecté avant d’envoyer ou de recevoir des messages. Si aucun robot n’est lié, cette méthode renvoie None.
Usage:
robot.link.get_name()
Paramètres |
Description |
|---|---|
Cette méthode ne comporte aucun paramètre. |
# Display the name of the linked robot
robot.screen.print(robot.link.get_name())
Rappels#
handle_message#
handle_message handle_message` enregistre une fonction qui s’exécute lorsque le robot reçoit un message texte spécifique. Utilisez cette méthode lorsque le robot doit répondre automatiquement à un message connu au lieu de parcourir la file d’attente des messages en boucle. Définissez d’abord la fonction de rappel, puis enregistrez-la avec handle_message et le texte du message à surveiller.
Usage:
robot.link.handle_message(callback, message)
Paramètre |
Description |
|---|---|
|
Une fonction définie précédemment qui s’exécute lorsque le message reçu correspond au message |
|
Texte de référence pour la vérification des messages entrants. |
Exemple
Code pour le robot 1
# Press the screen to send "smile" to Robot 2
robot.screen.print("Robot 1")
while not robot.screen.pressing():
wait(5, MSEC)
robot.link.send_message("smile")
Code pour Robot 2
# Show a happy emoji when Robot 1 sends "smile"
def robot_smile():
robot.screen.show_emoji(HAPPY)
robot.link.handle_message(robot_smile, "smile")
while True:
wait(50, MSEC)
connected#
connected enregistre une fonction qui s’exécute lorsque le robot est connecté à un autre robot. Utilisez cette méthode lorsque le projet doit réagir dès que la connexion entre robots est établie. Définissez d’abord la fonction de rappel, puis enregistrez-la avec connected.
Usage:
robot.link.connected(callback, args)
Paramètre |
Description |
|---|---|
|
Une fonction préalablement définie qui s’exécute lorsque le robot est connecté à un autre robot. |
|
Facultatif. Un tuple contenant les arguments à transmettre à la fonction de rappel. Voir Utilisation des fonctions avec paramètres pour plus d’informations. |
# Show a happy emoji when connected
def robot_smile():
robot.screen.show_emoji(HAPPY)
robot.link.connected(robot_smile)
disconnected#
disconnected enregistre une fonction qui s’exécute lorsque le robot n’est plus connecté à un autre robot. Utilisez cette méthode lorsque le projet doit réagir dès que la connexion entre robots est perdue. Définissez d’abord la fonction de rappel, puis enregistrez-la avec disconnected.
Usage:
robot.link.disconnected(callback, args)
Paramètre |
Description |
|---|---|
|
Une fonction préalablement définie qui s’exécute lorsque le robot n’est plus connecté à un autre robot. |
|
Facultatif. Un tuple contenant les arguments à transmettre à la fonction de rappel. Voir Utilisation des fonctions avec paramètres pour plus d’informations. |
# Show a sad emoji when disconnected
def robot_sad():
robot.screen.show_emoji(SAD)
robot.link.disconnected(robot_sad)