Picproje Elektronik Sitesi

MİKRODENETLEYİCİLER => Microchip PIC => Konuyu başlatan: Gökhan BEKEN - 02 Haziran 2013, 03:26:16

Başlık: Seri port hakkında herşey
Gönderen: Gökhan BEKEN - 02 Haziran 2013, 03:26:16
Arkadaşlar forumda dikkat ettim açılan 10 konudan 1'i seri port hakkında yardım istiyor. Birşeyler yazdım seri port hakkında umarım işe yarar. Seriport hakkında herşey dedim ama lafın gelişi yani. İlerde biraz daha kod ekleyip büyüteceğim dökümanı zamanım olursa.
kaynak: http://gokhanbeken.com/?p=753 (http://gokhanbeken.com/?p=753)

1-    HİKAYE

Bu kısımda sık sık karşımıza çıkan eğer bilmiyorsak çoğu zaman çaktırmadan biliyormuş gibi bir tavır ürettiğimiz aslında oldukça yanlış bildiğimiz bazı ayrıntı görünen ama işin mantığını anlamamız açısından önemli olan kavramları işleyeceğiz.


Seriport: Masaüstü bilgisayarlarda bulunan, 9 adet pini olan, eski tip yazıcılarda, mouse'larda, modemlerde ve birçok cihazda bilgisayara bağlamak için kullanılan ve tabiki bizim yani hem bilgisayar yazılımcısı hemde elektronik devre tasarımcılarının sık sık kullandığı bir... bir .... nedir ya cümlenin sonunu getiremedim, neyse bir porttur :D Yeni tip bilgisayarlarda bulunmuyor malesef, komplo teorisi yürütecek olursak herhalde usb/rs232 çevirisi satan firmalarla anlaştıkları için bilgisayar üreticileri koymuyor bu portu ürettikleri bilgisayarlara. :D


Rs232:

Bildiğimiz seri porttur işte, öğrenmek gerekir, bir çok dijital cihazın ayarlarını yapmamız için bilgisayara bağlamamızda kullanılır. Yeni nesil cihazlar USB ile haberleşsede rs232 hala bir çok cihazda kullanılıyor ve de kullanılacak

Uart: Universal Asyncronous Receiver Transmitter demektir. Sizin anlayacağınız seri port'un işlerini yürüten çiplere denir. Bir çok mcu'da dahili olarak vardır. Ancak yazılımsal olarakta seri iletişim kullanılabilir, tabiki donanımsal olması herzaman daha iyidir.

Usart: Universal Synchronous Asynchronous Receiver Transmitter demektir. "Synchronou " kısmı senkron anlamına gelir. Anlayacağınız, UART'ın senkronize iletişim destekleyenidir. Peki senkron ne demek? Dataları clock eşliğinde göndermektir,  normalde TX,RX ile haberleşmeyi sağlayabiliriz ama senkron modunda bir tane de clock pini de ilave edilir ve datalar clock ile adından da anlaşıldıgı gibi senkronize edilerek gönderilir.Biz haberleşmemizi clocksuz yapacağız.

Paralel İletişim:

Digital olarak kodlanmış bilginin tüm bitleri aynı anda transfer ediliyorsa buna "paralel veri iletimi " denir. Paralel veri iletiminde iletilecek bilginin her biti için ayrı bir kablo bağlantısı sağlanır. Seri veri iletiminde, bir kerede bir karakterin sadece biri iletilir. Alıcı makine doğru haberleşme için karakter uzunluğunu, start - stop bitlerini ve iletim hızını bilmek zorundadır.

Seri İletişim:

Seri iletim bilginin tek bir iletim yolu üzerinden n bit sıra ile aktarılmasıdır. Bilgisayar ağları üzerindeki iletişim seri iletişimdir.

Herhangi bir iletişim yönteminde  kullanılan terimler:

a-Full-dublex seri iletişim:

Bu yöntemde her iki taraf da alıcı ve verici olarak çalışır.Yani aynı anda veri gönderip alabilirler.Telefon konuşmaları gibi.

b-Half-dublex seri iletişim:

Bu yöntemde de her iki taraf alıcı ve verici olarak çalışabilir.Fakat biri veri göndeririken diğer dinlemek zorundadır.Aynı anda karşı taraf veri yollayamaz.Telsiz konuşmaları gibi.

c-Simplex seri iletişim:

Bu yöntemde bir taraf verici bir taraf alıcıdır.Değişmesi mümkün değildir.Radyo yayınları gibi.

Not:Bu örnekler seri iletişim örnekleri değildir.Sadece iletişim formatını açıklamak için verilmiştir.

2-Rs232 için kullanılan entegreler ve datasheetleri:

Öncelikle neden bir çevirici entegreye ihtiyacımız var?

