• 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
  • Mesaj Bağlantısı
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

Mesaj Bağlantısı#

  • giriiş

  • Bağlantı Oluştur

  • Mevcut Yöntemler

    • bağlantılıdır

    • Göndermek

    • almak

    • kabul edilmiş

giriiş#

MessageLink, iki EXP Brain’in isteğe bağlı küçük verilerle birlikte kısa dize mesajları göndererek iletişim kurmasını sağlar. Robotlar arası koordinasyon için tasarlanmıştır; örneğin rutinleri başlatmak, sensör sonuçlarını paylaşmak veya başka bir robottaki davranışları tetiklemek gibi.

send’nin her kullanımı, bağlantılı EXP Beyninin kuyruğuna bir mesaj ekler ve kuyruk ilk giren ilk çıkar (FIFO) prensibiyle okunur. Diğer EXP Beyni receive’i kullanmadan önce birden fazla mesaj gönderilirse, bunlar depolanır ve gönderildikleri sırayla tek tek geri döndürülür. Mesajlar kuyruğa alınabildiğinden, her döngüde aynı durumu tekrar tekrar göndermek birikmeye neden olabilir; zaman açısından kritik mantık için, yalnızca değerler değiştiğinde gönderin.

Önemli: Her iki robot da aynı anda MessageLink kullanan projeleri çalıştırıyor olmalıdır, aksi takdirde hiçbir mesaj gönderilmez/alınmaz.

Bu sayfada örnek olarak link MessageLink adı kullanılmaktadı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 bir mesaj 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 Beyninde de bir MesajBağlantısı oluşturarak, robotlar birbirlerine mesaj gönderebilsinler diye, V5 Robot Radyoları ile kablosuz olarak veya kablolu Akıllı Kablo aracılığıyla aralarında bir iletişim kanalı kurun.

