SlideShare a Scribd company logo
1 of 4
Download to read offline
Mustafa BÜKÜLMEZ https://mustafabukulmez.com/
https://mustafabukulmez.com/2021/05/06/c-seri-port-rs232-veri-okuma/ ~ 1 ~
Merhabalar, C# Seri Port RS232 Veri Okuma yazım ile C# eğitim setine devam ediyorum.
Bu yazıda sadece seri porta (com) bağlanarak gelen veriyi okuma işlemi yapacağız. Yani seri
porta veri yazma işlemine bu yazıda değinmeyeceğim. Seri port cihazım olmadığı içinde nasıl
çalıştığını gösteremeyeceğim. Bu sebeple sadece kodları olacak. Gelin seri port rs232 okuma
işlemini nasıl yaptığımıza bakalım.
C# Seri Port RS232 Veri Okuma
Giriş kısmında belirttiğim gibi sadece seri port rs232 veri okuma yapacağız. Veri yazma işine
hiç ihtiyacım olmadığı için hiç kullanmadım dolayısı ile o kodları veremeyeceğim. İnternetten
bakıp yazabilirim böyle diye ama prensip meselesi çalıştığını görmediğim kodları
paylaşmıyorum.
Ayrıca bu porta Com Port 'ta denebilmektedir. Com, communication yani haberleşmeden
geliyor. Bilgisayarımızdaki Com Portlar otomatik olarak genellikle COM1, COM2 şeklinde
isimlendirilmiş olur.
Seri port'u bilmeyen arkadaşlar için, seri port aşağıdaki gibi VGA'ya benzeyen ama iki sıra
pini olan bir prottur ve genellikle kantar ve terazilerden veri alırken kullanırız.
Burada şuna bir ayrım getirelim. Seri Port ile RS232 aynı şeyler değillerdir arkadaşlar. Seri
Port yukarıda gördüğünüz görseldeki gibi bağlantısı olan bir bağlantı şeklidir. RS232 ise
Telekomünikasyonda RS-232, DTE ile DCE arasındaki seri ikili tek sonlu veri iletimi ve
sinyalleme için kullanılan seri iletişim standardının genel adıdır. Bu konu hakkında daha
detaylı bir yazı ileride yapabilirim.
C# Seri Port RS232 Veri Okuma
Mustafa BÜKÜLMEZ https://mustafabukulmez.com/
https://mustafabukulmez.com/2021/05/06/c-seri-port-rs232-veri-okuma/ ~ 2 ~
İlk işimiz her zamanki gibi bir class açmak olacak. Ben adına RS232_Connect diyorum. Siz
istediğiniz ismi verebilirsiniz. Sonrasında Seri Port ile çalışmak için projemize
using System.IO.Ports;
Namespace 'ini (isim uzayı) eklememiz gerekiyor. Namespace'i ekledikten sonra
public static SerialPort comPort = new SerialPort();
diyerek seri port tanımlamasını yapıyoruz.
Bilgisayardaki mevcut com portların bir listesini alalım.
public static string[] ports = SerialPort.GetPortNames();
Sonrasında seri port veri okuma hızını belirteceğimiz baud rate'leri hazırlıyoruz.
private static int[] brate = new int[] { 2400,4800,9600,19200,38400 };
Baud rate tanımı veri iletim hızı olarak bilinir ve genellikle 9600'dür. Şahsen 9600'dan başka
bir baud rate kullanmadım. Büyük ihtimalle hep terazi kantar gibi cihazlardan veri okuduğum
içindir. Ek olarak burada cihazımızın desteklediği hızları bilmemiz gerekiyor. Bilmiyorsak
hızları tek tek deneyerek sağlıklı veri aldığımız hızı bulabiliriz.
Seri Port Bağlantısı
Eğer sürekli baud rate ve com port değiştirmeye gerek yok ise yani geliştirdiğiniz uygulama
için alınan cihazların hepsi aynı ise yukarıdaki dizileri kullanmanıza gerek yoktur. Ben
uygulamalarımda hiç değiştirme gereği duymadım. Seri Port adını (COM1, COM2 vs ) adını
ve baudrate'ini bildiğim için hep sql tablosunda tutarım bu bilgileri. Parametre şeklinde okur
ve kullanırım.
Sıra geldi bağlantımızı açmaya... Öncelikle bağlantı açık ise kapatacağız. Kapalı ise açacağız.
public static void PortOpen(string port_name, int baudrate)
{
if (comPort.IsOpen) comPort.Close();
if (!comPort.IsOpen)
{
try
{
Mustafa BÜKÜLMEZ https://mustafabukulmez.com/
https://mustafabukulmez.com/2021/05/06/c-seri-port-rs232-veri-okuma/ ~ 3 ~
comPort.PortName = port_name;
comPort.BaudRate = baudrate;
comPort.Open();
comPort.Handshake = Handshake.None;
}
catch (Exception ex)
{
MessageBox.Show(ex.GetType().Name + Environment.NewLine
+ ex.Message);
}
}
}
Buraya kadar ki kısmı bir class dosyası içindedir. Bir çok deneme yapmama rağmen veriyi
sürekli olarak okuyan kodları class'ta kullanamadım. Buradan sonra vereceğim kodlar ilgili
formların içerisinde yer almaktadır.
Diyelim ki KantarForm adında bir formumuz olsun ve teraziden gelen KG bilgisini bu
ekranda bir nesneye yazacak olalım. KantarForm'umuzu açıyoruz ve Load eventinde seri port
bağlantısını açıyoruz. Portu açtıktan sonra da verileri alacak olan eventimizin atamasını
gerçekleştiriyoruz.
Cls.Global.RS232_Connect.PortOpen("COM1",9600);
Cls.Global.RS232_Connect.comPort.DataReceived += new
SerialDataReceivedEventHandler(comPort_DataReceived);
Bu iki satır kod seri port bağlantısını ne zaman başlatacaksanız orada kullanabilirsiniz.
Verileri Okumak
Portu açtık ve dinlemeye başladık. Şimdi bir string değişken tanımlıyoruz. Ben bu değişkene
Gelen adını verdim. Değişkeni tanımladıktan sonra DataReceived eventi tanımlıyoruz.
public string Gelen = "";
private void comPort_DataReceived(object sender,
SerialDataReceivedEventArgs e)
{
try
{
Gelen = Cls.Global.RS232_Connect.comPort.ReadLine();
}
catch (System.IO.IOException) { Gelen = ""; }
catch (InvalidOperationException) { Gelen = ""; } // bağlantı
kapalı olduğunda çıkıyor
try { base.Invoke(new EventHandler(this.DisplayText)); }
catch (FormatException) { } // hatalı format
catch (InvalidOperationException) { } // Pencere işleyicisi
oluşturuluncaya kadar denetim üzerinde Invoke veya BeginInvoke çağrılamaz.
catch (IndexOutOfRangeException) { } // Dizin, dizi
sınırlarının dışındaydı.
}
Mustafa BÜKÜLMEZ https://mustafabukulmez.com/
https://mustafabukulmez.com/2021/05/06/c-seri-port-rs232-veri-okuma/ ~ 4 ~
Buradaki kodları biraz açıklamam gerekiyor. Öncelikle neden direk textbox'a veya başka bir
nesneye yazmıyoruz derseniz bu metot içerisinde textbox vb. bir nesneye atama
yapamıyorsunuz. Özellikle veriyi değişkene almak ve DisplayText gibi farklı bir metot ile bir
nesneye yazabiliyorsunuz.
private void DisplayText(object sender, EventArgs e)
{
calc_miktar.EditValue =
RS232_Connect.Gelen_Bilgi_Formatlama(Gelen);
}
Burada gördüğünüz gibi ReadLine() metotu ile gelen veriyi satır olarak okuduk ve gelen
veriyi bir değişkene aldık. Bu işlemi yaparken iki farklı hata alabiliyoruz. Program kırılmasın
diye bu hataları try catch ile ele aldım ve umursama devam et dedim.
Verileri almakla bitmiyor. Alınan veriyi de bir yere yazmamız gerekiyor. Yazma işlemi içinde
DisplayText eventimizi kullanıyoruz. Yine aynı event yani veri okuma eventi içerisindeyiz.
Başka bir bir kaç try kontrolü ile DisplayText adlı eventimizi tetikletiyoruz. Burada da bir kaç
hata alabildiğimiz durumlar olduğu için o hataları da umursama diyoruz.
Try Catch 'ı burada ve burada anlattım
NOT: comPort_DataReceived metodu sürekli çalışıyor arkadaşlar. Yani bir timer nesnesi
gibi sürekli portu dinleyerek oradan gelen bütün verileri alıyor.
Son olarak DisplayText eventi içerisindeki Gelen_Bilgi_Formatlama metodu da çok önemli
değil. Çünkü terazi gibi cihazların çoğundan sadece Kg bilgisi gelmiyor. Dara bilgisi vs gibi
bir çok veri gönderdikleri için içerisinden sadece KG kısmını almak gerekiyor. Bu sebeple de
gereksiz verileri temizlemek gerekiyor. Formatlamayı bu sebeple kullanıyorum. Tabi ki bu
hazır bir kod değil. Onu da siz yazacaksınız.
C# Seri Port RS232 Veri Okuma yazımda bu kadar arkadaşlar.
Bu kodları bir çok projemde teraziden veri okuma amacı ile aktif olarak kullanıyorum. Yani
çalıştığından %1000 eminim :D
Diğer yazılarımda görüşmek üzere. Umarım faydalı olmuştur. Aşağıdaki linklerden eğitim
seti sayfasına ve github projesine ulaşabilirsiniz. C Sharp Eğitim Seti eğitimi sayfasına
gitmek için tıklayınız. Derslerime özel olarak hazırladığım Github Projeme buradan
ulaşabilirsiniz… Ayrıca bu yazının PDF'ine buraya ve ya buraya tıklayarak ulaşabilirsiniz.
Sağlıcakla ve kodla kalın....

