• VEXcode Robotics Logo VEX Robotics Logo
  • VEX API Home Button VEX API Home Button
  • VEX 123 logo in purple VEX 123 logo in white
  • VEX GO logo in lime green VEX GO logo in white
  • VEXcode AIM logo in blue VEXcode AIM logo in white
  • VEX IQ logo in blue VEX IQ logo in white
  • VEX EXP logo in red VEX EXP logo in white
  • VEX V5 logo in red VEX V5 logo in white
  • VEX CTE logo in green VEX CTE logo in white
  • VEX AIR logo in orange VEX AIR logo in white
  • VEXcode VR logo in gold VEXcode VR logo in white
Langsung ke konten utama
Ctrl+K

< Back to Platform Select

  • VEX EXP
  • Referensi API VEX EXP
  • VEXlink
  • Tautan Serial
Bahasa Indonesia
  • English
  • العربية
  • বাংলা
  • Česky
  • Deutsch
  • Ελληνικά
  • Español
  • Español Latinoamericano
  • Suomi
  • Français
  • Gaeilge
  • हिंदी
  • Magyar
  • 日本語
  • 한국어
  • Lietuvių
  • Latviešu
  • മലയാളം
  • Nederlands
  • Polski
  • Português
  • Русский
  • Svenska
  • ไทย
  • Türkçe
  • Українська
  • Tiếng Việt
  • 简体中文
  • 繁體中文
  • VEXcode Robotics Logo

Navigasi Bagian

  • Blok
  • Python
    • Sistem penggerak
    • Gerakan
    • Suara
    • Penglihatan
    • Layar
    • Pengontrol
    • Penginderaan
    • Inersia
    • Perangkat 3-Kabel
    • Pneumatik
    • Otak
    • Kartu SD
    • Lengan 6-Sumbu
    • Menara Sinyal
    • VEXlink
      • Tautan Pesan
      • Tautan Serial
    • Menghibur
    • Logika
    • Pustaka MicroPython
  • C++
  • Tutorial VEXcode

Navigasi Platform

  • VEX 123 logo in purple VEX 123 logo in white
  • VEX GO logo in lime green VEX GO logo in white
  • VEXcode AIM logo in blue VEXcode AIM logo in white
  • VEX IQ logo in blue VEX IQ logo in white
  • VEX EXP logo in red VEX EXP logo in white
  • VEX V5 logo in red VEX V5 logo in white
  • VEX CTE logo in green VEX CTE logo in white
  • VEX AIR logo in orange VEX AIR logo in white
  • VEXcode VR logo in gold VEXcode VR logo in white

Tautan Serial#

  • Perkenalan

  • Buat Tautan

  • Metode yang Tersedia

    • terhubung

    • mengirim

    • menerima

    • diterima

Perkenalan#

SerialLink memungkinkan dua EXP Brain berkomunikasi dengan mengirim dan menerima data serial mentah melalui VEX Link. Alih-alih pesan berlabel, SerialLink mengirimkan buffer (berupa string atau array byte). Hal ini membuatnya berguna untuk komunikasi robot-ke-robot tingkat lanjut, seperti streaming data sensor, mengirim format paket khusus, atau membangun protokol Anda sendiri di atas byte.

Setiap penggunaan send menambahkan data ke buffer penerima EXP Brain yang terhubung. Data dibaca sesuai urutan kedatangannya (masuk pertama, keluar pertama). Jika beberapa buffer dikirim sebelum EXP Brain lain menggunakan receive, buffer tersebut tetap mengantre dan dikembalikan satu per satu sesuai urutan pengirimannya. Karena data dapat mengantre, pengiriman buffer besar secara berulang setiap putaran dapat menyebabkan penumpukan; untuk tautan yang sensitif terhadap waktu, kirim hanya apa yang Anda butuhkan.

Penting: Kedua robot harus menjalankan proyek yang menggunakan SerialLink secara bersamaan, jika tidak, tidak ada data yang akan dikirim/diterima.

Halaman ini menggunakan link sebagai contoh SerialLink nama. Ganti dengan nama yang Anda konfigurasi sendiri sesuai kebutuhan.

