soros port kezelése

Sziasztok!

Delphit nem nagyon ismerem, mégis összeütöttem egy programot melyben a comportot is használom (Dejan Crnila féle).
A PC mikroprocesszorral van összekötve és a kommunikiáció úgy folyik, hogy a Delphiből egy button megnyomása után kiküldött (for ciklusban kiválasztott) minden 1 byte -ra (kérdés) ad 1 byte -os választ a processzor.

A kiküldés látszólag jól megy, a processzor rendben fel is dolgozza, majd összeállítja a választ, de azt már Delphiben képtelen vagyok jól feldolgozni.
(A program tartalmaz egy időzítőt, amely akkor jár le, ha valamilyért elfelejtene válaszolni a processzor)

A kód:

procedure TForm1.Button1Click(Sender: TObject);
var
k,x:integer;
kikuld:byte;
begin
for k:=0 to x do
begin
comport1.Write(kikuld,1);

rectime:=false;
timer1.enabled:=true;

reckarakter:=false;
repeat
application.processmessages;
until (reckarakter or rectime);
if rectime=true then exit;
edit1.text:=IntToStr(rcrdata);
end;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
rectime:=true;
timer1.enabled:=false;
showmessage('RS 232 felől nincs vetel, ellenőrizd a portot!');
end;

procedure TForm1.ComPort1RxChar(Sender: TObject; Count: Integer);
begin
reckarakter:=true;
comport1.Read(rcrdata,1);
timer1.Enabled:=false;
end;

Tudnátok segíteni miként írjam át a programot, hogy renden működjön? Ha lehet ne olyan válasz adjatok, hogy nézzem át a demokat, mert már megtettem és nekem nem sokat segített.

Könyvajánló

Programozzunk Turbo Delphi Rendszerben