Python ile Seri Port İletişimi Nasıl Yazılır?

Seri Port Nedir?

Seri port, bilgisayarlarla diğer cihazlar arasında veri iletimi için kullanılan bir iletişim bağlantısıdır. Genellikle, seri portlar bir cihazdan veri gönderirken ya da alırken sırayla bitleri kullanır. Bu yöntem, düşük hızlı ama güvenilir bir veri iletimi sağlar. Seri portlar genellikle endüstriyel otomasyon, mikrodenetleyici projeleri, robot teknolojileri gibi alanlarda yaygın olarak kullanılır.

Seri port iletişimi, bir cihazın verileri göndermesi ve diğerinin alması için belirli bir protokole göre çalışır. Her iki taraf da belirli bir baud rate (veri iletim hızı), veri bitleri, dur bitleri ve parite ayarlarında anlaşmalıdır. Bu, veri kaybını önlemek ve iletişim sürecini daha verimli hâle getirmek için kritik öneme sahiptir.

Python, seri port iletişimi için oldukça geniş bir destek sunar. Bu iletişim türü için en yaygın kullanılan kütüphane, ‘pySerial’dır. Bu kütüphane ile hem okunabilirlik sağlanır hem de karmaşık ayarlarla uğraşmadan, seri port bağlantıları kolaylıkla yapılabilir. Şimdi, Python ile seri port iletişiminin nasıl yazılacağına bakalım.

Python ile Seri Port İle İletişim Kurmak İçin PySerial Kurulumu

Paket yönetimi ile pySerial kütüphanesini kurmak oldukça hızlı bir işlemdir. Terminal ya da komut istemcisine şu komutu girerek bunu gerçekleştirebilirsiniz:

pip install pyserial

Bu komut, pySerial kütüphanesinin en son sürümünü yükleyecektir. Kurulum tamamlandığında, Python kodunuzda kütüphaneyi kullanmaya hazır hale geleceksiniz.

Kurulumdan sonra, pySerial kütüphanesi ile seri port bağlantısı kurarken dikkat edilmesi gereken bazı parametreler vardır. Bu parametreler arasında hangi portun kullanılacağı, baud rate, veri bitleri, dur bitleri ve parite gibi ayarlar yer alır. Bu ayarları yapılandırarak, bağlantınızı sağlamlaştırabilirsiniz.

Aşağıdaki örnek, kullanmak istediğiniz seri portu ayarlamanıza yardımcı olacaktır:

import serial

ser = serial.Serial('COM3', baudrate=9600, bytesize=8, parity=serial.PARITY_NONE, stopbits=serial.STOPBITS_ONE)

Seri Port Üzerinden Veri Gönderme ve Alma

Seri port ile iletişim kurduktan sonra, veri gönderme ve alma işlemlerini gerçekleştirebilirsiniz. İlk olarak, veri göndermek için write metodunu kullanmanız gerekir. Aşağıdaki örnekte, bir mesajın seri port üzerinden gönderilmesi gösterilmektedir:

message = 'Merhaba Seri Port!'
ser.write(message.encode('utf-8'))

Burada dikkat etmeniz gereken nokta, gönderdiğiniz verinin byte dizisine dönüştürülmesidir. Bu işlem, encode fonksiyonu ile gerçekleştirilir.

Bir cihazdan veri alırken ise, read ya da readline metodunu kullanabilirsiniz. Örnek bir kod aşağıda gösterilmektedir:

data = ser.readline()
print(data.decode('utf-8'))

Bu kod, veri almak için readline metodunu kullanarak gelen veriyi okuyacak ve UTF-8 formatında ekrana yazdıracaktır. Her seferinde bir satır verisi alındığı için, döngüler içerisinde sıkça kullanmak uygun olabilir.

Seri Port Hatalarını Giderme Yöntemleri

Seri port ile çalışırken bazı yaygın hatalarla karşılaşabilirsiniz. Örneğin, ‘SerialException’ hatası genellikle belirtilen portun mevcut olmadığını veya başka bir uygulama tarafından kullanıldığını gösterir. Bu tip durumlarda, bağlı cihazların kontrol edilmesi ve port numarasının doğruluğunun kontrol edilmesi gerekir.

