- QFile file(kFileName);
- if(!file.open(QIODevice::ReadOnly | QIODevice::Text)) return;
-
- // Read data, parse with regular expressions and process it
- QByteArray line = file.readLine();
- QRegExp rx("([0-9-]+) ([0-9-]+) ([0-9-]+)");
- rx.indexIn(line);
-
- smoothData(rx.cap(1).toInt(), rx.cap(2).toInt(), rx.cap(3).toInt());
-
- // Apply calibration
- trueAccelerationX = accelerationX - calibrationX;
- trueAccelerationY = accelerationY - calibrationY;
- trueAccelerationZ = accelerationZ - calibrationZ;
-
- // Discrimination window for acceleration values
- if (trueAccelerationX <= 30 && trueAccelerationX >= -30) { trueAccelerationX = 0; }
- if (trueAccelerationY <= 30 && trueAccelerationY >= -30) { trueAccelerationY = 0; }
- if (trueAccelerationZ <= 30 && trueAccelerationZ >= -30) { trueAccelerationZ = 0; }
-
- trueAccelerationX = (accelerationX - previousAccelerationX) /*/ 1000 * kGravity*/;
- trueAccelerationY = (accelerationY - previousAccelerationY) /*/ 1000 * kGravity*/;
- trueAccelerationZ = (accelerationZ - previousAccelerationZ) /*/ 1000 * kGravity*/;
-
- previousAccelerationX = accelerationX;
- previousAccelerationY = accelerationY;
- previousAccelerationZ = accelerationZ;
-
- currentAcceleration = sqrt(trueAccelerationX * trueAccelerationX +
- trueAccelerationY * trueAccelerationY +
- trueAccelerationZ * trueAccelerationZ );
-
- totalAcceleration = currentAcceleration - previousAcceleration;
- previousAcceleration = currentAcceleration;
-
- // Measure time interval
- intervalTime = now.restart(); // millisecs to secs
- intervalTime = intervalTime/1000;
- totalTime = totalTime + intervalTime;
-
- // Filter out acceleration caused by noise.
- if (fabs(currentAcceleration) < 0.09) {
- return;
- }
-
- // Using calculate class to calculate velocity and distance etc.
- calculate->CalculateParameters(currentAcceleration,intervalTime );
-
- currentSpeed = calculate->CurrentSpeed();
- distanceTraveled = calculate->DistanceTraveled();
-
- file.close();