Seri Port ile letiim Seri Port ile letiim
- Slides: 35
Seri Port ile İletişim
Seri Port ile İletişim Portu Açmak için: if (Seri. Portum. Is. Open == false) { Seri. Portum. Open(); } Portu Kapamak için: Seri. Portum. Close(); • string veri = Seri. Portum. Read. Line(); //Seri porttan veri okur. • Seri. Portum. Write. Line(veri); //Seri porta veri yazar.
Seri Port Kontrol Özellikleri • serial. Port. Baud. Rate: Serial. Port sınıfının Baud. Rate isimli özelliği bilgisayardan kontrol edeceğiniz sistem ile haberleşme esnasında ki veri iletişimi hızı. Bu özellik sistemden sisteme değişiklik göstermektedir. Baud. Rate için şunu söyleyebiliriz saniye gönderilen bit sayısı, eğer sisteminizle iletişim hızınız 9600 ise bilgisayarın seri portundan saniyede 9600 bit veri gönderip alabilirsiniz demektir. Bu yüzden eğer sisteminiz 19200 ise ve siz bilgisayar programından bu özelliği set etmez iseniz verileri sağlıklı bir şekilde gönderip alamayacaksınız çünkü bu özelliğin default değeri 9600.
• serial. Port. Is. Open: Serial. Port sınıfının Is. Open isimli özelliği seri portun açık olup olmadığını bool türünden söyleyen bir özellik. Portu kullanmadan önce mutlaka açık olup olmadığını kontrol etmenizde fayda var eğer portu kullandıktan sonra kapatmadan tekrar açmaya çalışırsanız programınız hata verecektir.
• serial. Port. Name: Serial. Port sınıfının Port. Name isimli özelliği seri portunuzun ismini isteyecektir. Eğer bir çevirici kullanmadan direk seri porta bağladıysanız ‘COM 1’, bir çevirici aracılığıyla ismini değişti ise ‘COM 5’, ‘COM 6’ vb. string türünden port isminizi girebilirsiniz.
• serial. Port. Read. Timeout: Serial. Port sınıfının Read. Timeout isimli özelliği seri portun cihazdan kaç saniye boyunca cevap beklemesini istiyorsanız onu int türünden mili saniye cinsinden girmeniz gerekiyor. Eğer istediğiniz cihazdan 3 saniye boyunca cevap gelmez ise hata vermesi ise buraya serial. Port. Read. Timeout = 3000 demeniz gerekiyor.
• serial. Port. Write. Timeout: Serial. Port sınıfının Write. Timeout isimli özelliği ise seri portunuzun yazma işlemini kaç saniye boyunca sürdürmesini istiyorsanız yine int türünden mili saniye cinsinden bu özelliği set etmeniz gerekmektedir.
Combo. Box’ın içini Port isimleri ile Doldurmak for (int i = 0; i < 30; i++) { serialport. Port. Name = "COM" + i. To. String(); serialport. Open(); com. No_cb. Items. Add(serialport. Port. Name); serialport. Close(); } Veya com. No_cb. Items. Add(Serial. Port. Get. Port. Names());
Seri Port Fonksiyonları • serial. Port. Open(): Serial. Port sınıfının Open isimli fonksiyonu seri portunuzu açmanıza yarar. Hemen şunu söylemekte fayda var bu işlemi yapmadan önce bir hata almak istemiyorsanız port adını, baud. Rate’inizi belirtmeyi unutmayın. Eğer port adını belirtmez iseniz veya yanlış yazarsanız hata alacaksınız.
• serial. Port. Read(byte[] buffer, int offset, int count): Serial. Port sınıfının Read isimli fonksiyonu seri portunuzdan veri okumanızı sağlayan bir fonksiyondur. İlk parametresi byte türünden bir dizi, ikinci parametre dizinin kaçıncı indisinden itibaren veri yerleştireceğini, son parametresine ise kaç byte veri okuyacağınızı söylemeniz gerekiyor. İlk parametre char türünden bir dizide olabilir. Fonksiyonun geri dönüş değeri ise kaç byte okunduysa onu size int türünden söyler.
• serial. Port. Read. Byte(): Serial. Port sınıfının Read. Byte isimli fonksiyonu seri portdan sadece bir byte okumanızı sağlayan fonksiyon. İsmi Read. Byte olmasına rağmen geri dönüş değeri int türüdür ve size okunan değeri söyler.
• serial. Port. Read. Existing(): Serial. Port sınıfının Read. Existing isimli fonksiyonu çağrıldığı zaman seri portdan okunabilen tüm veriyi size string türünden geri döndürür.
• serial. Port. Read. Line(): Serial. Port sınıfının Read. Line isimli fonksiyonu seri portdan New. Line karakteri gelene kadar tanımladığınız Read. Timeout süresince bekler. Gelen veriyi size string türünden geri döndürür.
• serial. Port. Write(): Serial. Port sınıfının Write isimli fonksiyonunun 3 tipi var bunlardan biri cihaza göndermek istediğiniz veriyi string türünden göndermenizi sağlıyor; serial. Port. Write("Bu veriyi cihaza yaz"); • İkinci yöntem ise veriyi byte dizisi türünden göndermenizi sağlıyor. byte[] gidecek. Veri = new byte[] {0 x 30, 0 x 31, 0 x 32, 0 x 33, 0 x 34}; serial. Port. Write(gidecek. Veri, 0, gidecek. Veri. Length); Tahmin edeceğiniz gibi ilk parametre byte türünden bir dizi, ikinci parametre ise bu dizinin kaçıncı indisinden itibaren üçüncü parametredeki değer kadar seri portdan veri göndermenizi istiyor. • Birde byte dizisinin yerine char dizisi ile gönderebileceğiniz üçüncü bir tipi bulunuyor.
• serial. Port. Write. Line(): Serial. Port sınıfının Write isimli fonksiyonu göndermek istediğiniz veriyi string türünden parametre geçerek gönderebilirsiniz. Write fonksiyonundan tek farkı göndermek istediğiniz verinin sonuna ‘n’ karakterini ekliyor olması.
Cümlenin parçlara Ayrılması private void Display. Text(object sender, Event. Args e) { text. Box 1. Append. Text(Rx. String); text. Box 1. Append. Text("rn"); string[] an 0 = sensor. Data[0]. Split(': '); text. Box 2. Text = an 0[1]; string[] an 1 = sensor. Data[1]. Split(': '); text. Box 3. Text = an 1[1]; } private void serial. Port 1_Data. Received(object sender, System. IO. Ports. Serial. Data. Received. Event. Args e) { Rx. String = serial. Port 1. Read. Line(); sensor. Data = Rx. String. Split(', '); this. Invoke(new Event. Handler(Display. Text)); }
Seri Porttan Okumak Yazmak
C# Seri Port (Okuma Yazma) private void button 1_Click(object sender, namespace seriport 1 { public partial class Form 1 : Form { public Form 1() { Initialize. Component(); serial. Port 1. Port. Name = "COM 1"; serial. Port 1. Baud. Rate = 9600; serial. Port 1. Data. Bits = 8; serial. Port 1. Parity = Parity. None; serial. Port 1. Stop. Bits = Stop. Bits. One; } Event. Args e) { if (!serial. Port 1. Is. Open) { serial. Port 1. Open(); //seripport aç. } serial. Port 1. Write("ABC"); //porta yaz } private void button 2_Click(object sender, Event. Args e) { String oku = serial. Port 1. Read. Line()); serial. Port 1. Close(); } private void Form 1_Load(object sender, Event. Args e) { } } }
Arduino Seri Port Karakter Okuma char Data[80]; byte index = 0; if(a. Char == 'n') { lcd. print(Data); index = 0; void loop() Data[index] = NULL; { } else if(Serial. available() > 0) { { //if(serial. Available()) kullanılabilir Data[index] = a. Char; index++; Data[index] = '