Berikut adalah daftar metode yang tersedia:

  • is_linked – Mengembalikan apakah Otak ini terhubung secara aktif ke Otak pasangannya.

  • send – Mengirim pesan singkat (dengan data int/float opsional) ke Brain yang dipasangkan.

  • receive – Menunggu dan mengembalikan pesan masuk berikutnya.

  • received – Mendaftarkan fungsi yang akan dipanggil setiap kali pesan baru diterima.

Buat Tautan#

Buat SerialLink pada kedua EXP Brain untuk membangun saluran komunikasi di antara keduanya—baik secara nirkabel dengan V5 Robot Radio atau melalui Smart Cable berkabel—sehingga robot dapat mengirim data serial mentah satu sama lain.

SerialLink(smartport, name, linktype, wired)

Parameter

Keterangan

smartport

Port Pintar yang digunakan untuk tautan ini—port tempat Radio Robot V5 terhubung (nirkabel) atau tempat Kabel Pintar dicolokkan (berkabel). Ditulis sebagai Ports.PORTx di mana x adalah nomor port.

name

Nama unik yang akan diberikan pada tautan ini sebagai string.
Catatan: Nama ini harus cukup panjang untuk membuat ID unik sehingga tidak secara tidak sengaja cocok dengan tautan tim lain.

linktype

Peran yang akan digunakan Otak ini untuk pasangan tautan ini. Setiap pasangan harus mencakup satu Manajer dan satu Pekerja:

  • VexlinkType.MANAGER – Gunakan untuk robot yang akan mengirim lebih banyak atau pesan yang lebih besar. Manajer memiliki bandwidth keluar yang lebih tinggi (~1040 byte/detik).
  • VexlinkType.WORKER – Gunakan untuk robot yang akan mengirim lebih sedikit atau pesan yang lebih kecil. Pekerja memiliki bandwidth keluar yang lebih rendah (~520 byte/detik).

wired

Opsional. Apakah tautan ini menggunakan kabel atau nirkabel:

  • True – EXP Brains terhubung melalui Smart Cable.
  • False (default) – EXP Brains terhubung secara nirkabel menggunakan V5 Robot Radios.

Kode untuk Robot 1

"""
Create a wireless link in Port 1
name: VEXRoboticsLink123456789
linktype: Manager
"""
link = SerialLink(Ports.PORT1, "VEXRoboticsLink123456789", VexlinkType.MANAGER)

Kode untuk Robot 2

"""
Create a wireless link in Port 1
name: VEXRoboticsLink123456789
linktype: Worker
"""
link = SerialLink(Ports.PORT1, "VEXRoboticsLink123456789", VexlinkType.WORKER)

Metode yang Tersedia#

Setelah SerialLink Anda terpasang dan Brain terhubung, Anda dapat menggunakan metode di bawah ini untuk mengirim, menerima, dan menanggapi data serial mentah.

is_linked#

Metode is_linked mengembalikan nilai boolean yang menunjukkan apakah EXP Brain pada SerialLink sudah terpasang satu sama lain.

  • True – Kedua Otak EXP berpasangan dan berkomunikasi melalui tautan ini.

  • False – Kedua Otak EXP tidak berpasangan pada tautan ini.

Catatan: Sebaiknya selalu periksa untuk memastikan EXP Brains sudah terhubung di awal proyek sebelum menjalankan kode lebih lanjut.

Usage:
link.is_linked()

Parameter

Keterangan

Metode ini tidak memiliki parameter.

Kode untuk Robot 1

# Send a message to the other robot

# Create the link
link = SerialLink(Ports.PORT1, "VEXRoboticsLink123456789", VexlinkType.MANAGER)

# Do not run code UNTIL the Brains are linked
while not link.is_linked():
    wait(0.1, SECONDS)

brain.screen.print("Robot 1 - Manager")

link.send("HELLO")

Kode untuk Robot 2

# Display the message that Robot 1 sends

# Create the link
link = SerialLink(Ports.PORT1, "VEXRoboticsLink123456789", VexlinkType.WORKER)

# Do not run code UNTIL the Brains are linked
while not link.is_linked():
    wait(0.1, SECONDS)

brain.screen.print("Robot 2 - Worker")
brain.screen.next_row()

def received_message(bytearray, length):
    # Slice the bytearray to the valid data
    data = bytearray[:length]  
    # Decode and strip the message before displaying it
    text = data.decode().strip()
    brain.screen.print("Got: ", text)

