Unity Seri Haberleşme

Unity Seri Haberleşme

Unity Seri Haberleşme

 Hepinize merhaba arkadaşlar bu yazımda sizlere Unity ile nasıl seri haberleşme yapabileceğinizi anlatacağım. Seri haberleşme ile iligili hiç bir fikri veya bilgisi olmayanlar buradaki yazımı okuyup seri ve paralel iletişim ile ilgili bilgileri öğrenebilirler.

Unity ile seri haberleşme protokollerini kullanarak neler yapabilirsiniz?

Unity ile seri haberleşme protokollerini kullanarak Arduino gibi geliştirme kartları ile geliştirdiğiniz donanımları oyununuza entegre edebilir veya basit düzeyde birbirine seri port üzerinden bağlı olan bilgisayarlar ile LAN (LAN ı burada tamamen örnek vermek amaçlı kullandım.) üzerinden karşılıklı oyun oynatabilirsiniz. Basit düzeyde birden fazla kişili oyunları yapmak için kullanabilir, donanımlar ile iletişime geçmek için kullanabilirsiniz.

Unity Seri Haberleşme Kullanarak Arduino'ya mesaj gönderme

Arduino Kodları

int pin8 = 8; // Dijital pini belirliyoruz

void setup() {
  // Seri haberleşme başlatıyoruz
  Serial.begin(9600);
  // Pin modunu çıkış olarak belirliyoruz
  pinMode(pin8, OUTPUT); 
}

void loop() {
  // Seri bağlantı aktifmi kontrol ediyoruz
  if(Serial.available()){
    String serialData = Serial.readStringUntil('\r'); // Gelen mesajı okuyoruz  
    // Seri haberleşmeden gelen mesaj 8 ise 8 numaralı pini açıyoruz
    if(serialData == "8"){
      digitalWrite(pin8, HIGH); 
    }
    // Seri haberleşmeden gelen mesaj 16 ise 8 numaralı pini kapatıyoruz
    if(serialData == "16"){
    digitalWrite(pin8, LOW);
    }
  }
}

Unity Kodları

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.IO.Ports; // Seri haberleşme için gerekli olan kütüphanemiz.
/* Eğer ki .Ports u projenize ekleyemiyorsanız Project Settings kısmından Api Compatibility Level i Net 4.x veya daha üstüne getirin.
 * Eğer Net 4.x i seçmenize rağmen hala .Ports eklenmiyorsa;
 * Assets > Reimport All Butonuna tıklayıp projeyi tekrar import edin.
 * Bu işlemden sonra artık eklenecektir.
 */

public class Unity_Seri_Haberlesme : MonoBehaviour
{
    /* Burada SeriPort değişkeni tanımlıyoruz ve bağlantımızı oluşturuyoruz
     * SerialPort("bağlantı portu", baudrate)
     * Bağlantı portu COM portlarıdır ve cihazımıza bağlı olan usb bağlantısının değeridir.
     * Baudrate ise iletişimin sağlandığı dil frekansıdır diyebilirim bu değeri Arduino da belirlediğimiz değer ile aynı olmasına dikkat etmemiz gerekiyor
     * Eğer ki baud değeri aynı olmaz ise göndereceğimiz verilerimiz farklı gidebilir.
     */

    public SerialPort serialPort = new SerialPort("COM5", 9600); // SerialPort kullanıyoruz ve COM5 ile bağlı olan portu seçiyoruz. 9600 ise baud değerini belirliyoruz.

    void Start()
    {
        serialPort.Open(); // Seri bağlantısını başlatıyoruz.

        serialPort.Write("8"); // Seri bağlantı ile 8 mesajını gönderiyoruz.

        /* Seri bağlantıyı kapatmak istersek serialPort.Close(); kullanıyoruz
         * serialPort.Close();
         */

        serialPort.Write("16"); // Seri bağlantı ile 16 mesajını gönderiyoruz.

    }

    void Update()
    {
        Debug.Log(serialPort.ReadLine().ToString()); // Cihazdan gelen mesajı okuyor ve debug olarak yazdırıyoruz  
    }
}

System.IO.Ports Gözükmüyor Çözümü

Not: "System.IO.Ports" kütüphanesini projenize ekleyemiyorsanız "Project Settings" kısmının "Other" bölümünden "Net 4.x" sürümünü seçmeniz gerekiyor.

Unity Seri Haberleşme

Not: Yukarıdaki kodlar ile sadece Arduino ile değil seri iletişim kurmak istediğiniz herhangi bir cihaz ile bağlantı kurabilir ve seri haberleşmede bulunabiliriniz. Sadece COM portlarını değiştirmeniz yeterli olacaktır.

Not: Bu yöntem Android ve IOS cihazlarda daha doğrusu mobil cihazlarda maalesef çalılmıyor, sadece PC tabanlı cihazlarda çalışıyor. (Windows, Linux, Mac OS ve diğer x86 & x86_64 cihazlar.)

Yukarıdaki kodların yanında bulunan açıklama satırları ile aslında her şeyi anlatmaya çalıştım ancak aklınızda kalan herhangi bir soru bulunuyorsa aşağıdaki yorumlar kısmından bana sorabilirsiniz.