Žinutė#
Įvadas#
Du VEX AIM kodavimo robotai gali būti sujungti, kad jie galėtų bendrauti projekto metu. Pranešimų metodai leidžia vienam robotui siųsti pranešimą kitam robotui. Pranešime gali būti vien tekstas arba tekstas su iki trijų skaičių.
Gauti pranešimai saugomi FIFO (pirmas įeina, pirmas išeina) eilėje. Tai reiškia, kad pirmas gautas pranešimas yra pirmas pranešimas, kuris bus perskaitytas.
Norėdami patikrinti, ar pranešimas paruoštas skaityti, naudokite is_message_available. Tada naudokite get_message, kad perskaitytumėte kitą tekstinį pranešimą. Jei pranešime taip pat yra skaičių, naudokite get_message_and_data, kad perskaitytumėte tekstą ir skaičius kartu.
Pastaba: Kad pranešimai būtų siunčiami ir gaunami, abu robotai turi būti susieti ir abu robotai turi vykdyti projektus, kuriuose naudojami pranešimų metodai.
Žemiau pateikiamas visų metodų sąrašas:
Veiksmas – siųsti pranešimus tarp robotų.
send_message— Siunčia tekstą ir iki trijų numerių susietam robotui.
Getteriai – skaitykite pranešimus arba tikrinkite ryšio būseną.
get_message— Grąžina kitą gautą tekstinį pranešimą.get_message_and_data— Grąžina kitą gautą tekstinį pranešimą ir numerius.is_connected— Grąžina, ar robotas yra susietas su kitu robotu.is_message_available— Grąžina, ar pranešimą galima perskaityti.get_name— Grąžina susieto roboto pavadinimą.
Atgaliniai iškvietimai – vykdyti funkcijas, kai įvyksta pranešimų įvykiai.
handle_message— Paleidžia funkciją, kai gaunamas konkretus pranešimas.connected— Vykdo funkciją, kai robotas yra susietas su kitu robotu.disconnected— Vykdo funkciją, kai robotas nebėra susietas su kitu robotu.
Veiksmas#
send_message#
send_message siunčia tekstą ir iki trijų skaičių susietam robotui. Naudokite šį metodą su vienu robotu, kai kitam robotui reikia gauti komandą, signalą ar trumpą informaciją. Siųskite tekstą vieną, kai pakanka vien pranešimo. Pridėkite skaičius, kai pranešimui reikia susijusių reikšmių, pvz., siųskite “heading” su dabartine roboto krypties reikšme.
Priimančiame robote naudokite is_message_available, kad patikrintumėte, ar pranešimas atvyko. Tada naudokite get_message, jei norite gauti tik tekstinį pranešimą, arba get_message_and_data, jei norite gauti pranešimą su skaičiais.
Usage:
robot.link.send_message(message, arg1, arg2, arg3)
Parametras |
Aprašymas |
|---|---|
|
Tekstas, kurį reikia siųsti susietam robotui. |
|
Pasirinktinai. Numeris, kurį reikia siųsti su pranešimu. |
|
Pasirinktinai. Antras numeris, kurį reikia siųsti su žinute. |
|
Pasirinktinai. Trečias numeris, kurį reikia siųsti su žinute. |
Pavyzdys
Roboto kodas 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")
Roboto 2 kodas
# 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)
Getteriai#
get_message#
get_message grąžina kitą gautą tekstinį pranešimą iš pranešimų eilės. Naudokite šį metodą gaunančiam robotui, kai susietas robotas išsiuntė tik tekstinį pranešimą. Įprasta tvarka yra naudoti is_message_available, kad patikrintumėte, ar pranešimas atvyko, tada naudokite get_message prieš rodydami, lygindami ar naudodami grąžintą tekstą kitame metode.
Kitame robote naudokite send_message, kad išsiųstumėte tik tekstinį pranešimą.
Usage:
robot.link.get_message(timeout)
Parametras |
Aprašymas |
|---|---|
|
Pasirinktinai. Maksimalus laikas milisekundėmis, per kurį reikia laukti pranešimo prieš tęsiant. Numatytoji reikšmė yra |
Pavyzdys
Roboto kodas 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!")
Roboto 2 kodas
# 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 grąžina kitą gautą tekstinį pranešimą ir numerius iš pranešimų eilės kaip rinkinį. Naudokite šį metodą gaunančiam robotui, kai susietas robotas išsiuntė tekstinį pranešimą su vienu ar keliais numeriais. Įprasta tvarka yra naudoti is_message_available, kad patikrintumėte, ar pranešimas atvyko, tada naudoti get_message_and_data prieš naudojant grąžintą tekstą ir numerius.
Kitame robote naudokite send_message, kad kartu išsiųstumėte tekstą ir skaičius.
Usage:
robot.link.get_message_and_data(timeout)
Parametras |
Aprašymas |
|---|---|
|
Pasirinktinai. Maksimalus laikas milisekundėmis, per kurį reikia laukti pranešimo prieš tęsiant. Numatytoji reikšmė yra |
Pavyzdys
Roboto kodas 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)
Roboto 2 kodas
# 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 grąžina, ar robotas yra susietas su kitu robotu. Naudokite šį metodą prieš siųsdami arba laukdami pranešimų, jei projektui reikia patikrinti, ar robotų tarpusavio ryšys yra paruoštas.
True— Robotas yra susietas su kitu robotu.False— Robotas nėra sujungtas su kitu robotu.
Usage:
robot.link.is_connected()
Parametrai |
Aprašymas |
|---|---|
Šis metodas neturi parametrų. |
# 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 grąžina, ar pranešimas laukia eilėje. Naudokite šį metodą prieš get_message arba get_message_and_data, kad priimantis robotas bandytų perskaityti pranešimą tik po to, kai jis jau atkeliauja.
True— Yra pranešimas, kurį galima perskaityti.False— Nėra pranešimų, kuriuos būtų galima perskaityti.
Usage:
robot.link.is_message_available()
Parametrai |
Aprašymas |
|---|---|
Šis metodas neturi parametrų. |
Pavyzdys
Roboto kodas 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!")
Roboto 2 kodas
# 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 grąžina susieto roboto pavadinimą. Naudokite šį metodą, norėdami parodyti, kuris robotas yra prijungtas prieš siunčiant arba gaunant pranešimus. Jei robotas nėra prijungtas, šis metodas grąžina None.
Usage:
robot.link.get_name()
Parametrai |
Aprašymas |
|---|---|
Šis metodas neturi parametrų. |
# Display the name of the linked robot
robot.screen.print(robot.link.get_name())
Atgaliniai skambučiai#
handle_message#
handle_message užregistruoja funkciją, kuri paleidžiama, kai robotas gauna konkretų tekstinį pranešimą. Naudokite šį metodą, kai robotas turi automatiškai reaguoti į žinomą pranešimą, o ne tikrinti pranešimų eilę cikle. Pirmiausia apibrėžkite grįžtamojo ryšio funkciją, tada užregistruokite ją naudodami handle_message ir pranešimo tekstą, į kurį reikia atkreipti dėmesį.
Usage:
robot.link.handle_message(callback, message)
Parametras |
Aprašymas |
|---|---|
|
Anksčiau apibrėžta funkcija, kuri paleidžiama, kai gautas pranešimas atitinka |
|
Tekstas, pagal kurį reikia patikrinti gaunamus pranešimus. |
Pavyzdys
Roboto kodas 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")
Roboto 2 kodas
# 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 užregistruoja funkciją, kuri paleidžiama, kai robotas yra susietas su kitu robotu. Naudokite šį metodą, kai projektas turi reaguoti iš karto, kai užmezgamas ryšys tarp robotų. Pirmiausia apibrėžkite grįžtamojo ryšio funkciją, tada užregistruokite ją su connected.
Usage:
robot.link.connected(callback, args)
Parametras |
Aprašymas |
|---|---|
|
Anksčiau apibrėžta funkcija, kuri paleidžiama, kai robotas yra susietas su kitu robotu. |
|
Pasirinktinai. Rinkinys su argumentais, kurie turi būti perduoti atgalinio iškvietimo funkcijai. Daugiau informacijos žr. Funkcijų su parametrais naudojimas. |
# Show a happy emoji when connected
def robot_smile():
robot.screen.show_emoji(HAPPY)
robot.link.connected(robot_smile)
disconnected#
disconnected užregistruoja funkciją, kuri paleidžiama, kai robotas nebėra susietas su kitu robotu. Naudokite šį metodą, kai projektas turi reaguoti, kai tik nutrūksta ryšys tarp robotų. Pirmiausia apibrėžkite grįžtamojo ryšio funkciją, tada užregistruokite ją su disconnected.
Usage:
robot.link.disconnected(callback, args)
Parametras |
Aprašymas |
|---|---|
|
Anksčiau apibrėžta funkcija, kuri paleidžiama, kai robotas nebėra susietas su kitu robotu. |
|
Pasirinktinai. Rinkinys su argumentais, kurie turi būti perduoti atgalinio iškvietimo funkcijai. Daugiau informacijos žr. Funkcijų su parametrais naudojimas. |
# Show a sad emoji when disconnected
def robot_sad():
robot.screen.show_emoji(SAD)
robot.link.disconnected(robot_sad)