Hallo zusammen,
ich habe folgendes Problem. Ich führe einen Task aus, in dem z.B. GPS Daten ausgelesen werden. Die Ausführung startet, wenn ein bestimmter Befehl über den Com-Port gesendet wird. Das funktioniert so weit auch. Ich möchte nun aber genau diesen Task auch wieder stoppen, wenn ein bestimmter Befehl gesendet wird ("StopGPS"). Ich habe versucht dies mit timer.cancel() zu realisieren, aber leider funktioniert das nicht. Vielleicht kann mir jemand weiterhelfen oder hat Tipps für mich, was da nicht funktioniert. Ich hatte timer.cancel() auch schon in der run-Methode stehen, aber dann stoppt der Task direkt nach einmaligem auslesen von GPS-Daten. Ich möchte aber, dass der Task so lange ausgeführt wird bis ein Befehl gesendet wird. Wäre für jede Hilfe sehr dankbar.
Anbei ein bissel Code aus meinem Programm:
Gruß Stephie
ich habe folgendes Problem. Ich führe einen Task aus, in dem z.B. GPS Daten ausgelesen werden. Die Ausführung startet, wenn ein bestimmter Befehl über den Com-Port gesendet wird. Das funktioniert so weit auch. Ich möchte nun aber genau diesen Task auch wieder stoppen, wenn ein bestimmter Befehl gesendet wird ("StopGPS"). Ich habe versucht dies mit timer.cancel() zu realisieren, aber leider funktioniert das nicht. Vielleicht kann mir jemand weiterhelfen oder hat Tipps für mich, was da nicht funktioniert. Ich hatte timer.cancel() auch schon in der run-Methode stehen, aber dann stoppt der Task direkt nach einmaligem auslesen von GPS-Daten. Ich möchte aber, dass der Task so lange ausgeführt wird bis ein Befehl gesendet wird. Wäre für jede Hilfe sehr dankbar.
Anbei ein bissel Code aus meinem Programm:
Code:
// Hier lese ich den Befehl ein und bestimme was passieren soll
public static void getCommand(StringBuffer command) {
...
Timer timer = new Timer();
if (command.toString().equalsIgnoreCase("startGPS")) {
getRMCData(timer);
} else if (command.toString().equalsIgnoreCase("stopGPS")) {
timer.cancel();
}
...
}
// Task starten und alle 300ms ausführen...
public static void getRMCData(Timer timer) {
timer.schedule(new TaskRMC(), 1, 300);
...
}
// GPS Daten holen...
public class TaskRMC extends TimerTask {
public void run() {
String replyRMC = GPSInterface.getInstance().requestRMC();
...
}
}
Gruß Stephie