Birçok mikrodenetleyici 5 volt ile çalışır. Bu mikrodenetleyicilerin high Kabul ettiği değer 5v, low Kabul ettikleri değer ise 0volt yani gnd dir buna TTL seviye denir. Bilgisayar seri portu için high +12 V low -12 V civarıdır. Bu durumda bilgisayar ile mcu devremizi direkt bağlamamız uygun değildir.Kullandığımız çeviriciler seri port ile TTL devrelerin çalışabilmesini sağlayan birer entegredir. Örnek olarak max232, 5volt ile çalışan cihazlarla pc arasındaki çevirici işini yapar. 3.3 volt ile çalışan cihazlar için ise max3232 entegresini kullanabiliriz. Çoğu pic 3.3 volt ile de çalışabildiğinden(örneğin 16f628A) max3232 entegresini bu şekildede kullanabilirsiniz. LF serisi picler ise düşük voltaj ile çalışan piclerdir. Bu serideki picleri(örn: 16LF628) de bu entegre ile bilgisayarla konuşturabilirsiniz. Uzun Lafın Kısası= ULK J

3.3v için max3232

Datasheet: http://datasheets.maximintegrated.com/en/ds/MAX3222-MAX3241.pdf (http://datasheets.maximintegrated.com/en/ds/MAX3222-MAX3241.pdf)

5v için max232

Datasheet: http://www.ti.com/lit/ds/symlink/max232.pdf (http://www.ti.com/lit/ds/symlink/max232.pdf)

Çevirici entegre yerine transistör kullanmak:

