Hallo
Nach dem ich mich durch div. Tutorials durchgekämpft habe versuchte ich
mein Problem mit der
Exception zu lösen.
Nun tritt eine andere
Exception. Was ich gemacht habe :
In der
Unit für RS232 Empfang (OptiNumericCom.Pas) die im Thread läuft
habe ich CriticalSction definiert ab Empfang der Daten bis Empfang beendet
var
.
EmpfangCS : TRTLCriticalSection;
.
.
function TOptiNumericComm.receiveMessage : TMeldung;
.
.
.
EnterCriticalSection(EmpfangCS);
id := recByte; //Empfang von 1.Byte (Meldungstyp) ****** Hier
Exception *****
case (id AND $0F)
$01:
// usw
else //Meldung-In (16 Byte) einlesen
begin
SetLength(Result, 17);
Result[0] := id;
for i:=1 to 16
do Result[i] := comport.GetByte;
end;
end; //ende Case
LeaveCriticalSection(EmpfangCS);
======================
Im Hauptprogramm ist keine CriticalSection definiert,is auch nicht nötig,
ich will nur erreichen, dass der Empfang im Thread ohne Unterbruch
durchläuft.
Die
Exception tritt auf bereits beim Empfang von 1. Byte. (id := recByte
Recbyte befindet sich in eine andere
Unit,ist natürlich mit uses deklariert.
Wo ist das Problem ?
Der Datenempfang hat vorher ohne CriticalSection für erste paar Meldungen funktioniert bis
Exception auftratt wg. Synchronisation.