MessageLink(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 = MessageLink(Ports.PORT1, "VEXRoboticsLink123456789", VexlinkType.MANAGER)

Robot 2 için Kod

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

Mevcut Yöntemler#

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

is_linked#

is_linked yöntemi, bir MessageLink ü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

# Tell the other robot when the screen is being pressed

# Create the link
link = MessageLink(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")

# Continuously send if the screen is being pressed
while True:
    if brain.screen.pressing():
        link.send("pressed")
    else:
        link.send("released")

    wait(50, MSEC)

Robot 2 için Kod

# Display if the other robot's screen is being pressed

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

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

# Continuously check if Robot 1 has sent "pressed"
while True:
    brain.screen.clear_screen()
    brain.screen.set_cursor(1, 1)
    brain.screen.print("Robot 2 - Worker")
    brain.screen.next_row()

    if link.receive() == "pressed":
        brain.screen.new_line()
        brain.screen.print("Manager is being pressed!")

    wait(50, MSEC)

send#

send , bağlantılı diğer EXP Beynine bir metin ve/veya bir tamsayı ve/veya ondalık sayı gönderir.

Usage:
send(string, integer, float)

Parametreler

Tanım

string

Diğer bağlantılı EXP Beynine gönderilecek metin.

integer

İsteğe bağlı. Bağlantılı diğer EXP Beynine gönderilecek bir tamsayı.

float

İsteğe bağlı. Diğer bağlantılı EXP Beynine gönderilecek ondalık sayı. Ondalık sayılar 4 ondalık basamağa kadar biçimlendirilir; daha az ondalık basamak verilirse, 4 gösterilene kadar sonuna sıfırlar eklenir.

Yalnızca string gönderilirse, bağlantılı diğer EXP Beyni tam olarak bu dizeyi alır.

Eğer integer ve/veya float dahil edilirse, alıcı Beyin tüm alanları şu sırayla birleştiren tek bir kodlanmış dize alır: .string_integer_float

Örnek: link.send(“string”, 1, 2.55) .string_1_2.5500 olarak alınır.

Robot 1 için Kod

# Tell the other robot when the screen is being pressed

# Create the link
link = MessageLink(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")

# Continuously send if the screen is being pressed
while True:
    if brain.screen.pressing():
        link.send("pressed")
    else:
        link.send("released")

    wait(50, MSEC)

Robot 2 için Kod

# Display if the other robot's screen is being pressed

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

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

# Continuously check if Robot 1 has sent "pressed"
while True:
    brain.screen.clear_screen()
    brain.screen.set_cursor(1, 1)
    brain.screen.print("Robot 2 - Worker")
    brain.screen.next_row()

    if link.receive() == "pressed":
        brain.screen.new_line()
        brain.screen.print("Manager is being pressed!")

    wait(50, MSEC)

Robot 1 için Kod

# Tell the other robot where the screen was pressed

# Create the link
link = MessageLink(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")
brain.screen.next_row()
brain.screen.print("Tap to send circles")

# Send the coordinates whenever the screen is pressed
while True:
    if brain.screen.pressing():
        x = brain.screen.x_position()
        y = brain.screen.y_position()

        link.send("touch", x, y)

    wait(10, MSEC)

Robot 2 için Kod

# Draw a circle where Robot 1's screen was pressed

# Create the link
link = MessageLink(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")

while True:
    # Get the full encoded string
    circle_coordinates = link.receive(200)

    if circle_coordinates:

        # Split the encoded string by _
        parts = circle_coordinates.split("_")

        if len(parts) == 3:
            # Convert the coordinates back into numbers
            x = float(parts[1])
            y = float(parts[2])

            brain.screen.set_fill_color(Color.WHITE)
            brain.screen.draw_circle(x, y, 20)

    wait(10, MSEC)

receive#

receive diğer bağlantılı EXP Beyninden kuyruğa alınmış bir sonraki mesajı döndürür. Mesajlar FIFO sırasına göre (en eski okunmamış olan önce) okunur. receive çağrıldığında kuyruk boşsa, belirtilen timeout kadar yeni bir mesaj bekler. Bu süre içinde hiçbir mesaj gelmezse, receive Nonedöndürür ve daha sonra gönderilen herhangi bir mesaj, bir sonraki receive kullanıldığında okunmak üzere kuyrukta kalır.

Eğer diğer bağlantılı EXP Brain yalnızca stringve receive.

Diğer bağlantılı EXP Brain bir tamsayı ve/veya ondalık sayı gönderdiyse, receive alanları şu sırayla birleştiren tek bir kodlanmış dize döndürür: .string_integer_float

Örneğin, diğer bağlantılı EXP Brain link.send(“string”, 1, 2.55)kullanıyorsa, link.receive() kullanmak .string_1_2.5500gibi kodlanmış bir dize döndürür. Bu kodlanmış dizeyi (aşağıdaki örneklere bakın) bölerek mesaj adını, tamsayı ve ondalık sayı değerlerini çıkarabilirsiniz.

Eğer manuel bölme/ayrıştırmadan kaçınmayı tercih ederseniz, belirli bir mesaj adı için bir işleyici kaydetmek üzere received kullanın; işleyici gönderilen değerleri argüman olarak alır.

Usage:
receive(timeout)

Parametreler

Tanım

timeout

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

Robot 1 için Kod

# Tell the other robot when the screen is being pressed

# Create the link
link = MessageLink(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")

# Continuously send if the screen is being pressed
while True:
    if brain.screen.pressing():
        link.send("pressed")
    else:
        link.send("released")

    wait(50, MSEC)

Robot 2 için Kod

# Display if the other robot's screen is being pressed

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

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

# Continuously check if Robot 1 has sent "pressed"
while True:
    brain.screen.clear_screen()
    brain.screen.set_cursor(1, 1)
    brain.screen.print("Robot 2 - Worker")
    brain.screen.next_row()

    if link.receive() == "pressed":
        brain.screen.new_line()
        brain.screen.print("Manager is being pressed!")

    wait(50, MSEC)

Robot 1 için Kod

# Send a math problem for the other Brain to solve

# Create the link
link = MessageLink(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.
"""
link.send("add", 7, 2.5)

Robot 2 için Kod

# Solve the math problem that the other Brain sends

# Create the link
link = MessageLink(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()

math_problem = link.receive()

if math_problem:

    # Split the encoded string by _
    parts = math_problem.split("_")

    if len(parts) == 3:
        # Remove the . from the beginning of the string
        operator = "".join([c for c in parts[0] if c.isalpha()])

        # Separate out the numbers for the operation
        a = int(parts[1])
        b = float(parts[2])

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

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

received#

received kaydedildi; bu, EXP Beyni gönderilen bir mesaj aldığında çağrılacak bir fonksiyondur.

Usage:
link.received(message, arg)

Parametreler

Tanım

message

Eşleştirilecek mesaj adı (dize). Alınan mesajın adı bu değerle eşleştiğinde, callback işlevi çağrılır.

callback

EXP Beyni message ile eşleşen bir mesaj aldığında çalışan, önceden tanımlanmış bir fonksiyon.

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

Geri Çağrı İmzası:
callback(message, linkname, index, value)

Argüman

Tanım

message

Alınan mesajın adı (örneğin, “add”).

linkname

Mesajın alındığı bağlantının adı.

index

Mesajla birlikte gönderilen tamsayı değeri (eğer belirtilmişse).

value

Mesajla birlikte gönderilen ondalık sayı değeri (eğer belirtilmişse).

Robot 1 için Kod

# Send a math problem for the other Brain to solve

# Create the link
link = MessageLink(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.
"""
link.send("add", 7, 2.5)

Robot 2 için Kod

# Solve the math problem that the other Brain sends

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

while not link.is_linked():
    wait(0.1, SECONDS)

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

# add if "add" is received
def add_cmd(message, linkname, a, b):
    result = a + b
    brain.screen.print("Result = ", result)

# subtract if ""subtract" is received
def subtract_cmd(message, linkname, a, b):
    result = a - b
    brain.screen.print("Result = ", result)

# Create event handlers for "add" and "subtract"
link.received("add", add_cmd)
link.received("subtract", subtract_cmd)

önceki

VEXlink

sonraki

Seri Bağlantı

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)