Ziņojums#
Ievads#
Divus VEX AIM kodēšanas robotus var savienot, lai tie varētu sazināties projekta laikā. Ziņojumu metodes ļauj vienam robotam nosūtīt ziņojumu otram robotam. Ziņojumā var būt ietverts tikai teksts vai teksts ar līdz pat trim cipariem.
Saņemtie ziņojumi tiek glabāti rindā pēc principa “pirmais iekšā, pirmais ārā” (FIFO). Tas nozīmē, ka pirmais saņemtais ziņojums ir pirmais, kas tiks nolasīts.
Izmantojiet is_message_available, lai pārbaudītu, vai ziņojums ir gatavs lasīšanai. Pēc tam izmantojiet get_message, lai lasītu nākamo īsziņu. Ja ziņojumā ir iekļauti arī cipari, izmantojiet get_message_and_data, lai lasītu tekstu un ciparus kopā.
Piezīme: Lai ziņojumus varētu nosūtīt un saņemt, abiem robotiem ir jābūt saistītiem un abiem robotiem ir jādarbojas projektiem, kas izmanto ziņojumu metodes.
Zemāk ir visu metožu saraksts:
Darbība — sūtīt ziņojumus starp robotiem.
send_message— Nosūta īsziņu un līdz trim numuriem saistītajam robotam.
Ieguvēji — Lasīt ziņojumus vai pārbaudīt savienojuma statusu.
get_message— Atgriež nākamo saņemto īsziņu.get_message_and_data— Atgriež nākamo saņemto īsziņu un ciparus.is_connected— Atgriež, vai robots ir savienots ar citu robotu.is_message_available— Atgriež, vai ziņojums ir pieejams lasīšanai.get_name— Atgriež saistītā robota nosaukumu.
Atzvanīšanas funkcijas — palaist funkcijas, kad notiek ziņojumu notikumi.
handle_message— Izpilda funkciju, kad tiek saņemts konkrēts ziņojums.connected— Izpilda funkciju, kad robots ir savienots ar citu robotu.disconnected— Izpilda funkciju, kad robots vairs nav saistīts ar citu robotu.
Darbība#
send_message#
send_message nosūta tekstu un līdz trim numuriem saistītajam robotam. Izmantojiet šo metodi vienam robotam, ja otram robotam ir jāsaņem komanda, signāls vai īsa informācija. Sūtiet tekstu atsevišķi, ja ziņojums pats par sevi ir pietiekams. Pievienojiet ciparus, ja ziņojumam ir nepieciešamas saistītas vērtības, piemēram, nosūtot “heading” ar robota pašreizējo virziena vērtību.
Saņēmējā robotā izmantojiet is_message_available, lai pārbaudītu, vai ziņojums ir pienākts. Pēc tam izmantojiet get_message, ja ziņojumam ir tikai teksts, vai get_message_and_data, ja ziņojumam ir iekļauti skaitļi.
Usage:
robot.link.send_message(message, arg1, arg2, arg3)
Parametrs |
Apraksts |
|---|---|
|
Teksts, kas jānosūta saistītajam robotam. |
|
Neobligāti. Numurs, kas jānosūta kopā ar ziņojumu. |
|
Neobligāti. Otrais numurs, kas jānosūta kopā ar ziņojumu. |
|
Neobligāti. Trešais numurs, kas jānosūta kopā ar ziņojumu. |
Piemērs
Robota 1 kods
# 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")
Robota 2 kods
# 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)
Getteri#
get_message#
get_message atgriež nākamo saņemto īsziņu no ziņojumu rindas. Izmantojiet šo metodi saņēmējrobotam, ja saistītais robots nosūtīja tikai teksta ziņojumu. Bieži sastopama secība ir izmantot is_message_available, lai pārbaudītu, vai ziņojums ir pienācis, un pēc tam izmantot get_message pirms atgrieztā teksta attēlošanas, salīdzināšanas vai izmantošanas citā metodē.
Izmantojiet send_message otrā robotā, lai nosūtītu tikai teksta ziņojumu.
Usage:
robot.link.get_message(timeout)
Parametrs |
Apraksts |
|---|---|
|
Neobligāti. Maksimālais laiks milisekundēs, cik ilgi jāgaida ziņojums pirms turpināt. Noklusējuma vērtība ir |
Piemērs
Robota 1 kods
# 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!")
Robota 2 kods
# 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 atgriež nākamo saņemto īsziņu un skaitļus no ziņojumu rindas kā kortežu. Izmantojiet šo metodi saņēmējrobotam, kad saistītais robots nosūtīja īsziņu ar vienu vai vairākiem numuriem. Bieži sastopama secība ir izmantot is_message_available, lai pārbaudītu, vai ziņojums ir pienākis, pēc tam izmantot get_message_and_data pirms atgrieztā teksta un skaitļu izmantošanas.
Izmantojiet send_message otrā robotā, lai nosūtītu tekstu un skaitļus kopā.
Usage:
robot.link.get_message_and_data(timeout)
Parametrs |
Apraksts |
|---|---|
|
Neobligāti. Maksimālais laiks milisekundēs, cik ilgi jāgaida ziņojums pirms turpināt. Noklusējuma vērtība ir |
Piemērs
Robota 1 kods
# 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)
Robota 2 kods
# 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#
is_connected atgriež, vai robots ir savienots ar citu robotu. Izmantojiet šo metodi pirms ziņojumu sūtīšanas vai gaidīšanas, ja projektam ir jāpārbauda, vai robotu savstarpējais savienojums ir gatavs.
True— Robots ir savienots ar citu robotu.False— Robots nav savienots ar citu robotu.
Usage:
robot.link.is_connected()
Parametri |
Apraksts |
|---|---|
Šai metodei nav parametru. |
# 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 atgriež, vai ziņojums gaida ziņojumu rindā. Izmantojiet šo metodi pirms get_message vai get_message_and_data, lai saņemošais robots mēģinātu nolasīt ziņojumu tikai pēc tā saņemšanas.
True— Ir pieejams ziņojums lasīšanai.False— Nav pieejamu ziņojumu lasīšanai.
Usage:
robot.link.is_message_available()
Parametri |
Apraksts |
|---|---|
Šai metodei nav parametru. |
Piemērs
Robota 1 kods
# 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!")
Robota 2 kods
# 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 atgriež saistītā robota nosaukumu. Izmantojiet šo metodi, lai pirms ziņojumu nosūtīšanas vai saņemšanas parādītu, kurš robots ir pievienots. Ja neviens robots nav pievienots, šī metode atgriež None.
Usage:
robot.link.get_name()
Parametri |
Apraksts |
|---|---|
Šai metodei nav parametru. |
# Display the name of the linked robot
robot.screen.print(robot.link.get_name())
Atzvanīšanas#
handle_message#
handle_message reģistrē funkciju, kas darbojas, kad robots saņem konkrētu īsziņu. Izmantojiet šo metodi, ja robotam ir jāatbild automātiski uz zināmu ziņojumu, nevis jāpārbauda ziņojumu rinda cilpā. Vispirms definējiet atzvanīšanas funkciju un pēc tam reģistrējiet to ar handle_message un ziņojuma tekstu, kas jāmeklē.
Usage:
robot.link.handle_message(callback, message)
Parametrs |
Apraksts |
|---|---|
|
Iepriekš definēta funkcija, kas darbojas, ja saņemtais ziņojums atbilst |
|
Teksts, ar kuru salīdzināt ienākošos ziņojumus. |
Piemērs
Robota 1 kods
# 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")
Robota 2 kods
# 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 reģistrē funkciju, kas darbojas, kad robots ir savienots ar citu robotu. Izmantojiet šo metodi, ja projektam ir jāatbild, tiklīdz ir izveidots savienojums starp robotiem. Vispirms definējiet atzvanīšanas funkciju un pēc tam reģistrējiet to ar connected.
Usage:
robot.link.connected(callback, args)
Parametrs |
Apraksts |
|---|---|
|
Iepriekš definēta funkcija, kas darbojas, kad robots ir savienots ar citu robotu. |
|
Neobligāti. Kortežs, kas satur argumentus, kas jānodod atzvanīšanas funkcijai. Plašāku informāciju skatiet sadaļā Funkciju izmantošana ar parametriem. |
# Show a happy emoji when connected
def robot_smile():
robot.screen.show_emoji(HAPPY)
robot.link.connected(robot_smile)
disconnected#
disconnected reģistrē funkciju, kas darbojas, kad robots vairs nav saistīts ar citu robotu. Izmantojiet šo metodi, ja projektam ir jāatbild, tiklīdz tiek zaudēts savienojums starp robotiem. Vispirms definējiet atzvanīšanas funkciju un pēc tam reģistrējiet to ar disconnected.
Usage:
robot.link.disconnected(callback, args)
Parametrs |
Apraksts |
|---|---|
|
Iepriekš definēta funkcija, kas darbojas, kad robots vairs nav saistīts ar citu robotu. |
|
Neobligāti. Kortežs, kas satur argumentus, kas jānodod atzvanīšanas funkcijai. Plašāku informāciju skatiet sadaļā Funkciju izmantošana ar parametriem. |
# Show a sad emoji when disconnected
def robot_sad():
robot.screen.show_emoji(SAD)
robot.link.disconnected(robot_sad)