(http://gokhanbeken.com/resimler/rs232/1.png)

en büyük eksisi max232 kadar yüksek hızlara çıkamaması.

3-Rs232 nin kablosu, konnektörü ve pinleri:

(http://gokhanbeken.com/resimler/rs232/2.png)

(http://gokhanbeken.com/resimler/rs232/3.png)

(http://gokhanbeken.com/resimler/rs232/4.png)

(http://gokhanbeken.com/resimler/rs232/5.png)

Aşağıdaki çizim max3232 veya max232 nin iç yapısının anlaşılması için tarafımdan çizilmiştir. 11 ve 12. Pinlere 1. Cihazı, 9. Ve 10. Pinlere ise 2. Cihazı bağlarız.  13 ve 14 pinlerine 1. Pc yi. 7 ve 8. Pinlerine ise 2pc yi bağlarız.  1. Pc den gelen veriler 11 ve 12. Pinlerden 1. Cihaza ulaşır. 2.pcden gelen veriler 9. Ve 10. Pinlerden 2. Cihaza ulaşır.

Pinlerin isimleri aklınızı karıştırabilir. Pin isimleri bilgisayara göre değil cihazlara göre aklınızda tutarsanız unutmazsınız.

11 pini "t1 in" dir bu pine alıcının tx pini girer ve alıcıdan 11. Pine giren tx verisi 14. Pinden(t1out) çıkarak PC nin RX pinine(konnektörün 2. pinine) girer.

13. pin "r1in" pinidir. Cihazımızın rx pinine girecek veriyi buraya bağlarız. Yani pc nin tx'i bu pine girer, ordan da voltaj seviyesi ayarlanarak 12. Pinden cihazımızın rx'ine ulaşır.

7,8,9 ve 10 pinleride aynı şekilde düşünebilisiniz bu kısma size bırakıyorum.

(http://gokhanbeken.com/resimler/rs232/6.png)

Aşağıdaki şemada p3 ve p4 sadece alıcı durumundadır. TX pinleri bağlı olmadığından gönderme yapamazlar. TX pinleri bağlı olsa idi tx ler çakışırdı bu yüzden bağlanmazlar.

(http://gokhanbeken.com/resimler/rs232/7.png)

4-Usb –rs232 çevirici:

Artık laptoplarda rs232 portu bulunmamaktadır. Ancak bu bizim için bir engel değildir, USB portundan rs232 çeviren cihazlar vardır. Laptoplarda kullanılmak üzere USB/RS232 çevirici cihaz:

(http://gokhanbeken.com/resimler/rs232/8.png)

5-Rs232 nin pic lerde kullanımı için örnek kodlar(css c):

CCS C yazılımı(Yazan: Serdar Çiçek):



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

PIC16F877 ile RS232 Seri İletişim Uygulaması

PIC PROG/DEKA     : Port B jumper'ı LCD konumunda olmalı

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

#include <16f877.h>     // Kullanılacak denetleyicinin başlık dosyası tanıtılıyor.

// Denetleyici konfigürasyon ayarları

#fuses XT,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD

#use delay (clock=4000000) // Gecikme fonksiyonu için kullanılacak osilatör frekansı belirtiliyor.

#define use_portb_lcd TRUE   // LCD B portuna bağlı

#include <lcd.c>   // lcd.c dosyası tanıtılıyor

#use rs232 (baud=9600, xmit=pin_C6, rcv=pin_C7, parity=N, stop=1) // RS232 protokolünün 9600 bit/sn baud hızında olacağını ve

// TX,RX uçlarının hangi pinler olacağını tanımlıyor

// parity bitinin olmadığını, stop bitinin 1 bit olacağı belirtiliyor

char   klavye[80];  // klavye isminde 80 üyeli bir dizi tanımlanıyor

#int_rda   // RX ucuna veri gelince meydane gelen kesme

void serihaberlesme_kesmesi ()

{

disable_interrupts(int_rda); // int_rda kesmesini pasif yap

output_high(pin_c5);  // RC5 çıkışı lojik-1

gets(klavye); // String ifadeyi al ve "klavye" adlı dizi değişkenine aktar.

printf("\n\rYazdiginiz Metin>  %s\n",klavye); // Satır atla, yeni satır,RS232 üzerinden klavye string ifadesini gönder,satır atla

printf(lcd_putc,"\f%s",klavye);  //LCD'yi temizle ve klavye string ifadesini LCD'de göster

output_low(pin_c5); // RC5 çıkışı lojik-0

printf("\n\rKlavyeden bir metin giriniz ve enter tusuna basiniz>"); // Satır atla, yeni satır,RS232 üzerinden belirtilen metni gönder

}

/********* ANA PROGRAM FONKSİYONU********/

void main ( )

{

setup_psp(PSP_DISABLED);        // PSP birimi devre dışı

setup_timer_1(T1_DISABLED);     // T1 zamanlayıcısı devre dışı

setup_timer_2(T2_DISABLED,0,1); // T2 zamanlayıcısı devre dışı

setup_adc_ports(NO_ANALOGS);    // ANALOG giriş yok

setup_adc(ADC_OFF);             // ADC birimi devre dışı

setup_CCP1(CCP_OFF);            // CCP1 birimi devre dışı

setup_CCP2(CCP_OFF);            // CCP2 birimi devre dışı

output_low(pin_c5); // RC5 çıkışı ilk anda sıfırlanıyor

lcd_init();   // LCD'yi hazırla

printf("\r**************** Merhaba *********************"); // Yeni satır, RS232 üzerinden belirtilen metni gönder ve satır atla.

printf("\n\rKlavyeden girdiginiz bilgiler LCD'de gorunecektir\n\n"); // Satır atla, yeni satır, RS232 üzerinden belirtilen metni gönder

printf("\n\rKlavyeden bir metin giriniz ve enter tusuna basiniz>"); // Satır atla, yeni satır,RS232 üzerinden belirtilen metni gönder

enable_interrupts(GLOBAL);  // Aktif edilen tüm kesmelere izin ver

while(1) // Sonsuz döngü

{

enable_interrupts(int_rda); // int_rda kesmesi aktif

}

}



(http://gokhanbeken.com/resimler/rs232/9.png)

6- Tek uart ve çift uart donanımı bulunan MCU'lar

Tek UART'lı mcu için örnek  verecek olursak sıradan piclerden 16f628 olabilir.

Çift UART için 18f87k22 gibi gelişmiş PIC ler kullanılabilir. Tabi pic dedik ama ATMEL , ARM gibi mcu larında çift UART lıları vardır elbet.

Peki neden çift UART? RS232 ile haberleşmeniz gereken 2 adet cihaz var ise, çift uart kullanmanız gerekir. A cihazı ilehaberleşirken UART1'i, B cihazı ile haberleşirken UART2 yi kullanırsınız. Ancak illaki tek uart kullanmanız gerekirse, dipswitch ile kullanıcının seçim yapmasını sağlayabilirsiniz, olmadı master/slave ilişkisi kurabilirsiniz.

18F87k22'nin rs232 pinleri:

(http://gokhanbeken.com/resimler/rs232/10.png)

Not: 18f87k22 için hazırladığım dökümanı okumak için tıklayınız: http://gokhanbeken.com/?p=735 (http://gokhanbeken.com/?p=735)

Dip switch:

(http://gokhanbeken.com/resimler/rs232/11.png)

Master/Slave ilişkisi:

(http://gokhanbeken.com/resimler/rs232/12.png)

(http://gokhanbeken.com/resimler/rs232/13.png)

(http://gokhanbeken.com/resimler/rs232/14.png)

7-Sanal seri port programları:

Tera Term programından bir görüntü:

(http://gokhanbeken.com/resimler/rs232/15.png)

İndirme linki: http://logmett.com/index.php?/download/tera-term-478-freeware.html (http://logmett.com/index.php?/download/tera-term-478-freeware.html)

8-Rs232 ve rs485 in farkı:

1-Rs485 protokol değil haberleşme fiziksel arayüzüdür. Rs232 hem fiziksel olarak portu hem de protokolü anlatmakta kullanilir. Prokol: iki cihaz arasındaki haberleşme için ortak bir iletişim yöntemi demektir...

2-Rs485 sadece 2 kabloyla(tx ve rx) haberleşir, rs232 ise 3 kablo ile haberleşir(tx,rx ve gnd)

3-Rs485 rx ve tx üzerindeki gerilimler arasındaki farka bakılarak sinyal durumları hesaplandığından (yani her iki kablo birbirinin referansıdır) ve gürültü bu iki adet kabloya aynı miktarda bineceğinden gürültülü sinyal ile normal sinyal arasında taşıdığı bilgi açısından bir fark olmamaktadır. ancak rs232'de referans gnd (ground yani bildiğimiz sıfır voltaj temel referans) olduğundan gürültü kabloya bindiğinde sinyalin değerini artırıp azalttığında sinyalin taşıdığı bilgi değişim gösterebilmektedir.

4-Rs485 1,2km kadar haberleşme imkanı sağlar. Rs232 de bu 10metre civarıdır.

5-Rs485 ile 32 cihaz birbirine veri gönderip, birbirinden veri alabilir. Rs232 de hem veri gönderip hem very almak için sadece 2 cihaz kullanabilirsiniz. Ancak sadece 1 cihazın veri göndermesi yeterli ise diğer cihazların tümü alıcı olmak şartıyla çoklu iletişim kullanılabilir. Yani 1 sunucu olur çok sayıda alıcı olur. Alıcılar sadece okuma yapabilir very gönderemez. Çünkü sunucunun rx pinine sadece 1 adet tx pini bağlanabilir.

Gördüğünüz gibi 485 çok daha üstündür öğrenmekte fayda var. Rs485 hakkında daha fazla bilgi edinmek için dosyayı indiriniz: http://www12.zippyshare.com/v/65684380/file.html (http://www12.zippyshare.com/v/65684380/file.html)

9-Tx ve rx pinlerine bağlanan ledler(transistörler)

İletişimin gerçekleştiğini ledler ile göstermek için aşağıdaki şema veya benzer bir şema kullanabilirsiniz. Aşağıdaki şemada pnp transistör kullanıldığı için hat low olunca ledler yanar. NPN transistör kullanırsanız hat high olunca ledler yanar.

(http://gokhanbeken.com/resimler/rs232/16.png)

10-Pc de tx ve rx pinini birbirine bağlayarak test etmek:

Max232 veya max3232 devrenizi test etmek istiyorsunuz ancak elinizde pic yok. Ya da bir devre yaptınız sorun var, iletişim sağlanamıyor. Sorunun pic temi, çeviricidemi yoksa kullandığınız veya yazdığınız programda mı olduğunu bilmiyorsunuz. O halde ilk başta pcnin tx ve rx pinlerini hiç bir yere bağlamayın sadece birbirlerine kısa devre edin. Bu durumda pc den programla gönderdiğiniz verinin size size aynen geri gelmesi gerekir. Eğer gelmiyorsa programınızda sorun vardır. Bu aşamada sorun yoksa max232 den cihaza(pic olabilir) giden tx ve rx pinlerini kısa devre edip tekrar programdan veri gönderin eğer gönderdiğiniz veriler size tekrar geliyorsa çevirici entegre devrenizde de sorun yok demektir. Yani sorun pic teki yazdığınız programdadır.

11- Proteustaki connektörler, isisteki rs232 terminalin ayarları

(http://gokhanbeken.com/resimler/rs232/17.png)

(http://gokhanbeken.com/resimler/rs232/18.png)

(http://gokhanbeken.com/resimler/rs232/19.png)

Eğer isiste virtual terminalin ayarlarını yapmazsanız aşağıdaki gibi saçma değerler alabilirsiniz.

(http://gokhanbeken.com/resimler/rs232/20.png)

Ayarları yapmak için virtual terminal elemanına çift tıklayabilir veya sağ tıklayıp edit properties diyebilirsiniz.  Max232 kullandığımız için polarity'yi normal değil invert yani ters çevrilmiş seçmemiz gerekir. Baud rate yi de 9600 ayarlarız genelde, ancak istediğiniz gibi değiştirebilirsiniz burdan. Tabi cihazlarınızda da aynı hız ayarlı olmalı.

(http://gokhanbeken.com/resimler/rs232/21.png)

12-C# ta seriport veri görderme ve almak için kodlar:

Not: Projenize 1 adet buton, 1 adet textbox, 1 adet combobox ve en önemlisi 1 adet serialPort nesnesi ekleyiniz.



using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Text;

using System.Windows.Forms;

using System.IO.Ports;

&nbsp;

namespace rs232_projesi

{

public partial class Form1 : Form

{

public Form1()

{

InitializeComponent();

}

&nbsp;

private void Form1_Load(object sender, EventArgs e)

{

string[] portlar = SerialPort.GetPortNames();  // portları dizi halinde aldık

foreach (string port in portlar)

{

comboBox1.Items.Add(port.ToString()); // Portlarımızı combobox ın içine aldık.

}

&nbsp;

CheckForIllegalCrossThreadCalls = false;

/*

Textboxlar main thread'a bağlıdır, burada oluşan bir nesnedir.

Seriportun datareceived eventi kendine başka bir thread açar ve sürekli dinleme yapar ki böylece yeni data geldiğinde bunu alabilelim. Bu satırı yazmazsak: Event içinde datayı alıp, başka thread'a ait textboxa yazdırmaya çalıştığımız için derleyici "Cross-thread operation not valid: Control 'textBox1' accessed from a thread other than the thread it was created on." yani "Çapraz-iş parçacığı işlemi geçersiz ; hatası verir.

textbox1 bu thread üzerinde oluşturulmamış ki" mealinde birşeyler söylüyor, ee o zaman nasıl mümkün? Tabiki, bu denetimi aşağıdaki kodu form_load eventine veya form constructor'ının içine yazarak devre dışı bırakırsan.

CheckForIllegalCrossThreadCalls = false;

*/

}

&nbsp;

void seri_port_baglan()

{

if (serialPort1.IsOpen) // Bağlantıyı açıyoruz.eğer önceden bağlan butonuna basmış isek yani bağlantıyı açmışsak aşağıdaki hata mesajını verecektir.

{

MessageBox.Show("Port Açık Bulunmaktadır..", "Bilgi", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button3);

return;

}

else

{

try

{

serialPort1.BaudRate = int.Parse("9600"); // Hız olarak 9600 verdik.

serialPort1.DataBits = int.Parse("8"); // Veri bit ini de 8 bit olarak verdik

serialPort1.StopBits = System.IO.Ports.StopBits.One; // Durma bitini tek sefer olarak verdik.

serialPort1.Parity = Parity.None; // eşlik bit ini vermedik.

serialPort1.PortName = comboBox1.Text; // Port adlarını comboboxtan alıyoruz.

serialPort1.Open(); // Bağlantıyı açıyoruz

MessageBox.Show("Bağlantı Başarılı");

}

catch (Exception) // Herhangi bir hata anında alttaki hata mesajını alacağız..

{

MessageBox.Show("cihazınız bağlı değil...", "Bilgi", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button3);

}

}

}

&nbsp;

public string trDuzelt(string a) //Türkçe karakerleri, ingilizce karakterlere çevirmek için kullanıyoruz

{

a = a.Replace("İ", "I");

a = a.Replace("Ü", "U");

a = a.Replace("Ç", "C");

a = a.Replace("Ş", "S");

a = a.Replace("Ö", "O");

a = a.Replace("Ğ", "G");

a = a.Replace("ı", "I");

a = a.Replace("ü", "U");

a = a.Replace("ş", "S");

a = a.Replace("ç", "C");

a = a.Replace("ğ", "G");

a = a.Replace("ö", "O");

return a;

}

&nbsp;

private void seri_port_data_gonder(string gonderilecek_veri)

{

try

{

if (serialPort1.IsOpen)

{

serialPort1.Write(gonderilecek_veri);

System.Threading.Thread.Sleep(150);

//alıcı cihaza okuması için biraz süre tanımak gerek, kul yapısı sonuçta :D

}

}

catch (Exception)

{

MessageBox.Show("Sonuç: Başarısız !", "Bilgi", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button3);

}

}

&nbsp;

void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)

{

byte[] buffer;

buffer = new byte[1];

serialPort1.Read(buffer, 0, 0);

MessageBox.Show("Gelen veri:" serialPort1.ReadExisting());

// her gelen veriyi otomatik görmenize gerek yoksa bu satırın başına // koyunuz

}

&nbsp;

private void button1_Click(object sender, EventArgs e) //veri gönderme butonu

{

seri_port_data_gonder(textbox1.text+(Char)13);

//textboxtaki veriyi, yazdığımız fonksiyon aracılığıyla rs232 den gönderiyoruz.

//char13, enterin ascii kodudur.

}

&nbsp;

}

}

Başlık: Ynt: Seri port hakkında herşey
Gönderen: MrDarK - 02 Haziran 2013, 09:55:19
Gökhan güzel bir yazı dizisi olmuş seri port hakkında ;

Yeni başlayanları oldukça bilgilendirecektir. Ama bana kalırsa yazdığın o konuyu buraya koyup altına kaynak diye ekleseydin daha bir hoş olurdu sanıyorum. Çünkü bu şekilde açtığın sayfa ile paylaştığın bilginin picprojeye bir anlamı yok gibi. En azından benim kendi fikrim bu şekilde yanlış anlamazsın umarım.

Saygılarımla.
Başlık: Ynt: Seri port hakkında herşey
Gönderen: Gökhan BEKEN - 02 Haziran 2013, 14:27:32
Dediğiniz gibi tekrar düzenledim hocam.
Başlık: Ynt: Seri port hakkında herşey
Gönderen: MrDarK - 02 Haziran 2013, 16:00:22
Eline sağlık işte şimdi beğendim :)

Ayrıca birşey ekleyeyim konuyu canlandırmak adına , Seri PORT programlarından en çok kullanılanı bana kalırsa Hercules

Birçok projemde hercules kullanıyorum, hem HEX editoru hem Text editoru içinde barındırmakta,

Başka başka artılarıda var, Genel olarak siz ne kullanıyorsunuz ?
Başlık: Ynt: Seri port hakkında herşey
Gönderen: Gökhan BEKEN - 03 Haziran 2013, 00:14:27
Serial Port Monitor - Eltima Software yazılımını kullanmıştım detaylar güzeldi, ayrıca arayüzde güzeldi ancak tera term kara ekran ve sade pratik ıvır zıvır yok o yüzden teraterm kullanıyorum. Daha doğrusu fazla detaylı işim olmuyor, o yüzden sade tercih ediyorum. Bir de Hyper terminali denemiştim ama iğrenç bir program, birde ücretli olması kullanmama sebebim.
Hercules programını biraz araştırdım güzel birşeye benziyor, o da ücretsiz yanılmıyorsam. Terminal lazım olduğunda onu da deneyeceğim.
Bu konuda birde kendi çözümüm var. C# ile bir arayüz yazdım, gsm cihaza sms felan göndermek için ama tam olarak bitmedi.
Başlık: Ynt: Seri port hakkında herşey
Gönderen: jackal183 - 03 Haziran 2013, 09:04:42
hocam şu iki ifade de sanki bir tezatlık var gibi:

5-Rs485 ile 32 cihaz birbirine veri gönderip, birbirinden veri alabilir. Rs232 de hem veri gönderip hem very almak için sadece 2 cihaz kullanabilirsiniz. Ancak sadece 1 cihazın veri göndermesi yeterli ise diğer cihazların tümü alıcı olmak şartıyla çoklu iletişim kullanılabilir. Yani 1 sunucu olur çok sayıda alıcı olur. Alıcılar sadece okuma yapabilir very gönderemez. Çünkü sunucunun rx pinine sadece 1 adet tx pini bağlanabilir.

burdaki 5. madde ile biraz daha üstünde vermiş olduğunuz master slave slave slave bağlantı şekli tezat oluşturuypr. bu şekil rs485 için geçerlidir. rs232 için değil
Başlık: Ynt: Seri port hakkında herşey
Gönderen: OG - 18 Ağustos 2014, 08:11:11
Alıntı YapBilgisayar seri portu için high +12 V low -12 V civarıdır.
Dalgınlıkla ters yazılmış olmalı.
EIA232 normu için   
LOGIC H ==> - voltaj  (MARK)
LOGIC L ==> + voltaj  (SPACE)
Başlık: Ynt: Seri port hakkında herşey
Gönderen: demircan - 18 Ağustos 2014, 11:44:07
güzel anlatım emeğinize sağlık küçük bişey eklemek istiyorum yeni nesil anakartlarda lpt ve rs-232portu bulunmaktadır...
Başlık: Ynt: Seri port hakkında herşey
Gönderen: kudretuzuner - 18 Ağustos 2014, 12:28:47
Merhaba,
Gökhan verdiğin bilgiler için teşekkürler.PC tarafında,basit seri port çalışmaları için yazdığım ufak bir programım vardı paylaştım mı? Bilmiyorum. Tekrar paylaşayım dedim.
https://www.dropbox.com/s/9zkk8l93he08zn9/BCD_CALSMA.rar (https://www.dropbox.com/s/9zkk8l93he08zn9/BCD_CALSMA.rar)
Başlık: Ynt: Seri port hakkında herşey
Gönderen: Salih - 18 Ağustos 2014, 13:11:17
@Meftun Çok Güzel bir hizmet yaptın. Emeğine sağlık.
Başlık: Ynt: Seri port hakkında herşey
Gönderen: Emre MERMİ - 18 Ağustos 2014, 20:31:59
çok teşekkürler hocam bilgilendirmeniz için çok güzel bir çalışma
Başlık: Ynt: Seri port hakkında herşey
Gönderen: baran123 - 18 Ağustos 2014, 21:48:44
Abi ellerine sağlık şimdi aydınlandım tüm soru işaretleri gitti çok şükür :)
Başlık: Ynt: Seri port hakkında herşey
Gönderen: Gökhan BEKEN - 18 Ağustos 2014, 22:14:28
Yorumlarınız için teşekkür ederim. Yazıyı yazalı 1 seneyi geçmiş, şimdi baktımda acemice olmuş, en azından görsellere biraz daha özenebilirdim.
Yanlış kısımları düzeltenlere de ayrıca teşekkür ederim.
Başlık: Ynt: Seri port hakkında herşey
Gönderen: Kabil ATICI - 18 Ağustos 2014, 22:18:41
rs485 ile iletişimde sınırlama olduğunu düşünüyorsanız, birde max488 entegresine bakın.
Başlık: Ynt: Seri port hakkında herşey
Gönderen: LukeSkywalker - 18 Ağustos 2014, 22:46:02
Seri port yerminal progrqmi olarak putty kullaniyorum, kafam rahat.
Başlık: Ynt: Seri port hakkında herşey
Gönderen: Gökhan BEKEN - 18 Ağustos 2014, 22:53:46
Bu arada ben terminal olarak realterm kullanıyorum, eskiden teraterm kullanıyordum. İş yerinden arkadaşlar "docklight" daha güzel diyorlar ama daha denemedim.
Başlık: Ynt: Seri port hakkında herşey
Gönderen: mustafaelektro - 18 Ağustos 2014, 23:09:23
Realterm oldukça kapsamlı. Text editor kullanmam gerekmdigi için tüm diğer işlemlerimde onu kullanıyorum. Dosya gönderme, gelen bilgileri kaydetme, farklı formatta veri alıp gönderebilme, port yönlendirme gibi özelliklerini kullanmak işleri oldukça kolaylaştırıyor.
Başlık: Ynt: Seri port hakkında herşey
Gönderen: Faruk53 - 19 Ağustos 2014, 21:12:45
meftun hocam öncelikle yazınız gerçekten açıklayıcı ve başarılı teşekkürler. sizin kadar profesyonel olmasa da seri portla ilgili bir kaç çalışmam oldu ve üstüne koya koya devam etmeye çalışıyorum. terminal olarak realterm kullanmadım bende docklight kullanıyorum ve gerçekten kullanım açısından çok iyi.  text editör kullanmaya da olanak sağlıyor.
Başlık: Ynt: Seri port hakkında herşey
Gönderen: Tagli - 04 Eylül 2014, 21:48:23
Alıntı yapılan: demircan - 18 Ağustos 2014, 11:44:07
güzel anlatım emeğinize sağlık küçük bişey eklemek istiyorum yeni nesil anakartlarda lpt ve rs-232portu bulunmaktadır...
Bazılarında içine gizliyorlar. Yani arkasında klasik DB9 konnektörü yok ama anakart üzerinde pinler var, yanlış hatırlamıyorsam 10'lu yassı kablo konnektörü ile çıkış alınabiliyor. Örnek: ASUS M5A97

Düzeltme: Yazıyı yanlış okuyup "bulunmamaktadır" anlamışım. Neyse, ufak bir açıklama eklemiş gibi oldum.
Başlık: Ynt: Seri port hakkında herşey
Gönderen: fbkaya - 04 Eylül 2014, 23:43:08
Cidden çok güzel olmuş, ellerine sağlık :)
Başlık: Ynt: Seri port hakkında herşey
Gönderen: namso0632 - 17 Ocak 2015, 23:44:23
C# ile serial porttan bir veriyi lpc1769 kitine yollayacağım. Bunun için usb-rs232 çevirici kablosu tavsiyesine ihtiyacım var.

Netten bir kaç link buldum bunların hangisi işimi görür acaba? Görmezse ne tarz bir şey almalıyım?

http://urun.gittigidiyor.com/bilgisayar-tablet/usb-to-rs232-cevirici-kablo-rs-232-143640077 (http://urun.gittigidiyor.com/bilgisayar-tablet/usb-to-rs232-cevirici-kablo-rs-232-143640077)

http://urun.gittigidiyor.com/ev-elektronigi/5v-3-3v-ft232rl-usb-to-serial-232-adapter-139944256 (http://urun.gittigidiyor.com/ev-elektronigi/5v-3-3v-ft232rl-usb-to-serial-232-adapter-139944256)

http://urun.gittigidiyor.com/ev-elektronigi/usb-2-0-to-rs232-ttl-cevirici-ch340g-134511026 (http://urun.gittigidiyor.com/ev-elektronigi/usb-2-0-to-rs232-ttl-cevirici-ch340g-134511026)

Ayrıca bu ürünler arasında bir fark var mı varsa nedir açıklayabilirseniz sevinirim.
Başlık: Ynt: Seri port hakkında herşey
Gönderen: Gökhan BEKEN - 18 Ocak 2015, 20:10:50
Bu modülden kullanıyorum(başka yerden aldım): http://www.direnc.net/FT232-HAZIR-MODUL,PR-19360.html (http://www.direnc.net/FT232-HAZIR-MODUL,PR-19360.html)
Başlık: Ynt: Seri port hakkında herşey
Gönderen: Klein - 19 Ocak 2015, 00:47:36
Alıntı Yap
1-Rs485 protokol değil haberleşme fiziksel arayüzüdür. Rs232 hem fiziksel olarak portu hem de protokolü anlatmakta kullanilir. Prokol: iki cihaz arasındaki haberleşme için ortak bir iletişim yöntemi demektir...

2-Rs485 sadece 2 kabloyla(tx ve rx) haberleşir, rs232 ise 3 kablo ile haberleşir(tx,rx ve gnd)

3-Rs485 rx ve tx üzerindeki gerilimler arasındaki farka bakılarak sinyal durumları hesaplandığından (yani her iki kablo birbirinin referansıdır) ve gürültü bu iki adet kabloya aynı miktarda bineceğinden gürültülü sinyal ile normal sinyal arasında taşıdığı bilgi açısından bir fark olmamaktadır. ancak rs232'de referans gnd (ground yani bildiğimiz sıfır voltaj temel referans) olduğundan gürültü kabloya bindiğinde sinyalin değerini artırıp azalttığında sinyalin taşıdığı bilgi değişim gösterebilmektedir.

4-Rs485 1,2km kadar haberleşme imkanı sağlar. Rs232 de bu 10metre civarıdır.

5-Rs485 ile 32 cihaz birbirine veri gönderip, birbirinden veri alabilir. Rs232 de hem veri gönderip hem very almak için sadece 2 cihaz kullanabilirsiniz. Ancak sadece 1 cihazın veri göndermesi yeterli ise diğer cihazların tümü alıcı olmak şartıyla çoklu iletişim kullanılabilir. Yani 1 sunucu olur çok sayıda alıcı olur. Alıcılar sadece okuma yapabilir very gönderemez. Çünkü sunucunun rx pinine sadece 1 adet tx pini bağlanabilir.

Gördüğünüz gibi 485 çok daha üstündür öğrenmekte fayda var. Rs485 hakkında daha fazla bilgi edinmek için dosyayı indiriniz: http://www12.zippyshare.com/v/65684380/file.html (http://www12.zippyshare.com/v/65684380/file.html)


Burada iki noktada düzeltme yapmak gerek.

3- RS485 hattında TX ve RX uçları yoktur. bu bağlantıyı tarif ederken TX ve RX  bağlantılarından bahsedemeyiz. Çünkü aynı pinler hem TX hem de RX olabilir. Genellikjle D+,D- veya A,B olarak tanımlanırlar.

5- RS485 hattında 32'den fazla cihaz olabilir.  32 sınırlaması  eskiden kullandığımız 75176 ve türevleri için geçerli. Yeni nesil çüpler 128 hatta 256 cihazı desteklemektedir. 

Bir soru?
RS232'de RS485 gibi  gibi bir fiziksel arayüzü tanımlar.  RS232'yi protokol olarak değerlendirdiğiniz halde , RS485'i neden aynı şekilde değerlendirmediniz?
Başlık: Ynt: Seri port hakkında herşey
Gönderen: namso0632 - 19 Ocak 2015, 18:42:35
Alıntı yapılan: meftun - 18 Ocak 2015, 20:10:50
Bu modülden kullanıyorum(başka yerden aldım): http://www.direnc.net/FT232-HAZIR-MODUL,PR-19360.html (http://www.direnc.net/FT232-HAZIR-MODUL,PR-19360.html)

Hocam sipariş verdim bu kartı. Mikro A-B konnektör girişi sanırsam bilgisayara bağlanacak kısmı yanılıyor muyum ?
Ayrıca çıkış pinlerini ve ayrıntılı bir açıklama göremedim sitesinde. Size zahmet olmazsa kısaca çıkış pinlerini ve kullanışından bahseder misiniz.
Başlık: Ynt: Seri port hakkında herşey
Gönderen: muratdumlu - 03 Mayıs 2018, 20:11:49
SerialPort üzerinden iki ayrı buton ile bağımsız olarak değer göndermek istiyorum. Örneğin ScoreBoard olarak düşünün, A Takımı için 140, B takımı için 280 sayısını göndermek istiyorum. Nasıl yapabilirim?