Python ile seri porta yazma okuma

Başlatan elektronikhobi, 10 Haziran 2025, 15:51:33

elektronikhobi

Python ile klavyeden girilen tuşu okuyabiliyoruz.

Güzel.

Seri porta yazabiliyoruz.

O da güzel.

Peki.

Klavye girişini okusun. Seri porta yazsın. Seri porttan da okusun.

O da iş parçacığı kullanarak oldu gibi gözüküyor.  ;) 

import serial
import time
import threading
import queue
from pynput.keyboard import Key, Listener
seri = serial.Serial('/dev/ttyACM0', 9600)
def yaz(karakter):
    kaçBaytYazıldı = seri.write(karakter.encode())
    print('Kaç bayt yazıldı = ', kaçBaytYazıldı)
def girişiİşle(tuş):
    if tuş == Key.up:
        print('\nİleri gidiyoruz')
        yaz('ileri')
    if tuş == Key.down:
        print('\nGeri gidiyoruz')
        yaz('geri')
    if tuş == Key.right:
        print('\nSağa dönüyoruz')
        yaz('sag')
    if tuş == Key.left:
        print('\nSola dönüyoruz')
        yaz('sol')
    if tuş == Key.space:
        print('\nDuruyoruz')
        yaz('dur')
    if tuş == Key.shift:
        print('\nHızlanıyoruz')
        yaz('hizlan')
    if tuş == Key.ctrl:
        print('\nYavaşlıyoruz')
        yaz('yavasla')
    if tuş == Key.delete:
        return False
def tuşaBasıldı(tuş, tuşKuyruğu):
    tuşKuyruğu.put(tuş)
def tuşOku(tuşKuyruğu):
    klavyeOkuyucu = Listener(
        on_press=lambda tuş: tuşaBasıldı(tuş, tuşKuyruğu)
    )
    klavyeOkuyucu.start()
def ana():
    tuşKuyruğu = queue.Queue()
    giriştenOku = threading.Thread(target=tuşOku,
                                   args=(tuşKuyruğu,),
                                   daemon=True)
    giriştenOku.start()
    while (True):
        if (tuşKuyruğu.qsize() > 0):
            okunanTuş = tuşKuyruğu.get()
            # Girişi işle
            girişiİşle(okunanTuş)
        # Programın kalanı
        if (seri.inWaiting() > 0):
            okunan = seri.read(seri.inWaiting()).decode('utf-8')
            if okunan == b"" and seri.poll() != None:
                break
            if okunan != b"":
                print(okunan, end='')
        time.sleep(0.01)
if (__name__ == '__main__'):
    ana()
"Osmanlı fethettiği topraklardan gençleri alır yetiştirir sonra yeniçeri yapardı. Amerika şimdi bize yetiştirtiyor, tam iş yapacakları zaman gençlerimiz gidip oraya hizmet ediyor."

Özdemir Bayraktar