Hi Frank,
als Satzkennung würde ich immer das gleiche Zeichen (Bei NMEA ist das das "$") verwenden und dann kannst du senden so viel du willst.
Gruss
Harry
als Satzkennung würde ich immer das gleiche Zeichen (Bei NMEA ist das das "$") verwenden und dann kannst du senden so viel du willst.
Code
Process ReadGPS(20,20:iData);
Begin
WaitPipe(RXBuffer); // Warte auf Daten im Puffer
Read(SerInp, Temp); // Puffer lesen
If Temp='$' // Wenn Puffer='$' (Datensatzanfang)
then
Read(SerInp, Temp6);
If Temp6 = 'GPRMC,'
then
Read(SerInp, NMEA.Time_UTC, ','); // GSP Time in UTC
Read(SerInp, NMEA.Status, ','); // A=data valid or V=data not valid
Read(SerInp, NMEA.Latitude, ','); // ddmm.mmmm
Read(SerInp, NMEA.Lat_Ind, ','); // N=north or S=south
Read(SerInp, NMEA.Longitude, ','); // dddmm.mmmm
Read(SerInp, NMEA.Log_Ind, ','); // E=east or W=west
Read(SerInp, NMEA.Speed, ','); // variable speed in knots
Read(SerInp, NMEA.Angle, ','); // variable lenght in degrees
Read(SerInp, NMEA.Date, ','); // GPS Date ddmmyy
Read(SerInp, NMEA.Magnetic, ','); // Magnetic declinason
Read(SerInp, NMEA.Checksum1, ',');
NewNMEA:=true;
EndIf;
If Temp6 = 'GPGGA,'
then
Read(SerInp, NMEA.Time_UTC, ','); // GSP Time in UTC hhmmss.sss
Read(SerInp, NMEA.Latitude, ','); // ddmm.mmmm
Read(SerInp, NMEA.Lat_Ind, ','); // N=north or S=south
Read(SerInp, NMEA.Longitude, ','); // dddmm.mmmm
Read(SerInp, NMEA.Log_Ind, ','); // E=east or W=west
Read(SerInp, NMEA.StatusDummy, ',');// 0=Invalid, 1=Valid SPS, 2=Valid DGPS, 3=Valid PPS
Read(SerInp, NMEA.Sat_Track, ','); // Number of sat in view and used in solution
Read(SerInp, NMEA.H_Dilution, ','); // dilution error
Read(SerInp, NMEA.Height, ','); // height over see
Read(SerInp, NMEA.Height_Unit, ',');
Read(SerInp, NMEA.DGPS_Time, ',');
Read(SerInp, NMEA.DGPS_ID, ',');
Read(SerInp, NMEA.Checksum2, ',');
EndIf;
EndIf;
End ReadGPS;
Begin
WaitPipe(RXBuffer); // Warte auf Daten im Puffer
Read(SerInp, Temp); // Puffer lesen
If Temp='$' // Wenn Puffer='$' (Datensatzanfang)
then
Read(SerInp, Temp6);
If Temp6 = 'GPRMC,'
then
Read(SerInp, NMEA.Time_UTC, ','); // GSP Time in UTC
Read(SerInp, NMEA.Status, ','); // A=data valid or V=data not valid
Read(SerInp, NMEA.Latitude, ','); // ddmm.mmmm
Read(SerInp, NMEA.Lat_Ind, ','); // N=north or S=south
Read(SerInp, NMEA.Longitude, ','); // dddmm.mmmm
Read(SerInp, NMEA.Log_Ind, ','); // E=east or W=west
Read(SerInp, NMEA.Speed, ','); // variable speed in knots
Read(SerInp, NMEA.Angle, ','); // variable lenght in degrees
Read(SerInp, NMEA.Date, ','); // GPS Date ddmmyy
Read(SerInp, NMEA.Magnetic, ','); // Magnetic declinason
Read(SerInp, NMEA.Checksum1, ',');
NewNMEA:=true;
EndIf;
If Temp6 = 'GPGGA,'
then
Read(SerInp, NMEA.Time_UTC, ','); // GSP Time in UTC hhmmss.sss
Read(SerInp, NMEA.Latitude, ','); // ddmm.mmmm
Read(SerInp, NMEA.Lat_Ind, ','); // N=north or S=south
Read(SerInp, NMEA.Longitude, ','); // dddmm.mmmm
Read(SerInp, NMEA.Log_Ind, ','); // E=east or W=west
Read(SerInp, NMEA.StatusDummy, ',');// 0=Invalid, 1=Valid SPS, 2=Valid DGPS, 3=Valid PPS
Read(SerInp, NMEA.Sat_Track, ','); // Number of sat in view and used in solution
Read(SerInp, NMEA.H_Dilution, ','); // dilution error
Read(SerInp, NMEA.Height, ','); // height over see
Read(SerInp, NMEA.Height_Unit, ',');
Read(SerInp, NMEA.DGPS_Time, ',');
Read(SerInp, NMEA.DGPS_ID, ',');
Read(SerInp, NMEA.Checksum2, ',');
EndIf;
EndIf;
End ReadGPS;
Gruss
Harry