Witam.
Program napisany w Pythonie, ma za zadanie pobierać informacje z klawiatury, odpowiednio je przetworzyć i poprzez moduł bluetooth wysłać do mikrokontrolera.

Problemem, który napotkałem już na początku jest bardzo duże opóźnienie - od momentu wciśnięcia klawisza, do odebrania danych przez mikrokontroler mija około 3 sek, to zdecydowanie, zdecydowanie za dużo jak na moje potrzeby.

Podczas wysyłania stringa przez dowolny terminal, informacja dociera prawie natychmiast.

Wstawienie linijki "print (x)" zamiast "bt.write(x)" powoduje zmienianie wartości w liście w zasadzie instant.

Domyślam się więc, że to sam etap przesyłania danych jest przyczyną tak dużego opóźnienia.
Jak mogę rozwiązać ten problem?

import pygame, sys, serial
from pygame.locals import *

def main():

    HAIL = [1, 0, 0, 0, 0, 0]
    bt = serial.Serial('COM4', 9600, timeout = 10)
    pygame.init()


    DISPLAYSURF = pygame.display.set_mode((400, 300))
    pygame.display.set_caption('Hello Pygame World!')

    while True:
        x_str = ("x" + " " + standardize(HAIL[0]) + " " + standardize(HAIL[1]) + " " + standardize(HAIL[2])
                 + " " + standardize(HAIL[3]) + " " + standardize(HAIL[4]) + " " + standardize(HAIL[5]))

        x = str.encode(x_str)
        print (x)
        #bt.write(x)

        for event in pygame.event.get():
            if event.type == QUIT:
                pygame.quit()
                sys.exit()
            elif event.type == KEYDOWN:
                if event.key == K_LEFT:
                    HAIL[0] = 1
                if event.key == K_UP:
                    HAIL[1] = 1
                if event.key == K_RIGHT:
                    HAIL[2] = 1
                if event.key == K_DOWN:
                    HAIL[3] = 1
                if event.key == K_RIGHT:
                    HAIL[4] = 1
                if event.key == K_DOWN:
                    HAIL[5] = 1



def standardize(val):
    if val >= 0 and  val < 10:
        val_str = "+00" + str(val)
    elif val >=10 and val < 100:
        val_str = "+0" + str(val)
    elif val >= 100 and val < 1000:
        val_str = "+" + str(val)
    elif val < 0 and val > - 10:
        val_str = "-00" + str(-val)
    elif val <= - 10 and val > -100:
        val_str = "-0" + str (-val)
    elif val <= - 100 and val > -1000:
        val_str = str(val)
    else:
        val_str = "+000"
    return val_str

main()