S
Okay hab nun mein Problem gelöst.
Meine Receive Funktion sieht nun so aus:
void __fastcall TCommThread::Execute()
{
unsigned long AvailableBytes;
unsigned long ReadBytes;
bool enabled = false;
while(Terminated==false)
{
Sleep(1);
AvailableBytes=BytesAvailable();
if(AvailableBytes>0)
{
//ReceivedData.SetLength(AvailableBytes);
if(ReadFile(DeviceHandle,Buffer,AvailableBytes,&ReadBytes,NULL)==true)
{
if(ReadBytes>0)
{
AnsiString s;
for(DWORD i=0; i < AvailableBytes; i++)
{
if(Buffer[i] == 0x24) // Warten auf $
enabled = true;
if(Buffer[i] == 0x0d) // Ende <CR>
enabled = false;
if(enabled == true)
ReceivedData=ReceivedData+Buffer[i];
if(enabled == false && ReceivedData != "")
{
Synchronize(AfterReceiveData); // Ausgeben wenn String fertig
ReceivedData="";
}
}
}//if
}//if
}//if
}
}
Die Ausgabe:
$GPGLL,4834.3678,N,00935.8617,E,102434.000,V*25
$GPGSA,A,1,,,,,,,,,,,,,,,*1E
$GPGSV,2,1,07,32,37,063,,28,05,265,,20,63,261,,23,26,191,*7D
$GPGSV,2,2,07,01,42,057,,07,30,203,,08,38,238,*44
$GPRMC,10$GPGGA,102632.000,4834.3678,N,00935.8617,E,0,00,,,M,,M,,*41
$GPGLL,4834.3678,N,00935.8617,E,102632.000,V*21
$GPGSA,A,1,,,,,,,,,,,,,,,*1E
$GPGSV,2,1,06,19,08,169,,14,17,040,,01,41,056,,20,64,262,*74
$GPGSV,2,2,06,32,36,063,,07,30,202,*7A
$GPRMC,102632.000,V,4834.3678,N,00935.8617,E,,,080408,,*12
$GPVTG,,T,,M,,N,,K*4E
$GPGGA,102633.000,4834.3678,N,00935.8617,E,0,00,,,M,,M,,*40
$GPGLL,4834.3678,N,00935.8617,E,102633.000,V*20
$GPGSA,A,1,,,,,,,,,,,,,,,*1E
$GPGSV,2,1,06,19,08,169,,14,17,040,,01,41,056,,20,64,262,*74
$GPGSV,2,2,06,32,36,063,,07,30,202,*7A
$GPRMC,102633.000,V,4834.3678,N,00935.8617,E,,,080408,,*13
$GPVTG,,T,,M,,N,,K*4E