# Call received_message whenever a message is received
link.received(received_message)

send#

send mengirimkan byte serial mentah ke EXP Brain lain yang terhubung.

Saat membaca data tersebut dengan receive, receive hanya akan kembali setelah mengumpulkan jumlah byte yang ditentukan oleh parameter length -nya. Karena itu, jika kode Anda selalu memanggil receive dengan panjang tetap length, Anda harus memastikan setiap pesan yang dikirim dengan send persis memiliki jumlah byte tersebut (seringkali dengan padding) sehingga penerima tidak terblokir menunggu byte tambahan.

Jika Anda tidak ingin bergantung pada jumlah byte yang tepat, gunakan received sebagai gantinya; ini memungkinkan Anda untuk menangani byte apa pun yang tersedia tanpa memerlukan panjang tertentu.

Usage:
send(buffer)

Parameter

Keterangan

buffer

The data to send to the other linked EXP Brain. This can be a string or a bytearray.

Kode untuk Robot 1

# Send a message to the other robot

# Create the link
link = SerialLink(Ports.PORT1, "VEXRoboticsLink123456789", VexlinkType.MANAGER)

# Do not run code UNTIL the Brains are linked
while not link.is_linked():
    wait(0.1, SECONDS)

brain.screen.print("Robot 1 - Manager")

link.send("HELLO")

Kode untuk Robot 2

# Display the message that Robot 1 sends

# Create the link
link = SerialLink(Ports.PORT1, "VEXRoboticsLink123456789", VexlinkType.WORKER)

# Do not run code UNTIL the Brains are linked
while not link.is_linked():
    wait(0.1, SECONDS)

brain.screen.print("Robot 2 - Worker")
brain.screen.next_row()

def received_message(bytearray, length):
    # Slice the bytearray to the valid data
    data = bytearray[:length]  
    # Decode and strip the message before displaying it
    text = data.decode().strip()
    brain.screen.print("Got: ", text)

# Call received_message whenever a message is received
link.received(received_message)

receive#

receive mengembalikan data serial dari EXP Brain terkait lainnya dalam urutan FIFO (data terlama yang belum dibaca terlebih dahulu).

Karena receive menunggu jumlah byte yang tepat, pengiriman pesan dengan panjang tetap sering kali memerlukan padding saat menggunakan receive sehingga setiap pesan mencapai ukuran yang diharapkan. Jika pengirim mengirimkan kurang dari send byte, length akan terus menunggu byte yang tersisa dan tidak mengembalikan apa pun.

Jika antrean kosong dan Anda memberikan batas waktu timeout receive akan menunggu hingga sejumlah milidetik tersebut untuk data baru. Jika tidak ada data yang tiba dalam jangka waktu tersebut, maka akan mengembalikan None. Data apa pun yang dikirim setelahnya akan tetap berada dalam antrean untuk dibaca nanti.

Usage:
receive(length, timeout)

Parameter

Keterangan

length

Jumlah byte yang akan diterima. receive menunggu hingga sejumlah byte ini tiba, kemudian mengembalikannya sebagai array byte receiveJika receive adalah 0, bytearray segera mengembalikan length Jika Anda meminta lebih banyak byte daripada yang dikirim pengirim, length akan terus menunggu. Jika pengirim mengirimkan lebih dari ini, buffer yang dikembalikan dibatasi hingga None byte.

timeout

Opsional. Berapa lama dalam milidetik receive akan menunggu pesan baru hanya jika antrean kosong. Nilai default adalah 300000 (300 detik).

Kode untuk Robot 1

# Send a math problem for the other Brain to solve

# Create the link
link = SerialLink(Ports.PORT1, "VEXRoboticsLink123456789", VexlinkType.MANAGER)

# Do not run code UNTIL the Brains are linked
while not link.is_linked():
    wait(0.1, SECONDS)

brain.screen.print("Robot 1 - Manager")

"""
Change whether to "add" or "subtract",
then what numbers to use in the operation.
"""
packet = "add,7,2.5"

# Pad with spaces until it's exactly 16 bytes
while len(packet) < 16:
    packet = packet + " "

link.send(packet)

Kode untuk Robot 2

# Solve the math problem that the other Brain sends

