Seri Port Oku/Yaz (Read/Write Serial Port) – C#

Bu yazımızda Seri Port Oku/Yaz komutları ile veri göndermeyi ve okumayı inceleyeceğiz. Arduino uygulamalarında çokca kullanılan bir seri port terminal uygulaması yapacağız.

Daha önce Arduino Serial Port yazımızda bu konudan bahsetmiştik. Şimdi C#(sharp) kısmını yazacağız.

Seri portunumuzdan veri almak için karşı tarafta bir seri port desteği olan cihazımızın olamsı gerekmektedir. Bunun için Arduino’ yu kullanabilirsiniz. Eğer arduinonuz yok ise Com Portunuzun 2. ve 3. pinlerini birbirine bağlayabilrisiniz. Bu sayede bilgisayardan gönderilen direk bilgisayara geri gelecektir. 🙂

İlk önce C# da arayüzünüzü aşağıdaki gibi veya kendi istediğiniz gibi ayarlayın.

C# Serial Port Arayüzü
C# Serial Port Arayüzü

SerialPort komponentini arayüzüne sürüklyip bırakın yoksa kodlarınızda hata oluşabilir.

Aşağıdaki kodu inceleyin ve kendi programınızı entegre edin.

/* yazan: www.kaizen40.com
 * tarih: 01.05.2018
 * 
 * açıklama: seri port terminal programı
 */

using System;
using System.IO.Ports;
using System.Threading;
using System.Windows.Forms;

namespace SerialPort
{
    public partial class Form1 : Form
    {
        string[] ports = System.IO.Ports.SerialPort.GetPortNames();            // port bilgisinin tutulduğu yer

        public Form1()
        {
            InitializeComponent();

            FormClosing += Form1_FormClosing;
            serialPort1.DataReceived += new SerialDataReceivedEventHandler(SerialPort1_DataRecieved);
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            foreach (string port in ports)                              // pc ye takılı olan device ların portlarını ekle
            {
                CmbPort.Items.Add(port);
            }

            // baudrate leri yükle
            CmbBaudRate.Items.Add("300");
            CmbBaudRate.Items.Add("600");
            CmbBaudRate.Items.Add("1200");
            CmbBaudRate.Items.Add("2400");
            CmbBaudRate.Items.Add("4800");
            CmbBaudRate.Items.Add("9600");
            CmbBaudRate.Items.Add("19200");
            CmbBaudRate.Items.Add("57600");
            CmbBaudRate.Items.Add("115200");
        }

        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            if (serialPort1.IsOpen == true)
            {
                serialPort1.Close();
            }
        }

        private void SerialPort1_DataRecieved(object sender, SerialDataReceivedEventArgs e)
        {
            Thread.Sleep(30);

            string data = serialPort1.ReadLine();       // bufferdan verileri oku

            if (TxtGelen.InvokeRequired)
            {
                TxtGelen.Invoke(new MethodInvoker(delegate { TxtGelen.Text += data + "\r\n"; }));
            }
        }

        private void BtnBaglan_Click(object sender, EventArgs e)
        {
            if (BtnBaglan.Text == "Bağlan")    
            {
                BtnBaglan.Text = "Bağlantıyı Kes";
                LabelBaglanti.Text = CmbPort.Text + "," + CmbBaudRate.Text + ", Hat Açık";
                serialPort1.PortName = CmbPort.Text;
                serialPort1.BaudRate = Convert.ToInt32(CmbBaudRate.Text);
                serialPort1.Open();
            }
            else// bağlan
            {
                BtnBaglan.Text = "Bağlan";
                LabelBaglanti.Text = "Hat Kapalı";
                serialPort1.Close();
            }
        }

        private void BtnTemizle_Click(object sender, EventArgs e)
        {
            TxtGelen.Clear();
        }

        private void BtnGonder_Click(object sender, EventArgs e)
        {
            if (serialPort1.IsOpen == true)
            {
                serialPort1.Write(TxtGiden.Text + "\n");
            }
            else
            {
                MessageBox.Show("Port kapalıyken data gönderilemez!");
            }
        }
    }
}

ve programınızı derleyerek çalıştırın. Gönderilen data kısmına bir şeyler yazıp gönder butonuna basın.

C# Serial Port Arayüzü Arduino İletişimi
C# Serial Port Arayüzü Arduino İletişimi

İlerleyen zamanlardan okuma ve yazma ile ilgili daha fazla detay vermeye çalışacağım. Faydalı olmasını dilerim.

3 thoughts on “Seri Port Oku/Yaz (Read/Write Serial Port) – C#

  • 20 Nisan 2021 tarihinde, saat 13:02
    Permalink

    işime yaradı. teşekkürler.

    Yanıtla
  • 14 Şubat 2022 tarihinde, saat 14:33
    Permalink

    Com Portunuzun 2. ve 3. pinlerini birbirine—bu kısmı anlamadım

    Yanıtla
    • 17 Şubat 2022 tarihinde, saat 09:58
      Permalink

      2.ve 3. pinleri birbirine bağlarsanız gönderdiğiniz veriyi aynı şekilde okursunuz. RX ve TX hatları.

      Yanıtla

Bir cevap yazın

E-posta hesabınız yayımlanmayacak.

This site uses Akismet to reduce spam. Learn how your comment data is processed.