Baud rate ayarının yanlış olması da yaygın bir hatadır. İletişim kurduğunuz cihazla aynı baud rate ayarını kullandığınızdan emin olun. Aksi takdirde, iletişim sağlanamayacak ve veri kaybı yaşanacaktır. İşte serial bağlantı için baud rate ayarına dikkat edilmesi gereken bir örnek:

ser = serial.Serial('COM3', baudrate=115200)

Veri gönderirken veya alırken sistemde gecikmeler olabileceğini de göz önünde bulundurmalısınız. Bu gibi durumlarda, time.sleep() fonksiyonu ile belirli bir süre beklemek uygulamanızın stabil çalışmasına yardımcı olabilir:

import time

time.sleep(0.5)  # 500 milisaniye bekleme

İleri Düzey Seri Port Kullanım Senaryoları

Seri port iletişimi, yalnızca temel veri gönderme ve alma işlemleri ile sınırlı değildir. Gelişmiş uygulamalar için daha karmaşık senaryolar geliştirebilirsiniz. Örneğin, bir sensörden gelen verileri sürekli olarak izlemek ve analiz etmek için bir döngü oluşturabilirsiniz:

while True:
    if ser.in_waiting > 0:
        line = ser.readline().decode('utf-8')
        print('Gelen veri:', line)

Bu örnekte, sürekli olarak gelen verilerin izlenmesi sağlanır. in_waiting özelliği, buffer’da bekleyen veri olup olmadığını kontrol eder. Eğer bekleyen veri varsa, bu veri okunur ve ekrana yazdırılır.

Bunun yanı sıra, çok sayıda veri noktası ile çalıştığınızda, gelen verileri bir dosyaya yazmak da yararlı olabilir. Python’da dosya yazma işlemi oldukça basittir ve aşağıdaki gibi gerçekleştirilebilir:

with open('veriler.txt', 'a') as f:
    f.write(line + '\n')

Python ile Hızlandırılmış Seri Port İletişimi için İpuçları

Seri port ile iletişimi hızlandırmak için, birkaç ipucu uygulayabilirsiniz. İlk olarak, veri iletim hızını (baud rate) artırarak, daha fazla veri gönderebilir ve alabilirsiniz. Uygulamanızın gereksinimlerine uygun bir baud rate ayarlamanız faydalı olacaktır.

İkinci olarak, gönderdiğiniz veri miktarlarını optimize edin. Mümkünse, daha az veri parçaları göndermeye çalışın. Bunun yerine birleştirilmiş veriler göndermek, iletişim sürenizi kısaltabilir. Örneğin, birden fazla veri noktasını bir string içerisinde birleştirip gönderirseniz, veri iletim süreniz kısalmış olur:

message = f'{deger1},{deger2},{deger3}'
ser.write(message.encode('utf-8'))

Son olarak, veri iletim sürecinizde hata ayıklama araçlarını kullanarak, uygulamanızın beklenilen şekilde çalışıp çalışmadığını kontrol etmek iyi bir fikir olacaktır. Bu, kodunuzda olası hataları algılamanıza ve düzeltmenize yardımcı olabilir.

Sonuç

Sonuç olarak, Python ile seri port iletişimi gerçekleştirmek oldukça kolaydır. PySerial kütüphanesi, bu süreci kolaylaştırmakta ve Python geliştiricilerine geniş bir yapı sunmaktadır. Bu yazıda, bir seri port üzerinden veri gönderme, alma ve hata giderme konularını ele aldık. Ayrıca, veri akışını hızlandırmak için bazı ipuçları verdik.

Seri port ile çalışırken, her zaman doğru ayarları yaptığınızdan emin olmalısınız. Ayrıca, verimli kod yazarak, uygulamanızın performansını artırabilirsiniz. Unutmayın, Python ile yarattığınız çözümler, yalnızca hayal gücünüzle sınırlıdır!

Şimdi öğrendiklerinizi kendi projelerinizde uygulamak için harekete geçin. Python ile seri port iletişimi yaparak geliştirmelerinizi gerçekleştirin ve yeni deneyimler kazanarak kendinizi sürekli geliştirin!

Scroll to Top