Benutze CW-Version: r1326
Ich habe immer noch ein Problem mit der Aufzeichnung des NMEA-Logs, es wird nur der GPGSV-Datensatz in der log-Datei abgespeichert. Pfeffer meinte dass eventuell etwas mit den Prüfsummen der Datensätze nicht stimmt. Ich habe mir dann die Datensätze aus dem GPS-Testfenster vom CW herauskopiert: die Prüfsummen stimmen.
Habe mir dann die CWGPSPoint.java vorgenommen und folgenden Codeschnipsel entdeckt:
hiernach werden die einzelnen GP-Datensätze geparst.
Jetzt meine Frage: Die Navigation funktioniert. Sollte die Checksum nicht korrekt sein, so dürfte das Programm doch gar nicht über die Zeilen
hinwegkommen, und somit sollte die ganze Navigation auch nicht funktionieren.
Warum werden dann aber anschließend in
nicht alle Datensätze (nur der GPGSV) abgespeichert?
Gruß, maierkurt
Ich habe immer noch ein Problem mit der Aufzeichnung des NMEA-Logs, es wird nur der GPGSV-Datensatz in der log-Datei abgespeichert. Pfeffer meinte dass eventuell etwas mit den Prüfsummen der Datensätze nicht stimmt. Ich habe mir dann die Datensätze aus dem GPS-Testfenster vom CW herauskopiert: die Prüfsummen stimmen.
Habe mir dann die CWGPSPoint.java vorgenommen und folgenden Codeschnipsel entdeckt:
Code:
public boolean examine(String NMEA){
boolean interpreted = false;
try {
int i, start, end;
String latDeg="0", latMin="0", latNS="N";
String lonDeg="0", lonMin="0", lonEW="E";
String currToken;
end = 0;
lastStrExamined = NMEA;
//Vm.debug(NMEA);
/* if (writeLog && (logFlag & LOGRAW) > 0){
try {
logFile.write(NMEA);
writeLog = false;
} catch (IOException e) {}
}
*/ while(true){
start = NMEA.indexOf("$GP", end);
if (start == -1) return interpreted;
end = NMEA.indexOf("*", start);
if ((end == -1)||(end+3 > NMEA.length())) return interpreted;
//Vm.debug(NMEA.substring(start,end+3));
if ((end - start) < 15 || !checkSumOK(NMEA.substring(start,end+3))){
//Vm.debug("checksum wrong");
continue;
}
// Write log after finding valid NMEA sequence
if (writeLog && (logFlag & LOGRAW) > 0){
try {
logFile.write(NMEA.substring(start,end+3)+"\n");
writeLog = false;
} catch (IOException e) {}
}
[........]
Jetzt meine Frage: Die Navigation funktioniert. Sollte die Checksum nicht korrekt sein, so dürfte das Programm doch gar nicht über die Zeilen
Code:
if ((end - start) < 15 || !checkSumOK(NMEA.substring(start,end+3))){
//Vm.debug("checksum wrong");
continue;
Warum werden dann aber anschließend in
Code:
if (writeLog && (logFlag & LOGRAW) > 0){
try {
logFile.write(NMEA.substring(start,end+3)+"\n");
writeLog = false;
} catch (IOException e) {}
}
Gruß, maierkurt