Facebook RSS Feed
 

.NET Micro Framework: Seri Port Kullanımı

-Her ne kadar günümüz cihazlarında yerini USB ve Firewire portlarına devretmiş de olsa, endüstriyel otomasyon ve GPS alıcıları gibi cihazlarda seri port kullanımı yaygındır. Bunun sebebi ise düşük donanım maliyeti, basit yapısı, standartlaşmış olması ve kullanım kolaylığıdır. Seri iletişimde gönderilecek veri bitlere ayrıştırılır ve diğer cihaza gönderilir. Karşı tarafta alınan bitler ise byte dizisine çevrilip işlenir. .NET Micro Framework'ün seri iletişimde bize sağladığı kolaylıklara bir göz atalım.

Seri Portu Açmak

Seri portu kullanabilmek için öncelikle "Microsoft.SPOT.Hardware.dll" ve "Microsoft.SPOT.Hardware.SerialPort.dll" kütüphanelerini proje referanslarına ekleyelim. Namespace'ler arasına da "using System.IO.Ports;" ifadesini ekleyerek seri porta ulaşabiliriz.

using System;
using System.IO.Ports;
using Microsoft.SPOT;
 
namespace SeriPort
{
    public class Program
    {
        //COM1 üzerinde 19.600 bps bağlantı hızında bir seri port tanımlayalım:
        public static SerialPort sp1 = new SerialPort("COM1", 19600, Parity.None, 8, StopBits.One);
 
        public static void Main()
        {
            //COM1 seri portunu kullanıma açalım:
            sp1.Open();
        }
    }
}

Veri Göndermek

Seri port üzerinden veri göndermek için önce gönderilecek veriyi byte dizisine aktarıp daha sonra çıkış önbelleğine göndeririz. Seri portun bağlantı hızına göre önbellekteki veri diğer cihaza aktarılır.

using System;
using System.Text;
using System.IO.Ports;
using Microsoft.SPOT;
 
namespace SeriPort
{
    public class Program
    {
        public static SerialPort sp1 = new SerialPort("COM1", 19600, Parity.None, 8, StopBits.One);
 
        public static void Main()
        {
            sp1.Open();
 
            //Gönderilecek komutu bir byte dizisine aktaralım:
            byte[] komut = Encoding.UTF8.GetBytes("Gonderilecek veri\r\n");
 
            //COM1 üzerinden gönderilmek üzere çıkış önbelleğine komut dizisini aktaralım:
            sp1.Write(komut, 0, komut.Length);
        }
    }
}

Veri Almak

Seri porta veri ulaştığında tetiklenecek bir interrupt oluşturup, gelen veriyi bir byte dizisine aktarıp daha sonra da üzerinde istediğimiz işlemleri yapabiliriz.

using System;
using System.Text;
using System.Threading;
using System.IO.Ports;
using Microsoft.SPOT;
 
namespace SeriPort
{
    public class Program
    {
        public static SerialPort sp1 = new SerialPort("COM1", 19600, Parity.None, 8, StopBits.One);
 
        public static void Main()
        {
            sp1.Open();
 
            //Seri porta veri ulaştığında çalışacak bir interrupt belirleyelim:
            sp1.DataReceived += new SerialDataReceivedEventHandler(sp1_DataReceived);
 
            //Main thread'i uyutalım:
            Thread.Sleep(Timeout.Infinite);
        }
 
        static void sp1_DataReceived(object sender, SerialDataReceivedEventArgs e)
        {
            //Seri port üzerinden karakter alındıysa:
            if (e.EventType == SerialData.Chars)
            {
                //Gelen verinin aktarılacağı bir dizi tanımlayalım:
                byte[] gelenVeri = new byte[sp1.BytesToRead];
 
                //Seri porttan gelen veriyi tanımladığımız diziye aktaralım:
                sp1.Read(gelenVeri, 0, gelenVeri.Length);
 
                //Okunan veriyi String olarak encode edip Immediate Window'da gösterelim:
                Debug.Print(new String(Encoding.UTF8.GetChars(gelenVeri)));
            }
        }
    }
}

Seri Portu Kapatmak

Port ile işiniz bittiği zaman Close() komutu ile seri portu kapatabilirsiniz.




 
Hoşgeldiniz!
Son güncelleme: 25.12.2016
-
Yeni Teknik Yazılar
Latte Panda İncelemesi
Turta IoT HAT İncelemesi
USB Gamepad Kullanımı
GPIO Kullanımı
VEML6075 UV Sensör Kullan...
-
İlgili Gruplar
.NET MF ve Gadgeteer FB Grubu
İst. IoT & Wearables Meet-up
-
 

This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License.Copyright © 1999 - 2017, Umut Erkal. Bu materyal, "Creative Commons Public Licence" ile sunulmuştur.
Kaynak göstererek ve ücretsiz olarak, aynı şartlar altında paylaşabilir ve kullanabilirsiniz. | Kullanım Sözleşmesi