More Related Content

Featured

Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)contently
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024Albert Qian
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsKurio // The Social Media Age(ncy)
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Search Engine Journal
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summarySpeakerHub
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next Tessa Mero
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentLily Ray
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best PracticesVit Horky
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project managementMindGenius
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...RachelPearson36
 
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...Applitools
 
12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at WorkGetSmarter
 
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...DevGAMM Conference
 
Barbie - Brand Strategy Presentation
Barbie - Brand Strategy PresentationBarbie - Brand Strategy Presentation
Barbie - Brand Strategy PresentationErica Santiago
 
Good Stuff Happens in 1:1 Meetings: Why you need them and how to do them well
Good Stuff Happens in 1:1 Meetings: Why you need them and how to do them wellGood Stuff Happens in 1:1 Meetings: Why you need them and how to do them well
Good Stuff Happens in 1:1 Meetings: Why you need them and how to do them wellSaba Software
 

Featured (20)

Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search Intent
 
How to have difficult conversations
How to have difficult conversations How to have difficult conversations
How to have difficult conversations
 
Introduction to Data Science
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data Science
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best Practices
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project management
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
 
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
 
12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work
 
ChatGPT webinar slides
ChatGPT webinar slidesChatGPT webinar slides
ChatGPT webinar slides
 
More than Just Lines on a Map: Best Practices for U.S Bike Routes
More than Just Lines on a Map: Best Practices for U.S Bike RoutesMore than Just Lines on a Map: Best Practices for U.S Bike Routes
More than Just Lines on a Map: Best Practices for U.S Bike Routes
 
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
 
