public void StartThread() { stopThread = false; bool sensor = false; bool allowSpeedReset = true; DateTime dt = DateTime.Now; long resetSpeedStart = dt.Ticks; int val; double currWinkel; double lastWinkel = -1000.0; Debug.Log("WORKER INSIDE"); while (!stopThread) { // **************************************** // Winkel //***************************************** angle.setValue(rnd.getValue(CONST.getANGLE())); currWinkel = angle.getAngle(); if (currWinkel != lastWinkel) { // um die Ausgabe der kleinsten Winkeländerungen zu vermeiden, // darf der Winkelunterschied nicht in Bereich <-1,1> liegen if (!inRange(currWinkel - lastWinkel, -1, 1)) { AngleForMono = currWinkel; //Debug.Log("Winkel \n"+ currWinkel.ToString()); lastWinkel = currWinkel; } } // **************************************** // Geschwindigkeit //***************************************** if (rnd.getValue(CONST.getSPEED()).Length > 0) { val = Int32.Parse(rnd.getValue(CONST.getSPEED())); // Debug.Log("string: " + rnd.getValue(CONST.getSPEED()) + " parsed: " + val); if (val < this.fGrenze && sensor == false) { sensor = true; speed.setSensorTime(rnd.getDate(CONST.getSPEED())); speedForMono = speed.getSpeed(); //Debug.Log("Speed m/s " + speedForMono.ToString()); resetSpeedStart = rnd.getDate(CONST.getSPEED()); allowSpeedReset = true; } if (val > this.fGrenze && sensor == true) { sensor = false; resetSpeedStart = rnd.getDate(CONST.getSPEED()); allowSpeedReset = true; } //Es kann passieren, dass das Rad sich nicht bewegt, aber auf Grund //gespeicherten Daten Geschwindichkeit > 0 ist. //Wenn solcher Zustand länger als 2 Sek. dauert, wird die //Geschwindigkeit genullt. if (rnd.getDate(CONST.getSPEED()) - resetSpeedStart > this.fSpeedResetTime && allowSpeedReset) { //speed.resetSpeed(); resetSpeedStart = rnd.getDate(CONST.getSPEED()); allowSpeedReset = false; //Debug.Log("Speed m/s\n" + speed.getSpeed().ToString()); } } } }