• 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
Ana içeriğe atla
Ctrl+K

< Back to Platform Select

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

Bölüm Gezinme

  • Bloklar
  • Python
    • Aktarma organları
    • Hareket
    • Ses
    • Görüş
    • Ekran
    • Kontrolör
    • Algılama
    • Atalet
    • 3 Kablolu Cihazlar
    • Pnömatik
    • Beyin
    • SD Kart
    • 6 Eksenli Kol
    • Sinyal Kulesi
    • VEXlink
      • Mesaj Bağlantısı
      • Seri Bağlantı
    • Konsol
    • Mantık
    • MicroPython Kütüphaneleri
  • C++
  • VEXcode Eğitimleri

Platform Navigasyonu

  • 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

Seri Bağlantı#

  • giriiş

  • Bağlantı Oluştur

  • Mevcut Yöntemler

    • bağlantılıdır

    • Göndermek

    • almak

    • kabul edilmiş

giriiş#

SerialLink, iki EXP Brain’in VEX Link üzerinden ham seri veri gönderip alarak iletişim kurmasını sağlar. SerialLink, etiketli mesajlar yerine bir tampon (bir dize veya bir bayt dizisi) iletir. Bu, sensör verilerinin akışı, özel paket formatlarının gönderilmesi veya baytlar üzerine kendi protokolünüzün oluşturulması gibi gelişmiş robotlar arası iletişim için kullanışlı hale getirir.

send’nin her kullanımı, bağlantılı EXP Beyninin alma tamponuna veri ekler. Veriler geliş sırasına göre okunur (ilk giren ilk çıkar). Diğer EXP Beyni receive’i kullanmadan önce birden fazla tampon gönderilirse, bunlar kuyruğa alınır ve gönderildikleri sıraya göre tek tek geri döndürülür. Veriler kuyruğa alınabildiğinden, her döngüde büyük tamponları tekrar tekrar göndermek birikmeye neden olabilir; zaman açısından kritik bağlantılar için yalnızca ihtiyacınız olanı gönderin.

Önemli: Her iki robot da aynı anda SerialLink kullanan projeleri çalıştırıyor olmalıdır, aksi takdirde veri gönderilemez/alınamaz.

Bu sayfada örnek olarak link ve SerialLink adı kullanılmıştır. Gerektiğinde kendi yapılandırdığınız adla değiştirin.

Aşağıda mevcut yöntemlerin listesi bulunmaktadır:

  • is_linked – Bu Beynin eşleştirilmiş Beyne aktif olarak bağlı olup olmadığını döndürür.

  • send – Eşleştirilmiş Beyne kısa bir mesaj (isteğe bağlı tamsayı/ondalık sayı verileriyle) gönderir.

  • receive – Bir sonraki gelen mesajı bekler ve geri döndürür.

  • received – Yeni bir mesaj alındığında çağrılacak bir fonksiyonu kaydeder.

Bağlantı Oluştur#

Her iki EXP Brain üzerinde de SerialLink oluşturarak, robotlar birbirlerine ham seri veri gönderebilsinler diye, V5 Robot Radyoları ile kablosuz olarak veya kablolu Akıllı Kablo aracılığıyla aralarında bir iletişim kanalı kurun.

SerialLink(smartport, name, linktype, wired)

Parametre

Tanım

smartport

Bu bağlantı için kullanılan Akıllı Bağlantı Noktası; V5 Robot Radyosunun bağlı olduğu (kablosuz) veya Akıllı Kablonun takıldığı (kablolu) bağlantı noktasıdır. Ports.PORTx şeklinde yazılır; burada x bağlantı noktası numarasıdır.

name

Bu bağlantıya verilecek benzersiz ad.
Not: Bu ad, başka bir ekibin bağlantısıyla yanlışlıkla eşleşmemesi için benzersiz bir kimlik oluşturacak kadar uzun olmalıdır.

linktype

Bu Beyin, bu bağlantı çifti için kullanacağı rolü belirtir. Her çiftte bir Yönetici ve bir İşçi bulunmalıdır:

  • VexlinkType.MANAGER – Daha fazla veya daha büyük mesaj gönderecek robot için kullanılır. Yöneticilerin giden bant genişliği daha yüksektir (~1040 bayt/sn).
  • VexlinkType.WORKER – Daha az veya daha küçük mesaj gönderecek robot için kullanılır. İşçilerin giden bant genişliği daha düşüktür (~520 bayt/sn).

wired

İsteğe bağlı. Bu bağlantının kablolu mu yoksa kablosuz mu olduğu:

  • True – EXP Beyinleri Akıllı Kablo ile bağlanır.
  • False (varsayılan) – EXP Beyinleri V5 Robot Radyoları kullanılarak kablosuz olarak bağlanır.

Robot 1 için Kod

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

Robot 2 için Kod

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

Mevcut Yöntemler#

SerialLink’iniz kurulduktan ve Brain’ler birbirine bağlandıktan sonra, ham seri verileri göndermek, almak ve yanıtlamak için aşağıdaki yöntemleri kullanabilirsiniz.

is_linked#

is_linked yöntemi, SerialLink üzerindeki EXP Beyinlerinin birbiriyle eşleştirilip eşleştirilmediğini döndürür.

  • True – İki EXP Beyni eşleştirilmiş ve bu bağlantı üzerinden iletişim kuruyor.

  • False – Bu bağlantıda iki EXP Beyni eşleştirilmemiş.

Not: Herhangi bir kod çalıştırmadan önce projenin başında EXP Brains’in bağlantılı olduğundan emin olmak her zaman iyi bir uygulamadır.