# Create the link
link = SerialLink(Ports.PORT1, "VEXRoboticsLink123456789", VexlinkType.WORKER)

# Do not run code UNTIL the Brains are linked
while not link.is_linked():
    wait(0.1, SECONDS)

brain.screen.print("Robot 2 - Worker")
brain.screen.next_row()

# Receive exactly 16 bytes
buffer = link.receive(16)

# Remove the added " " padding
text = buffer.decode().strip()

# Separate the operator and numbers
parts = text.split(",")

operator = parts[0]
a = float(parts[1])
b = float(parts[2])

# Use what operator was sent
if operator == "add":
    result = a + b
elif operator == "subtract":
    result = a - b
# If not "add" or "subtract", do nothing
else:
    pass

brain.screen.print("Result = ", result)

received#

received register yang mendaftarkan fungsi yang akan dipanggil setiap kali EXP Brain menerima data serial.

Usage:
link.received(callback)

Parameter

Keterangan

callback

Sebuah fungsi yang telah didefinisikan sebelumnya yang dieksekusi ketika EXP Brain menerima data serial.

received panggilan balik yang dipanggil dengan dua argumen:

Tanda Tangan Panggilan Balik:
callback(buffer, length)

Argumen

Keterangan

buffer

A bytearray containing the received serial data. The bytearray may be larger than the received message.

length

Jumlah byte valid yang diterima dalam buffer buffer untuk callback ini. Gunakan buffer buffer[:length] untuk mengakses data yang diterima.

Kode untuk Robot 1

# Send a message to the other robot

# Create the link
link = SerialLink(Ports.PORT1, "VEXRoboticsLink123456789", VexlinkType.MANAGER)

# Do not run code UNTIL the Brains are linked
while not link.is_linked():
    wait(0.1, SECONDS)

brain.screen.print("Robot 1 - Manager")

link.send("HELLO")

Kode untuk Robot 2

# Display the message that Robot 1 sends

# Create the link
link = SerialLink(Ports.PORT1, "VEXRoboticsLink123456789", VexlinkType.WORKER)

# Do not run code UNTIL the Brains are linked
while not link.is_linked():
    wait(0.1, SECONDS)

brain.screen.print("Robot 2 - Worker")
brain.screen.next_row()

def received_message(bytearray, length):
    # Slice the bytearray to the valid data
    data = bytearray[:length]  
    # Decode and strip the message before displaying it
    text = data.decode().strip()
    brain.screen.print("Got: ", text)

# Call received_message whenever a message is received
link.received(received_message)

sebelum

Tautan Pesan

berikut

Menghibur

On this page
  • Perkenalan
  • Buat Tautan
  • Metode yang Tersedia
    • is_linked
    • send
    • receive
    • received
Innovation First, International

VEX and VEX Robotics are trademarks or service marks of Innovation First, Inc. Copyright ©2026. All Rights Reserved. VEX Robotics, Inc. is a subsidiary of Innovation First International, Inc. All other product names / marks of others are the property of their respective owners. Patents and / or Patents Pending - innovationfirst.com/patents
Site Privacy Policy / Site Terms of Use / Cookie Policy / Software Privacy Policy

Kunjungi Halaman Facebook VEX Robotics Kunjungi Halaman Twitter VEX Robotics Kunjungi Halaman Instagram VEX Robotics Kunjungi Halaman YouTube VEX Robotics
Formulir Umpan Balik API VEX

Kami menghargai masukan Anda! Gunakan formulir ini untuk berbagi saran, pujian, atau melaporkan kesalahan pada API VEX. Masukan Anda membantu kami meningkatkan dokumentasi API VEX.

​

Jika Anda mengalami masalah teknis atau memerlukan dukungan pelanggan, silakan kunjungi support.vex.com.

  • Send Happy Feedback
  • Send Sad Feedback

Catatan: URL saat ini akan dibagikan bersama pesan Anda.

Dengan mencantumkan alamat email Anda, Anda setuju bahwa VEX dapat mengirimkan email kepada Anda jika kami memiliki pertanyaan tentang masukan Anda.
Kebijakan Privasi >
Mohon berikan masukan Anda. Masukan berhasil dikirim!
Choose Which VEX IQ Generation to View

VEX IQ (1st gen)

VEX IQ (2nd gen)