C# Üzerinde Geliştirilen Arayüz İle RS232 Modülü Kullanarak Seri Haberleşme Uygulaması

RS232 seri haberleşme noktadan noktaya veri aktarımı üzerine kurulmuş bir modüldür. Günümüzde mikrodenetliyici ve PC arasında veri transferi yapılan uygulamalarda yaygın olarak kullanılmaktadır.Yapılan data transferi belli özellikler içermektedir. Bu özellikler set edilmesi ile haberleşmenin niteliği de belli olmaktadır. BaudRate , Stop bit ,Datanın uzunluğu , hangi COM porttan çıkılacağı bu özellikleri teşkil etmektedir.RS232 üzerinde kurulacak her haberleşmede bu özellikler tanımlanmak durumundadır. Aşağıdaki şekilde RS232 üzerinden bağlantılar örnek bir haberleşme bağlantıları gösterilmiştir.Bilgisayar ile board RS232 konnektör üzerinden birbirlerine bağlanmışlardır.Board üzerinde ise SW7 ve SW8 anahtarları üzerindeki RC7 ve RC6 enable konumuna getirlmiştir. 7 numaralı anahtar üzerinden data alma işlemi , 8 numaralı anahtar üzerinden ise veri gönderme işlemi gerçekleştirilmektedir.

Aşağıda 9 pinli RS232 konnektörü ve pin tanımları gösterilmiştir.

 

 

Uygulama Adı:PC ortamında çalışan  C# programlama dili ile geliştirilmiş  bir ara yüz ile PIC16F887’yi RS232 üzerinden haberleştirmek.

 

Uygulama Açıklaması: Uygulamada C# üzerinden yazılmış bir ara yüz üzerinden mikrodenetleyiciye bağlı karakter lcd ye yazı yazma işlemi amaçlanmıştır. Uygulamada bilgisayarda ara yüz üzerinden girilen bir metin , mikrodenetleyiciye bağlı karakter lcd de gösterilmiştir.

 

C# tarafında yazılan programın arayüz görüntüsü

C# ta yazılan programın kod kısımı aşağıdadır.

 

C# Kod Bloğu

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Text;

using System.Windows.Forms;

namespace RS232_Serial_Communication

{

public partial class Form1 : Form

{

public Form1()

{

InitializeComponent();

}

private void Form1_Load(object sender, EventArgs e)

{

//SerialPort Nensnesi Tanımlanıyor.

//Hangi Porttan çıkış yapılacağı,

//Haberleşme Hızı,

//Data Bit Sayısı , Stop biti gibi port özellikleri atanıyor.

serialPort1.PortName = "COM1";

serialPort1.BaudRate = 9600;

serialPort1.DataBits = 8;

serialPort1.StopBits = System.IO.Ports.StopBits.One;

serialPort1.Parity = System.IO.Ports.Parity.None;

serialPort1.DataReceived += new System.IO.Ports.SerialDataReceivedEventHandler(serialPort1_DataRecived);

}

private void Gönder_Click(object sender, EventArgs e)

{

//TextBox'a bilgi yazıldıktan sonra gönder butonuna tıklanır ve

//seri port açılır , ve seri porta textboz'a girilen değer yazılırç

serialPort1.Open();

serialPort1.Write(textBox1.Text);

private void button1_Click(object sender, EventArgs e)

{

//Ekranı temizleme işlemi için seri porta boşluk yazdırılıyor.

serialPort1.Open();

serialPort1.WriteLine("                                       ");

serialPort1.WriteLine("                                       ");

serialPort1.WriteLine("                                       ");

serialPort1.WriteLine("                                       ");

serialPort1.Close();

textBox1.Text = "";

}

Mikro deneleyici tarafında yazılan karşılama kodu aşağıdaki gibidir.

CCS Derleyisinde Mikroişlemci İçine Yazılan Kod Bloğu:

#include "main.h"

#include "flex_lcd.h"

#use rs232(baud=9600,xmit=pin_c6,rcv=pin_c7,stop=1,parity=N)

//Com Protuna yazılan bilgiyi karşılayan kod bloğu.

#int_RDA

void  RDA_isr(void)

{

char rs232_read;

rs232_read=GETCHAR();

lcd_putc(rs232_read);

}

void main()

{

setup_adc(ADC_CLOCK_INTERNAL);

//enable_interrupts(INT_TBE);

enable_interrupts(INT_RDA);

enable_interrupts(GLOBAL);

lcd_init();

//*******************************//

//*********deney****************//

set_tris_b(0xFF);

set_tris_c(0xFF);

set_tris_d(0xFF);

//*******************************//

//rs232 kontrol arayüzü yazdırma

lcd_init();

delay_us(10);

while(1) {}

}

serialPort1.WriteLine(" ");

serialPort1.Close();

}

public void serialPort1_DataRecived(object sender,System.IO.Ports.SerialDataReceivedEventArgs e)

{

//Seri Porta Veri Geldiği anda otomatik olarak bu fonksiyon tetiklenir.

serialPort1.Open();

System.IO.Ports.SerialPort s = (System.IO.Ports.SerialPort)sender;

MessageBox.Show("Mesaj Alındı");

string i = serialPort1.ReadLine();

serialPort1.Close();

        }

Advertisements

About ... from Emrah METE

Bilgisayar Mühendisi
This entry was posted in Hardware, Uncategorized and tagged , , , , , . Bookmark the permalink.

10 Responses to C# Üzerinde Geliştirilen Arayüz İle RS232 Modülü Kullanarak Seri Haberleşme Uygulaması

  1. Emrah bey projenin dosyasını gönderme şansınız var mı? kodlar burada karışık geldi.

  2. meryem says:

    İyi günler,
    C# üzerinde bir seri haberleşme programı yapıyorum. Veriler 5 ‘ er sn arayla sürekli olarak geliyor. Gelen verileri richtextbox üzerinde online görebiliyorum. Ancak ben veri geldiğinde tasarladığım arayüz üzerinde birtakım değişiklikler olmasını istiyorum. Örneğin; 00000001 verisi geldiğinde çalışıyor butonunun rengi değişsin, 00000011 verisi geldiğinde yayında butonunun rengi değişsin gibi. Veriyi aldığım methodun içinde if ile bunu kontrol ediyorum ancak sadece program ilk çalıştığı sırada örneğin 00000001 verisi gelidiyse çalışıyor butonunun rengi değişiyor, program çalışmaya devam ederken seri porttan gelen veri 00000011 olduğunda çalışmıyor butonunun rengi değişmiyor yani senkronize olarak bu değişimi sağlayamıyorum. gelen verilere göre programda buton renkleri değişsin istiyorum. Bunun için önerebileceğiniz birşey var mıdır? Yardımcı olursanız çok sevinirim.
    Saygılarımla

  3. Kemal DURAN says:

    PIC programlama mı bu?

  4. erkan says:

    bu programın java ile nasıl yapabiliriz

  5. saltintav says:

    Merhaba Ben size bir öneride bulunacağım saygısızlık olarak algılamayın lütfen.
    Makalelerinizi eklediğiniz kodları

    bu tagların arasına koyarsanız hem daha hoş hemde daha anlaşılır görülecektir.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s