Usage:
link.is_linked()

Parametreler

Tanım

Bu yöntemin parametresi yoktur.

Robot 1 için Kod

# 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")

Robot 2 için Kod

# 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 , ham seri baytları diğer bağlantılı EXP Beynine iletir.

receive ile bu verileri okurken, receive yalnızca length parametresiyle belirtilen bayt sayısını topladıktan sonra geri döner. Bu nedenle, kodunuz her zaman receive sabit bir lengthile çağırıyorsa, send ile gönderilen her mesajın tam olarak o kadar bayt olduğundan (genellikle dolgu ile) emin olmalısınız, böylece alıcı ek baytlar için beklemede bloke olmaz.

Eğer kesin bayt sayısına bağlı kalmak istemiyorsanız, bunun yerine received kullanın; bu, belirli bir uzunluğa ihtiyaç duymadan mevcut baytları işlemenizi sağlar.

Usage:
send(buffer)

Parametreler

Tanım

buffer

Diğer bağlantılı EXP Beynine gönderilecek veriler. Bu, string veya bytearray olabilir.

Robot 1 için Kod

# 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")

Robot 2 için Kod

# 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 bağlantılı EXP Brain’den seri verileri FIFO sırasına göre (en eski okunmamış veri önce) alır ve döndürür.

Çünkü receive tam bayt sayısını bekler, sabit uzunluktaki mesajlaşma genellikle receive kullanılırken her mesajın beklenen boyuta ulaşması için dolgu gerektirir. Gönderici send bayttan daha az veri gönderirse, length kalan baytları beklemeye devam eder ve hiçbir şey döndürmez.

Kuyruk boşsa ve timeoutve receive yeni veri için o kadar milisaniyeye kadar bekler. Bu süre içinde hiçbir şey gelmezse, Nonedeğerini döndürür. Daha sonra gönderilen veriler daha sonra okunmak üzere kuyrukta kalır.

Usage:
receive(length, timeout)

Parametreler

Tanım

length

Alınacak bayt sayısı. receive bu kadar bayt gelene kadar bekler, ardından bunları bytearrayolarak döndürür. Eğer length 0ise, receive hemen None döndürür. Göndericinin ilettiğinden daha fazla bayt talep ederseniz, receive beklemeye devam eder. Gönderici bundan daha fazla bayt iletirse, döndürülen tampon length bayt ile sınırlıdır.

timeout

İsteğe bağlı. Milisaniye cinsinden süre. receive mesaj alır ancak kuyruk boşsa yeni bir mesaj bekler. Varsayılan değer 300000’dir (300 saniye).

Robot 1 için Kod

# 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)

Robot 2 için Kod

# 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 kaydedildi; bu, EXP Brain seri veri aldığında çağrılacak bir fonksiyondur.

Usage:
link.received(callback)

Parametreler

Tanım

callback

EXP Beyni seri veri aldığında yürütülen, önceden tanımlanmış bir fonksiyon.

received geri çağırma işlemi iki argümanla çağrılıyor:

Geri Çağrı İmzası:
callback(buffer, length)

Argüman

Tanım

buffer

Alınan seri verileri içeren bytearray dizi. Baytlık dizi, alınan mesajdan daha büyük olabilir.

length

Bu geri çağırma için buffer alınan geçerli bayt sayısı. Alınan verilere erişmek için buffer[:length] kullanın.

Robot 1 için Kod

# 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")

Robot 2 için Kod

# 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)

önceki

Mesaj Bağlantısı

sonraki

Konsol

On this page
  • giriiş
  • Bağlantı Oluştur
  • Mevcut Yöntemler
    • is_linked
    • send
    • receive
    • received
Innovation First, International
​

VEX ve VEX Robotics, Innovation First, Inc.'in ticari markaları veya hizmet markalarıdır. Telif Hakkı ©2026Tüm Hakları Saklıdır. VEX Robotics, Inc., Innovation First International, Inc.'in bir iştirakidir. Diğer tüm ürün adları/markaları, ilgili sahiplerinin mülkiyetindedir. Patentler ve/veya Patent Başvuruları - innovationfirst.com/patents
Site Gizlilik Politikası / Site Kullanım Şartları / Çerez Politikası / Yazılım Gizlilik Politikası

VEX Robotics Facebook sayfasını ziyaret edin. VEX Robotics Twitter sayfasını ziyaret edin. VEX Robotics Instagram sayfasını ziyaret edin. VEX Robotics YouTube sayfasını ziyaret edin.
VEX API Geri Bildirim Formu

Geri bildirimleriniz bizim için çok değerli! VEX API ile ilgili önerilerinizi, övgülerinizi paylaşmak veya hataları bildirmek için bu formu kullanın. Katkılarınız, VEX API dokümantasyonunu geliştirmemize yardımcı oluyor.

​

Teknik sorun yaşıyorsanız veya müşteri desteğine ihtiyacınız varsa lütfen support.vex.com ziyaret edin..

  • Send Happy Feedback
  • Send Sad Feedback

Not: Mevcut URL, mesajınızla birlikte paylaşılacaktır.

E-posta adresinizi ekleyerek, VEX'in geri bildiriminizle ilgili sorularımız olması durumunda size e-posta gönderebileceğini kabul ediyorsunuz.
Gizlilik Politikası >
Lütfen geri bildirimlerinizi paylaşın. Geri bildirim başarıyla gönderildi!
Choose Which VEX IQ Generation to View

VEX IQ (1st gen)

VEX IQ (2nd gen)