Barbie - Brand Strategy Presentation
Barbie - Brand Strategy PresentationBarbie - Brand Strategy Presentation
Barbie - Brand Strategy Presentation
 
Good Stuff Happens in 1:1 Meetings: Why you need them and how to do them well
Good Stuff Happens in 1:1 Meetings: Why you need them and how to do them wellGood Stuff Happens in 1:1 Meetings: Why you need them and how to do them well
Good Stuff Happens in 1:1 Meetings: Why you need them and how to do them well
 

C# Seri Port RS232 Veri Okuma

  • 1. Mustafa BÜKÜLMEZ https://mustafabukulmez.com/ https://mustafabukulmez.com/2021/05/06/c-seri-port-rs232-veri-okuma/ ~ 1 ~ Merhabalar, C# Seri Port RS232 Veri Okuma yazım ile C# eğitim setine devam ediyorum. Bu yazıda sadece seri porta (com) bağlanarak gelen veriyi okuma işlemi yapacağız. Yani seri porta veri yazma işlemine bu yazıda değinmeyeceğim. Seri port cihazım olmadığı içinde nasıl çalıştığını gösteremeyeceğim. Bu sebeple sadece kodları olacak. Gelin seri port rs232 okuma işlemini nasıl yaptığımıza bakalım. C# Seri Port RS232 Veri Okuma Giriş kısmında belirttiğim gibi sadece seri port rs232 veri okuma yapacağız. Veri yazma işine hiç ihtiyacım olmadığı için hiç kullanmadım dolayısı ile o kodları veremeyeceğim. İnternetten bakıp yazabilirim böyle diye ama prensip meselesi çalıştığını görmediğim kodları paylaşmıyorum. Ayrıca bu porta Com Port 'ta denebilmektedir. Com, communication yani haberleşmeden geliyor. Bilgisayarımızdaki Com Portlar otomatik olarak genellikle COM1, COM2 şeklinde isimlendirilmiş olur. Seri port'u bilmeyen arkadaşlar için, seri port aşağıdaki gibi VGA'ya benzeyen ama iki sıra pini olan bir prottur ve genellikle kantar ve terazilerden veri alırken kullanırız. Burada şuna bir ayrım getirelim. Seri Port ile RS232 aynı şeyler değillerdir arkadaşlar. Seri Port yukarıda gördüğünüz görseldeki gibi bağlantısı olan bir bağlantı şeklidir. RS232 ise Telekomünikasyonda RS-232, DTE ile DCE arasındaki seri ikili tek sonlu veri iletimi ve sinyalleme için kullanılan seri iletişim standardının genel adıdır. Bu konu hakkında daha detaylı bir yazı ileride yapabilirim. C# Seri Port RS232 Veri Okuma
  • 2. Mustafa BÜKÜLMEZ https://mustafabukulmez.com/ https://mustafabukulmez.com/2021/05/06/c-seri-port-rs232-veri-okuma/ ~ 2 ~ İlk işimiz her zamanki gibi bir class açmak olacak. Ben adına RS232_Connect diyorum. Siz istediğiniz ismi verebilirsiniz. Sonrasında Seri Port ile çalışmak için projemize using System.IO.Ports; Namespace 'ini (isim uzayı) eklememiz gerekiyor. Namespace'i ekledikten sonra public static SerialPort comPort = new SerialPort(); diyerek seri port tanımlamasını yapıyoruz. Bilgisayardaki mevcut com portların bir listesini alalım. public static string[] ports = SerialPort.GetPortNames(); Sonrasında seri port veri okuma hızını belirteceğimiz baud rate'leri hazırlıyoruz. private static int[] brate = new int[] { 2400,4800,9600,19200,38400 }; Baud rate tanımı veri iletim hızı olarak bilinir ve genellikle 9600'dür. Şahsen 9600'dan başka bir baud rate kullanmadım. Büyük ihtimalle hep terazi kantar gibi cihazlardan veri okuduğum içindir. Ek olarak burada cihazımızın desteklediği hızları bilmemiz gerekiyor. Bilmiyorsak hızları tek tek deneyerek sağlıklı veri aldığımız hızı bulabiliriz. Seri Port Bağlantısı Eğer sürekli baud rate ve com port değiştirmeye gerek yok ise yani geliştirdiğiniz uygulama için alınan cihazların hepsi aynı ise yukarıdaki dizileri kullanmanıza gerek yoktur. Ben uygulamalarımda hiç değiştirme gereği duymadım. Seri Port adını (COM1, COM2 vs ) adını ve baudrate'ini bildiğim için hep sql tablosunda tutarım bu bilgileri. Parametre şeklinde okur ve kullanırım. Sıra geldi bağlantımızı açmaya... Öncelikle bağlantı açık ise kapatacağız. Kapalı ise açacağız. public static void PortOpen(string port_name, int baudrate) { if (comPort.IsOpen) comPort.Close(); if (!comPort.IsOpen) { try {
  • 3. Mustafa BÜKÜLMEZ https://mustafabukulmez.com/ https://mustafabukulmez.com/2021/05/06/c-seri-port-rs232-veri-okuma/ ~ 3 ~ comPort.PortName = port_name; comPort.BaudRate = baudrate; comPort.Open(); comPort.Handshake = Handshake.None; } catch (Exception ex) { MessageBox.Show(ex.GetType().Name + Environment.NewLine + ex.Message); } } } Buraya kadar ki kısmı bir class dosyası içindedir. Bir çok deneme yapmama rağmen veriyi sürekli olarak okuyan kodları class'ta kullanamadım. Buradan sonra vereceğim kodlar ilgili formların içerisinde yer almaktadır. Diyelim ki KantarForm adında bir formumuz olsun ve teraziden gelen KG bilgisini bu ekranda bir nesneye yazacak olalım. KantarForm'umuzu açıyoruz ve Load eventinde seri port bağlantısını açıyoruz. Portu açtıktan sonra da verileri alacak olan eventimizin atamasını gerçekleştiriyoruz. Cls.Global.RS232_Connect.PortOpen("COM1",9600); Cls.Global.RS232_Connect.comPort.DataReceived += new SerialDataReceivedEventHandler(comPort_DataReceived); Bu iki satır kod seri port bağlantısını ne zaman başlatacaksanız orada kullanabilirsiniz. Verileri Okumak Portu açtık ve dinlemeye başladık. Şimdi bir string değişken tanımlıyoruz. Ben bu değişkene Gelen adını verdim. Değişkeni tanımladıktan sonra DataReceived eventi tanımlıyoruz. public string Gelen = ""; private void comPort_DataReceived(object sender, SerialDataReceivedEventArgs e) { try { Gelen = Cls.Global.RS232_Connect.comPort.ReadLine(); } catch (System.IO.IOException) { Gelen = ""; } catch (InvalidOperationException) { Gelen = ""; } // bağlantı kapalı olduğunda çıkıyor try { base.Invoke(new EventHandler(this.DisplayText)); } catch (FormatException) { } // hatalı format catch (InvalidOperationException) { } // Pencere işleyicisi oluşturuluncaya kadar denetim üzerinde Invoke veya BeginInvoke çağrılamaz. catch (IndexOutOfRangeException) { } // Dizin, dizi sınırlarının dışındaydı. }
  • 4. Mustafa BÜKÜLMEZ https://mustafabukulmez.com/ https://mustafabukulmez.com/2021/05/06/c-seri-port-rs232-veri-okuma/ ~ 4 ~ Buradaki kodları biraz açıklamam gerekiyor. Öncelikle neden direk textbox'a veya başka bir nesneye yazmıyoruz derseniz bu metot içerisinde textbox vb. bir nesneye atama yapamıyorsunuz. Özellikle veriyi değişkene almak ve DisplayText gibi farklı bir metot ile bir nesneye yazabiliyorsunuz. private void DisplayText(object sender, EventArgs e) { calc_miktar.EditValue = RS232_Connect.Gelen_Bilgi_Formatlama(Gelen); } Burada gördüğünüz gibi ReadLine() metotu ile gelen veriyi satır olarak okuduk ve gelen veriyi bir değişkene aldık. Bu işlemi yaparken iki farklı hata alabiliyoruz. Program kırılmasın diye bu hataları try catch ile ele aldım ve umursama devam et dedim. Verileri almakla bitmiyor. Alınan veriyi de bir yere yazmamız gerekiyor. Yazma işlemi içinde DisplayText eventimizi kullanıyoruz. Yine aynı event yani veri okuma eventi içerisindeyiz. Başka bir bir kaç try kontrolü ile DisplayText adlı eventimizi tetikletiyoruz. Burada da bir kaç hata alabildiğimiz durumlar olduğu için o hataları da umursama diyoruz. Try Catch 'ı burada ve burada anlattım NOT: comPort_DataReceived metodu sürekli çalışıyor arkadaşlar. Yani bir timer nesnesi gibi sürekli portu dinleyerek oradan gelen bütün verileri alıyor. Son olarak DisplayText eventi içerisindeki Gelen_Bilgi_Formatlama metodu da çok önemli değil. Çünkü terazi gibi cihazların çoğundan sadece Kg bilgisi gelmiyor. Dara bilgisi vs gibi bir çok veri gönderdikleri için içerisinden sadece KG kısmını almak gerekiyor. Bu sebeple de gereksiz verileri temizlemek gerekiyor. Formatlamayı bu sebeple kullanıyorum. Tabi ki bu hazır bir kod değil. Onu da siz yazacaksınız. C# Seri Port RS232 Veri Okuma yazımda bu kadar arkadaşlar. Bu kodları bir çok projemde teraziden veri okuma amacı ile aktif olarak kullanıyorum. Yani çalıştığından %1000 eminim :D Diğer yazılarımda görüşmek üzere. Umarım faydalı olmuştur. Aşağıdaki linklerden eğitim seti sayfasına ve github projesine ulaşabilirsiniz. C Sharp Eğitim Seti eğitimi sayfasına gitmek için tıklayınız. Derslerime özel olarak hazırladığım Github Projeme buradan ulaşabilirsiniz… Ayrıca bu yazının PDF'ine buraya ve ya buraya tıklayarak ulaşabilirsiniz. Sağlıcakla ve kodla kalın....